LoginSignup
0
0

1. Hacker101とは

About
Hacker101 CTF(Capture The Flag)は、安全で報酬のある環境でハッキングを学ぶために設計されたゲームです。Hacker101は、HackerOneによって運営されるハッカー向けの無料教育サイトです。このCTFは、世界を少しずつ良くするための計画の中で別の重要な要素です。一つのバグずつ、世界を改善することを目指しています。

バグバウンティなどで知られるHackerOneの運営するハッキング技術の学習環境です。
Web系の問題を中心にCTF形式の問題がそろっており、登録は必要ですが無料でできます。
自身で特別な環境を準備しなくてもいい問題もあるので始めやすいです。

一定のポイントを取るとHackerOneのバグバウンティでプライベートプログラムに招待される権利を得られます。
(権利が得られるだけですぐに招待されるわけではないです。)

2. 対象問題

今回はWebのEazy問題であるPostbookのwriteupになります。

3. 環境

今回は特別な環境はいりません。
ブラウザがあればOKです。
わたしはEdgeで実施しました。

4. Writeup

4.0 対象サイトのチェック

まずはターゲットサイトの中身を確認していきます。
image.png

With this amazing tool you can write and publish your own posts. It'll allow you to write public and private posts. Public posts can be read by anyone that signs up. Private posts can only be read by you. See it as your own diary. We'll make sure that your private posts are safe with us.

なにやらポストというものを投稿できるサイトで、プライベートポストとパブリックポストを作成することができ、プライベートポストは自分しか確認できないらしいです。

Sign in , Sign upのページも見てみます。

  • image.png
  • image.png

UsernameとPasswordを登録し、その情報でサインインするようです。
適当に登録してサインインしてみましょう。

  • image.png
  • image.png
  • image.png
  • image.png

他の人のポストが見れるようになり、自分も投稿できるようになりました。
image.png

ポストは自由に内容を記載できそうです。

4.1 Flag 0

まずはサインインの画面での攻撃を試してみましょう。
以下のような組み合わせは試してみる価値があります。

  • Username
    • admin
    • administrator
    • user
    • user01
    • anonymous
    • test
    • などなど
  • Password
    • password
    • passwd
    • p4ssword
    • p@ssw0rd
    • test
    • (Null)
    • などなど

ツールなどを使って辞書攻撃を仕掛けてもいいです。
Kali linuxなどからhydraなどを使うのもいいでしょう。
今回はHacker101で見れるヒントを参照します。
image.png

image.png

どうやら「user」という名前のユーザは簡単なパスワードが設定されているようです。

試しに

  • Username -> user
  • Password -> password

でサインインしてみましょう。
image.png

image.png

サインインすることができ、Flagも入手できました!

4.2 Flag 1

次はuserのポストを見てみましょう。
image.png
プライベートポストはなさそうです。

image.png
ポスト自体は普通ですが、URLでidのパrメータを指定していることがわかります。
URLでパラメータを見つけたら変更してリクエストしてみましょう。

image.png
id=1はadminの公開ポストです。

image.png

id=2でadminのプライベートポストを確認できました!
Flagを入手しました!

4.3 Flag 2

続いて、新しいポストの作成画面を確認します。
ブラウザの開発者ツールでhtmlを確認するとhiddenフィールドが設定されていることが確認できます。
image.png
user_idに2が設定されています。
一度サインアウトして自分で作成したユーザのhiddenフィールドも確認してみましょう。
image.png
こちらはuser_idに3が設定されています。
そうなるとおそらくadminのuser_idは1でしょう。
valueを1に変更して適用にPOSTを作成してみます。
image.png


image.png

adminとしてPOSTを作成でき、Flagを入手できました!

4.4 Flag 3

Flag 3のヒントを見てみましょう。
image.png
謎の計算式…
数字を入力する一番最初に思いつく箇所はPOSTのURLにあるidパラメータです。

  • 189 * 5 = 945

ということでPOSTのURLにあるidパラメータを945にしてみます。
image.png

Flagが入手できました!

4.5 Flag 4

testユーザでなにかPOSTを作成してみます。
image.png

作成後にHOMEに戻るとPOSTのeditボタンで自分のポストが容易に編集できることがわかります。
image.png
editページ移動するとこのページでもURLでidをしていることがわかります。
image.png

idを変更してリクエストを送れば他人のPOSTも編集できてしまいそうです。
id=3のuserのポストを勝手に編集してみましょう。
image.png

image.png

Save postするとFlagが入手できました!

4.6 Flag 5

これまで、一時的にadminのPOSTを確認したり編集したりすることはできても、adminでのログイン自体はできていません。
ユーザのログイン情報はCookieに保存されていることが多いため、ブラウザの開発者ツールでCookieを確認します。
image.png
Cookieの中にidがセットされています。
ハッシュ値っぽい感じがするのでオンラインのハッシュ値decryptツールに入れて確認してみましょう。

image.png
3という文字のMD5ハッシュ値であることがわかりました。
つまりこのCookieのidを1という文字のハッシュ値に変更してやればadminでアクセスできそうです。

先ほどのツールで1をMD5ハッシュ値に変換します。
image.png

c4ca4238a0b923820dcc509a6f75849b

これを問題のページのCookieのidにセットしてページを更新します。
image.png

image.png

adminとしてログインでき、Flagを入手できました!

4.7 Flag 6

HOMEを確認すると、editだけではなく、deleteの操作も可能です。
Flag 4の際には他人のPOSTを勝手に編集しましたが、他人のPOSTを勝手に削除することもできるのではないでしょうか。
いま、adminでログインできているので、adminのポストのdeleteボタンが押せます。
開発者ツールでボタンにセットされている処理を確認すると、idにハッシュ値らしきものをセットしており、そのidのページを削除するような処理に見えます。
image.png
ハッシュ値の解析は先ほどのツールで可能です。

いまセットされているのは該当のPOSTのidです。
image.png

このハッシュ値をuserのPOSTのidである3に変更しuserのPOSTを勝手に削除してみましょう。
3のはハッシュ値は以下のようになります。
image.png

eccbc87e4b5ce2fe28308fd9f2a7baf3

image.png

image.png

最後のFlagが入手できました!

5. まとめ

Hacker101のPostbookを解いてみました。
脆弱な設定が重大な悪用につながることが理解できるいい問題だと思います。

この記事が皆さんのCTFライフの一助になっていれば幸いです。

6. 参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0