HTTP POST フォームを設定する
このステップでは、Hydra 攻撃のターゲットとして使用できるシンプルな HTTP POST フォームを設定します。基本的な HTML フォームと、フォーム送信を処理する PHP スクリプトを作成します。これにより、Hydra が HTTP POST フォームとどのように相互作用するか、および正しい Hydra コマンドを作成する方法を理解できます。
まず、HTML フォームを作成しましょう。~/project
ディレクトリに login.html
という名前のファイルを作成します。
nano ~/project/login.html
次に、以下の HTML コードをファイルに貼り付けます。
<!DOCTYPE html>
<html>
<head>
<title>Login Form</title>
</head>
<body>
<h1>Login</h1>
<form method="post" action="login.php">
<label for="username">Username:</label><br />
<input type="text" id="username" name="username" /><br /><br />
<label for="password">Password:</label><br />
<input type="password" id="password" name="password" /><br /><br />
<input type="submit" value="Login" />
</form>
</body>
</html>
この HTML コードは、username
と password
の 2 つの入力フィールドを持つシンプルなログインフォームを作成します。フォームは POST メソッドを使用し、データを login.php
に送信します。
ファイルを保存し、nano
を終了します。
次に、フォーム送信を処理する login.php
スクリプトを作成する必要があります。~/project
ディレクトリに login.php
という名前のファイルを作成します。
nano ~/project/login.php
次に、以下の PHP コードをファイルに貼り付けます。
<?php
$username = $_POST['username'];
$password = $_POST['password'];
if ($username == 'testuser' && $password == 'password') {
echo "Login successful!";
} else {
echo "Invalid username or password";
}
?>
この PHP スクリプトは、POST データからユーザー名とパスワードを取得し、ハードコードされた値 testuser
と password
と一致するかどうかを確認します。資格情報が正しい場合は、「Login successful!」を表示し、そうでない場合は「Invalid username or password」を表示します。
ファイルを保存し、nano
を終了します。
これで、基本的な HTTP POST フォームが設定されました。通常、これをテストするには、Web サーバー(Apache や Nginx など)を実行し、これらのファイルを配信する必要があります。今回は Hydra に焦点を当てており、LabEx 環境には事前に設定された Web サーバーが含まれていないため、Web サーバーを通じてこれらのファイルにアクセスできる方法があると仮定して進めます。たとえば、ローカルで Web サーバーを実行し、~/project
ディレクトリを配信している場合、Web ブラウザで http://localhost/login.html
にアクセスすることでフォームにアクセスできます。
次のステップでは、Hydra を使用してこのフォームを攻撃します。-m
オプションを使用して POST データを指定し、-F
オプションを使用して失敗メッセージを識別します。