最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

phpBB BBcode處理的漏洞

 更新時間:2006年10月09日 00:00:00   作者:  

發(fā)布日期:2002-04-3
漏洞類別:PHP,遠(yuǎn)程WEB接口,拒絕服務(wù)

bugtraq ID 4432、4434

存在問題的版本:

    phpBB 1.44,更低的版本及 phpBB 2.0 未測試。


描述:

    phpBB是一個被廣泛應(yīng)用的基于PHP的論壇。發(fā)現(xiàn)其BBcode中對于“源代碼”類的引用處
理存在漏洞,通過發(fā)送特殊格式的轉(zhuǎn)義字符串可導(dǎo)致數(shù)據(jù)庫的損壞以及服務(wù)器的 CPU、內(nèi)存
資源大量消耗。


詳細(xì):

    phpBB在對“源代碼”類的引用處理不當(dāng),主要是為了要支持鑲套的標(biāo)記
而造成的。有問題的代碼是functions.php中的bbencode_code函數(shù)。

    當(dāng)我們提交一個這樣的貼子:





實(shí)際向數(shù)據(jù)庫中存儲的數(shù)據(jù)是這樣:

[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]

即實(shí)際系統(tǒng)要負(fù)擔(dān)的數(shù)據(jù)量是輸入的“\0”的數(shù)量的平方,如果發(fā)送 1 MByte的數(shù)據(jù),系統(tǒng)
實(shí)際處理的數(shù)據(jù)將接近 1 TByte。

這是我們在實(shí)驗(yàn)機(jī)器上發(fā)送一個包含''*800的帖子時的資源占用情況:

PID  USER      PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
8643 nobody    13   0   212M  81M 13604 D     8.0 65.7   0:07 httpd

提交貼子后會提示出錯:

Could not enter post text!

但實(shí)際上貼子的標(biāo)題和提交者這兩個數(shù)據(jù)已存到數(shù)據(jù)庫中,但內(nèi)容和其他一些數(shù)據(jù)沒有,所
以打開的時候會出現(xiàn)錯誤頁面。而且這樣的帖子無法用正常的方法刪掉,只能用直接連接到
數(shù)據(jù)庫來刪除。以下是提交不同數(shù)據(jù)量的結(jié)果:

''* =<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! 出現(xiàn)刪不掉的帖子

如果發(fā)送鑲套的標(biāo)記則占用資源更多,我們在實(shí)驗(yàn)機(jī)器上發(fā)送這樣的帖子:

復(fù)制代碼 代碼如下:
[code]\0
\0[/code]

雖然只有49Byte的數(shù)據(jù),但資源占用非??捎^:
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
25741 nobody    14   0 11828 9996   416 R    99.9  7.8   2:38 httpd

幾秒鐘后產(chǎn)生了大量的數(shù)據(jù),內(nèi)存大量消耗:
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
    3 root      10   0     0    0     0 SW    2.5  0.0   4:13 kswapd
25742 nobody    17   0  265M  90M 52104 R    25.1 73.0   1:45 httpd

這樣的鑲套帖子是不會存儲到數(shù)據(jù)庫中的,但隨著鑲套的增加資源的占用會按照幾何級數(shù)遞
增。如果一次發(fā)送更多數(shù)據(jù),或者不斷的發(fā)送,可以導(dǎo)致系統(tǒng)資源大量占用,最終拒絕服務(wù)。

實(shí)驗(yàn)環(huán)境:linux 2.4.10   Apache/1.3.23   PHP 4.12


解決方案:

1、暫時禁用BBcode。
2、alert7給出了functions.php的如下修改方法,暫時停用對鑲套標(biāo)記的支持:

把773行開始的bbencode_code函數(shù)改為:

function bbencode_code($message, $is_html_disabled)
{
$message = preg_replace("/\[code\](.*?)\[\/code\]/si", "<!-- BBCode Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Code:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><PRE>\\1</PRE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode End -->", $message);
return $message;

} // bbencode_code()

    對于無法正常刪除的帖子,需要手工連接數(shù)據(jù)庫刪除。假設(shè)有這樣一個帖子:
http://host/forums/viewtopic.php?topic=1162&forum=1&0
可以這樣:
$ 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;


關(guān)于我們:

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

WSS 主頁:http://www.whitecell.org/
WSS 論壇:http://www.whitecell.org/forum/


補(bǔ)充:后來的測試發(fā)現(xiàn)相當(dāng)多的BBS都有類似問題,包括基于php、cgi、asp的,希望大家自己對自己的論壇進(jìn)行測試,如有問題,參考本文酌情解決。

相關(guān)文章

最新評論

星座| 潮安县| 隆子县| 十堰市| 尼玛县| 嘉善县| 武隆县| 乌兰察布市| 嘉义县| 凌源市| 繁昌县| 枣庄市| 通山县| 内江市| 梁平县| 太湖县| 灵寿县| 工布江达县| 中江县| 十堰市| 泰州市| 兴海县| 普兰县| 瑞安市| 红河县| 临江市| 蒙自县| 宾川县| 启东市| 拉萨市| 新巴尔虎右旗| 宁河县| 江陵县| 凤山市| 鸡西市| 宁明县| 奉新县| 专栏| 井陉县| 轮台县| 双鸭山市|