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
网络安全专家