GNU/Linux >> Tutoriales Linux >  >> Linux

Pruebe los inicios de sesión de WordPress con Hydra en Kali Linux

Introducción

Hay formularios web en todo Internet. Incluso los sitios que normalmente no permiten que los usuarios habituales inicien sesión probablemente tengan un área de administración. Al ejecutar e implementar un sitio, es importante asegurarse de que las contraseñas de acceso a los controles confidenciales y los paneles de administración sean lo más seguras posible.

Hay diferentes formas de atacar una aplicación web, pero esta guía cubrirá el uso de Hydra para realizar un ataque de fuerza bruta en un formulario de inicio de sesión. La plataforma de destino de elección es WordPress. Es fácilmente la plataforma de CMS más popular del mundo y también es conocida por su mala gestión.

Recuerda, esta guía está destinada a ayudarlo a proteger su WordPress u otro sitio web. El uso en un sitio que no es de su propiedad o que no tiene permiso por escrito para probarlo es ilegal. .

Preparativos

Antes de hacer nada, necesitará un sitio web de WordPress para apuntar. Esta guía también asume que está alojando el sitio de WordPress en su propia máquina. Si necesita ayuda para configurar LAMP en su máquina, consulte nuestras guías de Debian LAMP y Ubuntu LAMP.

Puede hacer esto en una instalación normal de Linux o en una instalación de Kali Linux. Si está utilizando Kali, siga la guía Debian LAMP from source. Solo asegúrese de tener Hydra y cURL instalados en el sistema que elija. Están disponibles en la mayoría de los repositorios.

Si realmente no quiere usar su instalación regular, definitivamente puede usar otra máquina, simplemente sustituya la IP del objetivo por localhost, y asegúrese de que la máquina objetivo sea accesible desde el atacante.

Recopilación de información

Una vez que tenga WordPress en funcionamiento, es hora de encontrar la mayor cantidad de información posible sobre la instalación a la que se dirigirá. Esto significa averiguar cómo se crea el formulario de inicio de sesión, qué sucede cuando lo envía y posiblemente adónde va si el inicio de sesión es exitoso.

Fuente HTML

Comience navegando a la página de inicio de sesión. Puede encontrarlo en localhost/wp-login.php . Utilice la capacidad de su navegador para inspeccionar el código fuente. Puede simplemente hacer clic con el botón derecho en algún lugar de la página y seleccionar "Ver código fuente" o "Inspeccionar elemento". De cualquier manera, puede ver la fuente, solo se mostrará de diferentes maneras.

Busque alrededor de la mitad del código. Estás buscando las etiquetas. Ese es el formulario de inicio de sesión real. Dentro de ese formulario hay un par de datos que necesita.

Antes de recopilar la información, verifique si el formulario envía una solicitud GET o POST. En la primera línea del formulario, debe haber una opción de método similar a esta:method="post" . En el caso de WordPress, es un POST.

Primero, busque la entrada del nombre de usuario. Debería verse como la línea de abajo.

<input type="text" name="log" id="user_login" class="input" value="" size="20" />

La parte que necesitas es el name . En este caso, es log .

A continuación, busque la entrada de contraseña. Debería verse similar.

<input type="password" name="pwd" id="user_pass" class="input" value="" size="20" />

De nuevo, encuentra el name que es pwd .

También debe identificar el botón de envío para que Hydra pueda enviar el formulario.

<input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Log In" />

Es importante registrar tanto el name y el value .

Hay una última pieza. Si no lo ha notado, hay dos campos ocultos en la parte inferior del formulario. Uno le dice a WordPress que redirija cuando se envía el formulario y el otro es una cookie que WordPress buscará cuando se envíe el formulario. Necesitas la cookie.

<input type="hidden" name="testcookie" value="1" />

De nuevo, tome nota del name y value .

URL

Aunque se podía obtener mucha información mirando el código fuente HTML, hay algunas cosas más que debe saber antes de lanzar Hydra. Sin embargo, en la mayoría de los casos, es posible que pueda ejecutar la prueba solo con la información que recopiló. Simplemente intentaría iniciar sesión con credenciales incorrectas, registrar el mensaje de error y utilizar ese mensaje como una condición de prueba fallida en Hydra.

Sin embargo, WordPress está diseñado de manera diferente, y realmente no hay una buena manera de probar con intentos fallidos de inicio de sesión. Debido a esto, debe probar un inicio de sesión exitoso. esto no supondría una diferencia si estuviera probando un sistema para un cliente. La condición que encuentre localmente debería ser universal para WordPress.

Aquí también hay otra arruga. ¿Recuerdas el campo de redireccionamiento oculto en el formulario? Bueno, esa redirección le impide usar una condición como la presencia de la palabra "Panel de control" para probar el éxito también. Vas a tener que echar un vistazo a la solicitud en sí, y para eso, está cURL.

Para comparar, primero debe ver la página de inicio de sesión original con cURL.

$ curl -v http://localhost/wp-login.php

La mayor parte de la información es la misma que el código fuente que miraste en el navegador. Sin embargo, en la parte superior hay información sobre la solicitud HTTP. Toma nota de esta información. Tendrá que compararlo con un inicio de sesión exitoso.

Lo siguiente que debe hacer es iniciar sesión correctamente con cURL. Para hacer eso, necesitará esa cookie de la solicitud anterior. Eche un vistazo a los datos HTTP y busque una línea que se parezca a la siguiente.

< Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/

Vas a necesitar el wordpress_test_cookie=WP+Cookie+check parte.

Muy bien, ahora necesitará la información que recopiló del HTML junto con esa cookie para realizar la solicitud. Así es como debería verse.

curl -v --data 'log=username&pwd=realpassword&wp-submit=Log+In&testcookie=1' --cookie 'wordpress_test_cookie=WP+Cookie+check' http://localhost/wp-login.php

Entonces, tiene la misma solicitud básica que antes, pero esta vez, está usando --data marca y la --cookie marca para pasar cURL con qué datos de formulario desea interactuar y esa cookie, por lo que el formulario realmente se enviará.

Esa cadena de datos, log=username&pwd=realpassword&wp-submit=Log+In&testcookie=1 corresponde directamente a la información que recopiló del HTML. Está diciendo que conecte el valor "nombre de usuario" en la entrada llamada log y el valor "contraseñareal" en la entrada llamada pwd . Asegúrese de usar el nombre de usuario y la contraseña reales para iniciar sesión. Luego, use el envío con el nombre wp-submit y un valor de Log In para enviar los datos. Al final está testcookie con un valor de 1 . Eso es solo decirle a cURL que lo envíe junto con el resto de los datos del formulario.

Cuando cURL complete la solicitud, realmente no verá ningún HTML, solo mucha información de la solicitud. ¿Recuerda esa redirección que hizo que la prueba con "Dashboard" no funcionara como condición de prueba? Bueno, ahora la redirección en sí será la condición de prueba. Echa un vistazo a la línea de abajo.

< Location: http://localhost/wp-admin/

Esa línea no estaba en la solicitud anterior. Tampoco contiene ninguna información específica relacionada con ese usuario o inicio de sesión. Eso significa que siempre estar presente durante un inicio de sesión exitoso de WordPress, por lo que es la condición de éxito perfecta para probar.

Pruebas con Hydra

Finalmente, tienes todo lo que necesitas para probar tus contraseñas con Hydra. El objetivo de esta guía no es tanto cubrir la sintaxis de Hydra, sino que desglosará el comando utilizado. Si desea obtener más información sobre Hydra, consulte la guía de SSH que ofrece muchos más detalles.

En realidad, solo necesita un comando para que Hydra ejecute posibles nombres de usuario y contraseñas para probar la seguridad de su sitio de WordPress. Lo más fácil es echar un vistazo al comando y desglosarlo.

$ hydra -L lists/usrname.txt -P lists/pass.txt localhost -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'

Bien, obviamente esto es mucho para asimilar a la vez. El -L flag le dice a Hydra que use una lista de palabras de nombres de usuario en lists/usrname.txt . Del mismo modo, el -P flag le dice a Hydra que use una lista de palabras de contraseñas en lists/pass.txt . localhost le dice a Hydra que apunte a localhost, y -V le dice que registre cada prueba en la salida de la consola.

El resto del comando se ocupa de la solicitud HTTP en sí. http-form-post activa el módulo Hydra para manejar formularios HTTP con un método POST. Recuerde desde antes que el formulario de inicio de sesión de WordPress se encuentra en un POST de. La cadena que sigue contiene todos los parámetros que utilizará Hydra. Debe notar que es muy similar al que se usa para iniciar sesión a través de cURL.

La cadena consta de diferentes secciones separadas por : . La primera parte es la dirección exacta que se está probando, /wp-login.php . La siguiente parte es casi exactamente igual a la utilizada por cURL. Pasa valores al formulario y lo envía, incluida la cookie. En lugar de pasar valores literales, Hydra en realidad usa variables. Aviso en log=^USER^ y pwd=^PASS^ . Esas son variables separadas con el carácter de zanahoria que toman los valores de las listas de palabras y los pasan en la solicitud de cada prueba que ejecuta Hydra.

La última pieza de la cadena es la condición de prueba. S significa que está probando el éxito. Si quisiera probar fallas, usaría F . Lo establece igual a la palabra o frase que está probando. Piensa si es casi como grep .

Cuando ejecute esto, debería obtener un resultado positivo, siempre que el nombre de usuario y la contraseña correctos estén en las listas de palabras que proporcionó a Hydra.

Pensamientos finales

En primer lugar, felicitaciones por haber superado todo eso. Si lo logró, ahora tiene un método sólido para probar la seguridad de la contraseña de sus cuentas de usuario de WordPress.

Esta guía se adaptó a WordPress, pero puede seguir fácilmente los mismos pasos para probar otros formularios web. Si ejecuta una aplicación web con varios usuarios, definitivamente es una buena idea asegurarse
de que estén usando contraseñas seguras. Esto puede ayudar a informar su política de contraseñas. Una vez más, asegúrese de realizar pruebas solo con permiso.


Linux
  1. Use Aircrack-ng para probar su contraseña WiFi en Kali Linux

  2. Cómo actualizar Kali Linux con un solo comando

  3. Instalar WordPress en Linux con Apache

  4. Comience con Latex en Linux

  5. ¿Usando SDL2 en Linux con g ++?

Guía de instalación y revisión de Kali Linux con capturas de pantalla

Tutorial de comandos de prueba de Linux para principiantes (con ejemplos)

El comando make de Linux explicado con ejemplos

Instale WordPress 4.0 con Nginx 1.6 en Linux Mint 17

Pretenda estar usando Windows con el modo encubierto de Kali Linux

Inicie sesión con una clave privada SSH en Linux y macOS