¿Cómo descubrir la fortaleza de la contraseña de Wordpress (ya almacenada)?

10

Soy responsable de la seguridad de muchos servidores de alojamiento compartido. La mayoría de ellos tienen sitios web de WordPress. Cada servidor tiene al menos 500 sitios web de WordPress.

En mi experiencia, el problema con WordPress comienza con una contraseña débil. La mayor parte de la contraseña de administrador del sitio web es muy débil y el uso del sitio web de contraseña débil se explota y se utiliza para diversas actividades maliciosas.

Ahora mi plan es encontrar la contraseña débil del sitio web de WordPress y cambiar forzosamente la contraseña de administrador a alguna otra contraseña segura. Para que WordPress se pueda asegurar y mi servidor no tendrá problemas.

¿Cuál es la forma de conocer la fortaleza de la contraseña de WordPress almacenada?

Mani
fuente

Respuestas:

8

Hashes fuerza bruta

Podría aplicar fuerza bruta al hash que está almacenado en la base de datos.

WordPress usa phpass para el hash. Por defecto, WordPress no usa blowfish o similar, sino solo md5 con un recuento de iteraciones de 8192. Si solo desea encontrar contraseñas realmente malas, la fuerza bruta es ciertamente factible.

Pero consideraría esto como una violación bastante grande de la confianza que los usuarios depositan en usted, por lo que no recomendaría este enfoque.

Analizar sus contraseñas al iniciar sesión

Puede agregar una secuencia de comandos que intercepte todas las solicitudes a las secuencias de comandos de inicio de sesión de WordPress y registrar o analizar las contraseñas, ya que están en texto sin formato en ese momento.

Por supuesto, esto solo detecta las contraseñas débiles una vez que el usuario inicia sesión. Si han abandonado su sitio o están más bien inactivos, puede demorar un tiempo descubrir que usan una contraseña débil.

Consideraría que esto es una violación aún mayor que la fuerza bruta de los hashes, y también conlleva algunas preocupaciones de seguridad (si almacena las contraseñas en texto sin formato, obviamente sería una preocupación, pero incluso si no, puede almacenar accidentalmente alguna información de El análisis que puede ayudar a un atacante).

Implemente una política de contraseñas (y obligue a los usuarios a cambiar sus contraseñas)

Podría implementar una política de contraseña. Cuando un usuario envía una nueva contraseña, debe verificar si cumple con su política o no (idealmente, esto sucedería del lado del servidor, no del lado del cliente a través de JavaScript).

Escribir una buena política de contraseña es difícil, así que eche un vistazo a las políticas existentes para ayudarlo aquí.

Por supuesto, las contraseñas antiguas no se ven afectadas por la política, por lo que debe obligar a los usuarios a cambiar sus contraseñas antiguas para cumplir con la política.

Limitar Daño

La aplicación de contraseñas seguras puede ser una buena idea, pero idealmente, una instancia de WordPress pirateada no debería afectarte realmente como webmaster.

Debería limitar el daño una vez que un atacante haya obtenido acceso a una instalación de WordPress. Idealmente, desearía que solo esa instancia se vea afectada, no todo el servidor (por lo que puede preocuparse de que un atacante ponga contenido indecente en un sitio web, tal como lo haría un usuario válido), pero no sobre la ejecución de código u otro tipo de malware actividad).

Este es un tema bastante amplio, pero algunos puntos incluyen: DISALLOW_FILE_EDITlimitado el uso de complementos (ya que están mucho menos codificados de forma segura que WordPress), no permite JavaScript (por ejemplo, con sitios múltiples, solo los superadministradores tienen derecho a publicar JavaScript, no administradores), etc.

tim
fuente
4

No estoy seguro de que esto sea posible. Cuando selecciona su contraseña, se almacena en hash en la base de datos. No hay ingeniería inversa cuando se trata de algoritmos hash.

En mi experiencia, el script para la fuerza de la contraseña se encuentra en www.example.com/wp-admin/js/password-strength-meter.js, y este es el enlace.

Puede cambiar los niveles y el porcentaje de las contraseñas aquí, por lo que puede establecer una fuerza de contraseña obligatoria en 100/100.

Y, si desea que su cliente verifique la fuerza de la contraseña, aquí hay una linda aplicación que puede darle fuerza de contraseña.

Es imposible hacer algo de ingeniería inversa aquí, y además, hay pocos complementos que obligan a los usuarios a obtener contraseñas seguras.

Josip Ivic
fuente
1
Esto parece una obviedad que los anfitriones web y los propietarios de sitios pueden hacer para protegerse. Muy buena pregunta y respuesta! No estoy seguro de que se haya abordado aquí antes. Al menos no se ha abordado durante mucho tiempo. ¡¡Salud!!
closetnoc
1
La respuesta anterior es buena, pero no resuelve mi problema. La mayoría de los sitios web de WordPress ya están instalados o en un día se están realizando cientos de instalaciones de WP en mi servidor. Suponga que cambio la fuerza de la contraseña usando password-strength-meter.js, aún no me es útil. Bcoz, el pwd ya está configurado. Esto será útil solo para el nuevo passwd, no para el que ya está configurado.
Mani
1
Pero, no hay forma de que pueda encontrar todas las contraseñas de la base de datos porque están en hash. Puede configurar esto y luego volver a enviarlo a todos los usuarios para cambiar sus contraseñas para que puedan tener contraseñas seguras. No veo otra forma de evitar esto. Verifique las respuestas a continuación también.
Josip Ivic
2
@Josip Ivic, la única forma es restablecer pwd e informar al administrador como dijiste.
Mani
1
Para los nuevos usuarios, solo ajustaría el script en wp en el servidor, por lo que es obligatorio tener contraseñas seguras, y para los usuarios antiguos, les reenviaré los correos para que puedan cambiar sus contraseñas por seguras. Como he dicho, no hay una manera fácil de hacer esto, pero es factible. :)
Josip Ivic
3

La buena noticia es que puede cambiar las contraseñas de los usuarios, la mala noticia es que no puede verlas.
Wordpress es tan poderoso que incluso en la base de datos almacena la contraseña con encriptación unidireccional, no es solo un hash md5 que puedes convertir, ni siquiera son datos serializados, para la contraseña test123obtendrías algo así $P$BjW8o9Dm1vC5bwAcP1iAdNVm0lbvn, incluso si cambias el campo de contraseña en la base de datos sin usar cifrado, no funcionaría.

Cómo cambiar la contraseña

Creo que eres consciente de esto, pero lo dejaré aquí. Puede ingresar a su panel de WordPress con privilegios de administrador, ir a los usuarios, encontrar un usuario y esta parte es algo mala para sus propósitos porque debe hacer clic en generar nueva contraseña, le dará una sopa aleatoria de letras y símbolos y puede edítela con la suya, pero aun así no podrá ver la contraseña.

knif3r
fuente
Olvidé mencionar que puede usar un complemento como iThemes para exigir a los usuarios que ingresen contraseñas seguras, también permita la protección de la fuerza bruta y otras características interesantes que podrían interesarle.
knif3r
3

A medida que las contraseñas se cifran, la única forma de probar su seguridad es forzándolas con fuerza bruta. Reúna una lista de contraseñas débiles de uso común y compárelas con los hash almacenados en su base de datos.

A menos que use una lista de contraseñas muy exhaustiva, no detectará todas las contraseñas débiles, pero filtrará las más débiles.

Tom van der Zanden
fuente
Esta es una solución que requiere mucho tiempo.
Josip Ivic
Esto es lo que se llama construir una mesa arcoiris.
Ashfame
@Ashfame No, no lo es. Una mesa arcoiris es un enfoque mucho más sofisticado que no es necesariamente el más adecuado para este escenario.
Tom van der Zanden
@TomvanderZanden Puede que no sea un enfoque adecuado, pero ¿cómo no será una mesa arcoiris?
Ashfame
@Ashfame Porque las tablas de arcoíris son mucho más sofisticadas que "verificar una lista de contraseñas en tu base de datos". Las tablas de arcoiris, por ejemplo, usan cadenas hash y funciones de reducción. También tenga en cuenta que construir una tabla de arco iris lleva más tiempo que simplemente verificar todas las contraseñas en su base de datos. El uso de una tabla de arco iris precalculada puede tener sentido, pero puede ser excesivo para esta situación.
Tom van der Zanden
1

No puede cambiar forzosamente la contraseña de administrador de wp, a menos que no tenga control en cada base de datos de wordpress, que está almacenada en phpmyadmin.

Y no, no hay una forma rápida de averiguar la contraseña de la semana en el sitio de 500 wordpress. Josip menciona un enlace para verificar la seguridad de la contraseña, pero ese sitio no usó el algoritmo criptográfico md5 para verificar la seguridad de la contraseña.

Echa un vistazo a este enlace SO ( Wordpress usando MD5 ) y verás que la salida es diferente a esa aplicación. Por lo tanto, como ve, p#aSS*Word14no es seguro que, Dance With Me Tonightpor lo tanto, no use la aplicación de terceros para verificar su contraseña de Wordpress, ya que pueden estar usando otro algoritmo criptográfico para verificar / asumir la seguridad de la contraseña.

Además, debe tener todas las contraseñas y probarlas una por una, no hay ningún truco de magia para descubrir rápidamente.

Otra cosa es que, si un sitio de WordPress es pirateado, no afectará a otro sitio de wp en el mismo servidor (excepto el ataque de DOS). He visto a muchas personas iniciar wp en hosting compartido, y su sitio está siendo pirateado, pero su sitio vecino funcionaba bien, porque cada wp tiene su propia base de datos en phpmyadmin.

Goyllo
fuente
Didn't affect other WP site on same server:¡Coincidencia! Depende del tipo de ataque / pirateo e intención del hacker / bot.
Ashfame
Estoy hablando de seguridad de wordpress, no de seguridad de nivel raíz. Pero estoy seguro, la mayoría de todos los proveedores de hosting que utilizan el mecanismo de sandbox no afectaron a otro sitio web en el mismo servidor.
Goyllo
1

Como las respuestas anteriores han señalado: no puede leer las contraseñas almacenadas.

Una solución alternativa podría ser:

  1. Implemente la sugerencia de Josip Ivic para aplicar contraseñas seguras.
  2. Elimine todas las contraseñas (o solo las contraseñas para usuarios con ciertos privilegios).
  3. Y, por último, informe a los usuarios afectados que una nueva política de contraseñas está vigente y pídales /wp-login.php?action=lostpasswordque restablezcan sus contraseñas.
Syberspace
fuente
1

Las contraseñas de WordPress son hash, como lo haría cualquier aplicación sensata cuando se trata de almacenar contraseñas porque almacenar contraseñas de texto claro es muy inseguro ya que sus usuarios pueden tener la misma contraseña para otros servicios que usan (¿piensan en Gmail?).

No es posible convertir el hash de nuevo a la contraseña, de lo contrario uno podría almacenarlos en texto claro. Anteriormente, las contraseñas solían ser hash, MD5pero eso fue demostrado inseguro por un equipo de seguridad, por lo que se actualizó el algoritmo de hash phpass.

Sugerencia: WordPress aún puede administrar el hash correctamente incluso si actualiza MD5 (% contraseña%) en la columna sql.

Ahora, la forma práctica de abordar lo que está tratando de hacer para un solo sitio es forzar un cambio de contraseñas cambiando la columna a otra y haciendo cumplir los requisitos de seguridad de la contraseña en la página donde van a actualizar su contraseña. Pero su caso de uso requiere hacer esto en tantas instalaciones de WP y los propietarios de sitios pueden no apreciar que lo haga sin su consentimiento. Por lo tanto, definitivamente debe limitar el alcance del impacto de sus acciones.

1) Actualice las contraseñas solo para administradores, editores, pero que requiera que encuentre quiénes son esos usuarios. Envíelos por correo electrónico y luego aplique la restricción de contraseña en la página de restablecimiento de contraseña / página de registro, etc. Recuerde que alguien puede tener esos formularios en otra parte del sitio (piense también en los formularios AJAX). Crear un comando WP-CLI que lo ayude aquí a ejecutar este plan, en lugar de cargar el entorno WP y ejecutar scripts.

2) Generar una tabla de arco iris que consiste en una contraseña hash para una cadena conocida (contraseña). Y luego, básicamente, debe hacer coincidir el hash con la contraseña de un usuario en particular y evaluar la fortaleza de esa contraseña. Generar la tabla es el paso más lento aquí, ya que tiene que codificar cada contraseña posible que pueda haber, almacenarla en el disco (varios GB dependiendo de la longitud y combinación de las contraseñas que está contabilizando) y luego actuar según los resultados. 99% seguro de que es una solución exagerada para sus necesidades.

Consejo: Conoces esas sales y secretos que tenemos wp-config.phparchivados. Cambiarlos invalida las sesiones iniciadas, en caso de que alguna vez lo necesite.

Ashfame
fuente
1

Intenta forzarlo con un ataque de diccionario

¿Qué mejor manera de evaluar la fortaleza de su contraseña? :-) Sí, lo sé, tomará algún tiempo ...

De lo contrario, simplemente podría suponer que todas las contraseñas son débiles (diría que será una suposición muy precisa ) y crear las contraseñas, almacenar los hashes en la base de datos y dar la contraseña de texto sin formato a los administradores utilizando un "seguro" canal

De lo contrario, asuma nuevamente que todas las contraseñas son débiles y obligue a los administradores a cambiarlas, y use un validador de contraseña muy exigente en el sitio web.

Gianluca Ghettini
fuente