Warum Praxisbeispiele so wichtig sind
Theorie ist gut – aber erst in der Praxis zeigt sich, wie mächtig und gefährlich LFI wirklich ist. Viele Bug-Bounty-Reports und CVEs belegen: Mit einem simplen ../
im Pfad haben Angreifer Zugriff auf sensible Daten oder übernehmen ganze Systeme.
1. Klassiker: /etc/passwd
Was ist das?
Auf Unix/Linux-Systemen enthält /etc/passwd
eine Liste aller Benutzerkonten. Jede Zeile beschreibt einen User:
root:x:0:0:root:/root:/bin/bash
alice:x:1001:1001:Alice:/home/alice:/bin/bash
root
= Administratorx
= Passwort (in modernen Systemen ausgelagert in/etc/shadow
)uid/gid
= IDshome
= Home-Verzeichnis
Warum gefährlich?
Allein schon die Information, welche Nutzer existieren, ist Gold wert für Angreifer.
Sie wissen sofort: „Ah, es gibt den User alice
. Vielleicht kann ich ihr Passwort erraten.“
Typischer Angriff
http://example.com/?file=../../../../etc/passwd
Wenn das klappt, ist es ein klarer Beweis für LFI.
2. Konfigurationsdateien (Passwörter!)
LFI wird besonders gefährlich, wenn man an Konfigurationsdateien rankommt.
Beispiele
.env
→ oft in modernen Frameworks (Laravel, Symfony, Node.js). Enthält Datenbank-Logins, API-Keys, Geheimnisse.config.php
→ in PHP-Projekten mitdb_user
,db_pass
.settings.py
(Django) oderapplication.yml
(Spring Boot).
Folge
Mit diesen Daten kann ein Angreifer die Datenbank übernehmen oder interne APIs missbrauchen.
3. Quellcode-Leaks
Wenn der Angreifer per LFI an Quellcode-Dateien kommt (.php
, .js
, .py
), kann er:
- Sicherheitslogik analysieren.
- Geheimnisse im Code entdecken (z. B. API-Schlüssel).
- Input-Validierungen verstehen und gezielt umgehen.
Beispiel
http://example.com/?file=../../config/config.php
Antwort:
<?php
$db_host = "localhost";
$db_user = "admin";
$db_pass = "SuperSecret123";
?>
Mit diesen Daten kann er direkt auf die Datenbank zugreifen.
4. Windows-Ziele
Unter Windows sind typische Testdateien:
C:\Windows\win.ini
C:\boot.ini
Beispiel-Inhalt von win.ini
:
[fonts]
[extensions]
[mci extensions]
Nicht sensibel – aber der Beweis, dass LFI funktioniert.
5. Log Poisoning → von LFI zu RCE
Idee
- Angreifer schreibt PHP-Code in ein Logfile (z. B. als User-Agent).
- Mit LFI inkludiert er dieses Log.
- PHP führt den eingeschleusten Code aus.
Schritt-für-Schritt
Schritt 1 – Request mit bösartigem User-Agent:
GET / HTTP/1.1
Host: victim.com
User-Agent: <?php system($_GET['cmd']); ?>
Dieser String landet in access.log
.
Schritt 2 – LFI aufrufen:
http://victim.com/?file=../../logs/access.log&cmd=id
Antwort:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
→ Remote Code Execution.
Warum gefährlich?
Aus einer simplen LFI wird eine vollständige Serverübernahme.
6. File Upload + LFI
Manche Seiten erlauben Uploads, aber filtern ausführbare Dateien wie .php
.
Der Angreifer lädt shell.jpg
hoch – mit PHP-Code im Inneren.
- Normaler Zugriff:
http://victim.com/uploads/shell.jpg
→ zeigt Bild, kein Code. - Mit LFI:
http://victim.com/?file=../../uploads/shell.jpg
→ Datei wird eingebunden und als PHP interpretiert.
Ergebnis: Vollständige Remote Shell.
7. Fallbeispiele aus der Praxis
a) Bug-Bounty-Report: LFI in einem CMS
Ein populäres CMS nutzte ?template=
zum Laden von Seiten.
Angreifer testete:
?template=../../../../etc/passwd
→ Erfolg.
Kurz darauf: Zugriff auf config.php
→ Datenbank-Passwort.
Mit SQL-Zugriff konnte er sich als Admin einloggen.
b) CVE-2018-7600 („Drupalgeddon 2“)
Eine bekannte Schwachstelle in Drupal erlaubte LFI in Kombination mit Remote Code Execution. Angreifer konnten durch manipulierte Pfade beliebige Dateien einbinden und PHP-Code ausführen.
c) IoT-Geräte
Viele Router-Webinterfaces hatten unsichere include()
-Aufrufe. Angreifer konnten über LFI Passwörter und Konfigurationen der Geräte auslesen.
8. Typische Kombinationen
LFI ist selten „allein“. Oft kombiniert mit:
- Directory Traversal → für Pfade.
- Log Poisoning → für RCE.
- File Upload → für RCE.
- SQL Injection → LFI verrät Konfigurationsdatenbanken.
- Command Injection → LFI zeigt Quellcode mit versteckten Schwachstellen.
9. Auswirkungen in Zahlen
- Informationslecks: Datenbanken, API-Schlüssel, interne Strukturen.
- Server-Übernahme: durch LFI → RCE.
- Account Takeover: Zugriff auf Session-Files.
- Kosten: Viele Bug-Bounty-Reports mit Belohnungen im 4- bis 5-stelligen Bereich.
Analogie: Schlüssel im Archiv
Erinnere dich an die Bibliotheks-Analogie. Mit einfachem LFI bekommst du Bücher, die du nicht lesen darfst.
Mit Log Poisoning oder File Upload findest du aber irgendwann den Generalschlüssel zum Tresor. Und damit kannst du alles öffnen.
Was du bis hier mitnehmen solltest
- LFI ist praktisch ausnutzbar, nicht nur theoretisch.
- Typische Ziele:
/etc/passwd
,.env
,config.php
,win.ini
. - Gefährlich wird’s, wenn LFI mit Log Poisoning oder Uploads kombiniert wird → Remote Code Execution.
- Zahlreiche reale Fälle zeigen: LFI ist ein Einfallstor für komplette Systemübernahmen.
Schreibe einen Kommentar