一、初步侦察与Web服务探测
1.1 端口扫描与Web初步探索
首先对目标主机 10.10.11.48
进行全面的端口扫描,以识别开放的服务。
sudo nmap 10.10.11.48 -p- --min-rate=5000 -A
图1: Nmap扫描结果,显示开放22和80端口
扫描结果显示目标开放了 SSH (22) 和 HTTP (80) 端口。访问80端口的Web服务,显示为Apache的默认页面。
图2: 访问80端口,显示Apache默认页面
尝试进行目录爆破,初步使用 dirsearch
未发现任何有价值的路径。
dirsearch -u http://10.10.11.48/
图3: dirsearch目录爆破未发现有用信息
更换为 feroxbuster
并使用更全面的字典进行再次爆破,依然没有新的发现。
feroxbuster -u http://10.10.11.48/
图4: feroxbuster目录爆破仍无发现
二、SNMP枚举与关键信息获取
2.1 UDP端口扫描与SNMP服务发现
由于TCP端口的Web服务未提供直接突破口,且未收集到域名信息进行子域名爆破,Apache和OpenSSH版本也无已知漏洞,转向对UDP端口的扫描。
sudo nmap 10.10.11.48 -p- -sU --min-rate=5000
图5: UDP全端口扫描结果,发现161端口开放 (SNMP)
UDP全端口扫描结果显示UDP 161端口开放,该端口通常用于SNMP (Simple Network Management Protocol) 服务。
(注:UDP扫描通常较慢,可优先针对性扫描常见的UDP服务端口,如161 SNMP。)
sudo nmap 10.10.11.48 -p 161 -sU -sV
图6: 针对UDP 161端口的Nmap扫描,确认SNMP服务
2.2 SNMP信息枚举
使用 snmp-check
和 snmpwalk
工具对SNMP服务进行信息枚举。snmpwalk
适合进行更细致的MIB树遍历。
snmp-check 10.10.11.48 -p 161
图7: snmp-check枚举结果
snmpwalk -c public -v 2c 10.10.11.48
图8: snmpwalk枚举结果 (部分)
从SNMP枚举结果中,获得了三条关键信息:
- Web服务域名为
underpass.htb
。 - 系统可能存在一个名为
steve
的用户(此信息尚不确定)。 - Web系统似乎使用了与
daloradius
相关的组件。
三、daloradius应用突破
3.1 域名绑定与daloradius识别
将域名 underpass.htb
添加到本地 /etc/hosts
文件。
(尝试使用 steve
账户进行SSH爆破或对 underpass.htb
进行子域名爆破均未成功。)
关键在于第三条信息:daloradius
。搜索该名称,发现它是一个开源的RADIUS Web管理应用。
图9: daloradius相关信息
对于此类开源Web应用,常见的攻击思路包括:
- 查找历史漏洞 (CVE) 并利用。
- 查找默认凭据或源码中泄露的凭据。
搜索daloradius相关的CVE,未找到可直接利用的漏洞。但在查找默认凭据时有所发现。
图10: 发现daloradius默认凭据信息
相关信息还指出了daloRADIUS管理端的登录路径通常为 /daloradius/app/operators/login.php
。
图11: daloradius登录路径信息
3.2 登录daloradius后台
访问 http://underpass.htb/daloradius/app/operators/login.php
,使用发现的默认凭据 administrator
/ radius
进行登录。
图12: 访问daloradius登录页面并尝试登录
成功登录到daloradius后台管理界面。
图13: 成功登录daloradius后台
3.3 后台信息收集与凭据破解
进入系统后台后,常见的利用思路是:
- 寻找命令执行、文件上传等可直接导致RCE的功能点。
- 寻找用户凭据(Web系统用户或其他系统凭据的泄露)。
在daloradius后台的用户管理或相关配置页面中,发现了一个用户 svcMosh
的密码哈希。
图14: daloradius后台发现svcMosh用户的密码哈希
将该密码哈希提交到在线哈希破解网站 (如 https://hashes.com/) 进行破解。
图15: 在线破解密码哈希得到明文密码
成功破解密码为 underwaterfriends
。
四、权限提升:Mosh Server利用
4.1 SSH登录与Sudo权限检查
使用获取到的凭据 svcMosh
/ underwaterfriends
尝试SSH登录目标主机。
ssh svcMosh@10.10.11.48
图16: 成功使用svcMosh用户和破解的密码SSH登录
登录成功后,检查 svcMosh
用户的 sudo
权限。
sudo -l
图17: svcMosh用户的sudo -l输出,显示可以执行mosh-server
sudo -l
输出显示,用户 svcMosh
可以免密码以root权限执行 /usr/bin/mosh-server
命令。
mosh-server
是Mosh (Mobile Shell) 远程终端软件的服务端组件。
4.2 Mosh提权漏洞分析与利用
搜索 mosh-server
相关的提权方法。Mosh的设计允许客户端通过提供一个预共享密钥 (MOSH_KEY
) 来连接到由 mosh-server
启动的会话。如果可以控制 mosh-server
的启动(例如通过 sudo
),则可以指定其监听的端口和密钥,然后以root权限连接该会话。
图18: mosh-server相关用法说明(示意)
提权步骤如下:
-
在目标机 (Server) 上以root权限启动
mosh-server
:
当sudo /usr/bin/mosh-server
执行时,它会输出一个MOSH CONNECT
命令,其中包含了端口号和MOSH_KEY
。sudo /usr/bin/mosh-server
图19: 在目标机上执行sudo mosh-server,获取连接信息 -
在攻击机 (Client) 上使用获取到的信息连接:
从上一步的输出中提取MOSH_KEY
和端口号。然后在攻击机上设置MOSH_KEY
环境变量,并使用mosh-client
连接到目标机的指定端口。# 在攻击机上执行 export MOSH_KEY=<KEY_FROM_SERVER_OUTPUT> # 例如 rWvs9Svgy6J14SEw7eKOSA mosh-client <TARGET_IP> <PORT_FROM_SERVER_OUTPUT> # 例如 10.10.11.48 60001
图20: 在攻击机上设置MOSH_KEY并执行mosh-client
图21: 成功通过mosh连接并获取root权限shell
成功连接后,将获得一个root权限的shell。