THINKPHP-Fehlerbehebungen: Vor Kurzem hat der Beamte alle vorhandenen Thinkphp-Versionen aktualisiert und mit diesem Update hauptsächlich einige Fehler behoben Die zuvor bestehende SQL-Injection-Schwachstelle und die Schwachstelle des Remote-Code-Ausführungsabfragesystems wurden behoben. Die Beamten dachten, dass es kein Problem geben würde, aber bei der eigentlichen Sicherheitsüberprüfung wurde festgestellt, dass es immer noch Probleme gibt und Remote-Code-Injection möglich ist noch erledigt sein, unzulässige Zeichen einfügen und an das Server-Backend senden.
Was die diesmal entdeckte Sicherheitslücke betrifft, schauen wir uns an, wie sie aussieht. Der aktualisierte Programmdateipfad ist app.php im Think-Verzeichnis unter dem Bibliotheksordner . , wie unten gezeigt:
Der Grund für die Schwachstelle liegt in diesem Controller. Die Funktionen im gesamten thinkphp-Framework führen keine strenge Sicherheitsfilterung und -prüfung auf dem Controller durch Dies ermöglicht Angriffe. Der Angreifer kann schädliche Parameter fälschen, um das Einfügen zu erzwingen. Der grundlegendste Grund ist, dass die regulären Ausdrücke nicht gut geschrieben sind und umgangen werden können.
Nachdem der Controller den Controller erhalten hat, weist er den Wert direkt zu. Der Name des Controllers wird jedoch nicht genau erkannt, was zur Verwendung spezieller Symbole wie Schrägstriche für die Remote-Code-Injektion führt.
Richten wir die Website-Umgebung ein, Apache+MySQL+Linux-Centos-System. Die Adresse der erstellten Testumgebung lautet http://127.0.01/anquan. Wir können die Angriffsparameter direkt hinter index.php fälschen . Ein Beispiel lautet wie folgt:
1 |
|
Senden Sie es direkt über die Get-Methode, und Sie können alle Dateien im aktuellen Stammverzeichnis der Website direkt abfragen:
Durch diese Schwachstelle können Sie auch direkt Remote-Code einschleusen, um die phpinfo-Anweisung auszuführen, die aktuelle PHP-Version, den Pfad, die Erweiterung und die Adresse abzufragen, an der php.ini gespeichert ist. Alles ist sichtbar. Erstellen Sie einfach den folgenden Code.
1 |
|
Einige Leute fragen sich vielleicht: Kann GetShell Website-Trojaner-Dateien in die Website schreiben, da phpinfo zum Abfragen von Verzeichnisdateien verwendet werden kann? Die Antwort lautet „Ja“. Bei unserem Test haben wir einen Satz Trojaner-Code in die Datei „safe.php“ geschrieben.
1 |
|
Dies ist das Ende der Ausnutzung und Analyse der Sicherheitslücke bei thinkphp. Der Schaden ist schwerwiegend. Viele Websites, die Patches aktualisieren, werden angegriffen gesperrt. Ma, wie kann man die Thinkphp-Sicherheitslücke beheben?
Ersetzen Sie einfach den vorherigen regulären Ausdruck. Sie müssen auch Berechtigungen für das Website-Verzeichnis bereitstellen, um die Generierung von PHP-Dateien zu verhindern, Schwachstellen auf der Website zu beheben oder die Sicherheitsschutzparameter der Website zurückzusetzen Website-Umgebung zu dieser Zeit.
Angesichts dieser Situation müssen wir den regulären Ausdruck in seinem Bibliotheks-/think/App.php-Code ändern
1 |
|
Dieser Artikel stammt aus der technischen Artikelspalte des ThinkPHP-Frameworks: http ://m.sbmmt.com/phpkj/thinkphp/
Das obige ist der detaillierte Inhalt vonSo beheben Sie die Thinkphp-Sicherheitslücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!