Transcript Inyección

Los Diez Riesgos Más Importantes en
Aplicaciones WEB Top 10-2010
A1-Inyección
Oscar William Monsalve
Luis Alberto Suarez
Jorge Eliecer Betancur
Diana Marcela Usuga G.
A1 –Inyección
El atacante envía texto que se aprovecha de la sintaxis del interprete
de destino
Casi cualquier fuente de datos puede ser un vector de la inyección
Las fallas de inyección se producen cuando una aplicación envía los
datos no confiables a un interprete (SQL,LDAP,Xpath,etc)
Las fallas de inyección son muy frecuentes
Inyección de código SQL
La inyección de código SQL es una técnica de ataque usada para
explotar sitios web que construyen sentencias SQL a partir de entradas
facilitadas por el usuario.
Inyección LDAP
La inyección LDAP es una técnica de ataque usada para explotar sitios
web que construyen sentencias LDAP a partir de datos de entrada
suministrados por el usuario.
Inyección de código SSI
La inyección de código SSI (Server-side Include) es una técnica de
explotación en la parte servidora que permite a un atacante enviar código
a una aplicación web, que posteriormente será ejecutado localmente por el
servidor web.
Inyección Xpath
La inyección XPath es una técnica de ataque utilizada para explotar sitios
web que construyen consultas Xpath con datos de entrada facilitados por
el usuario.
Como evitar
ASIGNACION DE MÍNIMOS PRIVILEGIOS.
VALIDAR TODAS LAS ENTRADAS
EMPLEO DE PROCEDIMIENTOS ALMACENADOS
UTILIZAR COMILLAS DOBLES EN LUGAR DE SIMPLES
Pruebas
Las pruebas de inyección se enfocaron en:
Ataques a ciegas
Una comilla’
Una condición verdadera
Una condición verdadera
' or 1=1 limit 1,1 -- a
Se ingresa en ambos
campos la misma
sentencia
Da la posibilidad de acceder
a todos los perfiles como
proveedor
Una comilla’
Ingreso en la URL una
comilla sencilla
Debería aparecer un mensaje de error y en el caso de ser
vulnerable los campos de usuario y contraseña
Ataques a ciegas (Blind SQL injection)
http://example/article.asp?ID=2+and+1=1
Trae la misma pagina
porque la sentencia
and 1=1 es verdadera
pero si cambia 1=0 y
genera error puede
encontrar
vulnerabilidad
http://example/article.asp?ID=2 and (select count (*) from login)
Inicio adivinado el nombre de la tabla y luego cada uno de los campos (*)
Id
User
Paswoord
and (select lenght (paswoord)from login where id =3)
Hallamos la longitud del id =3
and (select lenght (paswoord)from login where id =3)=7
Hallamos la longitud del paswoord=7
and (select lenght (user)from login where id =3)=25
Hallamos la longitud del user=25
Fin de la
presentación
GRACIAS !!