rene1976
Goto Top

Per batch Text in HTML und PHP Dateien suchen und ersetzen

Hallo,

ich habe auf unserem Webserver Malware gefunden, die anscheinend viele.html und .php Dateien befallen hat.

Habe die befallenen Dateien alle heruntergeladen und die Teile der Webseite auf "under construction" gesetzt.

Jetzt suche ich ein Programm, dass per batch die Dateien öffnen kann und den gesamten Bereich durch "nichts" ersetzen kann bzw. löschen kann.

Bis jetzt habe ich das Programm Agent Ransack gefunden.
Das konnte mir alle infizierten Dateien finden.
Leider hat das Programm keine suchen und ersetzen Funktion.

Kennt jemand ein visuelles Programm das die Dateien erst auflistet und dann jede Datei nach dem Code durchsuchen kann und vor allem zuverlässig nur dieses Segment löschen kann?

Weiteres Problem dabei:
Der eingeschleuste Code ändern sich auf jeder Seite (es steht immer ein anderer Deep-Link drin, aber immer die gleich IP-Adresse).
Es ist also nicht auf jeder Seite gleich.

Gleich bleibt aber der Anfang und Schluss.

<!123>Inhalt der sich ändert <!123>

Beispiel (verändert - unbrauchbar):

<!--98a55d9688938f1544--><script type='text/javascript' src='http://IP-Adresse-des-Malware-Servers/tmp/jquery.js?Nummer=85&fid=df5f23aff1e91af52ca6886ea1c39df7'></script><script type='text/javascript'>if (typeof KDDRTFGEG == weitere Befehle);document.write("weitere Befehle");KDDRTFGEG=true;}</script><!--98a55d9688938f1544-->

Ich brauch also ein Programm das mir zwischen bzw. inklusive Start und Ende alles löscht und vor allem den Rest der Datei unbeschädigt lässt.

Besten Dank für eure Tipps.

Rene

Content-Key: 215576

Url: https://administrator.de/contentid/215576

Ausgedruckt am: 29.03.2024 um 02:03 Uhr

Mitglied: colinardo
colinardo 29.08.2013 um 16:16:18 Uhr
Goto Top
Hallo Rene,
und täglich grüßt das Murmeltier face-smile
Schau dir mal UltraEdit an.
Ansonsten ließe sich das mit einem einfachen VBA-Script mit Regular Expression Replace durchführen. Beispiele gibts dazu hier im Forum genug.

Grüße Uwe
Mitglied: Snowman25
Snowman25 29.08.2013 um 16:43:17 Uhr
Goto Top
Hi @Rene1976,

Mir fällt spontan Notepad++ ein. Du musst dann zwar alle Dateien öffnen, aber dann kannst du auch in allen Dateien gleichzeitig suchen und ersetzen (oder dir die Ergebnisse anzeigen lassen und zur entsprechenden Datei + Position springen).

Gruß,
@Snowman25
Mitglied: colinardo
colinardo 29.08.2013 aktualisiert um 17:10:23 Uhr
Goto Top
Zitat von @colinardo:
Ansonsten ließe sich das mit einem einfachen VBA-Script mit Regular Expression Replace durchführen. Beispiele gibts dazu hier im Forum genug.
Ich geb zu, da war ich wieder mal lazy mit dem Suchverweis face-wink

hier ein mögliches VBS-Script dazu:
In Zeile 1 noch den Pfad zu deinen HTML-Dateien eintragen, und den passende Regular Expression String in Zeile 5 anpassen. Wenn du dich mit RegEx noch nicht auskennst kann ich dir gerne einen passenden Pattern zusammenbauen. Der jetzige passt auf dein gepostetes Beispiel. Das Script bearbeitet dann alle Dateien mit den folgenden Endungen (*.html / *.htm / *.php).

strFolder = "C:\HTML-Dateien-Ordner"  
Set fso = WScript.CreateObject("Scripting.Filesystemobject")  

Set regex = New RegExp
regex.Pattern = "<!--98a55d9688938f1544-->.*<!--98a55d9688938f1544-->"  
regex.Global = True
	
For Each f In fso.GetFolder(strFolder).Files
	If LCase(Right(f.Name,4)) = "html" Or LCase(Right(f.Name,3)) = "htm" Or LCase(Right(f.Name,3)) = "php" Then  
		Set objFileRead = fso.OpenTextFile(f.Path,1,-1)
		strContent = objFileRead.ReadAll()
		objFileRead.Close
		If regex.Test(strContent) Then
			newContent = regex.Replace(strContent,"")  
			Set objFileWrite = fso.OpenTextFile(f.Path,2)
			objFileWrite.Write(newContent)
			objFileWrite.Close
		End If
	End If
Next
MsgBox "Fertig bearbeitet"  
Grüße Uwe
Mitglied: Rene1976
Rene1976 30.08.2013 um 12:17:52 Uhr
Goto Top
Hi Uwe und Snowman25,

danke für eure Antworten.
Ich wollte es zuerst mit Notepad probieren.
Leider musste ich feststellen das unser Newsletter-Archiv auch betroffen ist.

Problem:
Jeder Newsletter wird in einen eigenen Unterordner abgelegt.
Der Name der Newsletterdatei in den jeweiligen Unterordnern ist immer der gleiche.

Frage:
Wie kann man in den oben angegeben Skript alle Ordner mit Unterordner auf einmal durchsuchen und ersetzten?

Sorry, ich kann leider nicht programmieren.

Gruß,

Rene
Mitglied: colinardo
colinardo 30.08.2013 um 12:27:20 Uhr
Goto Top
Zitat von @Rene1976:
Frage:
Wie kann man in den oben angegeben Skript alle Ordner mit Unterordner auf einmal durchsuchen und ersetzten?

strFolder = "C:\HTML-Dateien-Ordner"  
Set fso = WScript.CreateObject("Scripting.Filesystemobject")  
Set regex = New RegExp
regex.Pattern = "<!--98a55d9688938f1544-->.*<!--98a55d9688938f1544-->"  
regex.Global = True
parseFolders fso.GetFolder(strFolder), True
MsgBox "Fertig bearbeitet"  

Function parseFolders(strFldr,boolRecursion)
	For Each f In strFldr.Files
		If LCase(Right(f.Name,4)) = "html" Or LCase(Right(f.Name,3)) = "htm" Or LCase(Right(f.Name,3)) = "php" Then  
			Set objFileRead = fso.OpenTextFile(f.Path,1,-1)
			strContent = objFileRead.ReadAll()
			objFileRead.Close
			If regex.Test(strContent) Then
				newContent = regex.Replace(strContent,"")  
				Set objFileWrite = fso.OpenTextFile(f.Path,2)
				objFileWrite.Write(newContent)
				objFileWrite.Close
			End If
		End If
	Next
	
	If boolRecursion Then
		For Each subFolder in strFldr.SubFolders
			parseFolders subFolder, True
		Next
	End If
End Function

Grüße Uwe
Mitglied: Rene1976
Rene1976 30.08.2013 um 12:54:50 Uhr
Goto Top
Danke Uwe.

Das ging aber schnell.

Ich werde es heute noch ausprobieren.

Bis dann.

Rene
Mitglied: Rene1976
Rene1976 30.08.2013 um 16:08:31 Uhr
Goto Top
Hi Uwe,

danke für dein neues Skript.
Im Test hat es wunderbar funktioniert.

Bin gerade dabei alles wieder zu bereinigen.

Bis dann und schönes Wochenende.

Rene