セキュリティ技術者見習い備忘録

セキュリティ見習いが勉強作業記録をメモする場所

【VulnHub】Bulldog: 1 -Walkthrough-

はじめに

今回は以下のVM

環境構築は、以下を参考。

ztetez.hatenablog.com

情報収集

ターゲットのIPアドレスの特定から。(攻撃側(kali linux)のIPアドレスは10.0.10.10)

#netdiscover -r 10.0.10.0/24

  • -r:スキャン範囲の指定。デフォルトでは、192.168.0.0/16。

f:id:ztetez:20190429015035p:plain

※今回のVMは起動すればIPは表示されていた。

f:id:ztetez:20190125221341p:plain

続いてポートスキャン。

#nmap -sV -A -p- 10.0.10.11

  • -sV:バージョンスキャン
  • -A:詳細情報取得
  • -p-:フルポートスキャン

f:id:ztetez:20190125221911p:plain

23番(ssh)、80番(http)、8080番(http)がopen。80番、8080番は同じかな。80番からスタート。

ブラウザでアクセスすると、ブルドック(犬)が現れる。とりあえず、リンクされていないコンテンツを調査する。

#dirb http://10.0.10.11

f:id:ztetez:20190125234048p:plain

robots.txtは有益な情報なく、/admin/はDjangoのログインフォーム。

/dev/の下部にはメールアドレスの記載があった。

f:id:ztetez:20190125235328p:plain

/dev/shellには"Webシェルを利用するためには認証しろ"という記載が有り。/adminからログインすれば使えるようになりそう。

f:id:ztetez:20190125235609p:plain

侵入

メールアドレスのあった/devのページソースを見ると、コメントになっているでパスワードのハッシュを発見。40桁(160bit)なので、SHA1と予想。

f:id:ztetez:20190126000836p:plain

john the ripperでパスワード解析をするために、以下のようなpasshash.txtを用意。

f:id:ztetez:20190126002010p:plain

 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

f:id:ztetez:20190126005342p:plain

上述の通りSHA1を予想しているので、アルゴリズムにはRaw-SHA1を指定。

#john --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-SHA1 passhash.txt

  • --wordlist:総当たりする辞書ファイルの指定
  • --format:アルゴリズムの指定

f:id:ztetez:20190126010158p:plain

 2ユーザのパスワードを特定できた。このアカウント情報を利用して/adminにログイン成功。

 

<参考>

下記のサイトでも特定できた。

https://hashkiller.co.uk/sha1-decrypter.aspx

f:id:ztetez:20190127020443p:plain

 

内部探査

使用できるコマンドは限られているが、Webシェルも利用できた。Webシェル上で以下を実行し、root以外の有効なユーザとして、bulldogadminとdjangoを発見。

f:id:ztetez:20190127021555p:plain

/home/bukkdogadminに「.hiddenadmindirectory」という名前の怪しいディレクトリを発見。

f:id:ztetez:20190127022915p:plain

ディレクトリの中には、「customPermissionAPP」と「note」がある。

f:id:ztetez:20190127023031p:plain

"&&"もしくは"||"を使うことで、許可されたコマンド以外も実行できた。

f:id:ztetez:20190127023607p:plain

ELFファイルのをstringsで確認。

f:id:ztetez:20190127024229p:plain

枠内の末尾"H"を取り除いて、文字列をつなげると、"SUPERultimatePASSWORDyouCANTget" と意味ありげな文章が出てくる。noteの文章をヒントに、djangoユーザで上記文字列を使って23番ポート(ssh)へアクセスしてみる。

f:id:ztetez:20190127025322p:plain

いけた。

権限昇格

あとはsudoで権限昇格。パスワード"SUPERultimatePASSWORDyouCANTget"を入力congrats.txtがあったので、完。 

f:id:ztetez:20190127030503p:plain