PHP-Skripte laufen im Systemkonto (Sicherheitslücke!)

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

PHP-Skripte laufen im Systemkonto (Sicherheitslücke!)

Postby LonelyPixel » 21. January 2018 16:35

Ich habe gerade so einen Fehler in meinem PHP-Skript behoben, das eine Logdatei fälschlicherweise nach C:\ geschrieben hat. Beim Löschen wurde ich nach Admin-Rechten dafür gefragt. Dabei ist mir aufgefallen: Warum durfte das PHP-Skript da überhaupt hinschreiben?

Und siehe da, der Apache-Prozess läuft mit der Berechtigung des Windows-Systemkontos. Der Webserver darf also grundsätzlich alles im System. Und PHP-Skripte auch, da sie ja als Modul im selben Prozess laufen.

Ist das nicht ein bisschen gefährlich? Also, ein bisschen sehr, sehr, sehr gefährlich? Nur so als Tipp: Webserver laufen üblicherweise mit extrem eingeschränkten Rechten. Z. B. Apache unter Linux oder IIS unter Windows. Denen muss man weiterführende Berechtigungen explizit erteilen, sonst kommen sie aus ihrer kleinen Welt nicht raus. Etwa so wie aktuelle Webbrowser.

Wenn ich nur meine eigenen Websites damit entwickle, kann ich mir nur versehentlich selbst ins Knie schießen. Aber sobald das Ding auch nur ansatzweise öffentlich hostet (wovon ja zunächst abgeraten wird, wofür dann aber doch noch Tipps gegeben werden, und die Sicherheit von Apache/PHP gehört nicht dazu) oder ich Fremdsoftware damit ausführe, ist es mit jeglicher Sicherheit vorbei. Das ist schlimmer als unbekannte Software runterzuladen und zu starten, denn die hat ohne Rückfrage nichtmal Adminrechte, geschweige denn Systemrechte.
Last edited by LonelyPixel on 21. January 2018 17:53, edited 1 time in total.
LonelyPixel
 
Posts: 35
Joined: 25. April 2010 16:34
XAMPP version: 7
Operating System: Windows 10

Re: PHP-Skripte laufen im Systemkonto

Postby Nobbie » 21. January 2018 16:39

Wenn Apache als "Dienst" gestartet wird, dann läuft Apache als System User. So wie alle Dienste. Dieser User darf BEI WEITEM nicht alles auf dem System.

Was dieser User darf, legt nicht Xampp fest, sondern der Betreiber des Rechners. Entweder läuft der mit Defaultrechten oder mit irgenwelchen (vom Anwender!) angepassten Rechten. Ggf. ist auch das UAC ausgeschaltet, dann wird gar nicht erst geprüft, welcer User auf C:/ schreibt. Alles in allem sind die Zusammenhänge keinesfalls so, dass Apache mit den "falschen" Rechten von Xampp ausgeliefert wird. Ich weiß jetzt ad hoc nicht, mit welchen Rechten "System" normalerweise auf C:/ Zugreifen darf (wahrscheinlich darf da jeder zugreifen), aber das heißt MITNICHTEN, dass sich das Zugriffrecht automatisch nach unten weitervererbt. Versuche doch mal mit dem PHP Script eine Datei aus Deinem persönlichen Bereich zu löschen oder aus dem Windows Ordner. Selbst wenn es geht - das ist keine Xampp Einstellung, sondern eine persönliche Einstellung auf Deinem Rechner.

Der SYSTEM User ist NICHT (was Du wahrscheinlich verwechselst) der ADMINISTRATOR von Windows. Deine Argumentation würde treffen, wenn Xampp als ADMINITRATOR läuft. Aber SYSTEM ist wie gesagt ein eigens für Dienste vorhandener User, der eben NICHT volle Adminrechte besitzt.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: PHP-Skripte laufen im Systemkonto

Postby LonelyPixel » 21. January 2018 17:03

Nobbie, ich empfehle dir, dich zunächst einmal mit dem Berechtigungskonzept von Windows vertraut zu machen. SYSTEM darf alles. Das ist der Benutzer, der keinerlei Einschränkungen mehr hat. Naja, Kernel-Mode ist vielleicht noch mächtiger, aber im Userspace gibt es keinen Account, der mehr könnte. Alle Prozesse, die für Benutzeranmeldung und Systemstart zuständig sind (csrss, wininit, services, winlogon), laufen mit diesem Konto.

Ein Administrator darf (zunächst) nicht alles tun. Aber ein Administrator darf alles ändern. So darf ein Administrator z. B. auch seine Berechtigungen erweitern, um SYSTEM zu werden. Das nutzt z. B. psexec, das Programme mit Systemrechten starten kann (psexec -s), aber nur, wenn man ihm Adminrechte gibt. Das ist der Unterschied zu SYSTEM, der darf von sich aus alles, ohne irgendwas ändern zu müssen.

Es gäbe da noch das Konto Netzwerkdienst. Das hat soweit ich weiß erheblich eingeschränkte Rechte. Weil es mit dem (potentiell unsicheren) Netzwerk kommuniziert. Ob das für XAMPP geeignet wäre, glaube ich nicht. IIS verwendet eigene dynamische Accounts für einzelne konfigurierte Websites, um sie einzuschränken und voneinander zu isolieren.

Aber SYSTEM ist der Sicherheits-GAU für Webserver. Das ist wie root unter Linux. Da würde einen auch jeder für verrückt erklären, wenn er das täte. Auch auf Entwicklungsmaschinen. root soll dort ausschließlich und kurzfristig zur Systemkonfiguration verwendet werden, am besten über sudo, nicht für den Alltag.

Übrigens gibt es UAC nur für interaktive Sessions. Da wird dem Benutzer (der eigentlich Adminrechte hätte) bei der Anmeldung das entsprechende Token aus dem Security-Kontext weggenommen und erst nach Rückfrage für einen neuen Prozess wieder erteilt. Das ist derselbe Benutzer. Im Gegensatz zu root, der immer ein anderer Benutzer ist. Für Dienste oder nicht-interaktive Anmeldungen funktioniert das UAC-Konzept nicht, da man ja niemanden fragen kann. Hier muss vorab festgelegt werden, welche Recht man will. Das kann man z. B. bei der Konfiguration einer geplanten Aufgabe (Aufgabenplanung) einstellen.

Aber ich bin auch auf deine Argumente gespannt. :-)
LonelyPixel
 
Posts: 35
Joined: 25. April 2010 16:34
XAMPP version: 7
Operating System: Windows 10

Re: PHP-Skripte laufen im Systemkonto

Postby Nobbie » 21. January 2018 17:20

LonelyPixel wrote:Aber ich bin auch auf deine Argumente gespannt. :-)


Da muss ich Dich enttäuschen. Nach wie vor ist SYSTEM der Standardanwender für WINDOWS Dienst. Wenn der "ALLES" darf, ist es mir auch egal, das ist Microsofts Konfiguration. Ich benutze sowieso kein Windows (erst Recht nicht als Webserver). Wenn SYSTEM zu viele Rechte hat, dann empfehle ich Dir, wende Dich an Microsoft. Hier kann keiner etwas daran ändern, wie Microsoft Dienste verwaltet. Oder richte Xampp nichts als Dienst ein. Ist mir wirklich total egal.

Last not least noch ein Grund mehr, Xampp nur als Entwicklungsumgebung zu benutzen (wofür es ausschließlich designt ist), eigentlich ist es ja nur konsequent, wenn Xampp "alles darf", es sind ja auch alle Tools so eingerichtet, dass jeder alles darf (MySQL mit root ohne Passwort usw.). Da würde man einen ja für verrückt erklären, Xampp Online einzusetzen. Oder nicht?!
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: PHP-Skripte laufen im Systemkonto

Postby LonelyPixel » 21. January 2018 17:43

(Edit: Auf deine Bearbeitung eingegangen)

Okay, ich hatte auf eine qualifiziertere Antwort gehofft. Du verwendest selbst kein Windows, machst falsche Aussagen zu dessen Administration und empfiehlst, sich bei Microsoft darüber zu beschweren, dann man selbst die Dinge nicht so nutzt, wie sie entworfen wurden. Hoffentlich folgt niemand deinem Rat in diesen Dingen. Zum Glück verantwortest du keine Windows-PCs oder -Server. Erst recht, wenn dir sowieso alles egal ist. Vermutlich lässt du auch deine Haustür ständig offen.

Nicht alle Dienste laufen im Systemkonto. Manche laufen als Netzwerkdienst oder lokaler Dienst. Andere als normaler Benutzer. Andere in ihrem eigenen, dafür erstellten Konto (wie IIS-Anwendungen). Sieht man ganz toll in jedem Taskmanager. Letzteres ist unter Linux z. B. üblich (wwwdata, Debian-exim usw.). Ein „Standardkonto für Dienste“ gibt es nicht. Falls du mal einen Dienst erstellt hast, weißt du, dass du immer festlegen musst, welches Konto genutzt wird. Hast du aber vermutlich nie.

SYSTEM kann vermutlich nicht umkonfiguriert werden, ohne dass das System danach nicht mehr startet. Davon sollte jeder Benutzer und Experte schlicht und einfach die Finger lassen.

Ich bleibe dabei: Es liegt voll und ganz in der Verantwortung des Anwendungsentwicklers, ein geeignetes Konto für die Ausführung seiner Software auszuwählen oder zu erstellen. Hier wurde von XAMPP das Systemkonto gewählt, oder zumindest ggf. die Vorgabe von Apache nicht geändert (das habe ich nicht geprüft, wobei ich nicht erkenne, dass der Apache-Windows-Installer zum Einsatz kommt). Das könnte man als grob fahrlässiges Verhalten ansehen! Es liegt ausdrücklich nicht in der Verantwortung des Endanwenders, die Berechtigungen des Systemkontos zu ändern. Das tut nichtmal Microsoft selbst.

Auch eine Entwicklungsumgebung darf normalerweise nicht die Anwendersicherheit des Systems umgehen. Jedes System mit installiertem XAMPP ist im Grunde komplett unsicher. Man muss ja nur eine PHP-Datei in C:\xampp\htdocs anlegen, sie über einen lokalen HTTP-Aufruf starten, und schon hat man uneingeschränkte Systemrechte. Besser und einfacher könnte man die UAC nie umgehen! Eigentlich sollte ich XAMPP den Virenscannern als Malware melden. Und nein, keine Entwicklungsumgebung bietet diese Unsicherheit. Auch Visual Studio muss ganz explizit mit Adminrechten (aber nicht als Systemdienst) gestartet werden, wenn es erforderlich ist. Ist es aber wirklich nur in seltenen Fällen. Und dann kann man es noch nicht ausnutzen, weil Windows es ordentlich trennen kann. XAMP umgeht diese Trennung über HTTP ganz brutal.

Ich würde mich freuen, wenn sich noch jemand mit mehr Kompetenz in Windows-Sicherheit dazu äußern würde. Am besten vom XAMPP-Team selbst.
LonelyPixel
 
Posts: 35
Joined: 25. April 2010 16:34
XAMPP version: 7
Operating System: Windows 10

Re: PHP-Skripte laufen im Systemkonto

Postby Nobbie » 21. January 2018 17:59

LonelyPixel wrote: ... *viel dummes Zeug* ...


Ich benutze Linux und es ist mir egal, was Du glaubst, wer für die Sicherheit auf Deinem PC verantwortlich ist. Es ist mir auch egal, was Du über meine Kenntnisse zu wissen glaubst. Insbesondere ist es mir egal, wie das Rechte Management unter Microsoft WIndows funktioniert. Ich wünsche Dir noch einen schönen Sonntag.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: PHP-Skripte laufen im Systemkonto (Sicherheitslücke!)

Postby Altrea » 21. January 2018 21:05

Hallo,

XAMPP verfolgt eine Philosophie möglichst portabel und minimal invasiv auf Systemen eingesetzt zu werden. Das beinhaltet auch keinerlei Umgebungsvariablen, zusätzliche Benutzer oder ähnliches zu erstellen. Die XAMPP Version soll nach Möglichkeit durch einfaches Löschen des XAMPP Ordners wieder Rückstandslos vom System entfernbar sein.

Hiervon Abweichend haben sich ein paar Funktionen entwickelt, die die Bequemlichkeit der Benutzer unterstützen, sich aber nicht streng an die oben genannte Philosophie halten. Diese Funktionen wie die XAMPP Installer Pakete, Windows Services etc. sind ein Zugeständnis an die Benutzer und bedürfen daher unter Umständen auch ein paar mehr Kenntnisse und Anpassungen für den sicheren Betrieb und dessen spätere Bereinigung.

Die Windows Dienste werden aus dem Control Panel oder der Batch Datei über das Apache command httpd.exe -k install erstellt. Dieses Command unterstützt so weit ich weiß garkeine Argumente zur Spezifikation eines anderen Benutzers.
Apache selbst erstellt diese Dienste standardmäßig im lokalen Systemkontext, empfiehlt hierzu aber ebenfalls ein eigenes Konto hierfür zu erstellen und zu benutzern: https://httpd.apache.org/docs/2.4/platf ... tml#winsvc

Es empfiehlt sich daher immer auf die Windows Dienste ganz zu verzichten, das Control Panel und damit auch die einzelnen Webserver Prozesse nur im lokalen Benutzerkontext auszuführen.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: PHP-Skripte laufen im Systemkonto (Sicherheitslücke!)

Postby LonelyPixel » 21. January 2018 22:22

Gut, also liegt die Unzulänglichkeit im Grunde bei Apache für Windows. Dennoch empfinde ich es nicht als „nicht empfohlen“, Apache als Dienst zu installieren und so jederzeit nutzen zu können. Demnach tue ich das auch nach jeder Installation gleich. Das XAMPP Control Panel bietet mir diese Aktion ja direkt an. Alles scheint in Ordnung.

Eine Warnung, dass ich damit eine erhebliche Sicherheitslücke auf meinem PC öffne, habe ich aber bislang nie erhalten. Mir ist das Problem auch erst heute aufgefallen. Ich war bislang einfach davon ausgegangen, dass die Anbieter von XAMPP ihre Konfiguration ausreichend absichern und ich mich nicht auch noch darum kümmern muss. Mein Vertrauen in XAMPP wurde leider nicht bestätigt. Nun weiß ich, dass XAMPP keine sichere Software ist, wenn man diese angebotene Funktion auch tatsächlich nutzt.

Ich habe mal ein bisschen gespielt und kann nun mit wenigen Zeilen Batch-Datei beliebige Operationen auf dem PC durchführen, ohne große Spuren zu hinterlassen. Leider kann man aus dem System-Kontext so ohne Weiteres nichts Interaktives mehr starten, weshalb ich keinen schönen Demo-Exploit anbieten kann. Wahrscheinlich haben auch andere schon dieses willkommene Scheunentor auf Rechnern von Webentwicklern für sich gefunden. Da haben es nicht nur Geheimdienste, sondern auch Kleinkriminelle einfach.

Nun muss ich erstmal schauen, wie ich das abstellen kann. Den Dienst mit meinem Benutzerkonto zu starten geht wegen eines Anmeldefehlers schonmal nicht. Vermutlich passen die Berechtigungen des Diensts selbst nicht dazu.
LonelyPixel
 
Posts: 35
Joined: 25. April 2010 16:34
XAMPP version: 7
Operating System: Windows 10

Re: PHP-Skripte laufen im Systemkonto (Sicherheitslücke!)

Postby Nobbie » 21. January 2018 22:43

readme_de.txt:

* DAS THEMA SICHERHEIT:

Wie schon an anderer Stelle erwähnt ist XAMPP nicht für den Produktionseinsatz gedacht, sondern nur für Entwickler in Entwicklungsumgebungen. Das hat zur Folge, dass XAMPP absichtlich nicht restriktiv sondern im Gegenteil sehr offen vorkonfiguriert ist. Für einen Entwickler ist das ideal, da er so keine Grenzen vom System vorgeschrieben bekommt.
Für einen Produktionseinsatz ist das allerdings überhaupt nicht geeignet!


Die Unzulänglichkeit liegt an der Leseschwäche des Anwenders.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: PHP-Skripte laufen im Systemkonto (Sicherheitslücke!)

Postby LonelyPixel » 21. January 2018 23:03

Mal abgesehen davon, dass ich diese Datei noch nicht gesehen habe (diese Dateien haben die Tendenz zu lang und unrelevant zu sein, vielleicht habe ich sie instinktiv weggeklickt, vielleicht habe ich es auch nur versäumt, nach ihr zu suchen), ist die Formulierung alles andere als klar. „sehr offen“ impliziert noch keine gefährliche Sicherheitsbeeinträchtigung des gesamten Computers. Ein expliziter Hinweis darauf, dass jede Software, auch von unvertrauten Drittanbietern, bei lokaler Ausführung diese Konfiguration ausnutzen kann, um das System an allen Windows-Sicherheitseinrichtungen vorbei zu kompromittieren und damit maximalen Schaden anzurichten (auf Daten aller Benutzer zugreifen und sie ändern, Systemdateien löschen oder verändern, versteckte Schadsoftware einrichten, Betriebssystem zerstören, Hardware beschädigen), wäre angemessen.

Außerdem halte ich ein übermäßig unbeschränktes System auch nicht für ideal zur Entwicklung, da man sich dadurch nicht mit den Einschränkungen der Produktivumgebung befasst und so später u. U. viel anzupassen hat. Aber das muss jeder selber wissen.
LonelyPixel
 
Posts: 35
Joined: 25. April 2010 16:34
XAMPP version: 7
Operating System: Windows 10

Re: PHP-Skripte laufen im Systemkonto (Sicherheitslücke!)

Postby Nobbie » 22. January 2018 12:20

*sülz* *sülz* *sülz*

Xampp ist eine Entwicklungsumgebung für den PC (= persönlicher Computer) des kleinen Mannes, der NICHT in der Lage ist, einen Webserver zu administrieren. Für den typischen Durchschnitts-PC, der im Arbeitszimmer steht und von einem einzigen Anwender für seine persönlichen Zwecke benutzt wird. Und von niemandem sonst und nicht aus Versehen hat Microsoft viele Jahre überhaupt gar kein Rechtemanagement angeboten, resp. unterstützt FAT32 noch nicht einmal ein solches Management.

Wer auch nur halbwegs professionell auf einem HOST in einer Multiuser Umgebung arbeitet, wird eine andere Entwicklungsumgebung wählen, aber nicht Xampp. Du schießt vollkommen an der Thematik vorbei, für wen oder was Xampp überhaupt gemacht wurde. Das ist ja nur eine Distribution, wer einen Webserver einrichtet wird nicht Xampp und Windows wählen sondern ein Linux System mit geeigneter Konfiguration.

Das ganze Sicherheitsgelaber ist vollkommen realitätsfremd, interessiert sich keine Socke für, Xampp wird auf Standalone Rechnern von Standalone Usern betrieben, so wie es bei PCs nun einmal in 99,999% der Fall ist. Und nur damit man nicht auf die verwegene Idee kommt, weil es doch jetzt so schön einfach ist, die Software doch als Webserver zu benutzen, steht diese ausdrückliche Warnung im readme. Bitnami hatte eigentlich angeboten, einen fetten Hinweis noch vor dem Download einzublenden, weil immer wieder diese lächerlichen Schlaumicheldiskussionen aufkommen, aber leider haben sie es immer noch nicht umgesetzt. Wenn Du glaubst, die Sicherheit Deines PCs sei gefährdet, dann frage die Mitbenutzer, wieso sie Dir böses wollen, falls Du überhaupt andere an Deinen Computer heranläßt. DAS ist die einzige richtige Sicherheitslücke, bevor Dir noch jemand boshaft die Platte formatiert (was ganz einfach auch ohne Xampp geht).

So ein lächerliches Geschwalle um so wenig Substanz.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: PHP-Skripte laufen im Systemkonto (Sicherheitslücke!)

Postby Altrea » 24. January 2018 00:47

Um das Thema für mich abschließend zu behandeln habe ich mich mal bei der Konkurrenz umgesehen.

WAMPServer, AMPPS und EasyPHP (hier sogar in der als Liveserver konzipierten Variante) setzen allesamt Windows Dienste im Lokales System Kontext ein.
Sogar der Enterprise-Stack Zend Server in der Production Konfiguration erstellt Dienste in diesem Kontext.
Alle populären AMP Entwicklungsumgebungen auf Windows Basis besitzen also diese "Sicherheitslücke".
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 40 guests