2

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},有时黑客确实会找到一种方法来绕过它和eval他们的代码。

4

2 回答 2

2

Smarty 配置中有一个标志来启用/禁用 this ,默认情况下它应该是关闭的。

如果{php}WHMCS 要求使用标签,那么他们 [尽可能礼貌地说] 令人难以置信的智障,应该退出制作账单或任何其他软件的业务。

编辑:是的,就在他们的文档中。“你看!我们特意为你打开了这个超级巨无霸的安全漏洞!”

您可能希望通过 grep 浏览您的模板文件来查找这些{php}标签的任何用法,因为它表明您将通过堵住这个安全漏洞而失去任何功能。

于 2012-11-22T16:28:46.150 回答
1

这实际上是使用 mod_security 修复的一个非常简单的 hack。首先找到您的 mod_security 配置文件所在的位置,这完全取决于您安装的 mod_security 和操作系统,但它通常称为modsec.confor modsec2.conf,有时security.conf但很少。

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

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"

基本上你告诉它在GET和中过滤参数POST。就是这样,现在重新启动apache:

CentOS:
service httpd restart

Ubuntu:
service apache2 restart

现在您可能会认为这会阻止您在脚本中使用这些命令,而不是完全不会。这只阻止那些单词被发送到GETor POST。如果有人尝试他们会得到一个Not Acceptable错误,它根本不起作用。

这使您不必从防火墙或 WHMCS 和潜在客户中阻止一堆 IP。

于 2012-11-22T13:59:05.083 回答