今天发现某台机器上的一个网站目录下所有的html文件都被在文件末尾加上了一个恶意网站的iframe。机器为Windows系统,没有安装PowerShell等工具,于是写了个bat文件处理这个事情。

被篡改的html文件特征为:

</html><malicious iframe1>
<malicious iframe2>

其中红色的两个iframe为加入的恶意链接。第一个iframe紧接在原有的</html>标记之后,第二个iframe在之后的新行上。为了恢复文件原本内容,需要将这两个iframe移去,并添加上原有的</html>标记。

写了以下的批处理文件完成该目录下所有html和htm文件的修改(一些注意事项以注释的形式写出):

@echo off
rem 将当前路径 %~dp0 保存到环境变量 CurrentBatPath
set CurrentBatPath=%~dp0
rem 从当前目录开始用 for /R 遍历目录

for /R %%j in (.) do (
    cd %%j
    rem 检查目录下所有的htm和html文件(当扩展名为三字母时匹配前三个字母相同的所有扩展名)

    for %%i in (*.htm) do (
        findstr “<malicious iframe1>$^<malicious iframe2>” %%i >nul
        rem 当 findstr 匹配成功时 %errorlevel% 为0,不成功时为 -1
        if %errorlevel% == 0 (
            rem 将两个iframe所在行之外的内容转入新文件。若输出至原始文件会将其内容全部清除
            findstr /V “<malicious iframe1>$^<malicious iframe2>” %%i > %%~ni.new”
            rem 添加</html>标记,^为转义符

            echo ^</html^> >> %%~ni.new”
            del %%i
            ren %%~ni.new” %%i
            rem 显示所修改的文件的完全路径

            echo %%~fi
        )
    )
)
cd %CurrentBatPath%