0x00 背景
这篇文章说的不是esc_sql函数自身有什么逻辑上缺陷或者不足,而是说下关于二次开发者错误的使用此函数引起的注入漏洞。
在wordpress手册中关于esc_sql的解释,在以前的版本中,官方并没有说出这个函数有任何问题:
在近期的wordpress手册中说出了这个函数如果错误使用会造成注入漏洞:
0x01 分析
我们再看下esc_sql的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
通过对比上面两个手册和代码我们可以清晰的得出以下几个结论:
-
- 99%的情况下你可以使用$wpdb->prepare()函数来做数据库操作(有那些是哪不能的1%呢?order by、like···· )
-
- esc_sql是addslashes()函数的数组应用,但是esc_sql转义数组的时候只转义数组值。
-
- esc_sql并没有对输入数据自动加引号保护
由于老版本手册的说明不严谨问题,在很多二次开发者使用esc_sql函数的时候出现了注入漏洞。
wp-seo插件注入漏洞
在文件admin/class-bulk-editor-list-table.php中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
其中很明显的漏洞出现了,然后就是构造poc:
1 2 |
|
如何使用sqlmap在order by后面延时注入,可以请参考:/tips/?id=5254自写,也可以抓包:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
出现这样漏洞的插件还有:
1 2 3 4 5 6 |
|
0x02 总结:
从上面的分析和出现的已知漏洞不难看出,此函数滥用的插件应该不在少数。
本文章来源于乌云知识库,文章版权归乌云知识库!