Zum Inhalt springen

php2shell auf 13 Servern

WerEin Admin, vom Handy aus
ServerAlle 13 der Beispiel GmbH, web01 zuerst
Ihr AnteilEin Satz, zwei Tipps auf Freigeben, ein Los
Stuferw- Fragt vor Änderungen, 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.

Lösung

Ein Satz vom Handy, und Heinzel Pro recherchiert, prüft jeden Server und spielt den Fix ein: erst auf einem, nach Ihrem Los auf allen.

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

Eingabe: Recherchiere php2shell und fixe das Problem auf allen davon betroffenen Servern.

Ein Satz, 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 Ihrem Los. Die Stufe bleibt „Fragt vor Änderungen“.

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

Schritt 2: Es recherchiert, und selbst dafür fragt es

Heinzel Pro will die Meldung von php.net lesen. Ein Abruf aus dem Netz kann auch Daten senden, also wartet er auf Ihren Tipp. Danach liest es allein: welche PHP-Pakete auf web01 liegen, ob die neue Version schon im Spiegel ist, welche Dienste laufen.

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: Sie lesen den Plan und geben ihn frei

Drei Schritte, jeder mit Befehl, Server und Einstufung: Paket, Dienst, nur lesen. Dazu, was schiefgehen kann und wie es zurückgeht. Ein Tipp gibt alle drei frei; sie laufen in dieser Reihenfolge, jeder erst, wenn der vorige gelang.

Der Plan in der Session: drei Schritte mit Befehl, Server und Einstufung, Paket, Dienst und nur lesen, darunter was schiefgehen kann, wie es zurückgeht, und der Knopf „Plan freigeben“

Schritt 4: Nach Ihrem Los folgen die anderen zwölf

web01 ist nach 24 Sekunden dicht, das Portal antwortet mit 200. Sie sagen Los, und die anderen Server bekommen je eine eigene Session, vier gleichzeitig. Was auf web01 freigegeben wurde und gelang, läuft dort ohne Nachfrage. backup2 hat kein PHP: seine Session meldet das und ändert nichts.

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