web-dev-qa-db-ja.com

Hydraを使用したWebフォームベースのログインの解読

Webフォームでhydraを使用するにはどうすればよいですか?


これまでに行ったこと:
HTTP authentication が設定されたフォルダでhydraを正常に使用しました:

http://localhost/test/authtest/

ユーザーadminとパスワード1234、私は正常にパスワードを見つけました:

hydra -l admin -x 1:5:1 -t 1 -f -vV 127.0.0.1 http-get /test/authtest/

しかし、どのように実行を試行する必要がありますかWebフォーム上のように

http://127.0.0.1/test/login.php?&username=admin&password=1234
3
rubo77

基本的に、次の2つを指定する必要があります。

  1. ユーザー名とパスワードの場所。
  2. リクエストの成功/失敗を判断する方法。

1つ目は、URLの^USER^^PASS^などのトークンを使用して、テスト対象のユーザー名とパスワードに置き換えられます。 2つ目は、返されたページに対して文字列照合を行うhydraによって行われます。 「Bad password」などの失敗条件、または「logged in」などの成功条件をテストできます。

次に例を示します。

hydra 127.0.0.1 http-form-get '/test/login.php?username=^USER^&password=^PASS^:Bad password'

ログインが成功したかどうかのテスト条件として、「無効なパスワード」の代わりにC=cookie_nameを使用して設定されたCookieまたはH=header_nameを使用したHTTPヘッダーをテストすることもできます。

ログインフォームがGETではなくPOSTを使用する場合(多くの場合)、http-form-post "protocol"を使用する必要があります。また、クエリ文字列の:ではなく、?を使用してURLとPOSTパラメータを分離する必要があります。httpsのバリエーションもあり、 (当然のことながら)https-ではなくhttp-が前に付きます。

6
David