【VulnHub】Bulldog: 1 -Walkthrough-
はじめに
今回は以下のVM。
- VM:Bulldog:1
- Level:Beginner
- URL:https://www.vulnhub.com/entry/bulldog-1,211/
環境構築は、以下を参考。
情報収集
ターゲットのIPアドレスの特定から。(攻撃側(kali linux)のIPアドレスは10.0.10.10)
#netdiscover -r 10.0.10.0/24
- -r:スキャン範囲の指定。デフォルトでは、192.168.0.0/16。
※今回のVMは起動すればIPは表示されていた。
続いてポートスキャン。
#nmap -sV -A -p- 10.0.10.11
- -sV:バージョンスキャン
- -A:詳細情報取得
- -p-:フルポートスキャン
23番(ssh)、80番(http)、8080番(http)がopen。80番、8080番は同じかな。80番からスタート。
ブラウザでアクセスすると、ブルドック(犬)が現れる。とりあえず、リンクされていないコンテンツを調査する。
#dirb http://10.0.10.11
robots.txtは有益な情報なく、/admin/はDjangoのログインフォーム。
/dev/の下部にはメールアドレスの記載があった。
/dev/shellには"Webシェルを利用するためには認証しろ"という記載が有り。/adminからログインすれば使えるようになりそう。
侵入
メールアドレスのあった/devのページソースを見ると、コメントになっているでパスワードのハッシュを発見。40桁(160bit)なので、SHA1と予想。
john the ripperでパスワード解析をするために、以下のようなpasshash.txtを用意。
john the ripperの辞書ファイル(rockyou.txt)を利用するため、事前に解凍しておく。
#gunzip /user/share/wordlists/rockyou.txt.gz
<参考>
https://bytesoverbombs.io/cracking-everything-with-john-the-ripper-d434f0f6dc1c
jotn the ripperで指定できるハッシュアルゴリズムの確認方法は以下の通り。
#john --list=formats
上述の通りSHA1を予想しているので、アルゴリズムにはRaw-SHA1を指定。
#john --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-SHA1 passhash.txt
- --wordlist:総当たりする辞書ファイルの指定
- --format:アルゴリズムの指定
2ユーザのパスワードを特定できた。このアカウント情報を利用して/adminにログイン成功。
<参考>
下記のサイトでも特定できた。
https://hashkiller.co.uk/sha1-decrypter.aspx
内部探査
使用できるコマンドは限られているが、Webシェルも利用できた。Webシェル上で以下を実行し、root以外の有効なユーザとして、bulldogadminとdjangoを発見。
/home/bukkdogadminに「.hiddenadmindirectory」という名前の怪しいディレクトリを発見。
ディレクトリの中には、「customPermissionAPP」と「note」がある。
"&&"もしくは"||"を使うことで、許可されたコマンド以外も実行できた。
ELFファイルのをstringsで確認。
枠内の末尾"H"を取り除いて、文字列をつなげると、"SUPERultimatePASSWORDyouCANTget" と意味ありげな文章が出てくる。noteの文章をヒントに、djangoユーザで上記文字列を使って23番ポート(ssh)へアクセスしてみる。
いけた。
権限昇格
あとはsudoで権限昇格。パスワード"SUPERultimatePASSWORDyouCANTget"を入力。congrats.txtがあったので、完。