> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/de/hacking-tools/web/php-security-scanner.md).

# PHP Security Scanner

PHP-Sicherheits-Scanner-Funktionsfinder für gefährliche PHP-Funktionen, riskante Muster, Auswirkungsbewertung, Triage-Notizen und Behebungsleitfäden.

PHP Security Scanner ist ein statisches Prüftool nur für Abonnenten zum Auffinden gefährlicher PHP-Funktionen, schwacher Konfigurationen, riskanter Source-to-Sink-Pfade und Indikatoren für Privilegieneskalation in PHP-Anwendungen.

Verwenden Sie den Funktionsfinder als Hauptansicht für die Triage: Suchen Sie nach Funktionsname, Kategorie, Auswirkung oder Schweregrad.

## Funktionsfinder

<table data-view="cards" data-full-width="true" data-search="true"><thead><tr><th>Funktion / Muster</th><th>Kategorie</th><th>Schweregrad</th><th>Auswirkung</th><th>Scanner-Prüfung</th><th>Behebung</th></tr></thead><tbody><tr><td><code>system()</code></td><td>Befehlsausführung</td><td>Kritisch</td><td>RCE als Webbenutzer</td><td>Markieren Sie infizierte Befehlsstrings, Interpolation, Konkatenation und benutzerkontrollierte Argumente.</td><td>Verwenden Sie native PHP-APIs oder strikt per Zulassungsliste erlaubte Befehle und Argumente.</td></tr><tr><td><code>exec()</code></td><td>Befehlsausführung</td><td>Kritisch</td><td>RCE, Erfassung von Befehlsausgabe</td><td>Prüfen Sie, ob Request-, Cookie-, DB-, Datei- oder CLI-Eingaben den Befehl erreichen.</td><td>Shell-Nutzung entfernen oder feste Befehle hinter Zulassungslisten isolieren.</td></tr><tr><td><code>shell_exec()</code></td><td>Befehlsausführung</td><td>Kritisch</td><td>RCE mit zurückgegebenem Output</td><td>Dynamische Befehlszusammenstellung und in Antworten gerenderten Output erkennen.</td><td>Durch sichere Bibliotheksaufrufe ersetzen.</td></tr><tr><td><code>passthru()</code></td><td>Befehlsausführung</td><td>Kritisch</td><td>RCE mit rohem Output</td><td>Hochstufen, wenn dies von Web-Routen oder Dateiverarbeitung aus erreichbar ist.</td><td>Shell-Aufrufe vermeiden; feste Eingabemengen validieren.</td></tr><tr><td><code>proc_open()</code></td><td>Prozesssteuerung</td><td>Kritisch</td><td>RCE, Prozessinteraktion</td><td>Befehl, Descriptor-Spezifikation, Umgebung und Arbeitsverzeichnis prüfen.</td><td>Eingeschränkte Worker und feste Befehlsvorlagen verwenden.</td></tr><tr><td><code>popen()</code></td><td>Prozesssteuerung</td><td>Kritisch</td><td>RCE über Prozess-Stream</td><td>Infizierte Befehlsstrings und Stream-Lesezugriffe markieren.</td><td>Wenn möglich durch PHP-Stream-/Datei-APIs ersetzen.</td></tr><tr><td><code>pcntl_exec()</code></td><td>Prozesssteuerung</td><td>Kritisch</td><td>Prozessersetzung, Risiko der Privilegieneskalation</td><td>In CLI-, Cron-, SUID-, Sudo- und Worker-Kontexten hochstufen.</td><td>Privilegierte Interpreter-Ausführungspfade entfernen.</td></tr><tr><td><code>`backticks`</code></td><td>Befehlsausführung</td><td>Kritisch</td><td>Versteckte Shell-Ausführung</td><td>Variable Interpolation innerhalb von Backtick-Ausdrücken erkennen.</td><td>Durch explizite sichere APIs ersetzen.</td></tr><tr><td><code>eval()</code></td><td>Codeausführung</td><td>Kritisch</td><td>Beliebige PHP-Ausführung</td><td>Alle Verwendungen markieren; hochstufen, wenn der ausgewertete String dynamisch ist.</td><td>Verwenden Sie Closures, Parser, feste Dispatch-Maps oder sichere Vorlagen.</td></tr><tr><td><code>assert()</code></td><td>Codeausführung</td><td>Hoch</td><td>Risiko der Codeausführung in Legacy-Code</td><td>String-Assertions in älteren PHP-Codebasen markieren.</td><td>Nur boolesche Assertions verwenden; dynamische Strings entfernen.</td></tr><tr><td><code>create_function()</code></td><td>Codeausführung</td><td>Hoch</td><td>Ausgewerteter Legacy-Code</td><td>Alte Plugins und PHP-5/7-Kompatibilitätscode erkennen.</td><td>Durch anonyme Funktionen ersetzen.</td></tr><tr><td><code>preg_replace()</code> durch <code>/e</code></td><td>Codeausführung</td><td>Hoch</td><td>Legacy-ausgewertete Ersetzung</td><td>Legacy-Auswertung von Regex-Ersetzungen markieren.</td><td>Verwenden Sie <code>preg_replace_callback()</code>.</td></tr><tr><td><code>mb_ereg_replace()</code> durch <code>e</code></td><td>Codeausführung</td><td>Hoch</td><td>Risiko durch ausgewertete Ersetzungen</td><td>Dynamische Muster und Ersetzungswerte prüfen.</td><td>Callback-sichere Logik ohne Auswertung verwenden.</td></tr><tr><td><code>include</code></td><td>Dateieinbindung</td><td>Kritisch</td><td>LFI/RFI zur Codeausführung</td><td>Von Benutzern kontrollierte Pfade, Wrapper und Erweiterungstricks markieren.</td><td>Benutzerauswahlen auf feste Dateien abbilden.</td></tr><tr><td><code>include_once</code></td><td>Dateieinbindung</td><td>Kritisch</td><td>LFI/RFI zur Codeausführung</td><td>Dynamische Include-Pfade und Autoload-Nebeneffekte prüfen.</td><td>Feste Include-Zuordnungen und kanonische Pfade verwenden.</td></tr><tr><td><code>require</code></td><td>Dateieinbindung</td><td>Kritisch</td><td>Ausführung von Anwendungscode</td><td>Hochstufen, wenn der Pfad Request-Daten enthält.</td><td>Dynamische Dateisystemeingaben ablehnen.</td></tr><tr><td><code>require_once</code></td><td>Dateieinbindung</td><td>Kritisch</td><td>Ausführung von Anwendungscode</td><td>Framework-Loader, Plugin-Loader und Template-Pfade prüfen.</td><td>Nur Module auf der Zulassungsliste verwenden.</td></tr><tr><td><code>file_get_contents()</code></td><td>Datei-/Netzwerklesen</td><td>Hoch</td><td>LFI, SSRF, Offenlegung von Geheimnissen</td><td>Markieren Sie infizierte Pfade, URLs und <code>php://input</code> Parsing.</td><td>Pfade kanonisieren und riskante Schemen blockieren.</td></tr><tr><td><code>readfile()</code></td><td>Dateiread</td><td>Hoch</td><td>Direkte Offenlegung von Dateien</td><td>Path Traversal und öffentliche Download-Handler erkennen.</td><td>Dateien per ID aus genehmigten Verzeichnissen ausliefern.</td></tr><tr><td><code>fopen()</code></td><td>Datei-/Netzwerkzugriff</td><td>Hoch</td><td>LFI, SSRF, beliebiges Schreiben</td><td>Modus, Pfadquelle und URL-Wrapper verfolgen.</td><td>Scheme, Modus und kanonischen Pfad validieren.</td></tr><tr><td><code>file()</code></td><td>Dateiread</td><td>Hoch</td><td>Zeilenbasierte Offenlegung von Dateien</td><td>Von Benutzern kontrollierte Dateinamen markieren.</td><td>Feste Speicherpfade und Grenzprüfungen verwenden.</td></tr><tr><td><code>SplFileObject</code></td><td>Dateizugriff</td><td>Hoch</td><td>LFI, Path Traversal</td><td>Dynamische Konstruktor-Argumente erkennen.</td><td>Anwenden <code>realpath()</code> Grenzvalidierung.</td></tr><tr><td><code>file_put_contents()</code></td><td>Dateischreiben</td><td>Kritisch</td><td>Web-Shell, Überschreiben, Config-Vergiftung</td><td>Hochstufen, wenn Dateiname und Inhalt infiziert sind oder der Pfad öffentlich ist.</td><td>Dateinamen generieren und außerhalb des Webroots schreiben.</td></tr><tr><td><code>fwrite()</code></td><td>Dateischreiben</td><td>Hoch</td><td>Beliebige Dateimodifikation</td><td>Verfolgen Sie die Herkunft des Handles von <code>fopen()</code>.</td><td>Beschreibbare Verzeichnisse und Dateitypen einschränken.</td></tr><tr><td><code>copy()</code></td><td>Dateischreiben / Verschieben</td><td>Hoch</td><td>Dateiplatzierung oder Überschreiben</td><td>Quelle und Ziel auf Infizierung prüfen.</td><td>Feste Ziele und kollisionssichere Namen verwenden.</td></tr><tr><td><code>rename()</code></td><td>Dateiverschiebung</td><td>Hoch</td><td>Upload-Umgehung, Überschreiben</td><td>Von Benutzern kontrollierte Zielpfade markieren.</td><td>Generierte Speichernamen verwenden.</td></tr><tr><td><code>unlink()</code></td><td>Dateilöschen</td><td>Hoch</td><td>Beliebiges Löschen von Dateien</td><td>Infizierte Pfade und Traversal erkennen.</td><td>Nach Objekt-ID löschen, nicht nach rohem Pfad.</td></tr><tr><td><code>chmod()</code></td><td>Berechtigungen</td><td>Hoch</td><td>Abschwächung von Privilegien</td><td>Markieren Sie weit gefasste Modi wie <code>0777</code> und infizierte Pfade.</td><td>Modi mit minimalen Rechten und feste Pfade verwenden.</td></tr><tr><td><code>chown()</code> / <code>chgrp()</code></td><td>Besitz</td><td>Hoch</td><td>Privilegienmanipulation</td><td>Bereitstellungs- und Admin-Skripte prüfen.</td><td>Eigentumsänderungen nicht für Anwendungsinput freigeben.</td></tr><tr><td><code>mkdir()</code></td><td>Dateisystem</td><td>Mittel</td><td>Path Traversal, schwache Berechtigungen</td><td>Dynamische Pfade und permissive Modi markieren.</td><td>Pfade normalisieren und strenge Berechtigungen festlegen.</td></tr><tr><td><code>touch()</code></td><td>Dateisystem</td><td>Mittel</td><td>Dateierstellung, Missbrauch von Zeitstempeln</td><td>In Cron- oder privilegierten Verzeichnissen hochstufen.</td><td>Feste Pfade und Besitzprüfungen verwenden.</td></tr><tr><td><code>unserialize()</code></td><td>Deserialisierung</td><td>Kritisch</td><td>PHP-Objektinjektion</td><td>Alle Verwendungen mit Daten aus Request, Cookie, Upload, DB, Cache oder Queue markieren.</td><td>JSON verwenden oder <code>allowed_classes</code>.</td></tr><tr><td><code>Phar</code> / <code>phar://</code></td><td>Deserialisierung</td><td>Hoch</td><td>Durch Metadaten ausgelöste Objektinjektion</td><td>Akzeptierte <code>phar://</code> Pfade und Dateifunktionen, die Uploads berühren, markieren.</td><td>Wrapper blockieren und Metadatenpfade mit Objekten vermeiden.</td></tr><tr><td><code>__wakeup()</code></td><td>Magische Methode</td><td>Hoch</td><td>Objektinjektions-Gadget</td><td>Datei-, SQL-, Befehls- und Netzwerkaktionen prüfen.</td><td>Magische Methoden frei von Seiteneffekten halten.</td></tr><tr><td><code>__destruct()</code></td><td>Magische Methode</td><td>Hoch</td><td>Objektinjektions-Gadget</td><td>Hochstufen, wenn es löscht, schreibt, einbindet oder ausführt.</td><td>Gefährliche Seiteneffekte in Destruktoren vermeiden.</td></tr><tr><td><code>__toString()</code></td><td>Magische Methode</td><td>Mittel</td><td>Implizite Gadget-Ausführung</td><td>Template-Rendering und Logging-Pfade prüfen.</td><td>Konvertierungsmethoden nebenwirkungsfrei halten.</td></tr><tr><td><code>curl_exec()</code></td><td>Netzwerk / SSRF</td><td>Hoch</td><td>SSRF, Zugriff auf interne Dienste</td><td>URL-, Weiterleitungs-, Header-, Proxy- und Protokolloptionen verfolgen.</td><td>Hosts per Zulassungsliste erlauben und private Bereiche blockieren.</td></tr><tr><td><code>fsockopen()</code></td><td>Netzwerk</td><td>Hoch</td><td>Roher interner Netzwerkzugriff</td><td>Dynamische Host- und Portwerte markieren.</td><td>Ziele und Egress einschränken.</td></tr><tr><td><code>pfsockopen()</code></td><td>Netzwerk</td><td>Hoch</td><td>Persistenter interner Netzwerkzugriff</td><td>Langlebige Serviceverbindungen prüfen.</td><td>Feste Endpunkte verwenden.</td></tr><tr><td><code>stream_socket_client()</code></td><td>Netzwerk</td><td>Hoch</td><td>SSRF und Protokollmissbrauch</td><td>Dynamische Schemen, Hosts und Ports markieren.</td><td>Netzwerkziele auf der Zulassungsliste verwenden.</td></tr><tr><td><code>SoapClient</code></td><td>Netzwerk</td><td>Mittel</td><td>SSRF-artige Anfragen</td><td>Dynamische WSDL- und Endpunktwerte prüfen.</td><td>Feste WSDLs verwenden und Weiterleitungen blockieren.</td></tr><tr><td><code>mysqli_query()</code></td><td>SQL</td><td>Hoch</td><td>SQL-Injection</td><td>Zusammengefügte oder interpolierte SQL-Anweisungen markieren.</td><td>Vorbereitete Anweisungen verwenden.</td></tr><tr><td><code>mysqli_multi_query()</code></td><td>SQL</td><td>Hoch</td><td>Gestapelte SQL-Injection</td><td>Dynamische Multi-Statement-Queries hochstufen.</td><td>Multi-Query-APIs für benutzerbeeinflusste Daten vermeiden.</td></tr><tr><td><code>PDO::query()</code></td><td>SQL</td><td>Hoch</td><td>SQL-Injection</td><td>Roh-Query-Strings mit Variablen markieren.</td><td>Verwenden Sie <code>prepare()</code> und gebundene Parameter.</td></tr><tr><td><code>PDO::exec()</code></td><td>SQL</td><td>Hoch</td><td>SQL-Injection oder destruktives SQL</td><td>Admin-Aktionen und Migrationen prüfen.</td><td>Parametrisierte Anweisungen verwenden.</td></tr><tr><td><code>call_user_func()</code></td><td>Dynamischer Dispatch</td><td>Hoch</td><td>Missbrauch von Callbacks</td><td>Infizierte Callback-Namen markieren.</td><td>Feste Dispatch-Maps verwenden.</td></tr><tr><td><code>call_user_func_array()</code></td><td>Dynamischer Dispatch</td><td>Hoch</td><td>Callback-Missbrauch mit dynamischen Argumenten</td><td>Quellen von Callback und Argumenten verfolgen.</td><td>Explizite Handler und typisierte Eingaben verwenden.</td></tr><tr><td><code>$fn()</code></td><td>Variable Funktion</td><td>Hoch</td><td>Beliebiger Funktions-Dispatch</td><td>Funktionsnamen aus Request- oder DB-Daten markieren.</td><td>Namen auf feste Funktionen abbilden.</td></tr><tr><td><code>$object->$method()</code></td><td>Dynamische Methode</td><td>Hoch</td><td>Missbrauch des Methoden-Dispatch</td><td>Methodennamen aus Eingaben markieren.</td><td>Methoden-Maps mit Zulassungsliste verwenden.</td></tr><tr><td><code>ReflectionFunction</code></td><td>Reflection</td><td>Mittel</td><td>Dynamischer Aufruf</td><td>Reflektierte Namen und Aufruf prüfen.</td><td>Reflection auf interne Werkzeuge beschränken.</td></tr><tr><td><code>register_shutdown_function()</code></td><td>Aufgeschobener Callback</td><td>Mittel</td><td>Versteckter Ausführungspfad</td><td>Dynamische Callbacks und Argumente markieren.</td><td>Explizite feste Callbacks verwenden.</td></tr><tr><td><code>move_uploaded_file()</code></td><td>Hochladen</td><td>Hoch</td><td>Web-Shell, Überschreiben, Path Traversal</td><td>Zielpfad, Erweiterungslogik, öffentlichen Speicher und die Verwendung des ursprünglichen Dateinamens prüfen.</td><td>Dateien umbenennen, Erweiterungen per Zulassungsliste erlauben, außerhalb des Webroots speichern.</td></tr><tr><td><code>getimagesize()</code></td><td>Upload-Validierung</td><td>Mittel</td><td>Schwache Inhaltsvalidierung</td><td>Markieren, wenn dies als einzige Upload-Validierung verwendet wird.</td><td>Erweiterungs-, MIME-, Inhalts- und Speicherkontrollen kombinieren.</td></tr><tr><td><code>ZipArchive::extractTo()</code></td><td>Archivextraktion</td><td>Hoch</td><td>Zip Slip, beliebiges Schreiben</td><td>Namen der Archiveinträge und Extraktionsverzeichnis prüfen.</td><td>Jeden extrahierten Pfad kanonisieren.</td></tr><tr><td><code>phpinfo()</code></td><td>Offenlegung von Informationen</td><td>Mittel</td><td>Leck von Konfiguration, Pfaden, Modulen und Umgebung</td><td>Markieren, wenn außerhalb der lokalen Entwicklung erreichbar.</td><td>Aus der Produktion entfernen.</td></tr><tr><td><code>var_dump()</code> / <code>print_r()</code></td><td>Debug-Ausgabe</td><td>Niedrig</td><td>Daten- und Geheimnisleck</td><td>Hochstufen, wenn dies in Antworten oder Exception-Pfaden verwendet wird.</td><td>Strukturierte Logs mit Redaktion verwenden.</td></tr><tr><td><code>debug_backtrace()</code></td><td>Debug-Ausgabe</td><td>Mittel</td><td>Offenlegung von Pfaden und Argumenten</td><td>Fehlerbehandler und Debug-Routen prüfen.</td><td>Ausführliche Debug-Ausgabe in der Produktion deaktivieren.</td></tr></tbody></table>

## Konfigurationsfinder

<table data-view="cards" data-full-width="true" data-search="true"><thead><tr><th>Direktive</th><th>Schweregrad</th><th>Risiko</th><th>Scanner-Prüfung</th></tr></thead><tbody><tr><td><code>disable_functions</code></td><td>Hoch</td><td>Gefährliche Ausführungsfunktionen bleiben verfügbar.</td><td>Fehlende oder unvollständige Härtung melden, insbesondere wenn Befehls-Sinks vorhanden sind.</td></tr><tr><td><code>open_basedir</code></td><td>Mittel</td><td>PHP kann auf breitere Dateisystempfade zugreifen.</td><td>Fehlende, leere oder zu weit gefasste Werte markieren.</td></tr><tr><td><code>allow_url_fopen</code></td><td>Mittel</td><td>Datei-APIs können URLs abrufen.</td><td>Hochstufen bei URL-basierten Dateilesen und SSRF-anfälligen Funktionen.</td></tr><tr><td><code>allow_url_include</code></td><td>Kritisch</td><td>Dynamische Includes können entfernte Ressourcen laden.</td><td>Kritisch, wenn zusammen mit dynamischen Include-Pfaden aktiviert.</td></tr><tr><td><code>display_errors</code></td><td>Mittel</td><td>Stacktraces, Pfade und Geheimnisse können durchsickern.</td><td>Aktivierte Produktionskonfigurationen markieren.</td></tr><tr><td><code>expose_php</code></td><td>Niedrig</td><td>PHP-Versionsoffenlegung.</td><td>Deaktivierung in der Produktion empfohlen.</td></tr><tr><td><code>file_uploads</code></td><td>Info</td><td>Es besteht eine Angriffsfläche für Uploads.</td><td>Mit Prüfungen für Upload-Pfad, Größe, Erweiterung und Inhaltsvalidierung kombinieren.</td></tr><tr><td><code>upload_max_filesize</code></td><td>Mittel</td><td>Übergroße Uploads und Speicher-Missbrauch.</td><td>Werte markieren, die größer sind als von der Anwendung benötigt.</td></tr><tr><td><code>session.cookie_httponly</code></td><td>Mittel</td><td>Der Diebstahl von Session-Cookies per clientseitigem Skript ist einfacher.</td><td>Aktiviert empfohlen.</td></tr><tr><td><code>session.cookie_secure</code></td><td>Mittel</td><td>Cookies können über HTTP gesendet werden.</td><td>Auf HTTPS-Seiten aktiviert empfohlen.</td></tr><tr><td><code>session.cookie_samesite</code></td><td>Niedrig</td><td>Die CSRF-Angriffsfläche kann steigen.</td><td>Explizit festlegen. <code>Locker</code> oder <code>Streng</code>.</td></tr></tbody></table>

## Eingaben von Quelle zu Senke

| Quelle              | Beispiele                                                              |
| ------------------- | ---------------------------------------------------------------------- |
| Anfrage             | `$_GET`, `$_POST`, `$_REQUEST`                                         |
| Cookies / Sitzungen | `$_COOKIE`, Sitzungswerte                                              |
| Uploads             | `$_FILES`, ursprüngliche Dateinamen, temporäre Pfade                   |
| Header              | `$_SERVER['HTTP_*']`, `getallheaders()`                                |
| Rohkörper           | `php://input`, dekodiertes JSON/XML                                    |
| CLI / Worker        | `$argv`, `STDIN`, Umgebungsvariablen                                   |
| Gespeicherte Daten  | Datenbankzeilen, Cache-Einträge, Warteschlangen, serialisierte Spalten |
| Lokale Dateien      | Konfigurationsdateien, CSV-Importe, temporäre Dateien                  |

## Regel-IDs

| Regel-ID           | Schweregrad | Bedeutung                                                                                               |
| ------------------ | ----------- | ------------------------------------------------------------------------------------------------------- |
| `PHP-CMD-001`      | Kritisch    | Verunreinigte Eingabe erreicht die Befehlsausführung.                                                   |
| `PHP-EVAL-001`     | Kritisch    | Verunreinigte Eingabe erreicht die Auswertung von PHP-Code.                                             |
| `PHP-INCL-001`     | Kritisch    | Verunreinigte Eingabe steuert Include-/Require-Pfade.                                                   |
| `PHP-DESER-001`    | Kritisch    | Verunreinigte Eingabe erreicht `unserialize()`.                                                         |
| `PHP-WRITE-001`    | Kritisch    | Vom Benutzer kontrolliertes Schreiben von Dateien gelangt in einen ausführbaren oder öffentlichen Pfad. |
| `PHP-UPLOAD-001`   | Hoch        | Die Upload-Validierung oder -Speicherung kann ausführbare Dateien zulassen.                             |
| `PHP-SSRF-001`     | Hoch        | Verunreinigte URL erreicht HTTP-, Stream-, Socket- oder cURL-Senken.                                    |
| `PHP-SQL-001`      | Hoch        | Verunreinigte Eingabe erreicht rohes SQL.                                                               |
| `PHP-PATH-001`     | Hoch        | Verunreinigter Pfad erreicht die Logik zum Lesen/Schreiben/Löschen/Verschieben von Dateien.             |
| `PHP-CALLBACK-001` | Hoch        | Verunreinigter Funktions- oder Methodenname erreicht den dynamischen Dispatch.                          |
| `PHP-CONFIG-001`   | Hoch        | Gefährliche PHP-Konfiguration erhöht die Ausnutzbarkeit.                                                |
| `PHP-PRIV-001`     | Kritisch    | PHP-Ausführung hat SUID-, sudo-, Cron- oder privilegierten Kontext.                                     |

## Schnelle Ersteinschätzung

| Frage                                                                      | Schweregrad-Erhöhung               |
| -------------------------------------------------------------------------- | ---------------------------------- |
| Können Anfragedaten die Funktion erreichen?                                | Auf Hoch oder Kritisch anheben.    |
| Führt die Funktion Befehle, PHP-Code, Includes oder Deserialisierung aus?  | Kritisch.                          |
| Greift es auf Dateien unterhalb des Webroots zu?                           | Hoch oder Kritisch.                |
| Akzeptiert es URLs, Wrapper, Hosts oder Ports?                             | Hoch.                              |
| Wird es über Cron, sudo, SUID, Worker oder Deployment-Hooks ausgeführt?    | Kritisch.                          |
| Beruht die Validierung nur auf Blocklisten, Dateiendungen oder MIME-Typen? | Eine Stufe anheben.                |
| Wird der Wert aus einer strikten Positivliste ausgewählt?                  | Vertrauen oder Schweregrad senken. |

## Signale zur Rechteausweitung

| Signal                                                         | Risiko                                                                              |
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| SUID-PHP-Binärdatei                                            | PHP kann mit erhöhten Rechten des Dateieigentümers ausgeführt werden.               |
| Sudo-Regel erlaubt PHP                                         | Benutzer kann PHP als anderer Benutzer ausführen.                                   |
| Von root ausgeführter Cron-Job führt beschreibbares PHP aus    | Beschreibbares Skript kann zur Ausführung mit erhöhten Rechten werden.              |
| Beschreibbares Webroot                                         | Ein Fehler beim Schreiben oder Hochladen von Dateien kann zu Codeausführung werden. |
| Für alle lesbare Geheimnisse                                   | App-Zugangsdaten können laterale Bewegung ermöglichen.                              |
| Composer-Skripte werden als privilegierter Benutzer ausgeführt | Abhängigkeits- oder Skriptausführung kann das Deployment beeinflussen.              |

## Berichtsvorlage

```json
{
  "id": "PHP-CMD-001",
  "severity": "kritisch",
  "function": "shell_exec",
  "file": "app/Controllers/ReportController.php",
  "line": 84,
  "source": "$_POST['format']",
  "impact": "Ausführung entfernter Befehle als Benutzer des Webservers",
  "fix": "Ersetzen Sie die Shell-Ausführung durch eine native PHP-Bibliothek oder streng per Positivliste zugelassene Argumente."
}
```

## Scanner-Checkliste

* Parsen `.php`, `.inc`, `.phtml`, `.module`, `.theme`, Framework-Routen, Controller, Jobs und CLI-Skripte.
* Verfolge Anfragedaten, Cookies, Uploads, Header, Rohkörper, CLI, Umgebung, Datenbank, Cache, Warteschlange und dateibasierte Eingaben.
* Erkenne Senken für Befehlsausführung, Codeausführung, Include, Datei, Netzwerk, SQL, Deserialisierung, Upload, Callback, Debugging und Konfiguration.
* Bewerte Funde nach Erreichbarkeit, Bereinigung, PHP-Version, Konfiguration, Webroot, Berechtigungen und Ausführungskontext.
* Exportiere Funktionsname, Kategorie, Schweregrad, Quelle, Senke, Datei, Zeile, Auswirkung, Vertrauen und Behebung.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/de/hacking-tools/web/php-security-scanner.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
