Dos批处理脚本 - 以主文件递归替换文件实例(timthumb漏洞利用预防)

时间:2011-08-23 20:54:53

标签: windows batch-file dos

我找到了一些非常好的例子,但不是我需要的。我的目标是拥有一个批处理脚本,我可以每晚运行,用一个位于驱动器根目录的文件的新副本替换文件的所有实例(在我的情况下为timthumb.php)。

这是我到目前为止所拥有的......

for /f %%a IN ('dir /b C:\thumb_test') do copy /y C:\thumb_test\timthumb.php %%a

这和我一样接近,它将替换文件夹中的timthumb.php实例,例如C:\ thumb_test \ test1 \ timthumb.php,但不会更深入到目录中。例如,C:\ thumb_test \ test2 \ level2 \ timthumb.php未被替换。此外,在替换文件之后,它看起来像是在尝试读取实际的timthumb.php并输出一堆错误,例如......

C:\thumb_test>by Tim McDaniels and Darren Hoyt
'by' is not recognized as an internal or external command,
operable program or batch file.

我发现/ R是递归的,但是当我尝试以下时它也不起作用。

for /f %%a IN ('dir /b C:\thumb_test') do copy /y C:\thumb_test\timthumb.php %%a

这给了我结果:     C:\ thumb_test> test.bat的     %a在此时出乎意料。

C:\thumb_test>for /r /f %a IN ('dir /b C:\thumb_test') do copy /y C:\thumb_test\
timthumb.php %a

我的DOS知识有限,所以我希望其中一位专家有一个想法。

由于 -SAM

对于使用timthumb的人来说,你应该看看http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/,并确保你的网站是安全的。

1 个答案:

答案 0 :(得分:3)

for /R c:\thumb_test %%a in (timthumb.php) do if exist "%%a" copy /y c:\thumb_test\timthumb.php "%%a"

或者,使用更可靠的robocopy而不是copy:

for /R c:\thumb_test %%a in (.) do robocopy /xl c:\thumb_test "%%a" timthumb.php