如何进行Struts2-057远程代码执行漏洞复现


这篇文章跟大家分析一下“如何进行Struts2-057远程代码执行漏洞复现”。内容详细易懂,对“如何进行Struts2-057远程代码执行漏洞复现”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如何进行Struts2-057远程代码执行漏洞复现”的知识吧。Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目Struts2框架是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。0x01漏洞概述漏洞产生于网站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生。0x02影响版本Apache Struts 2.3–Struts 2.3.34Apache Struts 2.5–Struts 2.5.160x03环境搭建1. 这里使用vulhub的docker环境进行搭建,vulhub下载地址:https://github.com/vulhub/vulhub2. 下载完成后安装docker-compose //安装方法自行搜索,安装完成后进入vulhub cd /home/demo/vulhub-master/struts2/s2-057/目录下使用docker-compose up -d 拉取镜像3.底下显示done表示拉取成功,在浏览器访问http://IP:8080/struts2-showcase可以看到Struts2测试页面表示搭建成功。4.漏洞利用条件4.1 alwaysSelectFullNamespace被设置为true,此时namespace的值是从URL中获取的。URL是可控的,所以namespace也是可控的。4.2 action元素没有名称空间属性集,或者使用通配符。该名称空间将由用户从URL传递并解析为OGNL表达式,最终导致远程代码执行的脆弱性。0x04漏洞复现1.在url处输入http://IP:8080/s免费云主机域名truts2-showcase/${(123+123)}/actionChain1.action后刷新可以看到中间数字位置相加了。2.修改中间${(123+123)}位置的payload替换用代码执行编写成命令执行的exp,这一步使用burp抓包修改可以直观的看到结果Payload: //注:payload需要使用url编码3.抓包发送到Repeater(重放)模块,在url加上url编码的paylaod,然后发送即可在头部看到回显结果0x05修复建议1. 临时解决方案:上层动作配置中没有设置或使用通配符namespace时,验证所有XML配置中的namespace,同时在JSP中验证所有url标签的value和action。2. 官方已发布最新版本来修复此漏洞,受影响的用户请尽快升级到Apache Struts 2.3.35 或 Struts 2.5.17版关于如何进行Struts2-057远程代码执行漏洞复现就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下云编程开发博客网站!

相关推荐: 自动化运维工具Ansible有什么优缺点

这篇文章主要介绍自动化运维工具Ansible有什么优缺点,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、基础介绍1、简介ansible是新出现的自动化运维攻击,基于Python开发,集合了从多运维工具(puppet、cfengine、…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/07 09:59
下一篇 02/07 09:59