CSRF attacks through file upload functionality
This lab demonstrates CSRF vulnerabilities that can be exploited through file upload functionality. Attackers can trick users into uploading malicious files or perform unauthorized actions through file upload forms.
Objective: Use file upload functionality to perform CSRF attacks and upload malicious content.
// Vulnerable: No CSRF protection on file upload
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['upload_file'])) {
$file_name = $_POST['file_name'] ?? '';
$file_content = $_POST['file_content'] ?? '';
// Process file upload without CSRF validation
$_SESSION['uploaded_files'][] = [
'name' => $file_name,
'content' => $file_content,
'uploaded_at' => date('Y-m-d H:i:s')
];
}
// Vulnerable: Malicious file upload
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['upload_malicious'])) {
$malicious_content = $_POST['malicious_content'] ?? '';
// Upload malicious content without validation
$_SESSION['uploaded_files'][] = [
'name' => 'malicious_file.php',
'content' => $malicious_content,
'type' => 'application/x-php'
];
}
No files uploaded yet.
file_upload_csrf.html - Basic file upload attackmalicious_upload_csrf.html - Malicious file uploadprofile_update_csrf.html - Profile update via fileCreate these malicious HTML files to test CSRF attacks: