lunes, 27 de agosto de 2012

All the input is evil - II de III

Hoy, en uno de esos intentos por escribir algo que no solo tenga que ver con fallos de seguridad informática me decidí a escribir un post básico sobre las vulnerabilidades más comunes en aplicaciones web y como sanitizarlas.










 





Segunda parte de esta entrega, esta vez poniendo solución a fallos relacionados con la inclusión de archivos ejecutables

1. - Inyecciones LFI & RFI (Local/Remote File Include).

Veamos el típico ejemplo de inclusión de archivos de forma dinámica convirtiendose en métodos inseguros.















En ochenta mil sitios van a decir que este código es vulnerable y hay que sanitizar la variable $file, yo digo que no. Lo que no hay es que realizar includes dinámicos directamente para no comprometer el servidor.

Sí, se podría sanitizar pero, ¿hasta que punto lo convertiríamos en un LFI? ¿Realmente es posible?
Claro que es posible filtrar los datos de entrada, pero es que no es necesario porque el mismo código se podría estructurar de otra forma más segura. Veamos:

























Así y con un poco de código extra se pueden guardar los logs de los "hackers" que lo intentaron por esa vía y bloquear sus ips o hacer lo que se crea necesario.


2. - Inyecciones tipo SSI a partir de XSS (Server Side Includes).

Lo más típico, descubrir un fallo tipo XSS en un servidor Apache y probar si SSI está activado. Es sorprendente la cantidad de servidores que lo tienen activado y no lo usan, simplemente porque no saben que está ahí.

Llegados a este punto es fácil saber que de no existir el XSS  (All the input is evil - I de III) esto nunca llegaría a funcionar.

Así que para que repetir lo que ya sabemos, cuidado con las inyecciones tipo Cross Site Scripting porque son más de lo que parecen (nunca dijimos lo contrario).

Un poco de información sobre SSI };)



All the input is evil - III de III




No hay comentarios:

Publicar un comentario