【问题标题】:Can't remove file $$$222.php left behind by attacker [closed]无法删除攻击者留下的文件 $$$222.php [关闭]
【发布时间】:2015-01-25 15:40:38
【问题描述】:

我的网站最近遭到黑客攻击,服务器上有许多恶意文件。他们都添加了 -i 和 -a 扩展名

我发现这个是使用 lsattr 命令然后使用 chattr -ai <Filenames> 删除不可变属性并仅附加属性 然后rm -f <Filenames>删除

一切顺利

但是只有一个文件 $$222.php 无法删除

当我对文件名 $$222.php 执行任何操作时,它会返回

No such filename or directory whilst trying to stat 761022.php

如何删除此文件?

【问题讨论】:

  • $ 可能意味着您的 shell 的一个变量,尝试将文件名放在单引号 rm '$$$222.php' 中。
  • 可能$$被你的shell转换为进程id号。
  • 不要相信通过简单地删除其中一些恶意文件就可以克服攻击。 *您可能应该从头开始重新安装并寻找代码注入

标签: linux file ssh


【解决方案1】:

这很容易复制。

mkdir SO
cd ./SO
echo > '$$$222.php'
ls
$$$222.php

好的,我们有其中之一,如果您尝试...

rm $$$222.php
rm: cannot remove ‘351522.php’: No such file or directory

我们可以确认$$被shell转换为进程ID号。

ps

PID TTY          TIME CMD
3515 pts/8    00:00:00 bash
7671 pts/8    00:00:00 ps

原来 3515 只是 bash 的进程 ID 号或 PID,这是因为 shell 将 $$ 转换为 PID。

echo $$
3515

它变成 351522 而不是 3515222,因为 $2 指的是命令 bash 的第二个参数,它是空白的。

您可以使用带有通配符的rm -i 将其删除,-i 会询问您是否确定要删除每个匹配的文件:

rm -i *php

rm -i *222.php

或者你可以使用单引号,rm '$$$222.php'

双引号rm "$222.php" 仍会被shell 转换,并会在不匹配的地方进行转换。

【讨论】:

  • 谢谢保罗 - 我在睡觉前尝试过双引号,但从来没有单引号它消失了。似乎在黑客攻击期间也没有更改其他文件 - 能够将黑客追踪到 1 月 21 日注入文件的时间 - 但是在该时间或之后服务器上没有任何其他更改
猜你喜欢
  • 2023-03-16
  • 2023-04-07
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多