Das endgültige Handbuch zu Backdoor-Angriffen – Was sind WebShell BackDoors?

Wie im vorherigen Artikel kurz erwähnt, ist eine Webshell eine befehlsbasierte Webseite (Skript), die die Remote-Verwaltung eines Computers ermöglicht. Es wird eine Webshell genannt, da auf sie über eine URL zugegriffen wird und sie mit einem Web-Skript geschrieben wurde.

In diesem Artikel werden wir diskutieren, wie Websites mit solchen Hintertüren infiziert werden, und zwei reale Szenarien für solche Hintertüren erwähnen. Dann werden wir weiter erklären, wie Webshell-Backdoors funktionieren. Danach werden wir die Erkennungsmechanismen untersuchen, mit denen Sie solche Hintertüren auf Ihrem Server identifizieren können. Abschließend werden einige Schutzmaßnahmen erwähnt, die Sie ergreifen können, um Ihre Site vor solchen Hintertüren zu schützen.

Wie Websites infiziert werden

Die Websites, die durch diese Art von Backdoors infiziert werden, weisen im Allgemeinen Schwachstellen innerhalb der Websites selbst auf. Zwei der häufigsten Arten von Sicherheitsanfälligkeiten, die zum Abrufen einer Webshell verwendet werden können, sind uneingeschränktes Hochladen von Dateien und Befehlsinjektionen.

Uneingeschränktes Hochladen von Dateien

Viele Webserver verfügen über eine Funktion, mit der Sie Dateien auf den Server hochladen können. Die hochgeladenen Dateien sind in der Regel Bilder oder PDF-Dateien. Wenn die hochgeladenen Dateien nicht auf die beabsichtigten Dateitypen beschränkt werden, kann der Angreifer möglicherweise einen beliebigen Code (z. B. PHP-Skript) auf den Webserver hochladen.

Sehen wir uns das folgende Beispiel an. Wie Sie sehen, handelt es sich um eine relativ einfache Webseite mit einer Funktion zum Hochladen von Dateien.

Der erste Schritt, um dies auszunutzen, besteht darin, ein beliebiges Bild hochzuladen, um zu sehen, wo die Dateien gespeichert werden.

Wie wir sehen können, ist es in: / uploads / Ordner gespeichert und wir konnten erfolgreich direkt auf das Bild zugreifen.

Jetzt werden wir versuchen, unsere Webshell hochzuladen. Das Folgende ist der Code, den wir verwendet haben. (Hinweis: Der folgende Code wird im nächsten Abschnitt erläutert.)

Wie wir auf dem Screenshot unten sehen, wurde unsere cmd.php-Datei ohne Probleme hochgeladen. Das bedeutet, dass es keine Dateibeschränkungen für die Dateitypen gibt, die hochgeladen werden dürfen.

Greifen wir nun auf unsere Webshell zu und führen Sie den Befehl “whoami” aus.

Wie Sie also feststellen können, verwendet unsere Shell das GET-Argument “cmd”, führt es aus und zeigt es auf dem Bildschirm an. Versuchen wir also, die beiden folgenden Befehle “pwd” und “ls” auszuführen, um das aktuelle Verzeichnis zu kennen und alle Dateien im Verzeichnis aufzulisten.

Daher kann der Hacker jederzeit auf die URL http: //website.url/free/uploads/cmd.php zurückgreifen und einen beliebigen Befehl ausführen.

So beheben Sie die Sicherheitsanfälligkeit

Das einfachste Update, das Sie auf diese Sicherheitsanfälligkeit anwenden können, besteht darin, den Typ der vom Benutzer hochgeladenen Datei zu überprüfen, bevor Sie diese akzeptieren. Hier ist ein Beispiel zum Starten von: http://www.w3schools.com/php/php_file_upload.asp

Der gesamte Code ist wie folgt verfügbar:

  • upload.html: http://paste.fixmywp.support/?714e02a51099d533#h60TdjlzjaHU1ifb5HDcMTbcNdr8vTCNy8oEJxmOJBc=
  • upload.php: http://paste.fixmywp.support/?4c240af3bdb2dc87#gOaEU6G3RW66IJ2w1MzBtHkcAcu+KQRhW4U0gB2c8SY=
  • cmd.php: http://paste.fixmywp.support/?8f9debbb41318b16#sHR3Bg0EIgbsDfp/Uk8W9i2fXVH8cEUkGhC5iDYJBeg=

Befehlsinjektion

Die zweite Art von Sicherheitslücken, die zu einer Webshell-Hintertür führen können, ist eine Befehlseingabe. Es ist ein Angriff, der darauf abzielt, einen Befehl auf dem Betriebssystem des Hosts auszuführen, indem eine anfällige Anwendung (in diesem Fall die Webanwendung) ausgenutzt wird. Diese Sicherheitsanfälligkeit kann auf viele verschiedene Arten auftreten. Wir werden daher als Beispiel auf eine davon eingehen.

Angenommen, es gibt eine Anwendung, die andere Systeme basierend auf Ihrer Anfrage anpingt. In diesem Fall geben Sie der Anwendung die IP-Adresse eines Systems und die Anwendung versucht, das System zu pingen und das Ping-Ergebnis für Sie anzuzeigen.

Wie wir im kommenden Bild sehen können, werden die Ping-Ergebnisse angezeigt.

Da die Anwendung die Eingabe jetzt nicht validiert, können wir den Befehl bearbeiten. Mit dem Semikolon “;” können mehrere auszuführende Linux-Befehle eingegeben werden. Sie können es selbst ausprobieren. Öffnen Sie eine Shell auf einem beliebigen Linux-Computer und geben Sie “ping -c 2 8.8.8.8; pwd; ls;” und sehen, was Sie bekommen:

Wie Sie sehen können, werden alle Befehle einzeln ausgeführt.

Versuchen wir nun dasselbe Konzept auf dem Ping-Feld:

Wie wir sehen können, war das Ergebnis der Ping, dann die Ergebnisse der anderen Befehle:

Der Hacker kann nun eine beliebige Anzahl von Befehlen direkt auf dem System ausführen, obwohl er keine neuen Dateien hochgeladen hat. Diese Art von Hintertür ist schwer zu erkennen, da sie auf eine Systemschwachstelle zurückzuführen ist und keine schädlichen Dateien auf den Serverdateien abgelegt wurden.

Wie man es repariert

Die beste Lösung ist die Eingabevalidierung. Das bedeutet in diesem Fall, dass nur eine IP-Adresse eingegeben werden darf. Die Webanwendung sollte daher zuerst die Eingabe überprüfen, bevor der Befehl ausgeführt wird.

Der gesamte Code ist wie folgt verfügbar:
ping.html: https://paste.fixmywp.support/?b280053ab7d47572#Wpxrtd90kBWHXTtlOrF+SuQzaviSQD288sNQE96wAbA=
ping.php: https : //paste.fixmywp92suppd0t0txr 5 / j7iGVLTiIyCf1uo =

Wie funktioniert eine Webshell?

Wie wir gesehen haben, war die von uns verwendete Webshell ziemlich einfach. es nimmt ein Befehlsargument und gibt das Ergebnis zurück. Natürlich gibt es viel kompliziertere Webshells, die ausgefallenere Funktionen wie das Hochladen einer Datei und das Erstellen einer Reverse-Shell enthalten. Aber jetzt wollen wir verstehen, wie eine einfache Webshell funktioniert.

Die Codesyntax ist ziemlich einfach:

$ _GET [“cmd”] : Der Parameter cmd GET. Beispiel: http://127.0.0.1/free/uploads/cmd.php?cmd=hi $ _GET [“cmd”] = “hi”
shell_exec () : Eine Funktion, die ein Argument aufnimmt und im lokalen System ausführt. Deshalb gibt shell_exec (“ls”) die Ausgabe des Befehls ls zurück.
echo : Hiermit wird die Ausgabe ausgegeben (gedruckt), die von der Ausführung des angegebenen Befehls stammt.

Daher haben wir eine vorhandene PHP-Funktion shell_exec () verwendet , um Befehle auf dem Server auszuführen. Es gibt jedoch kompliziertere Webshells. Das folgende Github-Repository enthält beispielsweise viele PHP-Webshells. Sie können einige davon ausprobieren.
https://github.com/JohnTroony/php-webshells Auch
für Shells in anderen Sprachen:
https://github.com/BlackArch/webshells
https://github.com/malwares/WebShell

HINWEIS: Hosten Sie NIEMALS eine Webshell auf Ihrem Server oder einem öffentlich zugänglichen Computer.

So entdecken Sie eine WebShell-Backdoor

Das Erkennen einer Webshell-Hintertür kann so einfach sein wie das Suchen nach einer schädlichen Datei in Ihren Upload-Ordnern oder so kompliziert wie das Überprüfen des Quellcodes auf Sicherheitsanfälligkeiten und der Protokolle auf abnormales Verhalten. Ein kostenloses Tool, das einen Großteil der Webshells erkennen kann, heißt ” Webshell Detector ” und ist einfach zu bedienen.

  • Laden Sie das Tool unter folgendem Link herunter: https://github.com/emposha/PHP-Shell-Detector/archive/master.zip
  • Laden Sie die Dateien shelldetect.php und shelldetect.db in Ihr Stammverzeichnis hoch
  • Öffnen Sie die Datei shelldetect.php in Ihrem Browser (z. B. http://mywebsite.com/shelldetect.php).
  • Standard-Benutzername und Passwort verwenden (admin: protect)
  • WICHTIG: Löschen Sie die vom Tool gefundenen Dateien nach einer erneuten Überprüfung, da einige Shells in Systemdateien integriert sind.

Weitere Informationen finden Sie auf der Github-Seite:
https://github.com/emposha/PHP-Shell-Detector

Eine andere Möglichkeit, eine Webshell zu finden, besteht darin, die Protokolle zu überprüfen. Hier sind einige hilfreiche Tipps:

  • Der Hacker besucht normalerweise NUR eine URL (das ist seine Webshell).
  • Auf die Webshell-URL wird nur ein- oder zweimal täglich zugegriffen, auf andere normale URLs in Ihrer Website wird viel häufiger zugegriffen.
  • Webshell-Tools bieten Hackern die Möglichkeit, einen benutzerdefinierten User-Agent-Header auszuwählen. Die meisten Hacker wählen eine kurze Version. Daher könnte ein User-Agent-Header wie “Mozilla / 4.0” etwas nicht so cooles bedeuten.
  • Die meisten Hacker greifen direkt auf ihre Webshells zu, dh es wird kein “Referrer” -Header gesetzt. Achten Sie also darauf.

Schutz

Sie werden oft viele Ratschläge hören, wie Sie Ihre Website sicher halten können. Wir werden versuchen, so einfach wie möglich zu sein, indem wir die wichtigsten Schritte nennen, die unternommen werden müssen:

  1. Halten Sie das Betriebssystem des Servers auf dem neuesten Stand (unabhängig davon, ob es sich um einen Windows-Server oder einen Linux-Server handelt).
  2. Halten Sie Ihre Software auf dem neuesten Stand. Dazu gehören der Webserver (z. B. Apache) und andere auf dem Server verwendete Software / Frameworks (z. B. WordPress).
  3. Verwenden Sie nur Plugins von vertrauenswürdigen Quellen und halten Sie diese gepatcht.
  4. Unterweisen Sie Ihre Entwickler in der sicheren Codierung.
  5. Vor der Veröffentlichung Ihrer Website wird eine Quellcode-Analyse und ein Penetrationstest empfohlen.
  6. Überprüfen Sie Ihre Protokolle regelmäßig auf ungewöhnliches Verhalten.
  7. Verwenden Sie regelmäßig WebShell Finder-Tools wie die oben genannten.

Schließlich können Sie sich jederzeit an uns wenden, um Hilfe zu erhalten. Unsere professionellen Sicherheitsdienste bei WartungPress.de können Ihnen helfen, Ihre Website zu schützen.

In dem kommenden Blog-Beitrag werden wir mehr über eine andere Art von Backdoor sprechen, die eine Network Shell-Backdoor ist. Außerdem zeigen wir, wie ein professioneller Hacker eine einfache Webshell-Backdoor in eine Netzwerk-Shell verwandeln kann. Bleiben Sie also auf dem Laufenden.