Cuando desarrollamos aplicaciones y en nuestro caso aplicaciones Web, con algun tipo de lenguaje de scripting. Nos encontramos con un serio problema, los ataques de Cross-site scripting (XSS) que aunque parezcan inofensivos, realmente no lo son si por ejemplo podemos usar la sesion de otro usuario para ver su cuenta de correo. Y con los ataques de inyecciones SQL , con lo que ya hablarÃamos de algo un tanto mas serio porque se conseguirÃa acceso directo al servidor de base de datos y como no, a la shell para ejecutar comandos si se cuentan con los permisos necesarios. Lo que quiero decir con todo esto, es que nos encontramos con problemas de seguridad serios si no aseguramos de la manera mas adecuada nuestras aplicaciones Web, ya que no siempre podemos confiar en la seguridad del servidor con ciertos modulos, como puede ser mod_security . Principalmente porque se basan en reglas “humanas”, y de una manera u otra podriamos intentar evadir una regla especifica que bloqueara ciertos intentos (usando otro encode, etc). De esta manera podemos “confiar” más en nuestra aplicación frente a administradores <<zoquetes>> :).
Entre tantas soluciones me he decantado por una bajo licencia GPL (en realidad el cli es licencia apache y cup es licencia GPL-compatible), bajo el nombre de “Pixy”.
esta herramienta tan útil desarrollada en Java, se encargara de realizar auditorÃas de Código en PHP generando un “reporte” de los posibles fallos de seguridad que pudiera tener nuestra aplicación. Para ello se hace de una base de datos de practicas incorrectas de programasen y enumeran las que cumplan esa condición.
Uno de los ejemplos :
$lazaro = $_GET['lazaro'];
$Lylmik = addslashes($lazaro);
// inofensivo porque no se le pasa ninguna variable “peligrosa” a la sentencia
mysql_query(”SELECT * FROM comvive WHERE id = ‘1′”);
// peligrosa porque la variable lazaro no se ha parseado
mysql_query(”SELECT * FROM comvive WHERE id = ‘$lazaro’”);
// inofensiva porque la variable Lylmik se ha parseado
mysql_query(”SELECT * FROM comvive WHERE id = ‘$Lylmik’”);
// peligrosa por no añadir comillas simples
mysql_query(”SELECT * FROM comvive WHERE id = $Lylmik”);
Por lo tanto en el auditor obtendrÃamos un resultado similar a este :
directly tainted!
- fichero.php:4
- Graphs: sql2
- unconditionalindirectly tainted and dangerous!
- fichero.php:6
- Graphs: sql4
- unconditional
Donde como podemos observar nos muestra las lineas del fichero y con que tipo de problema nos encontramos. Esto es tan solo un ejemplo, como podéis observar en la Página oficial contienen bastantes ejemplos sobre todo tipo de Bugs comunes. Por lo que os aconsejo que les echéis un vistazo , no os arrepentireis.
Nota : Cuenta con una interfaz web para facilitarnos un poco la vida :
Otros enlaces de interés :
- PHP-sat : otro auditor de código PHP
- PHP String Analyzer : otro mas para favoritos :)
- Rats : otro analizador de varios lenguajes :P y parecidos ITS4 y FlawFinder.
Listado de utilidades para analizar código muy interesantes : http://www.vanheusden.com/Linux/audit.html
6 de Julio de 2007 a las 10:07
Pixy XSS y SQLI (Asegurando tus aplicaciones en PHP)…
Cuando desarrollamos aplicaciones y en nuestro caso aplicaciones Web, con algun tipo de lenguaje de scripting. Nos encontramos con un serio problema, los ataques de Cross-site scripting (XSS) que aunque parezcan inofensivos, realmente no lo son si por …
6 de Julio de 2007 a las 10:17
Pixy XSS y SQLI (Asegurando tus aplicaciones en PHP)…
Cuando desarrollamos aplicaciones y en nuestro caso aplicaciones Web, con algun tipo de lenguaje de scripting. Nos encontramos con un serio problema, los ataques de Cross-site scripting (XSS) que aunque parezcan inofensivos, realmente no lo son si por …