phpBB BBcode处理的漏洞

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! 出现删不掉的帖子

如果发送镶套的标记则占用资源更多,我们在实验机器上发送这样的帖子:

以下内容为程序代码[code]\0\0[/code]

虽然只有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的,希望大家自己对自己的论坛进行测试,如有问题,参考本文酌情解决。

时间: 2024-09-18 13:35:29

phpBB BBcode处理的漏洞的相关文章

phpBB BBcode处理的漏洞_php基础

发布日期:2002-04-3 漏洞类别:PHP,远程WEB接口,拒绝服务 bugtraq ID 4432.4434 存在问题的版本:     phpBB 1.44,更低的版本及 phpBB 2.0 未测试. 描述:     phpBB是一个被广泛应用的基于PHP的论坛.发现其BBcode中对于"源代码"类的引用处 理存在漏洞,通过发送特殊格式的转义字符串可导致数据库的损坏以及服务器的 CPU.内存 资源大量消耗. 详细:     phpBB在对"源代码"类的引用处理

总结:常见php页面漏洞分析及相关问题解决

从现在的网络安全来看,大家最关注和接触最多的WEB页面漏洞应该是ASP了,在这方面,小竹是专家,我没发言权.然而在PHP方面来看,也同样存在很严重的安全问题,但是这方面的文章却不多.在这里,就跟大家来稍微的讨论一下PHP页面的相关漏洞吧. 我对目前常见的PHP漏洞做了一下总结,大致分为以下几种:包含文件漏洞,脚本命令执行漏洞,文件泄露漏洞,SQL注入漏洞等几种.当然,至于COOKIE欺骗等一部分通用的技术就不在这里讨论了,这些资料网上也很多.那么,我们就一个一个来分析一下怎样利用这些漏洞吧! 首

modsecurity整体规则的介绍

owasp规则: 第一部分:基础规则集 modsecurity_crs_20_protocol_violations.conf HTTP协议规范相关规则 modsecurity_crs_21_protocol_anomalies.conf HTTP协议规范相关规则 modsecurity_crs_23_request_limits.conf HTTP协议大小长度限制相关规则 modsecurity_crs_30_http_policy.conf HTTP协议白名单相关规则 modsecurity

phpBB 2.0.13惊现漏洞的解决_漏洞研究

一.Path Disclosure  漏洞文件/db/oracle.php 漏洞描叙直接访问oracle.php导致暴露web路径 涉及版本phpbb <=2.013 测试ie提交http://127.0.0.1/phpBB2/db/oracle.php 返回错误 Fatal error: Cannot redeclare sql_nextid() in f:\easyphp1-7\www\phpbb2\db\oracle.php on line 405 解决办法 如果你不是采用的oracle数

phpBB论坛程序:老革命遇见新问题_漏洞研究

phpBB 2.0.18 XSS and Full Path Disclosure  Details: SecurityAlert    还有一个是暴力破解的工具,单线程的, 也没有大用处,实在情敌开了个什么phpbb什么的也可以拿来跑密码  下载:http://ftpzhangxue.w205.100dns.com/tools/phpbb.rar       Topic : phpBB 2.0.18 XSS and Full Path Disclosure      SecurityAlert

phpBB v3.0.7中文版发布

phpBB是一个论坛软件,使用PHP语言开发的并开放其原始码.是模块化设计,具专业性.安全性高.支持多国语系.支持多种数据库和自定义的版面设计等优越性能,而且http://www.aliyun.com/zixun/aggregation/17547.html">功能强大. phpBB 是在MySQL数据库上用PHP后端语言写的UBB风格的讨论板.它支持邮寄/回复/编辑信息,可设置个人信息.个人论坛.用户和匿名邮件.讨论主题等,通过提交或其它的特殊的顺序排队用户,可定义管理,排队等功能.它具

PHP脚本网站存在的漏洞总结

脚本 从现在的网络安全来看,大家最关注和接触最多的WEB页面漏洞应该是ASP了,在这方面,小竹是专家,我没发言权.然而在PHP方面来看,也同样存在很严重的安全问题,但是这方面的文章却不多.在这里,就跟大家来稍微的讨论一下PHP页面的相关漏洞吧. 我对目前常见的PHP漏洞做了一下总结,大致分为以下几种:包含文件漏洞,脚本命令执行漏洞,文件泄露漏洞,SQL注入漏洞等几种.当然,至于COOKIE欺骗等一部分通用的技术就不在这里讨论了,这些资料网上也很多.那么,我们就一个一个来分析一下怎样利用这些漏洞吧

php页面漏洞分析及相关问题解决

从现在的网络安全来看,大家最关注和接触最多的WEB页面漏洞应该是ASP了,在这方面,小竹是专家,我没发言权.然而在PHP方面来看,也同样存在很严重的安全问题,但是这方面的文章却不多.在这里,就跟大家来稍微的讨论一下PHP页面的相关漏洞吧. 我对目前常见的PHP漏洞做了一下总结,大致分为以下几种:包含文件漏洞,脚本命令执行漏洞,文件泄露漏洞,SQL注入漏洞等几种.当然,至于COOKIE欺骗等一部分通用的技术就不在这里讨论了,这些资料网上也很多.那么,我们就一个一个来分析一下怎样利用这些漏洞吧! 首

PHP网站漏洞的相关总结

从现在的网络安全来看,大家最关注和接触最多的WEB页面漏洞应该是ASP了,在这方面,小竹是专家,我没发言权.然而在PHP方面来看,也同样存在很严重的安全问题,但是这方面的文章却不多.在这里,就跟大家来稍微的讨论一下PHP页面的相关漏洞吧. 我对目前常见的PHP漏洞做了一下总结,大致分为以下几种:包含文件漏洞,脚本命令执行漏洞,文件泄露漏洞,SQL注入漏洞等几种.当然,至于COOKIE欺骗等一部分通用的技术就不在这里讨论了,这些资料网上也很多.那么,我们就一个一个来分析一下怎样利用这些漏洞吧! 首