Kurz gesagt
Eine Webshell ist eine PHP-Datei, über die Angreifer im Browser Dateien verwalten, die Datenbank auslesen und Befehle auf Ihrem Server ausführen. Bekannte Familien heißen WSO, c99, r57, b374k oder Alfa, ein typisches Merkmal ist das Wort „FilesMan“ im Code. Wer eine Webshell findet, muss davon ausgehen, dass Angreifer vollen Zugriff auf den Webspace hatten.
Eine Webshell ist im Grunde ein kleiner Dateimanager mit Kommandozeile, nur eben für jemand anderen. Wer sie aufruft, kann Dateien hoch- und herunterladen, Datenbanken auslesen und weitere Schadprogramme nachladen. Angreifer legen sie ab, um nach einem Einbruch jederzeit wiederzukommen.
Bekannte Namen
In Sicherheitsanalysen tauchen immer wieder dieselben Familien auf, etwa bei Sucuri: WSO, c99, r57, b374k und Alfa. Die Dateinamen selbst sind beliebig und meist unauffällig gewählt, etwa so, dass sie wie ein normaler Teil der Website wirken.
Verlässlicher als der Dateiname ist der Inhalt. Ein lange bekanntes Merkmal ist das Wort FilesMan im Code. Neuere Varianten bestehen oft nur aus zwei Zeilen, die die eigentliche Webshell von einem fremden Server laden und mit eval ausführen. Auf der Festplatte liegt dann kaum etwas.
Wo Sie suchen
- Upload-Ordner wie
wp-content/uploadsoderimages: PHP-Dateien dort sind fast immer fremd. - Cache- und Temp-Ordner, die selten jemand ansieht.
- Plugin- und Theme-Ordner, besonders Plugins, die im Backend nicht auftauchen.
- Dateien mit doppelter Endung wie
bild.jpg.phpoder versteckte Dateien mit Punkt am Anfang.
Auffällige Kombinationen im Code: Datei-Funktionen wie move_uploaded_file, file_put_contents oder unlink zusammen mit shell_exec, system, passthru oder eval. Einzeln sind sie normal, gehäuft in einer kleinen, unbekannten Datei sind sie ein Alarmzeichen.
Warum Löschen nicht reicht
- Eine Webshell ist selten allein. Wer sie benutzt hat, konnte weitere Dateien ablegen, Administratoren anlegen und Zugangsdaten lesen, etwa die Datenbank-Zugänge aus der
wp-config.php. - Zugangsdaten gelten als bekannt: Datenbank, FTP, Hosting, CMS, API-Schlüssel und alles, was in Konfigurationsdateien stand.
- Zeitpunkt bestimmen. Das Änderungsdatum der Datei und die Zugriffsprotokolle zeigen, seit wann sie benutzt wurde. Das bestimmt, welche Sicherung sauber ist.
- Lücke finden. Meist ein veraltetes Plugin mit Upload-Funktion oder ein erbeutetes Passwort.
Weitere bekannte Spuren: Verdächtige Dateien in WordPress. Wer lieber nicht selbst sucht: Notfall: Website gehackt.
Häufige Fragen
- Ist jede unbekannte PHP-Datei eine Webshell?
- Nein. Viele Plugins legen eigene Dateien an. Verdächtig sind PHP-Dateien in Upload- oder Cache-Ordnern, verschleierter Code und Kombinationen aus Datei- und Befehlsfunktionen.
- Muss ich nach einer Webshell alle Passwörter ändern?
- Ja. Wer eine Webshell nutzen konnte, konnte auch Konfigurationsdateien lesen. Datenbank-, FTP-, Hosting- und CMS-Zugänge gelten als bekannt.