¡Que no! ¡Que yo no entrego los deberes en el aula virtual!
En uno de tus momentos vagos (pero hackers) seguro que has tratado de cerrar la pestaña de minijuegos y ponerte a buscar alguna vulnerabilidad en moodle. ¿A que sí?
Quizás este sea tu día de suerte (pero no te emociones) porque existe una vulnerabilidad capaz de causar un DoS en Moodle.
¿Pero dónde está la vulnerabilidad por dios? Despacito!!
Sí revisamos moodle nos podemos fijar en que cada 24 horas ejecuta una tarea de mantenimiento.
Esa tarea de mantenimiento limpia las sesiones que han expirado, los usuarios que llevan X tiempo inactivos, etc.
Se ejecuta por medio de cron (cronjob). En toda esa tarea hace varias consultas a la base de datos lo cual hace que el script pues claramente consuma recursos.
Esto no es un problema si se ejecuta cada 24 horas, pero si se ejecuta cada 24 milésimas de segundo puede que sí.... Le pegamos un vistazo al archivo cron.php situado en /admin/.
Recomiendan setear un password... pero creeis que los casi 1000 moodle que encontré lo tienen? Pues no.
Entonces cualquier persona puede ejecutar el script y adelantarse a cron, solo que si lo ejecutamos demasiado la página se caerá.
Y no muy lejos me hice mi herramienta juacker para que todos la probeis, pero eso, ¡Sin ser malos!
Y ya sé que muchos me odiareis por que principalemente sea para windows asique os regalo el código fuente para que la "modifiqueis" para Linux :))
>> Descargar MoodleSleep + Source code
>> Descargar MoodleSleep (python) - Gracias a winsock! :)
Gracias a 4n0nym0us que fue la primera persona en descubrir el fallo! }:)
>> Descargar MoodleSleep (python) - Gracias a winsock! :)
Gracias a 4n0nym0us que fue la primera persona en descubrir el fallo! }:)














9 comentarios:
wow me quedo pasmado con las habilidades que tienes en descubrir estos agujeros muy bueno este tuto poi un abrazo tio
genial sos un mago en ese tema.
saludos fernando
Me dejas anonadado y con muchas ganas de meterle mano, voy reviviendo el servidor de moodle para dormirlo =P
Muy buena entrada!
Hola Alberto
Podrías decirme algun moodle que te haya funcionado?. Estoy probando con varios y ninguno se ha dormido xD, nose C, pero que método utilizas? segun mi firewall envias las peticiones, pero estás seguro que solo enviando las peticiones vas a colapsar el sistema? digo yo que tendrás que dejar algo de tiempo entre peticion y peticion para que cargue todoo lo que hace el cron
@Ike: Gracias! :)
@Anónimo: Si has leído el source code ves que no hay espacio de tiempo entre las peticiones. :) De todas formas puedes añadir algún Sleep entre peticion y peticion para que termine de ejecutarse ^^
Saludos y gracias a los dos!
Merçi por nombrarme!
La tool tiene una pinta genial! habría que publicarla en el foro de Moodle, para que se auto-auditen jeje
Saludos máquina! :)
@Germán: De nada, para eso estamos ¿no? :))
Sería la única forma!! xD
Gracias por pasarte :p
Hola, yo he encontrado uno que sí que me permite hacerlo, de hecho puedo ejecutar el cron.php directamente desde el navegador. Pero he lanzado la versión en python del programa como 6 veces a la vez, con 200 repeticiones en cada una y no parece afectarle.
De todas formas, voy a contactar con ellos para que solicionen la vulnerabilidad. Aún así, me gustaría saber el por qué no funciona.
Excelente genio. Toda una autoridad en la materia.
P.D. Me imagino a Bill Gates diciendo: Ahí les dejo el código fuente de Office 2012!!!
Saludos.
Publicar un comentario en la entrada