可恶的if(!isset($GLOBALS[“\x61\156\x75\156\x61”]))恶意代码及清除办法

来自:互联网
时间:2022-01-27
阅读:

在一次修改WordPress主题的时候,很意外的发现每个主题文件的头部都有一段这样的代码:

if(!isset($GLOBALS["\x61\156\x75\156\x61"])) { $ua=strtolower($_SERVER["\x48\124\x54\120\x5f\125\x53\105\x52\137\x41\107\x45\116\x54"]); ...

代码具体是干什么的不知道,网站显示也不会有任何异常,可是我们不能任由恶意代码这样蹂躏我们的主题,于是Goolge了一下,在万能的stackoverflow上发现了解决办法。

清理恶意代码的方法

下面是一段bash脚本,把脚本放在服务器上,执行脚本./remove_malware.sh /var/www/wp_path/ clean即可移除恶意代码。

#!/bin/bash
#
# This script remove malware of PHP files.
#

if [[ -z "$1" ]]; then
  echo "Directory where to find is required."
else
  grep -rnwl $1 --include \*.php -e "\\\\x48\\\\124\\\\x54\\\\120\\\\x5f\\\\125\\\\x53\\\\105\\\\x52\\\\137\\\\x41\\\\107\\\\x45\\\\116\\\\x54" | while read -r filename ; do

    if [[ ! -z "$2" ]]; then
       echo "Found file $filename. Cleaning..."
       awk 'BEGIN {matches=0} matches < 1 && /1/ { sub(/^.*<?php/,"<?php"); matches++ } { print $0 }' $filename > $filename.purged
       mv $filename $filename.bck
       mv $filename.purged $filename
    else
      echo "Found file $filename."
    fi

  done
  echo "Done."
fi

经测试,脚本可能会误判正常的文件,删掉正常文件的第一行代码,不过误判的几率比较小,以防万一,建议删除之前把网站整体备份一下。

上面脚本执行后,会生成一些后缀为.bck的备份文件。如果需要清理这些文件,运行以下命令即可。

find . -name *.bck | xargs rm -vf
返回顶部
顶部