漏洞描述:
Apache Struts< 2.5.30 存在OGNL表达式注入漏洞(CVE-2021-31805),如果开发人员使用%{…} 语法强制OGNL解析时,当对标签属性中未经验证的原始用户输入进行二次解析时,可能会导致远程代码执行,攻击者可利用该漏洞从OGNL实现沙盒逃逸完成命令执行。
漏洞等级:
高危漏洞
本次漏洞复现为本地环境,使用开源靶场vulhub
中s2-61
的环境:
输入指令:docker-compose up -d --build
但是在我的kali2022上面出现了报错:
Got permission denied while trying to connect to the Docker daemon socket...
解决办法在网上找到了一篇大佬文章:
使用sudo获取root权限运行
docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令
解决方法:终端输入
sudo docker-compose up -d
然后输入kali密码
继续在vulhub这个对应靶场上查看
接下来在该靶场终端启动漏洞扫描:
查看端口:docker ps
查看端口:docker ps
因为本次复现的是S2-62
的漏洞,所以在这里使用S2-62
的一个exp
:
https://github.com/YanMu2020/s2-062
在kali上下载该地址,解压到桌面,然后在文件里打开终端,在终端输入:
python3 s2-062.py --url http://127.0.0.1:8080/
可以看到成功发现漏洞
接下来我们执行命令:
python3 s2-062.py --url http://127.0.0.1:8080/ --cmd ls
可以看到成功完成漏洞复现
完成后记得清理靶机:
docker-compose down
看到done可以看出靶机清理完成