windows - Dos Batch Script - Rekursivt erstatte fil forekomst med masterfil (timthumb exploit forebyggelse)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har fundet nogle rigtig gode eksempler, men ikke helt hvad jeg har brug for. Mit mål er at have et batch script, som jeg kan køre om natten for at erstatte alle forekomster af en fil (i mit tilfælde timthumb.php) med en frisk kopi af filen er placeret i roden af ​​drevet.


Her er hvad jeg har hidtil ...


for /f \%\%a IN ('dir /b C:	humb\_test') do copy /y C:	humb\_test	imthumb.php \%\%a


Dette er så tæt som jeg kommer, det vil erstatte forekomster af timthumb.php i mapper som C: \ thumb\_test \ test1 \ timthumb.php, men vil ikke gå dybere ind i mapper. For eksempel C: \ thumb\_test \ test2 \ level2 \ timthumb.php blev ikke erstattet. Efter at have erstattet filerne ser det ud til, at det forsøger at læse den faktiske timthumb.php og udsender en masse fejl for eksempel ...


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


Jeg fandt/R for rekursiv, men når jeg prøver det, virker det heller ikke.


for /f \%\%a IN ('dir /b C:	humb\_test') do copy /y C:	humb\_test	imthumb.php \%\%a


Dette giver mig resultatet:
    C: \ thumb\_test> test.bat
    \% a var uventet på dette tidspunkt.


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


Min DOS viden er begrænset, så jeg håber en af ​​eksperterne derude har en ide.


Tak
Sam


PS for alle, der bruger timthumb, bør du kigge på http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/og sørg for at du er sikret. [7]

Bedste reference


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


eller ved at bruge den mere pålidelige robokopi i stedet for at kopiere:


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