最新消息:图 床

Struts2-059 遠程代碼執行漏洞(CVE-2019-0230)分析

COOL IAM 283浏览 0评论

作者:hu4wufu@白帽匯安全研究院
核對:r4v3zn@白帽匯安全研究院

前言

2020年8月13日雖然近幾年來關於ONGL方面的漏洞已經不多了,但是畢竟是經典系列的RCE漏洞,還是有必要分析的。而且對於Struts2OGNL了解也有助於代碼審計和漏洞挖掘。

首先了解一下什麼是OGNLObject Graphic Navigation Language(對象圖導航語言)的縮寫,Struts框架使用OGNL作為默認的表達式語言。

struts2_S2_059S2_029漏洞產生的原理類似,都是由於標籤屬性值進行二次表達式解析產生的,細微差別會在分析中提到。

漏洞利用前置條件是需要特定標籤的相關屬性存在表達式%{payload},且payload可控並未做安全驗證。這裡用到的是a標籤id屬性。

id屬性是該action的應用id

經過分析,受影響的標籤有很多繼承AbstractUITag類的標籤都會受到影響,受影響的屬性只有id

環境準備

測試環境:Tomcat 8.5.56JDK 1.8.0_131Struts 2.3.24

由於用Maven創建有錯誤沒有解決,所以選用idea自帶的創建struts2工程。

輸入普通文本:

根據漏洞詳情可知問題出現在標籤解析的時候,所以我們從org.apache.struts2.views.jsp.ComponentTagSupportdoStartTag方法開始跟進,從這裡開始進行jsp標籤的解析。當用戶發送請求的時候,doStartTag()開始執行。我們直接debug斷點在解析標籤的ComponentTagSupport的第一行。

  • http://blog.topsec.com.cn/struts2-s2-059-%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/

  • https://xw.qq.com/cmsid/20200816A03TC200

  • https://github.com/ramoncjs3/CVE-2019-0230/commit/40f221f8fd60de78ca84aaf0365b7e4fdfd8105a

  • https://www.freebuf.com/vuls/229080.html


  • 转载请注明:IAMCOOL » Struts2-059 遠程代碼執行漏洞(CVE-2019-0230)分析

    0 0 vote
    Article Rating
    Subscribe
    Notify of
    0 Comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x
    ()
    x