From: bersuiteros at gmail dot com Operating system: Linux, Unix, Windows PHP version: Irrelevant PHP Bug Type: Directory function related Bug description: ...
Description: ------------ Busque y busque, y no encontre que lo hayan reportado antes... asique aca estoy escribiendo, aun nose si se puede declarar como BUG, pero bue... con un especifico script se puede acceder a cualquier directorio sin la necesidad de ningun login y/o password ni nada por el estilo... por ejemplo: yo tengo una pagina en un servidor X... mi pagina es del tipo: http://www.X.com/mipagina (lo he probado en servidores Unix y Linux, si mal no recuerdo) voy a poder ver carpetas y archivos dentro del servidor mucho mas arriba en el arbol de directorio que la carpeta donde esta alojada mi pagina... el codigo se va a entender mejor... el if(!isset($dir)), sirve para inicializar la variable $dir por si no fue pasada como GET. el if (!is_dir($dir)), sirve para mostrar el archivo siempre y cuando no sea un directorio del String que tiene la var $dir y el resto lo que hace es mostrar por pantalla los archivos y/o directorios que posee $dir... agregue un <a> para que sea mas facil ir metiendose en el arbol de directorios. no se si esto es un bug... pero se puede llegar a sacar claves de cualquier pagina y hasta del root del servidor en que este alojado este script. por ejemplo, poniendo: http://www.X.com/mipagina/script.php?dir=etc/passwd o http://www.X.com/mipagina/script.php?dir=etc/shadow se podra ver el contenido de ese archivo tan importante. gracias. Reproduce code: --------------- <?php if (!isset($dir)) $dir = '/'; else $dir = '/'.$dir; if (!is_dir($dir)){ $file = fopen($dir,"r"); while (!feof ($file)) { $line = fgets ($file, 1024); echo $line."<br>"; } fclose($file); } $directorio = dir($dir); while ($file = $directorio->read()) { echo "<a href=\"script.php?dir=".$dir."/".$file."\">$file</a><br>"; } ?> Expected result: ---------------- . .. .autofsck boot dev proc var tmp etc root usr bin home initrd lib mnt opt sbin SWH www lost+found -- Edit bug report at http://bugs.php.net/?id=30714&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=30714&r=trysnapshot4 Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=30714&r=trysnapshot50 Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=30714&r=trysnapshot51 Fixed in CVS: http://bugs.php.net/fix.php?id=30714&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=30714&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=30714&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=30714&r=needscript Try newer version: http://bugs.php.net/fix.php?id=30714&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=30714&r=support Expected behavior: http://bugs.php.net/fix.php?id=30714&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=30714&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=30714&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=30714&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=30714&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=30714&r=dst IIS Stability: http://bugs.php.net/fix.php?id=30714&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=30714&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=30714&r=float MySQL Configuration Error: http://bugs.php.net/fix.php?id=30714&r=mysqlcfg