[Generic/PHP] Handhabung von POST-Requests fehlerhaft
(2002-02-28 12:55:00+00)
Quelle:
http://cert.uni-stuttgart.de/archive/bugtraq/2002/02/msg00378.html
Durch einen Pufferüberlauf in der Verarbeitung von bestimmten POST-Anfragen können Angreifer auf Webservern, die PHP verwenden, beliebigen Code ausführen.
Betroffene Systeme
Systeme, die eine der folgenden PHP-Versionen einsetzen (die Versionsangaben sind jeweils einschließlich):
- PHP 3.10 bis 3.18
- PHP 4.0.1 bis 4.1.1
Einfallstor
POST-Requests über HTTP bzw. HTTPS mit MIME-Typ "multipart/form-data
" (gewöhnlich über TCP-Port 80 bzw. 443).
Für die Ausbeutung der Schwachstelle ist es unerheblich, ob diese Daten vom aufgerufenen PHP-Skript tatsächlich verarbeitet werden.
Auswirkung
Der Angreifer kann beliebigen Code mit den Rechten des Webservers bzw. des PHP-Interpreters ausführen.
Typ der Verwundbarkeit
buffer overflow bug (je nach PHP-Version in verschiedenen Ausprägungen)
Gefahrenpotential
hoch bis sehr hoch
(Abhängig von der UID
, unter der PHP-Prozeß läuft, kann die Ausnutzung dieser Schwachstelle bis zur Kompromittierung des beherbergenden Rechnersystems führen.)
(Hinweise zur Einstufung des Gefahrenpotentials.)
Beschreibung
POST-Anfragen dienen der Übermittlung von mittleren Datenmengen vom HTTP-Client zum HTTP-Server. Im PHP-Programmcode, der für die Verarbeitung solcher POST-Anfragen mit dem MIME-Typ "multipart/form-data
" zuständig ist, wurden (je nach PHP-Version unterschiedliche) Pufferüberlauffehler entdeckt. Etwas irreführend werden diese Anfragen in der PHP-Dokumentation als file uploads bezeichnet, obwohl häufig auch ausgefüllte Web-Formulare (ohne beigefügte Dateien) über diesen Mechanismus an den Server zurückgeschickt werden. Da die Schwachstelle direkt in der Dekodierung dieses POST-Request-Typs enthalten ist, spielt es für die Ausnutzbarkeit der Schwachstelle keine Rolle, ob die Daten tatsächlich vom PHP-Skript verarbeitet werden.
Auch HTTP-Anfragen, die mit SSL verschlüsselt wurden (also üblicherweise HTTPS auf TCP-Port 443), können für Angriffe verwendet werden.
Der entsprechende Code wurde innerhalb relativ kurzer Zeit mehrfach überarbeitet, so daß die Schwierigkeit des Angriffes nicht nur von Architektur zur Architektur, sondern auch von PHP-Version zu PHP-Version stark schwankt. Die Erfahrung zeigt aber, daß es leichtsinnig ist, schwierig bis unmöglich ausnutzbar scheinende Angriffsmöglichkeiten zu ignorieren.
Workaround
- Über die undokumentierte Konfigurationsdirektive
file_uploads
(im Abschnitt kann die Dekodierung von POST-Requests ab PHP-Version 4.0.3 unterbunden werden. Die Dateiphp.ini
ist dabei wie folgt abzuändern ("On
" ist durch "Off
" zu ersetzen):
Aufgrund früherer Schwachstellen in PHP 4 ist diese Abschaltung u.U. aber nicht wirkungsvoll, falls PHP als Apache-Modul eingesetzt wird.;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. file_uploads = Off
- Alternativ können per Webserver-Konfiguration POST-Anfragen generell abgelehnt werden.
Gegenmaßnahmen
- Einspielen der Patches, die die PHP-Entwickler bereitstellen, oder ein Update auf PHP 4.1.2.
Da die Installation möglicherweise nicht vollständig trivial ist, sollten Sie überprüfen, ob im vom Webserver verwendenten Programmcode tatsächlich die vom Patch hinzugefügte Fehlermeldung auftritt, um sicherzugehen, daß die mit dem Patch kompilierte Fassung tatsächlich aktiviert ist.
Vulnerability ID
Weitere Information zu diesem Thema
Hinweis
Die in diesem Text enthaltene Information wurde für die Mitglieder der Universität Stuttgart recherchiert und zusammengestellt. Die Universität Stuttgart übernimmt keinerlei Haftung für die Inhalte. Dieser Artikel darf ausschließlich in unveränderter Form und nur zusammen mit diesem Hinweis sowie dem folgenden Copyrightverweis veröffentlicht werden. Eine Veröffentlichung unter diesen Bedingungen an anderer Stelle ist ausdrücklich gestattet.
Copyright © 2022 RUS-CERT, Universität Stuttgart, https://cert.uni-stuttgart.de/
https://cert.uni-stuttgart.de/ticker/article.php?mid=718