|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。 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的帖子时的资本占用情形:
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!
但实践上贴子的题目和提交者这两个数据已存到数据库中,但内容和其他一些数据没有,所
以翻开的时分会呈现毛病页面。并且如许的帖子没法用正常的办法删失落,只能用直接毗连到
数据库来删除。以下是提交分歧数据量的了局:
''* =<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! 呈现删不失落的帖子
假如发送镶套的标志则占用资本更多,咱们在实行机械上发送如许的帖子:
以下内容为法式代码
固然只要49Byte的数据,但资本占用十分可不雅:
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
几秒钟后发生了大批的数据,内存大批损耗:
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
如许的镶套帖子是不会存储到数据库中的,但跟着镶套的增添资本的占用会依照几何级数递
增。假如一次发送更多半据,或不休的发送,可以招致体系资本大批占用,终究回绝办事。
实行情况: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", "<!-- 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()
关于没法正常删除的帖子,需求手工毗连数据库删除。假定有如许一个帖子:
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;
关于咱们:
WSS (Whitecell Security Systems),一个非营利性官方手艺组织,努力于各类体系安
全手艺的研讨。保持传统的hacker精力,寻求手艺的精纯。
WSS 主页:http://www.whitecell.org/
WSS 服装论坛:http://www.whitecell.org/forum/
增补:后来的测试发明相当多的BBS都有相似成绩,包含基于php、cgi、asp的,但愿人人本人对本人的服装论坛停止测试,若有成绩,参考本文酌情处理。 可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。 |
|