Offenes Directory-Listing
Worum es geht
Ein Verzeichnis ohne index.html oder index.php zeigt Ihnen die Website statt eines 404 oder einer Weiterleitung eine Dateiliste — die klassische „Index of /uploads“-Auflistung. Das ist das Standardverhalten von Apache (Modul autoindex), wenn Sie es nicht explizit ausschalten.
Warum das ein Problem ist
Angreifer suchen zu Beginn der Erkundung genau danach. Was sie finden können:
- Backups —
db_backup.sql,site.tar.gz,old.zip. - Frühere Dateiversionen —
config.php.bak,wp-config.old. - Private Dokumente — Verträge, Rechnungen, Versandetiketten, Screenshots aus der Testumgebung.
- Interne Skripte — Debug, Deploy, Migration, die verborgen bleiben sollten.
Selbst wenn im Verzeichnis „nichts Sensibles“ liegt, geben Sie dem Angreifer eine Karte Ihrer Anwendung, die er sonst nicht hat. Jede interne Namenskonvention (old_v2/, customer_export/) ist ein Hinweis.
Wie Sie es beheben
Apache
In der Hauptkonfiguration oder in .htaccess:
# autoindex global ausschalten
Options -IndexesWenn Sie einen eigenen VirtualHost haben:
<Directory /var/www/example.cz>
Options -Indexes +FollowSymLinks
</Directory>nginx
Bei nginx ist autoindex standardmäßig ausgeschaltet — das Problem entsteht, wenn es jemand explizit aktiviert hat. Suchen Sie in der Konfiguration:
# diese Zeilen entfernen:
autoindex on;Shared Hosting
Legen Sie im Verzeichnis eine leere index.html an:
echo "" > /var/www/example.cz/uploads/index.htmlDas ist ein Quick Fix — besser ist es, autoindex global auszuschalten.
Überprüfung
Probieren Sie mehrere Verzeichnisse aus: curl -s https://example.cz/uploads/ | head -30. In der Antwort darf kein HTML mit Links zu Dateien stehen.
Bonus: Backups aufräumen
Wenn Sie schon dabei sind — gehen Sie alle Verzeichnisse durch und löschen Sie alte Backups und .bak-Dateien. Auch bei ausgeschaltetem autoindex ist db.sql.bak erreichbar, wenn ein Angreifer den Namen errät.