lunes, 23 de noviembre de 2015

Inyeccion SQL Metodo POST explicación de tema avanzado



Saludos nuevamente mis queridos fieles lectores luego de mucho tiempo de estar inactivo en este mi humilde blog llego a ustedes, en esta oportunidad aprenderemos a como hacer una inyección sql en método POST, antes de comenzar con ello narrare un poco sobre lo que sucede con las inyecciones SQL al insertar sentencias validas enviando datos a la misma DB y obteniendo el famoso bypass , luego haremos la famosa inyección en Método POST :

Una forma de encontrar paginas vulnerables de una manera fácil y floja es utilizando las famosas dork de google, o si deseamos obtener precisamente de una web en especial ya vamos a la auditoria en su escaneo en la plataforma en general :

Ejemplos de Dorks :

  •  inurl:adminlogin.aspx
  •  inurl:admin/index.php
  • inurl:administrator.php
  • inurl:administrator.asp
  • inurl:login.asp
  •  inurl:login.aspx
  •  inurl:login.php
  •  inurl:admin/index.php
  • inurl:adminlogin.aspx
Algunas sentencias de ataque de vectores de mysql :

User: 1'or'1'='1
Password: 
' or 1=1--

Dichos vectores son mas que sentencias de autologeo que nos van a permitir tener un inicio de sección en este caso del primer "Usuario Registrado" como seria en cualquier plataforma como el administrador.. pero tambien podemos utilizar dichos vectores como un indicador de hay una vulnerabilidad en una plataforma web y poder hacer  la explotación

Vayamos por el Bypass algo conocido y utilizado por ejemplo entraremos a esta web , como vemos nos parece el incio de usuario verdad ?? Ok vamos a llenar dichos registros con una sentencia poco conocida por muchos la cual es la siguiente :

1' or (sleep(2)+1) limit 1 --

Como vemos este Bypass tiene un sentencia estructurada muy completa ya que nos dara una validación de "2" tipos de privilegios estándares .

Web de prueba

http://www.prueba.com/foro/index.ngmf

Ahora añadiremos dicho vector 2

1' or (sleep(2)+1) limit 1 --

como vemos acabamos de entrar a un panel administrativo y podemos  hacer lo que deseamos por medio de dicho vector de logeo, pero que pasaría si al ejecutar dicho ataque  nos arroja un error de sentencia estructurado de MySQLi , pues vayamos al ataque :

Web de prueba

http://www.prueba.com/consulta.html

pondremos el siguiente vector para probar la web :

' or 1=1--

como vemos al realizar dicha consulta que enviamos mediante la sentencia or'1'='1 " automaticamente tenemos como respuesta errorea de dicho servidor como vemos en la imagen , ahora podemos saber que la web es vulnerable y pasaremos a explotarla, pero como  vamos a saber que parametro es vulnerable ?
ya que es un parametro "POST" , debemos identificar las cabeceras de envíos que son enviados por respuesta a la web, pero como podemos capturarlos ? , para ello tenemos un complemento en Firefox llamado :


Live HTTP Headers 







Link de descarga : 
https://addons.mozilla.org/es/firefox/addon/live-http-headers/


Automáticamente nos saldrá el icono en nuestros complementos y procedemos abrir dicha aplicación :

como vemos nos sale vacio ya que todavia no se ah enviado respuestas a la web, lo que haremos sera nuevamente enviar la sentencia ' or 1=1--  en dicho encuesta de la web .

Como vemos hemos capturado muchas cabeceras el dicho proceso, pero los que nos interesa es buscar la
 cabecera la cual nos de como referencia el parámetro "POST" con la URL donde hemos iniciado y  posteriormente a la que nos ah arrojado el error de SQLi



Datos Capturados de nuestro Interés :

2- Parametro POST 

http://www.prueba.com/ogmre/ejecuta_notas_ol_cur.php

2- Cabeceras capturadas 


dcodcur=%27+OR+1%3D1--&dcodtur=%27+OR+1%3D1--&dcodsec=%27+OR+1%3D1--

Como vemos las cabeceras están formuladas por " %27+OR+1%3D1-- " que por defecto al hacer una sentencia o unas palabras van a surgir dichos caracteres opcional-mente , lo que haremos sera formar bien las cabeceras para poder tener una Inyección SQLi positivo :

como vemos el primer formulario es el siguiente :


dcodcur=%27+OR+1%3D1--&


dcodcur                      = es el  parámetro POST vulnerable :

%27+OR+1%3D1    = es la sentencia formulada con terminación numeral "1"

--                               = es el espacio otorgado para distanciar la sentencia

&                              = es el vector que separa a los parámetros :

entonces una ves comprendido vamos a añadir la formulación correcta del primer parámetro  :

dcodcur=1 

formulación correcta de todo los parámetros : 

dcodcur=1 dcodtur=1 dcodsec=1


Una ves obtenido todo lo siguiente solo faltaría hacer el penteting con Sqlmap para comprobar dicha  explotación haré la prueba en windows :


sqlmap.py -u "http://www.prueba.com/ogmre/ejecuta_notas_ol_cur.php" --data="dcodcur=1 dcodtur=1 dcodsec=1" --level=5 --risk=5 --dbs


Como vemos es vulnerable a una inyección Sqli, no mostrare la base de datos  por seguridad mia,Saludos y éxitos para todos 

6 comentarios:

  1. ¿ Que estas usando una ventna cmd o algun sofware ? Nos puedes explicar detallada mente y gracias de antemano

    ResponderEliminar
    Respuestas
    1. Hola bro, pues estoy utilizando la consola CMD para ejecutar " SQLMAP"
      SQLMAP es una herramienta de codigo abierto, la cual sirve para hacer ataques de Inyecciones "SQL"ORACLE,ETC De manera automática :)

      Eliminar
  2. Gracias amigo me has aclarado muchas dudas, casi nadie habla del metodo POST todo en internet es GET GET GET

    ResponderEliminar
  3. Buenaso !!!!!
    que bueno que aun existan personas que dedican algo de tiempo en este tipo de blogs aportan algo al mundo eso los hará inmortales !!!!
    :D Saludos que buen post !!!

    ResponderEliminar