ホームページ  >  記事  >  php教程  >  phpBB BBcode によって処理される脆弱性

phpBB BBcode によって処理される脆弱性

WBOY
WBOYオリジナル
2016-06-13 12:45:02853ブラウズ


リリース日: 2002-04-3
脆弱性カテゴリ: PHP、リモート WEB インターフェイス、サービス拒否

bugtraq ID 4432、4434

問題のあるバージョン:

phpBB 1.44 以前のバージョンおよび phpBB 2.0 はテストされていません。


説明:

phpBB は、PHP に基づいて広く使用されているフォーラムです。 BBコード内の「ソースコード」クラスの参照処理
に脆弱性が存在することが判明しました。 特殊な形式でエスケープ文字列を送信することにより、データベースにダメージを与え、サーバーを大量に消費する可能性があります。 CPU とメモリ
リソース。


詳細:

phpBB は、主にネストされたタグ
をサポートするために、「ソース コード」クラスへの参照を不適切に処理します。問題のコードは、functions.php の bbencode_code 関数です。

次のように投稿を送信すると:





データベースに保存される実際のデータは次のようになります:

[ 1コード]
[/code]

データは 49 バイトしかありませんが、リソースの使用量は非常に多くなります:
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
25741 nothing 14 0 11828 9996 416 R 99.9 7.8 2:38 httpd

数秒後に大量のデータが生成され、大量のメモリが消費されます:
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
25742Everyone 17 0 265M 90M 52104 R 25.1 73.0 1:45 httpd

そのようなネストされた投稿は保存されませんデータベース内でははいですが、ネストが増加するにつれて、リソース使用量は等比数列に従って増加します。より多くのデータを一度に送信したり、連続的に送信したりすると、大量のシステム リソースが占有され、最終的にはサービスが拒否される可能性があります。

実験環境: linux 2.4.10 Apache/1.3.23 PHP 4.12


解決策:

1. BBcode を一時的に無効にします。
2.alert7 は、ネストされたタグのサポートを一時的に無効にするために、functions.php に次の変更メソッドを追加しました:

行 773 から始まる bbencode_code 関数を次のように変更します:

function bbencode_code($message) , $is_html_disabled)
{
$message = preg_replace("/[code](.*?)[/code]/si", "

< TR>

gt;gt;
コード:
gt;
\1
gt;
gt;
;
gt ;
", $message);
return $message;

} // bbencode_code ()

通常削除できない投稿については、手動でデータベースに接続して削除する必要があります。このような投稿があるとします。
http://host/forums/viewtopic.php?topic=1162&forum=1&0
次のようになります。
$ mysql -user -ppasswd
mysql>データベース名を使用;
mysql> select * from topic_id = 1162; // get post_id = 6280 の投稿から削除
mysql> delete from topic where topic_id = 1162;


私たちについて:

WSS (Whitecell Security Systems) は、さまざまなシステム セキュリティを専門とする非営利の民間テクノロジー組織です
技術研究。伝統的なハッカー精神を堅持し、テクノロジーの純粋性を追求します。

WSS ホームページ: http://www.whitecell.org/
WSS フォーラム: http://www.whitecell.org/forum/


補足: 後ほどテストの結果、PHP、CGI、ASP ベースの掲示板など、かなりの数の掲示板で同様の問題が発生していることがわかりました。問題がある場合は、この記事を参照して解決してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。