Hi,
Hab beim rumspielen mit ein paar Joomla Erweiterungen gerade folgendes gefunden:
"is_file" Verhindert Remote File Inclusions, aber lokale Dateien können
weiter eingebunden werde. Da wird allerdings geprüft, ob der String
auf .js endet, wenn ja wird die Datein includet. Mit einem Nullbyte
tricksen wir die Überprüfung der Dateiendung aus. Der String als solcher
endet auf ".js" beim include wird aber aller inclusive %00 abgeschnitten.
Die Erweiterung nutze ich auch für eine kleine Privatseite. Diese läuft auf einem Linux Host. Zum Testen hab ich die Seite aber auch local via XAMPP
am laufen. In XAMPP kann ich via
"erweiterung.php?files[]=/../../../../../../robots.txt%00.js"
die robots.txt includen und anzeigen lassen. Im Echtsystem online klappt das, trotz gleichen Codes, aber nicht.
Jetzt stellen sich mir 2 Fragen:
1) Wie lass ich den Pfad variabel, sicher den Script aber ab.
2) Warum klappt das nur im Testsystem?
Hab beim rumspielen mit ein paar Joomla Erweiterungen gerade folgendes gefunden:
PHP-Code:
define('DS', DIRECTORY_SEPARATOR);
$dir = dirname(__FILE__);
$files = array();
if (isset($_GET['files']) && $_GET['files']) $files = $_GET['files'];
foreach ($files as $file) {
$ext = substr($file, strrpos($file, '.') + 1);
$filepath = $dir . DS . $file;
if (is_file($filepath) and $ext === 'js') {
include($filepath);
echo "included \n";
}
else{
echo "nicht included";
}
}
?>
weiter eingebunden werde. Da wird allerdings geprüft, ob der String
auf .js endet, wenn ja wird die Datein includet. Mit einem Nullbyte
tricksen wir die Überprüfung der Dateiendung aus. Der String als solcher
endet auf ".js" beim include wird aber aller inclusive %00 abgeschnitten.
Die Erweiterung nutze ich auch für eine kleine Privatseite. Diese läuft auf einem Linux Host. Zum Testen hab ich die Seite aber auch local via XAMPP
am laufen. In XAMPP kann ich via
"erweiterung.php?files[]=/../../../../../../robots.txt%00.js"
die robots.txt includen und anzeigen lassen. Im Echtsystem online klappt das, trotz gleichen Codes, aber nicht.
Jetzt stellen sich mir 2 Fragen:
1) Wie lass ich den Pfad variabel, sicher den Script aber ab.
2) Warum klappt das nur im Testsystem?
Kommentar