上传目录里多出一个后缀是php的文件,正常的图片目录不该出现这种东西,点开是一行看不懂的代码。后台登录正常,页面看起来也没变,只有这个文件提醒有事发生过。这时候多数人的第一反应是打开文件管理器一个个翻,翻半天没有线索。
查的顺序应该反过来:先按时间排,再按位置看。被植入的东西改的是文件本身,修改时间通常比周围的正常文件新,这个差异往往能拉出几天甚至几周,把正常更新和被人动过手清清楚楚分开。
用find按修改时间筛,命令是find /var/www -type f -mtime -7,把七天改成自己想要的天数。更直观的写法是把时间戳一起打出来再倒排:find跟路径、-type f、-printf后面写时间格式和文件名,管道接sort -r,最新改动的就在最前面,一眼能看到。
位置上有几个高发区:上传目录里出现.php文件、主题目录里多出一个陌生文件、wp-config.php和index.php被追加了几行。正常业务不会往上上传目录写可执行脚本,这一条本身就是证据。
可疑文件的特征很固定,eval、assert这两个语言结构,加上base64_decode、gzinflate这类解码函数,经常成组出现,而且前面往往跟着一长串看不懂的字符,那串字符就是被编码过的载荷。还有一种是极短的一句话文件,整个文件只有一行,读出来就是一句执行外部输入的代码。光看首页源码找不到这些,它们通常被包含在某个正常文件里,所以要用grep在整个目录里搜这几个函数名。除了找文件,还要翻access.log,看有没有某些IP反复POST到某个固定地址,那是上传通道被利用的痕迹;访问日志里出现大量带参数的POST而页面本身没有对应表单,基本可以确定入口在那里。
找到之后别只在原地删掉那几行。攻击者通常会在正常文件里插一段,也在别处留一个后门,删一处另一处还在。稳妥的做法是把可疑文件与官方原版对比,不一致的整份替换。
回头还要想它是怎么进来的。弱口令被撞开、插件带着已知漏洞、上传接口没有校验类型,这三条是最常见的入口,不堵住入口,清完很快会再来一次。
清完做四件事:改所有管理员密码、更新程序与插件到最新、删掉不再使用的插件和主题、把上传目录的执行权限关掉。最后再看一次修改时间列表,确认没有新的改动。
时间线是最省力的线索,按它排一遍比逐个目录翻要快得多,也更容易发现同一批被改动的文件。清完之后隔几天再跑一次同样的命令,没有新的改动,才算真的清干净。
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!
