关注公众号回复“漏洞”获取研究环境或工具
Solarwinds Web Help Desk 12.7.7 Hotfix 1以前版本存在一个硬编码用户凭证,导致能够本地执行任意 Hibernate 查询语句。漏洞编号为CVE-2021-35232,在特定模式下有可能被远程利用的可能性。
下载12.7.6版本,安装完成后访问登录页面:
跳过邮箱设置,输入用户和密码:
登录web控制台:
安装后版本为12.7.6.8432:
在wrapper.conf中添加debug参数即可开启远程调试:
抓包分析:
请求格式为`/helpdesk/WebObjects/HelpDesk.woa`。路由规则使用`Spring`和私有代码控制,由于是硬编码问题,审计JSP代码时找到了一个固定的用户名和密码:
全路径搜索该字符串,在`ConstantAndSettings`中定义了`Production`和`Development`两组硬编码用户密码:
以及其他的引用位置,主要包括`RestClient`、`RouteController`和`Authentication Manager`:
λ grep -R "dev-C4F8025E7" ./
./helpdesk/WEB-INF/jsp/test/orionIntegrationTest.jsp: var auth = {loginName:'helpdeskIntegrationUser', password:'dev-C4F8025E7'};
./helpdesk/WEB-INF/jsp/test/orionIntegrationTest.jsp: var auth = {loginName:'helpdeskIntegrationUser', password:'dev-C4F8025E7'};
./helpdesk/WEB-INF/lib/whd-core/com/macsdesign/whd/rest/controllers/BasicAuthRouteController$1.class
./helpdesk/WEB-INF/lib/whd-core/com/solarwinds/whd/service/impl/auth/HelpdeskIntegrationAuthenticationManager.class
λ grep -R helpdesk91114AD77B4CDCD9E18771057190C08B ./
./helpdesk/WEB-INF/lib/whd-core/com/macsdesign/whd/rest/controllers/BasicAuthRouteController$1.class
./helpdesk/WEB-INF/lib/whd-core/com/solarwinds/whd/rest/RestClient.class
./helpdesk/WEB-INF/lib/whd-core/com/solarwinds/whd/service/impl/auth/ClusterNodeAuthenticationManager.class
./helpdesk/WEB-INF/lib/whd-core/com/solarwinds/whd/service/impl/auth/HelpdeskIntegrationAuthenticationManager.class
./helpdesk/WEB-INF/lib/whd-core/com/solarwinds/whd/service/impl/ClusterLicenseServiceImpl$RestClient.class
在`whd-web.jar/whd-security.xml`中定位到引用的路由:
`AssetReportController`定义了`/rawQL`接口执行HQL语句:
`getStringHQLResult`执行HQL语句:
回到`HelpdeskIntegrationAuthenticationManager`,其读取`Production`和`Development`模式下固定密码作为认证凭据:
注意到里边有一个远程地址检查的语句,这里先跳过进行本地测试,添加Basic-Auth头。拷贝一个控制台POST请求,发送后出现403:
经过分析,原因是接口需要添加`X-XSRF-TOKEN`字段, 语句成功执行但报错:
链接postgresql嵌入式数据库,数据库、用户、密码均为`whd`,可以查看数据:
构造语句读取用户密码:
经测试`/helpdesk/assetReport/rawHQL`远程访问返回404,原因是`HelpdeskIntegrationAuthenticationManager`对远程地址进行检查:
`request.getRemoteAddress`读取数据,在反向代理模式下可以绕过检查:
这是一个比较鸡肋HQL注入漏洞,本地可以无条件执行。由于对源地址进行检查导致远程无法直接利用,但在反向代理模式下存在利用的可能。除了`assetReport`,其他接口也有可能存在问题。此外,执行HQL的语句还可能存在一定的限制。
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
关注公众号回复“漏洞”获取研究环境或工具
原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2021-35232 Solarwinds Web Help Desk一个鸡肋的HQL注入漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论