發布日期:2002-04-3
漏洞類別:PHP,遠端WEB接口,拒絕服務
bugtraq ID 4432、4434
有問題的版本:
phpBB 1.44,較低的版本及phpBB 2.0 未測試。
說明:
phpBB是一個被廣泛應用的基於PHP的論壇。發現其BBcode中對於「原始碼」類別的引用處
理存在漏洞,透過發送特殊格式的轉義字串可導致資料庫的損壞以及伺服器的 CPU、記憶體
資源大量消耗。
詳細:
phpBB在「原始碼」類別的引用處理不當,主要是為了要支援鑲套的標記
而造成的。有問題的程式碼是functions.php中的bbencode_code函數。
當我們提交一個這樣的貼文:
實際儲存到資料庫中的資料是這樣:
實際儲存到資料庫中的資料是這樣:
1code]
[/code]
雖然只有49Byte的數據,但資源佔用非常可觀:
PID USER PRI NI SIZE 0 11828 9996 416 R 99.9 7.8 2:38 httpd
幾秒鐘後產生了大量的數據,內存大量消耗:
PID USER PRI NI 3 root 10 0 0 0 0 SW 2.5 0.0 4:13 kswapd
25742 nobody 174 1:45 httpd
這樣的鑲套貼文是不會儲存到資料庫中的,但隨著鑲套的增加資源的佔用會依照幾何級數遞
增。如果一次發送更多數據,或不斷的發送,可以導致系統資源大量佔用,最終拒絕服務。
實驗環境:linux 2.4.10 Apache/1.3.23 PHP 4.12
解決方案:
1、暫時停用>解決方案。
2、alert7給了functions.php的如下修改方法,暫時停用對鑲套標記的支援:
把773行開始的bbencode_code函數改為:
function bbencode_code($message, $is_html_disabled)
{
$message = preg_replace("/[code](.*?)[/code]/si", "
Code: |
\1 登入後複製 |