CVE-2021-29156-ForgeRock OpenAm Webfinger協議 LDAP注入漏洞
VSole2021-12-02 05:50:39
下面和大家分享ForgeRock OpenAM的另一個漏洞。ForgeRock OpenAM v13.5.1(商業版)在Webfinger接口處存在LDAP注入漏洞,CVE編號為CVE-2021-29156,導致未授權用戶可以通過遍歷方式爆破密碼Hash等敏感信息。經分析發現開源版的最新版本也存在該漏洞。
漏洞分析
通過翻閱資料,找到了Webfinger接口的訪問格式定義:

$ curl \--request GET \"https://openam.example.com:8443/openam/.well-known/webfinger\?resource=acct%3Ademo%40example.com\&realm=Engineering\&rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer"{ "subject": "acct:demo@example.com", "links": [ { "rel": "http://openid.net/specs/connect/1.0/issuer", "href": "https://openam.example.com:8443/openam/oauth2" } ]
}
分析`web.xml`,找到`WebFinger`這個servlet:


相關請求由`org.restlet.ext.servlet.ServerServlet`進行處理,對應的是`Restlet Framework`框架。初始化參數`org.restlet.application`指定了實際處理類為`org.forgerock.openidconnect.restlet.WebFinger`:

函數`createInboundRoot`中注冊了路徑規則`webfinger`,對應的過濾器為`auditWithOAuthFilter`,實際處理請求查詢的類為`OpenIDConnectDiscovery`:

如上圖所示,上面的參數處理過程與Webfinger接口的訪問格式完成了對應,打下斷點,構造訪問URL,成功觸發斷點:

進入:

首先完成對參數`rel`、`resource`的格式檢查處理,提取參數`userid`,調用函數`isUserValid`進行判斷,一路跟進,最終通過`SMSEmbeddedLdapObject`來完成LDAP查詢:


如果搜索結果存在,將返回200,否則返回404,那么就可以通過移位爆破的方式獲取密碼Hash。
漏洞POC


遍歷提取過程如下:

VSole
網絡安全專家