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.

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.

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.

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.
