phpBB BBcode處理的漏洞_PHP教程

WBOY
發布: 2016-07-21 16:09:44
原創
1262 人瀏覽過


發布日期: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
登入後複製

", $message);
return $message;

} // bbencode_code()

    對於無法正常刪除的帖子,需要手動連接資料庫刪除。假設有這樣一個貼文:
http://host/forums/viewtopic.php?topic=1162&forum=1&0
可以這樣:
$ mysql -uuser -ppasswd
mysql> use dataname;
mysql> select *  from topics where topic_id = 1162; //得到post_id
mysql> delete from posts where post_id = 6280;
mysql> delete from posts_text post] topics where topic_id = 1162;


關於我們:

    WSS (Whitecell Security Systems),一個非營利組織民間技術組織,致力於各種系統安
全技術
全技術
全技術
全技術
全技術
全技術
全技術
全技術
全技術
全技術全技術的研究。堅持傳統的hacker精神,追求技術的精純。

WSS 首頁:http://www.whitecell.org/ 補充:後來的測試發現有相當多的BBS都有類似問題,包括基於php、cgi、asp的,希望大家自己對自己的論壇進行測試,如有問題,參考本文酌情解決。 http://www.bkjia.com/PHPjc/314380.htmlwww.bkjia.comtrue
http: //www.bkjia.com/PHPjc/314380.html
TechArticle
發布日期:2002-04-3 漏洞類別:PHP,遠端WEB接口,拒絕服務bugtraq ID 4432、4434有問題的版本: phpBB 1.44,較低的版本及phpBB 2.0 未測試。 描...
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板