SoloCodigo
		Programación Web y Scripting => PHP => Mensaje iniciado por: javi en Sábado 23 de Febrero de 2002, 02:38
		
			
			- 
				El jueves la empresa de seguridad Hispasec difundió en su lista de correo sobre seguridad que las versiones de PHP para Windows permiten leer cualquier archivo del ordenador (como por ejemplo los de claves) o bien ejecutar código. Exactamente, la noticia es la siguiente:
 
 Visualización y ejecución de archivos con Apache y PHP para Windows
 -------------------------------------------------------------------
 
 Mediante una petición HTTP es posible llamar al interprete PHP.EXE
 para visualizar archivos fuera del directorio público. También es
 posible ejecutar archivos con cualquier extensión como si de un
 archivo PHP se tratara.
 
 En la documentación de PHP se recomienda que en la instalación en
 Windows se inserten las siguientes líneas en el archivo httpd.conf
 para que Apache trabaje con el ejecutable CGI de PHP:
 
 ScriptAlias /php/ "c:/php/"
 AddType application/x-httpd-php .php
 Action application/x-httpd-php "/php/php.exe"
 
 Gracias a la primera de las líneas podremos acceder a c:/php para
 llamar y ejecutar PHP.EXE con una petición tipo:
 
 http://www.servidor.xxx/php/php.exe (http://www.servidor.xxx/php/php.exe)
 
 Entre otras posibilidades, facilita la lectura de cualquier archivo
 fuera del ámbito público del servidor web. Por ejemplo, la siguiente
 petición permite descargar el archivo de claves de un servidor
 Windows NT:
 
 http://www.servidor.xxx/php/php.exe?c:winntrepairsam (http://www.servidor.xxx/php/php.exe?c:winntrepairsam)
 
 Si el servidor permite subir archivos, pongamos por ejemplo imágenes,
 un atacante podría hospedar archivos con código PHP y extensión .GIF.
 Posteriormente bastaría con llamar al intérprete PHP.EXE para llevar
 a cabo su ejecución:
 
 http://www.servidor.xxx/php/php.exe/dir ... codigo.gif (http://www.servidor.xxx/php/php.exe/directorio_subida/codigo.gif)
 
 En el caso de que el servidor no permita subir archivos existen otras
 formas de conseguir ejecutar código arbitrario y conseguir el control
 total del sistema afectado. Por ejemplo introduciendo el comando a
 ejecutar en una petición HTTP para que quede registrado en el archivo
 log de Apache:
 
 http://www.servidor.xxx/ (http://www.servidor.xxx/)<?%20system('comando a ejecutar');%20?>
 
 Posteriormente bastaría con llamar al log con el interprete PHP para
 que ejecute el comando:
 
 http://www.servidor.xxx/php/php.exe?c:a ... access.log (http://www.servidor.xxx/php/php.exe?c:apachelogsaccess.log)
 
 Opina sobre esta noticia:
 http://www.hispasec.com/unaaldiacom.asp?id=1215 (http://www.hispasec.com/unaaldiacom.asp?id=1215)
 
 Más información:
 
 PHP for Windows Arbitrary Files Execution (GIF, MP3)
 
 http://www.securiteam.com/windowsntfocu ... 0U60C.html (http://www.securiteam.com/windowsntfocus/5YP0L0U60C.html)