Zum Inhalt springen

php2shell auf 13 Servern

Mehr tippen Sie nicht

„Recherchiere php2shell und fixe das Problem auf allen davon betroffenen Servern.“

Wer
Ein Admin, vom Handy aus
Server
Alle 13 der Beispiel GmbH, web01 zuerst
Ihr Anteil
Ein Satz und eine Freigabe
Stufe
rwx Ändert allein, siehe die drei Stufen

Problem

Am Nachmittag veröffentlicht php.net zwei Lücken in PHP, zusammen php2shell genannt. Jede Webanwendung ist betroffen, der Fix liegt bereit. Die Beispiel GmbH hat 13 Server, nicht auf jedem läuft PHP, und der Admin ist unterwegs. Jeden Server einzeln prüfen und patchen kostet den Abend, und wer einen vergisst, merkt es zu spät.

Gesucht: Alle betroffenen Server noch heute dicht, erst einer zur Probe, dann die anderen, vom Handy aus und ohne einen Befehl zu lesen.

Lösung

Ein Satz vom Handy, und Heinzel Pro recherchiert, prüft jeden Server und spielt den Fix ein: erst auf einem, nach Ihrer Freigabe auf allen. Auf der Stufe „Ändert allein“ wartet dabei nichts auf Sie.

Schritt 1: Sie beschreiben die Aufgabe, für alle Server

Der Satz oben, wie Sie ihn einem Kollegen schreiben würden. „Dasselbe auf vielen“ macht daraus einen Rollout: eine Session je Server, erst auf web01, die anderen nach Ihrer Freigabe. Die Stufe stellen Sie auf „Ändert allein“: Heute zählt jede Minute, und was Heinzel Pro auf web01 getan hat, lesen Sie vor der Freigabe in Ruhe nach.

Eine neue Session in Heinzel Pro auf dem Handy: der eingetippte Satz zu php2shell, die Wahl „Dasselbe auf vielen“, die 13 gewählten Server, web01 als erster, und die Stufe „Ändert allein“

Schritt 2: Es recherchiert und sieht nach

Heinzel Pro holt sich die Meldung von php.net und liest dann web01: welche PHP-Pakete dort liegen, ob die neue Version schon im Spiegel ist, welche Dienste laufen. Nichts davon wartet auf Sie, und jeder Befehl steht trotzdem mit Einstufung und Ausgabe in der Session.

Dann steht es: web01 ist betroffen, PHP 8.2.29 als php-fpm hinter nginx, und der Fix liegt bereit.

Die Session auf web01: der Abruf der Meldung von php.net mit der Einstufung „schreibend“ und seiner Ausgabe, die Antwort von Heinzel Pro zu den zwei Lücken, der lesende Befehl mit den PHP-Paketen und der Befund, dass web01 betroffen ist

Schritt 3: Es schreibt den Plan auf und geht ihn durch

Drei Schritte, jeder mit Befehl, Server und Einstufung: Paket, Dienst, nur lesen. Dazu, was schiefgehen kann und wie es zurückgeht. Auf dieser Stufe gibt niemand ihn frei, aber er steht da, bevor der erste Schritt läuft: Sie lesen hinterher, was Heinzel Pro vorhatte und was daraus wurde.

Der Plan in der Session: drei Schritte mit Befehl, Server und Einstufung, Paket, Dienst und nur lesen, darunter was schiefgehen kann und wie es zurückgeht, mit dem Vermerk, dass die Session allein ändert

Schritt 4: Nach Ihrer Freigabe folgen die anderen zwölf

web01 ist nach 24 Sekunden dicht, das Portal antwortet mit 200. Sie lesen die Session, geben frei, und die anderen Server bekommen je eine eigene Session auf derselben Stufe, vier gleichzeitig. backup2 hat kein PHP: seine Session meldet das und ändert nichts.

Die Seite des Rollouts: die Aufgabe, die Freigabe von Anna Berg, darunter die Tabelle der 13 Server mit ihrem Stand, web01 und backup2 durch, drei laufen, die übrigen warten