乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!
更新时间:2022.04.16
本文首发乌鸦安全知识星球!
1. 漏洞介绍
1.1 漏洞描述
2022
年04
月13
号,apache
官网公布了Struts2
最新版远程代码执行漏洞,该漏洞编号为CVE-2021-31805
。 Apache Struts2
是一个用于开发Java EE
网络应用程序的Web
框架。在MVC
设计模式中,Struts2
作为控制器(Controller
)来建立模型与视图的数据交互。
本次漏洞是对CVE-2020-17530
修复之后的绕过,当使用语法%{...}
应用强制OGNL
解析,某些tag
标签的属性仍然可以被二次解析。
1.2 影响版本
Apache Struts 2.0.0-2.5.29
俗话说:Struts2 凭借一己之力养活了安全圈是很有道理的。
2. 漏洞复现
本次漏洞复现为本地环境,使用开源靶场vulhub
中s2-61
的环境:
https://github.com/vulhub/vulhub/tree/master/struts2/s2-061
使用命令:docker-compose up -d --build
启动环境:
看下当前的端口:docker ps
直接访问:http://127.0.0.1:8080/
因为本次复现的是S2-62
的漏洞,所以在这里使用S2-62
的一个exp
:
https://github.com/YanMu2020/s2-062
探测漏洞:
代码语言:javascript复制python3 s2-062.py --url http://127.0.0.1:8080/
执行命令:
代码语言:javascript复制python3 s2-062.py --url http://127.0.0.1:8080/ --cmd ls
漏洞复现之后,记得及时关闭环境:
docker-compose down
3. 修复方法
升级更新到Apache Struts 2.5.30
或更高版本。
下载链接:https://cwiki.apache.org/confluence/display/WW/Version Notes 2.5.30