家studyをつづって

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

【Hack The Box】Previse

偵察/スキャン

nmapでスキャンします。

┌──(kali㉿kali)-[~]
└─$ nmap -P0 -sC -sV -A -p- 10.10.11.104
Starting Nmap 7.93 ( https://nmap.org ) 
Nmap scan report for 10.10.11.104
Host is up (0.18s latency).
Not shown: 65533 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 53ed4440116e8bda698579c081f23a12 (RSA)
|   256 bc5420ac1723bb5020f4e16e620f01b5 (ECDSA)
|_  256 33c189ea5973b1788438a421100c91d8 (ED25519)
80/tcp open  http    Apache httpd 2.4.29
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
| http-title: Previse Login
|_Requested resource was login.php
|_http-server-header: Apache/2.4.29 (Ubuntu)
Service Info: Host: 127.0.1.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

TCP/22,80が開いていることがわかりました。ブラウザでアクセスすると以下のような画面が表示されます。

ブラウザでのアクセス

dirbやniktoなどを実行しましたが特に手掛かりになる情報を見つけられませんでした。

 

アクセス取得

対象サイトにcurlを実行すると、ブラウザで表示されなかったような内容が取得できました。curlはリダイレクトに従わないため、EARの脆弱性があるページにアクセスすると、認証されたユーザーに表示されるはずのコンテンツが表示されることがあります。

curl実行結果抜粋

 

owasp.org

※今回のサイトはPHPを使用していますが、PHPの場合はdie()関数を呼び出すことで上記の脆弱性への対応ができるようです。

 

上記ページのアクセスをBurpSuiteで調べてみます。

Burpでレスポンスを取得した様子

リダイレクトされていますがレスポンスにページの内容が含まれています。

BurpSuiteでステータスコードを200に変更するとアクセスできました。

ログイン後のページ

BurpSuiteを使用してアカウント作成が可能です。

アカウントの作成成功

作成したアカウントを使用することでログインすることができました。

ログイン後のページより、「FILES」にアクセスするとサイトのバックアップが見つかりました。

サイトのバックアップファイル確認

バックアップファイルの中にはconfig.phpというファイルがあり、そこにはSQLのアカウント情報が含まれていました。

※このアカウントは後程使用します。

config.phpの内容

 

また、「logs.php」ではコマンド実行をしているコードが確認されました。

意味深なコメントがありましたが、コメントがあるのはこのファイルだけでした。

logs.phpの中身

logs.phpへのアクセスをBrup Suiteで見てみると、delimというパラメータを使用しているようでした。

logs.phpへのアクセス

logs.phpに書かれているexec関数はコマンドが記載されているだけのようであり、サニタイズなどもないので「;」に続けてpingのコマンドを入れて動作するかを確認します。

Burp SuiteでPOSTリクエストを編集

待ち受け側のターミナルでicmpの受信が確認されました。

これでPrevise上でコマンドを実行できることが確認できました。

Kali側のtcpdumpの様子

ncコマンドの実行

kaliの待ち受け側

python3 -c 'import pty;pty.spawn("/bin/bash")'でシェルをアップグレードします。

 

特権昇格

取得したシェルを使用して特権昇格します。

先程取得したMySQLのアカウントを使用してみます。

SQLへ接続

※-pの後はスペースなし

 

MySQLへ接続できたので有用な情報がないか探してみます。

PreviseというDatabaseがあるので確認してみます。

accountsというテーブル内に「m4lwhere」というユーザが確認できました。

Previseの探索

パスワードはハッシュ化されているようです。

以下のサイトで確認するとモード500の例のように見えます。

hashcat.net

 

以下のコマンドを実行するとパスワードが取得できました。

hashcat -m 500 hash.txt /usr/share/wordlists/rockyou.txt

hashcat

取得したパスワードで「m4lwhere」に変更します。

このユーザはroot権限で「access_backup.sh」を実行できるようです。

「sudo -l」の実行結果

「access_backup.sh」の中身を見てみます。

シェルスクリプトの中で「gzip」というコマンドを実行しているようですが、完全なパス名ではないため、gzipを新たに作成することでroot権限が取得できます。

 

シェルスクリプトの中身

gzipというファイルを作成します。

※root権限で動作するので「root.txt」の中身を表示するcatコマンドを記載する方法もあります。

gzipの新規作成

また、あわせて作成したgzipが配置されている環境パスを指定する必要があります。

m4lwhere@previse:/tmp$ export PATH=/tmp:$PATH


上記の後で「access_backup.sh」を実行することでroot権限が取得でき、フラグをとることができます。

フラグ獲得

 

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

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

zenn.dev

www.secjuice.com