Heim  >  Artikel  >  PHP-Framework  >  Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

藏色散人
藏色散人nach vorne
2020-01-20 14:13:594330Durchsuche

Einführung in die Sicherheitslücke

Am 10. Januar 2020 veröffentlichte das ThinkPHP-Team ein Patch-Update, das eine Sicherheitslücke bei willkürlichen Dateioperationen behebt, die durch eine unsichere SessionId verursacht wurde. Diese Sicherheitslücke ermöglicht es einem Angreifer, beliebige Dateien zu erstellen und zu löschen, wenn die Sitzung in der Zielumgebung aktiviert ist. Unter bestimmten Umständen kann der Angreifer auch an die Shell gelangen.

  1. Die konkret betroffene Version ist ThinkPHP6.0.0-6.0.1.

Reproduktion der Sicherheitslücke

Die lokale Umgebung verwendet ThinkPHP 6.0.1+PHP7.1.20+Apache zur Reproduktion. Eine Webshell kann geschrieben werden, um das Testverifizierungsprogramm unter bestimmten Umständen auszuführen, wie unten gezeigt:

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Schwachstellenanalyse

Laut dem offiziellen Github-Commit:

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

https://github.com/topthink/framework/commit/1bbe75019ce6c8e0101a6ef73706217e406439f2

Daher wird spekuliert, dass das Schreiben der Datei durch das Speichern der Sitzung verursacht werden könnte. Dann verfolgen Sie: vendor/topthink/framework/src/think/session/Store.php:254.

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Eine Schreibfunktion wird hier aufgerufen, folgen Sie: Vendor/topthink/framework/src/think/session/driver/File.php:210.

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Rufen Sie die Funktion writeFile auf und folgen Sie:

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Tatsächlich handelt es sich um einen Vorgang zum Schreiben einer Datei.

Fahren Sie mit dem umgekehrten Vorgang fort, um zu sehen, ob der Dateiname steuerbar ist. Der Dateiname ergibt sich aus dem Wert von $sessionId, der durch die anfängliche getId() erhalten wurde. Da es getId gibt, wird es auch setId geben. Schauen Sie sich den Funktionsinhalt an:

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Wenn der eingehende Parameter $id die Länge von 32 Bit erreicht, wird der Wert festgelegt zu $ this->id. Sehen Sie sich an, wo setId aufgerufen wird: Vendor/topthink/framework/src/think/middleware/SessionInit.php:46.

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Der Wert von $cookieName ist hier PHPSESSID.

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Und $sessionId ist der Wert namens PHPSESSID im Cookie, sodass er vom Angreifer kontrollierbar ist, was dazu führt, dass der geschriebene Dateiname kontrollierbar ist.

Der geschriebene Dateiname ist kontrollierbar, aber ist der geschriebene Inhalt kontrollierbar? Die Analyse ergab, dass der geschriebene Inhalt der Inhalt ist, der zum Erstellen der Sitzung verwendet wurde. Die Erstellung einer Sitzung wird jedoch durch die tatsächliche Back-End-Geschäftslogik bestimmt und eine Sitzung wird nicht in der Standardumgebung erstellt. Daher ist das Schreiben beliebiger Dateien in der Standardumgebung nicht möglich.

Während der eingehenden Analyse dieser Schwachstelle haben wir festgestellt, dass diese Schwachstelle auch das willkürliche Löschen von Dateien bewirken kann und das Löschen von Dateien nur eine geringe Abhängigkeit von der Back-End-Geschäftslogik aufweist.

Immer noch in Vendor/topthink/framework/src/think/session/Store.php:254:

Schwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6

Durch Analyse und Überprüfung haben wir die Schwachstelle gefunden (Wie oben gezeigt) kann auch zum willkürlichen Löschen von Dateien führen.

Zusammenfassung

Wenn die Zielumgebung Windows ist und die Sitzung aktiviert ist, ist sie anfällig für willkürliche Angriffe zum Löschen von Dateien.

Wenn die Sitzung in der Zielumgebung geöffnet wird und die geschriebene Sitzung kontrollierbar ist, ist sie anfällig für willkürliche Dateischreibangriffe.

Relevanten Benutzern wird empfohlen, rechtzeitig ein Upgrade auf die ThinkPHP6.0.2-Version durchzuführen, um Angriffe zu vermeiden.

php Chinesische Website, eine große Anzahl kostenloser thinkphp-Einführungs-Tutorials, willkommen zum Online-Lernen!

Das obige ist der detaillierte Inhalt vonSchwachstellenanalyse für willkürliche Dateioperationen in ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:seebug.org. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen