私の論文の目的のために、私は与えられたウェブサイトでユーザー名/パスワードの組み合わせを見つける必要があります。私はHydraを使用してそれを達成しようとしましたが、ユーザーがWebサイトに入るたびに変更される非表示のフォーム値(ユーザーがログインに失敗したときにも変更される)のために惨めに失敗しました。
Burpの侵入者では、はるかに単純な解決策を達成するのはかなり簡単だと思いますが、それを見つけることができません。私はユーザー名とパスワードを知っています。これらはどちらもSimple Listペイロードに入れられます。問題は、トークンである3番目のペイロードにあります。ブラウザでは、上記のように変化しているように見えます。そのため、Burpはユーザー名とパスワードのペアごとに、Webサイトからトークンを動的に要求する必要があると思います。
できますか?このビデオによれば、それは https://www.youtube.com/watch?v=OXIjNfX7BW8 である必要があります。実際、このビデオで問題は解決したと思いましたが、トークンのペイロードは変わりません。 Burp Intruderのドキュメントもいくつか読んだのですが、解決策が見つかりません。
あなたが話している保護は、アンチ [〜#〜] csrf [〜#〜] トークンと呼ばれます。これらのトークンはサーバーによって生成されたランダムな値であり、理想的には1回だけ使用できます(この場合も同様)。
私の知る限り、次のリクエストを行うために毎回トークンを更新するカスタムBurp Extenderを記述する必要があります。
これを行う別の簡単な方法は、2つのリストを使用して Pitchforkモード でげっぷ侵入者を使用することです。これについては以下で説明します。
ステップ1:(CSRFトークンを取得する)
wget/curl
を使用してログインページへのGETリクエストを多数(ユーザー数xテストするパスワードの数に等しい)実行し、CSRFトークンをファイルに収集する必要があります。このリストをcsrftokens.txt
と呼びましょう。
したがって、csrftokens.txtファイルでは、上記のように有効なトークンが収集されます。
xxxx-xxxx-xxxxx
yyyy-yyyy-yyyyy
ステップ2 :(単一のユーザー名+パスワードファイルを生成)
ユーザー名ファイル(users.txt
)とパスワードファイル(password.txt
)を取得します。 POST request parameters submitと同じ形式で、可能なすべての組み合わせのリストを作成します。
サンプルusers.txt
user1
user2
サンプルpassword.txt
password1
password2
サイトの元の投稿パラメータ文字列が次のようなものであったとしましょう
token="xxxx-xxxx-xxxx"&user="exampleuser"&password=" examplepass"
ここでは、可能なすべてのユーザー名とパスワードの組み合わせ(users_pass.txt
)のような新しいファイルを作成します。
user1"&password="password1
user1"&password="password2
user2"&password="password1
user2"&password="password2
Step3:(Burpsuiteを調整して反CSRFトークンを無効にする)
今、ゲップイントルーダーでピッチフォークモードを選択し、以下のようにポストパラメーターを編集します
token="§from_csrftokens.txt§"&user="§from_users_pass.txt§"
ここでは、ゲップリクエストのパスワードフィールドを削除しました。これは実際にはusers_pass.txt
ファイルから取得されます。
Burpは、以下のような元のポストリクエストとしてフォーマットでリクエストを送信し続けます。
token="xxxx-xxxx-xxxx"&user="user1"&password="password1"
token="yyyy-yyyy-yyyy"&user="user1"&password="password2"
..
..
このソリューションでは、トークンを取得するためのスクリプト言語の知識が必要です。また、user_pass.txt
を生成するために、クロス結合を使用してmysqlデータベースで単純な選択を使用できます。
Pitchforkモードを使用することで、トークンを1回だけ使用し、トークンの再利用が原因でリクエストが拒否されるのを防ぐことができます。
同様の効果を得るには、マクロ機能を使用できる必要があります。
新しいマクロを作成し、ログインシーケンスを手動で実行します。トークンを生成するリクエストを選択します。構成項目をクリックします。カスタムパラメータの追加をクリックします。ここから、トークンの値の応答を検索し、強調表示します。次に、名前を、ログイン要求で使用されるパラメーター名の値と等しくなるように設定します。マクロを保存します。
次に、このマクロを使用するためのセッション処理ルールを作成します。 「セッションの有効性の確認」ルールアクションを追加します。トークンが無効であることを示す応答の条件に一致するようにこのルールを構成します。次に、セッションが無効な場合にマクロを実行するようにこのルールを構成し、マクロを追加します。マクロの値でトークンの値を更新していることを確認してください。
これは不格好であり、多少の調整が必要な場合がありますが、うまくいくはずです。幸運を!