WordPress DoS攻击脚本解决方案

目前,Internet上有一个脚本在运行,它使攻击者可以运行一些代码,使您的Wordpress博客不知所措。这也很可能导致您的主机也烦恼。

它执行的操作是对文件wp-trackback.php执行引用请求,但它会发送一个巨大的字符串(超过200,000个字符),Wordpress将以其实际值作为接受该字符串的合法引用。第一次运行时,Wordpress会将其写入数据库,但是此后每次它将运行一个选择查询,以查看引用是否存在。即使这不是合法的引用,Wordpress仍会在每个请求上对其进行处理,从而在处理每个大字符串时造成了巨大的开销。

一种解决方案是,通过使用.htaccess文件中的Apache规则来阻止对有问题的文件的访问,以阻止对该文件的所有访问。

<Files ~ "wp-trackback.php">
Order allow,deny
Deny from all
</Files>

如果您不关心引用,这可能是一个很好的解决方案,但是如果您想要它们,那么可以使用另一种解决方案,其中涉及将wp-trackback.php文件更改为字符集(如果字符集很长)以退出。打开文件并查找第47行。

$charset = $_POST['charset'];
 
// 这三个命令在此处都用斜线表示,以便可以在mb_convert_encoding()之后正确转义。

添加以下行:

$charset = $_POST['charset'];
 
// DoS攻击修复。
if ( strlen($charset) > 50 ) {
 die;
}
 
// 这三个命令在此处都用斜线表示,以便可以在mb_convert_encoding()之后正确转义。

这将阻止任何脚本小子运行漏洞利用脚本并杀死您的博客,但是您可能还想添加检查以确保title变量也不是愚蠢的大小。在第56行(假设您实施了先前的修复程序)中添加以下行。

if ( strlen($title) > 200 ) {
 die;
}

假定引用引用的发布时间不会超过字符。可能有一些合法的标题确实有这么长的标题,但是我认为这些标题的质量可能很差,因此可以忽略。

非常感谢Steve Fortuna的帖子New New-Day-Day Wordpress Exploit指出并提供了解决此问题的方法。

更新

WordPress今天早上发布了更新(V2.8.5),以修复此漏洞和其他漏洞。与往常一样,Wordpress可以快速发布修补程序以修复漏洞和漏洞。