/root
Lt. Commander
- Registriert
- Okt. 2007
- Beiträge
- 1.295
Hallo Leute,
Ist das Upload Sript sicher?
Der Benutzer kann von einer HTML Seite einen Dateinamen eingeben ($filename) der dann von der lokalen Webseite mediaserver.intra heruntergeladen wird. Die Dateien sind dann über DLNA erreichbar.
Könnte man so nicht auch php files o.ä. uploaden (z.b. php-shells) und damit den webserver kompromittieren?
Ich hab mal nur eine Suche nach dem string "php" eingebaut (ist auskommentiert), reicht das oder habt ihr bessere Ideen für die Input Validation?
lg
Ist das Upload Sript sicher?
Der Benutzer kann von einer HTML Seite einen Dateinamen eingeben ($filename) der dann von der lokalen Webseite mediaserver.intra heruntergeladen wird. Die Dateien sind dann über DLNA erreichbar.
Könnte man so nicht auch php files o.ä. uploaden (z.b. php-shells) und damit den webserver kompromittieren?
Ich hab mal nur eine Suche nach dem string "php" eingebaut (ist auskommentiert), reicht das oder habt ihr bessere Ideen für die Input Validation?
PHP:
<!DOCTYPE html>
<html>
<body>
<?php
$filename = $_GET["url"];
/*
if (strpos($filename,'php') !== false) {
exit ("Upload was not successful: File not found!");
}
*/
$url = "http://mediaserver.intra/media/".$filename;
if(($content = file_get_contents($url)) === false) die("Upload was not successful: File not found!");:q
$extension = end((explode(".", $filename)));
switch($extension) {
case "mp3":
file_put_contents('/opt/media/audio/'.$filename, $content);
break;
case "mp4":
file_put_contents('/opt/media/video/'.$filename, $content);
break;
case "png":
file_put_contents('/opt/media/image/'.$filename, $content);
break;
default:
die("Upload was not successful: Unknown extension!");
}
echo "Upload was successful!";
$previous = "javascript:history.go(-1)";
if(isset($_SERVER['HTTP_REFERER'])) {
$previous = $_SERVER['HTTP_REFERER'];
}
echo '<br><br><a href="'.$previous.'">Back</a>';
?>
</body>
</html>
lg