ubuntuusers.de

Erste Zeile ersetzen

Status: Ungelöst | Ubuntu-Version: Server 14.04 (Trusty Tahr)
Antworten |

schneerunzel

Anmeldungsdatum:
23. Mai 2014

Beiträge: 15

Hallo zusammen,

leider bin ich auch Opfer der Angriffe auf Joomla geworden, kann allerdings nachvollziehen wie die Angreifer rein gekommen sind und möchte nun meine Joomla Installation bereinigen. Anhand der Logs, bevor der Virenschutz zugeschlagen hat, weiß ich das immer die erste Zeile in jedem PHP Script betroffen ist. Nur diese hat sich geändert. Meine Frage ist jetzt:

Wie muss ein Bashscript/Befehl aussehen mit das in jeder Datei die auf .php endet in einem Ordner und dessen Unterordner die erste Zeile durch "<?php" ersetzt.

Sprich ich möchte rekursiv einen Ordner durchsuchen und in allen Dateien die auf .php enden die Erste Zeile ersetzen.

Habt ihr da eine Idee? Ich bin leider zu schlecht in Shell Programierung als das mir da was einfällt und ich wollte die ca 2000 .php Dateien die über alle Joomla Installationen verteilt liegen nur ungerne mit der Hand ändern 😉

Vielen Dank

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

schneerunzel schrieb:

leider bin ich auch Opfer der Angriffe auf Joomla geworden, kann allerdings nachvollziehen wie die Angreifer rein gekommen sind und möchte nun meine Joomla Installation bereinigen.

Loeschen und neu machen.

Anhand der Logs, bevor der Virenschutz zugeschlagen hat, weiß ich das immer die erste Zeile in jedem PHP Script betroffen ist.

Hast du mittels diff die infizierten dateien mit originalen verglichen? Wenn nein: Wie hast du das sonst festgestellt?

Wie muss ein Bashscript/Befehl aussehen mit das in jeder Datei die auf .php endet in einem Ordner und dessen Unterordner die erste Zeile durch "<?php" ersetzt.

Es gibt auf Stackoverflow eine Frage die sehr ähnlich wie deine aussieht (ebenfalls ein Hack und PHP, erste Zeile, aber Drupal): http://stackoverflow.com/q/9309940

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Bist Du da ganz sicher, dass immer nur die 1. Zeile versaut ist ? - bei allen 2000 Dateien ?

Bei solch einem Angriff wäre ich mir nämlich da ganz und gar nicht sicher, bis ich es alles (!!) geprüft hätte.
Deshalb würde ich unbedingt neu installieren, wenn es irgend möglich ist.

Sonst, von der Sache her, ist so ein Filter kein Problem. Du brauchst

  1. find um all die Dateien aufzuspüren und

  2. sed um die Zeile auszuwechseln.

Zusammen also ± so etwas:

1
find -name '*.php' -exec echo sed -i '1 s/.*/<?php/' {} \;

Testen müsstest Du es auf jeden Fall mal selber;
das 'echo' ist nur testweise drin, damit man vorher mal sieht, was er überhaupt macht.

Aber wie gesagt: ich würde dem System definitiv nicht mehr trauen, bis ich ganz sicher bin, dass alles wieder sauber ist.

LG,

track

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13324

track schrieb:

Zusammen also ± so etwas:

1
find -name '*.php' -exec echo sed -i '1 s/.*/<?php/' {} \;

Für Paranoide und Performance-Junkies:

1
find -type f -name '*.php' -exec echo sed -i '1 s/.*/<?php/' {} +

😉

Testen müsstest Du es auf jeden Fall mal selber;

das 'echo' ist nur testweise drin, damit man vorher mal sieht, was er überhaupt macht.

Antworten |