Das Folgende ist die Kolumne mit dem Thinkphp-Framework -Entwicklungs-Tutorial, um Ihnen die historischen Schwachstellen von Thinkphp aus der Perspektive des Schutzes vorzustellen. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!
1. Vorwort
Anfang 2019 wurden zwei RCE-Schwachstellen von Thinkphp5 im Internet entdeckt, die sehr einfach auszunutzen sind Verwenden von Scannern zum Scannen des gesamten Netzwerks. Wir beobachten weiterhin eine große Menge an Angriffsverkehr, der diese Schwachstellen nutzt, um Batch-Getshell-Angriffe über IPS-Geräte durchzuführen. Dieser Artikel analysiert hauptsächlich kurz aus der Verkehrsperspektive und verwendet thinkphp, um den gesamten Netzwerkscan und die Getshell-Verkehrsspuren anzugreifen.
2. Thinkphp RCE-Sicherheitslücke und Scannen des Datenverkehrs
2.1 Überprüfung der Sicherheitslücken
2.1.15.0.x Die Versionsschwachstelle
Das Prinzip besteht darin, dass die von Thinkphp zum Verarbeiten von Anforderungen verwendete Schlüsselklasse Request(thinkphp/library/think/Request.php) ist, die einige Einstellungen für HTTP-Anfragen implementieren kann
Thinkphp unterstützt die Konfiguration der „Form-Camouflage-Variable“. Standardmäßig ist der Wert dieser Variablen _method. Daher können Sie in method() die Variable zum Aufrufen einer beliebigen Funktion dieser Klasse verwenden. und $_POST wird verwendet, wenn die Parameter der Funktion übergeben werden. Anforderungen können so erstellt werden, dass sie die Attributwerte der Anforderungsklasse überschreiben, z. B. das Filterattribut (das Filterattribut speichert die für die globale Filterung verwendeten Funktionen) und so eine Codeausführung ermöglichen.
Sicherheitslücke in der Version 2.1.25.1.x-5.2.x
Ähnlich wie bei der Sicherheitslücke in der Version 5.0.x bestehen die Sicherheitslücken in Request(thinkphp/library/think / Request.php)-Klasse, wobei:
$method-Variable $this->method ist, was dem Parameterwert „_method“ von POST entspricht und sein kann überschrieben durch $ Der Attributwert des Filters (das Filterattribut speichert die für die globale Filterung verwendete Funktion), um eine Codeausführung zu erreichen.
Wenn diese Sicherheitslücke ausgelöst wird, tritt eine Ausnahme der Warnstufe auf, die zum Beenden des Programms führt. Zu diesem Zeitpunkt müssen Sie die Eingabeaufforderung „Fehler ignorieren“ (0) in public/index.php festlegen um die Ausnahme zu ignorieren und mit der Ausführung des Codes fortzufahren, wie unten gezeigt:
2.2 Scan des gesamten Netzwerks auf Thinkphp-Schwachstellen
Von a Aus Sicht des Datenverkehrs besteht die Verwendung der Thinkphp-Sicherheitsanfälligkeit darin, ein HTTP-Paket zu senden. Wir haben festgestellt, dass der Scanner eines Hackers zunächst einen einfachen Satz als Fingerabdruck schreibt und dann auf die Datei zugreift, um zu sehen, ob die Fingerabdruckinformationen zurückgegeben werden. Ein erfolgreicher Zugriff zeigt an, dass die Shell im Grunde zwei HTTP-Pakete gesendet hat Der Scanner zeichnet den erfolgreichen Schreibvorgang auf. Geben Sie die Website-IP und die URL der Shell ein und stellen Sie dann für nachfolgende Vorgänge manuell eine Verbindung mit einem Küchenmesser her.
Anhand der IPS-Geräteprotokolle und der manuellen Überprüfung umfassen die Angriffsschritte des Angreifers zwei Schritte: 1. Scannen Sie das gesamte Netzwerk, um Exp zu senden, und ermitteln Sie anhand der Fingerabdrücke, ob eine Getshell erforderlich ist. 2. Verbinden Sie sich mit einem Chopper zur Fernsteuerung ;
2.2.1 Scannen und Senden des gesamten Netzwerks
Im Allgemeinen durchlaufen Scanprotokolle Segment B oder Segment C, und die Zeit ist für einen bestimmten Scanner relativ intensiv Das Protokollfragment lautet wie folgt:
hat drei Merkmale: 1. Die Ziel-IP ist dasselbe Segment C oder B, 2. Der Port ist relativ fest, 3. Das Scannen Die Zeit ist sehr intensiv
Scan Die vom Scanner gesendete Nachricht zur Bestätigung, dass die Shell erfolgreich geschrieben wurde, verwendet den dedizierten Fingerabdruck des Scanners, daher verfügt ips nicht über diese Erkennungsregel.
2.2.2 Chopper-Verbindung
Wenn der Angreifer die kompromittierte Site manuell mit einem Chopper verbindet, wird sie auch von ips erkannt und die Quelle kann zurückverfolgt werden Die Thinkphp-Schwachstelle wird durch Kontextassoziation als Angriffspunkt des Angreifers identifiziert. Wählen Sie einige typische Fälle aus, die zu diesem Zeitpunkt aufgezeichnet wurden:
Der kompromittierte Zhengzhou-Server 1 (122.114.24.216):
Diese Website wurde tatsächlich für thinkphp5 entwickelt, Zu diesem Zeitpunkt befand sich der Webshell-Trojaner noch auf dem Server und war nicht gelöscht. Der vom Hacker hochgeladene Trojaner kann über den Server abgerufen werden. Die Fingerabdruckinformationen sind Baidu. Der Scanner verwendet diesen Fingerabdruck, um den Erfolg von getshell automatisch zu ermitteln und die URL aufzuzeichnen.
Der kompromittierte Sichuan-Server (182.151.214.106):
Der kompromittierte Sichuan-Server (182.151.214.106):
Dies obwohl die Der Trojaner wurde zu diesem Zeitpunkt noch entfernt, der Server war vermutlich auch ein Thinkphp-Framework Das Gerät zeichnete die Verbindung des Hackers mit dem Trojaner und die Ausführung von Netzwerkabfragebefehlen auf. Die erhaltenen Informationen stimmen mit der obigen Fehlermeldung überein. Und es ist ersichtlich, dass sich der Server auch auf einer Maschine im internen Netzwerk befindet. Der Screenshot zeigt, dass das Netzwerk mindestens zwei Subnetze enthält, 192.168.9.0 und 192.168.56.0, wie unten gezeigt:
Kompromittierter US-Server (161.129.41.36):
Die Webshell auf dem US-Server wurde ebenfalls bereinigt. Durch die Erfassung von Gerätepaketen wurde dieselbe Webshell gefunden Es wurde ein Trojaner verwendet, nämlich x.php, und es besteht der Verdacht, dass es sich um dieselbe Hackergruppe handelt.
Als der Hacker den Inhalt der x.php-Datei (Webshell) auf dem US-Server durchsuchte, zeichnete das Gerät auf, dass das Passwort von x.php xiao war, und das Flagge war auch Baidu.
Es ist ersichtlich, dass zu diesem Zeitpunkt mithilfe dieser beiden hochriskanten RCE-Schwachstellen in Thinkphp eine große Anzahl von Serverschwachstellen entdeckt wurde.
3. Zusammenfassung
Dieser Artikel kombiniert die historischen Schwachstellenprinzipien von Thinkphp und teilt die Fälle erfolgreicher Angriffe mit Thinkphp-Schwachstellen. Derzeit sind die am häufigsten vom Gerät täglich erkannten Protokolle direkte Getshell-Protokolle wie Weblogic, Struts2 und Thinkphp oder SSH-RDP-Brute-Force-Cracking-Protokolle. Sobald viele Angreifer den neuesten Exploit entdecken, rüsten sie ihre eigenen Scanner aus, um das gesamte Netzwerk zu scannen. Es können mehrere Shells an einem Tag vorhanden sein. Daher wird empfohlen, dass Benutzer nach dem Auftreten einer Sicherheitslücke mit hohem Risiko rechtzeitig Patches anwenden und Sicherheitsgeräterichtlinien konfigurieren. Aus mehreren tatsächlichen Fällen geht hervor, dass das Risiko von Scannern immer vorhanden war. Wenn die Website so konfiguriert werden kann, dass sie den direkten IP-Zugriff verbietet, kann diese Bedrohung bis zu einem gewissen Grad gemindert werden. Aufgrund des begrenzten Levels ist jeder herzlich willkommen, auf die Fehler im Artikel hinzuweisen und seine Vorschläge zu teilen
Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie die historischen Schwachstellen von Thinkphp aus Schutzsicht betrachten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!