phpBB BBcode處理的漏洞

2022-09-27 10:30:13 字數 3118 閱讀 4919

發布日期: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]

\0\0\0\0\0\0\0

[/code1][1code]

\0\0\0\0\0\0\0

[/code1][1code]

\0\0\0\0\0\0\0

[/code1][1code]

\0\0\0\0\0\0\0

[/code1][1code]

\0\0\0\0\0\0\0

[/code1][1code]

\0\0\0\0\0\0\0

[/code1][1code]

\0\0\0\0\0\0\0

[/code1]

即實際系統要負擔的資料量是輸入的「\0」的數量的平方,如果傳送 1 mbyte的資料,系統

實際處理的資料將接近 1 tbyte。

這是我們在實驗機器上傳送乙個包含''*800的帖子時的資源占用情況:

提交貼子後會提示出錯:

could not enter post text!

但實際上貼子的標題和提交者這兩個資料已存到資料庫中,但內容和其他一些資料沒有,所

以開啟的時候會出現錯誤頁面。而且這樣的帖子無法用正常的方法刪掉,只能用直接連線到

資料庫來刪除。以下是提交不同資料量的結果:

''* =<583  正常貼上,可以刪除

''* 584    正常貼上,可以編輯,但不能刪除

''* 585    提示 could not enter post text! 但貼子也沒有

''* 586    正常貼上,可以刪除

''* 587    提示 could not enter post text! 但貼子也沒有

''* 588    正常貼上,可以刪除

''* 589    提示 could not enter post text! 但貼子也沒有

''* >=590  提示 could not enter post text! 出現刪不掉的帖子

如果傳送鑲套的標記則占用資源更多,我們在實驗機器上傳送這樣的帖子:

複製** **如下:

[code]\0

\0[/code]

雖然只有49byte的資料,但資源占用非常可觀:

幾秒鐘後產生了大量的資料,記憶體大量消耗:

pid user     pri  ni  size  rss share stat %cpu %mem   time command

3 root    &n程式設計客棧bsp; 10   0     0    0     0 sw    2.5  0.0   4:13 kswapd

這樣的鑲套帖子是不會儲存到資料庫中的,但隨著鑲套的增加資源的占用會按照幾何級數遞

增。如果一次傳送更多資料,或者不斷的傳送,可以導致系統資源大量占用,最終拒絕服務。

實驗環境:linux 2.4.10   apache/1.3.23   php 4.12

解決方案:

1、暫時禁用bbcode。

2、alert7給出了functions.php的如下修改方法,暫時停用對鑲套標記的支援:

把773行開始的bbencode_code函式改為:

functi bbencode_code($mdtwwbkjboessage, $is_html_disabled)

// bbencode_code()

對於無法正常刪除的帖子,需要手工連線資料庫刪除。假設有這樣乙個帖子:

可以這樣:

$ mysql -uuser -ppasswd

mysql> use databasename;

mysql> select *  from topics where topic_id = 1162; //得到post_id

mysql> delete from posts where post_id = 6280;

mysql> delete from posts_text where post_id = 6280;

mysql> delete  from topics where topic_id = 1162;

關於我們:

wss (whitecell security systems),乙個非營利性民間程式設計客棧技術組織,致力於各種系統安

全技術的研究。堅持傳統的hacker精神,追求技術的精純。

wss 主頁:

wss 論壇:forum/

本文標題: phpbb bbcode處理的漏洞

本文位址:

蘋果內購漏單處理思路

支付流程解釋 3.客戶端向我們可以信任的伺服器 後台 提供receipt data 4.伺服器對receipt data進行一次base64編碼 7.伺服器對商品購買狀態以及商品型別,向客戶端發放相應的道具與推送資料更新通知 問題 以上七個步驟實際上是乙個很安全的支付流程了。那問題會出在 呢?問題出...

BUG漏測的原因總結,以及如何處理

一 漏測的概率 漏測,是指軟體產品的缺陷沒有在測試過程中被發現,而是在版本發布之後,使用者在使用過程中發現存在的缺陷。二 預防漏測的意義 我們都知道,缺陷越早被發現,發現和解決缺陷所花的成本就越小,如果缺陷是在測試中發現的,那麼所花的成本將小得多。測試 是保證軟體質量的最重要手段之一,因此,進行漏測...

njupt 會漏的棧

出題原意是考雙端佇列,但是因為a題要讓大家都過,所以把資料搞得很小。第乙份 是純陣列模擬棧暴搞的,遇到大資料會完蛋,第二份是用雙端佇列模擬,可以勝任大資料的情況。純陣列模擬棧暴搞 include using namespace std int s 10005 int k,top m,x,bottom...