En esta entrada breve y simple, se detallaran los pasos que realizaremos cuando necesitemos explotar una vulnerabilidad de Sql Injection, que mayormente se encuentran en algunos servidores basados en SQL Server y Oracle. Estas vulnerabilidades son típicas en los LOGIN'S Administrativos, ya que como debemos de saber, que cuando ingresamos el usuario y password estos datos se envían a través del método POST, por lo tanto puede existir la posibilidad de que al ingresar datos falsos o algunos bypasses, esta nos pueda mostrar algún error que nos permita identificar la vulnerabilidad, por tanto se puede explotar automatizadamente utilizando SQLMAP ejecutando comandos para enviar la petición en POST y no en GET como se "acostumbra".
Si no me explique bien, pues al buen entendedor pocas palabras!!! entonces sin mas rodeos, vamos a la acción!
Tenemos un LOGIN en ASP, en la cual no tenemos los datos correctos ni nada por el estilo, ya que no hemos encontrado ningún tipo de vulnerabilidad en el servidor que nos brinde estos datos, por tanto como somos curiosos e inteligentes empezamos a probar datos falsos y algunos bypasses como el famosillo ' or '1'='1 como se muestra en la imagen siguiente:
Después de haber colocado este bypass, tenemos la posibilidad de que el servidor nos muestre algún tipo de vulnerabilidad o el error que nos permita identificar si es vulnerable a SQL Injection, tanto así que si el servidor se encuentra bajo ASP esta nos puede mostrar el error "Microsoft OLE DB Provider for ODBC Drivers error '80040e14'", si esto llega a suceder, corremos la suerte de poder explotar esta vulnerabilidad. En este caso después de haber colocado dicho bypass, el servidor nos devuelve el siguiente error:
Al visualizar esta vulnerabilidad, somos consciente que se puede explotar manualmente o automatizadamente, para así obtener los datos que nos permita logearnos de una manera correcta al servidor.
Ahora, para seguir probando si el LOGIN tiene algún otro tipo de vulnerabilidad, regresamos al form y dejamos en blanco el usuario y clave y le cliqueamos en Conectar, la cual el servidor nos muestra lo siguiente:
¿Algo raro cierto? ¿Por que? ... Este LOGIN nos demuestra que las peticiones no están validadas, quiere decir que si colocamos algún bypass, esta nos muestra una vulnerabilidad, como también si dejamos los form en blanco y cliqueamos en conectar, esta nos permite saltarnos del login.
Bien, después de haber llegado a unas pequeñas conclusiones sobre que el servidor tiene una vulnerabilidad en el login y que las peticiones no están validadas, procederemos a utilizar el Live HTTP Headers para así ver las cabeceras del login al momento que cliqueemos en Conectar.
En este caso después de haber colocado el Live HTTP Headers a la escucha de lo que pasa por el servidor mientras cliqueamos en Conectar dejando todo el blanco, esta nos devuelve lo siguiente:
Hemos obtenido 3 datos muy importantes! las cuales son:
- http://www.uap.edu.pe/intranet/logon2.asp
- POST /intranet/logon2.asp HTTP/1.1
- usuario=&pw=&user=07&B7=++Conectar++
La primera es posiblemente la URL Vulnerable, la segunda nos indica que la variable es POST y el ultimo, los parámetros que posiblemente son vulnerables.
Entonces procederemos a explotar la vulnerabilidad automatizadamente que se encuentra en el LOGIN, utilizando SQLMAP y ejecutando el siguiente comando basándonos en los datos obtenidos por el Live HTTP Headers.
- ./sqlmap.py -u "http://www.uap.edu.pe/intranet/logon2.asp" --data="usuario=&pw=&user=07&B7=++Conectar++" -p "usuario" --level=5 --risk=5 --dbs
Después de que la herramienta termine de auditar el servidor, esta detectara que el parámetro POST "usuario" es vulnerable, tal cual se muestra en la siguiente imagen:
A partir de allí, ya sabemos que dicho LOGIN es realmente vulnerable y lo hemos explotado con total satisfacción obteniendo así toda la base de datos del servidor.
Ahora si! con esta DB obtendremos los respectivos datos reales para poder logearnos satisfactoriamente en el LOGIN que tanto deseamos ;)
Espero les sirva.
Saludos.
Muy bueno el post, como se puede prevenir este tipo de ataques??
ResponderEliminarComo siempre, muy bueno cale.
ResponderEliminarATTE: BTshell
Merecio la pena la espera, excelente Cale.
ResponderEliminarGenial, siempre estoy esperando nuevos artículos, no pares. Gracias.
ResponderEliminary si tiene fw activo
ResponderEliminarMuy buena demo para demostrar un análisis y razonamiento antes de comenzar las pruebas de intrusión.
ResponderEliminarSaludos.
Que buen post bro , exelente
ResponderEliminarBuen post caleb deberías añadir esto hermano para el análisis sea anónimo
ResponderEliminarhttp://www.el-palomo.com/2012/04/anonimato-en-internet-tor-polipo-y-sqlmap/comment-page-1/#comment-1321
Excelente
siempre publicando buenas notas hacerca de seguridad el punto es aprender espero sigas publicando cosas tan buenas e interesantes como siempre todos los post son interesantes en la google miles de blogs como el tuyo de un poco aqui y otro aca se aprende , sigue asi .
ResponderEliminarAprende a escribir animal! ¿¿¿¿hacerca????
EliminarSQLMAP una Herramienta muy buena
ResponderEliminarEsta información es muy valiosa, pero igual tengo la misma duda,¿cómo podemos evitar un ataque similar? o ¿qué sugieres para dejar un sistema lo mas seguro posible (aparte de ni usar windows jejejejeje)?
ResponderEliminarEl problema en este caso no es el Windows sino la falta de validación de los campos del formulario. Para evitar este tipo de ataques es necesario validar los datos de entrada en el lado del servidor(principalmente) y en el lado del cliente(esta opción se puede saltar deshabilitando javascript del navegador)
EliminarEres un muy malote calev! t admiro much! sldos dsd argentna
ResponderEliminartambn lo hubieras guardado lo de http live headers en un bloc de notas con cualquier nombre ejemplo code.txt y el codigo seria este:
ResponderEliminar./sqlmap.py -r /root/desktop/code -p usuario=&pw=&user=07&B7=++Conectar++ --dbs
salu2 ;)
very fucking cool bro! *O*
ResponderEliminarQue buen Blog, te felicito, llevo una semana depredando la info de tu genial blog (leyendo), un saludo y estoy muy atento a la próxima entrega. Slds.
ResponderEliminarpublica de la Pagina Joomla, de la UNP - Sus vulnerabilidades los link y q tipo de vulnerabilidad es.
ResponderEliminarcan we have any update please, congratulations for the blog. King Regards.
ResponderEliminarBuen post caleb deberías añadir alguna entrada nueva en tu blog, es mucho tiempo sin tener novedades. Slds.
ResponderEliminarfue facil se nota que la seguridad es pesima.
ResponderEliminarmuy bueno el post 100% comprobado :p
ResponderEliminarHola amigo puedes aplicar eso a https://dued.uap.edu.pe/logeo.asp
ResponderEliminary obtener el usuario y clave de los docentes? por favor te lo pido
No es que sea importante pero risk es un valor entre 0 y 3 ambos inclusive, por tanto nunca puede tomar un valor de 5. Y lo de que ya tiene usted los datos para poder logearse no lo veo yo tan claro tampoco. Es de suponer que la base de datos contendrá las contraseñas encriptadas con algún algoritmo no reversible. Seguramente alguna de ellas será vulnerable a una desencriptación con bases de datos de hashes pero eso no es seguro 100% que vaya a ser así. De cualquier manera la base de datos ha sido vulnerada y el ejemplo es muy didáctico.
ResponderEliminarinteresante mi estimado amigo, podrías sacarle la vuelta a esta web intranet.uandina.edu.pe
ResponderEliminarte dejo mi correo por alguna novedad : raydenxp@hotmail.com
Hola amigo, este blog esta muerto y es una lastima, comenzó con buen pie.
ResponderEliminarSaludos.
excelente demostracion
ResponderEliminarmuy bueno
ResponderEliminarExcelente! solo que tengo una duda , funciona para php? ejemplo: dejo en blanco las casillas y conecto... El live http no arroja nada. en cambio si inserto caracteres arroja lo siguiente...
ResponderEliminarhttp://ejemplo/ejemplo/acceso.php
POST /sistema/acceso.php HTTP/1.1
tipo=p&usuario=%27+or+%271%27%3D%271&contrasena=sdfdss
se puede explotar la vulnerabilidad con el mismo comando que insertaste pero con los datos que yo obtuve o tengo que modificar algo y donde?
De ante mano muchas gracias :D!
y si quiero abrir una tabla como se hace? en ese ejmplo
ResponderEliminargracias
are you alive?
ResponderEliminar