WHMCS被{php}和Eval base64代码通过票据攻击

时间:2012-11-22 13:59:05

标签: php apache smarty whmcs mod-security2

WHMCS使用Smarty作为它的模板系统,虽然它是一个很好的模板系统,它有一个缺陷,{php}标签。这些标签允许smarty直接在模板中解释PHP代码,或者在这种情况下通过故障单系统在创建新故障单时解释。这个hack一直发生在WHMCS系统上,您可以尝试通过配置中的块文本选项阻止WHMCS中的代码。但大部分时间这都不起作用。

WHMCS接受票证并且黑客在票证消息中添加了以下内容:

{php}eval(base64_decode(encoded message));{\php}

聪明地看到{php}部分并立即让PHP运行该命令。所以它首先解码在base64中编码的PHP。这将带来一些黑客试图运行的PHP函数/脚本。

然后eval接管并实际评估PHP代码并在服务器端运行它。

许多黑客以这种方式运行,他们运行他们知道将在WHMCS中工作的代码,然后获取数据库信息并将其回显到文件。然后他们只需通过浏览器URL获取此文件并获取他们想要的信息。

这只适用于一些WHMCS安装,虽然WHMCS说最新版本不允许这样,并且在Smarty中禁用了{php},有时黑客确实找到了解决这个问题的方法{{1}他们的代码。

2 个答案:

答案 0 :(得分:2)

There's a flag in the Smarty config to enable/disable this,默认情况下应为 off

如果WHMCS要求使用{php}标签,那么它们[尽可能礼貌地]使用令人难以置信的f * cking延迟,并且应该退出制作账单或任何其他软件的业务。< / p>

编辑:是的,right here in their docs。 “嘿看!我们为你开启了这个超级巨型安全漏洞!”

您可能希望浏览模板文件以查找这些{php}标记的任何用法,因为它会通过在安全性中插入这个漏洞来指示您将丢失的任何功能。

答案 1 :(得分:1)

这实际上是使用mod_security修复的一个非常简单的hack。首先找到你的mod_security配置文件所在的位置,这一切都取决于你的mod_security和OS的安装,但通常称为modsec.confmodsec2.conf,有时候是security.conf,但很少。

您可以在大多数Linux系统上使用locate命令(如果已安装)找到它。

sudo updatedb
locate modsec.conf
or
locate modsec2.conf

如果您没有locate,您需要转到/目录并运行find,这需要一些时间,但有时会将面板安装在奇怪的地方不只是在/etc

cd /
find . -type f -iname 'modsec*.conf'

无论哪种方式都可以找到配置文件。找到后,使用您喜欢的编辑器编辑文件,然后转到最底层并添加以下内容:

SecRuleEngine On    
SecRule ARGS {php} "severity:4,log,deny"
SecRule ARGS eval "severity:4,log,deny"
SecRule ARGS base64_decode "severity:4,log,deny"

基本上你告诉它过滤GETPOST中的参数。就是这样,现在重启apache:

CentOS:
service httpd restart

Ubuntu:
service apache2 restart

现在您可能会认为这会阻止您在脚本中使用这些命令,而根本不会。这只会阻止通过GETPOST发送这些字词。如果有人尝试他们会收到Not Acceptable错误,而且根本不起作用。

这样您就不必阻止来自防火墙或WHMCS以及潜在客户的一堆IP。

相关问题