XSS Permanente en el componetne "Search"
Un amigo por el mensajero me comentaba sobre algunas personas que se dedican a la programación que dicen "como es inexplotable no se parcha" y es entendible, si ves un bug que para ti es inexplotable lo mas probable es que no lo repares porque supuestamente no tiene ningún riesgo hasta que aparece la gente que si lo logra entonces recién lo reparan. En este caso creo que es similar ya que en el componente search dentro del panel de administración se puede ver el historial de busqueda y me llevé la sorpresa de que este no filtra ningún carácter y me pregunté.. "¿Porque??" entonces mejor comenzé a instalar joomla en mi localhost para ya no seguir desmadrando mi sitio
y pude comprobar que el componente Search de la portada o sea el que ve el visitante ya tiene un filtro el cual elimina todos los caácteres después del "
<" por lo tanto pensando como el codeador
"esto es inexplotable así que no nos preocupamos por mostrar el historial de busquedas en la administración poniendo ningún filtro", pero que pasa si logro evadir ese filtro? puedo comprometer al administrador? la respuesta es si y eso fue lo que sucedió.
%3c%53%43%72%49%70%54%20%78%3d%78%3e%61%6c%65%72%74%28%30%30%30%30%30%29%3c%2f%73%43%72%49%70%54%3e
Esto equivale a
<SCrIpT x=x>alert(00000)</sCrIpT>
Lo ponemos dentro de la caja del buscador y nos enviará directamente al formulario del buscador avanzado con esta busqueda sin ser filtrada, ahora cuando el joomla tiene petysurl activado lo hace via petición GET y no POST así que hay que doble encodear cada carácter, por ejemplo:
http://127.0.0.1/joomla/index.php?searchword=%253c%2553%2543%2572%2549%2570%2554%2520%2578%253d%2578%253e%2561%256c%2565%2572%2574%2528%2530%2530%2530%2530%2530%2529%253c%252f%2573%2543%2572%2549%2570%2554%253e&ordering=newest&searchphrase=all&option=com_search
Con esto ya el administrador podrá ver en su hermoso historial su XSS:
http://127.0.0.1/joomla/administrator/index.php?option=com_search
Tamaño original:
http://img443.imageshack.us/img443/9854/dibujo2zq7.pngMientras tanto que aparece el parche o actualización de joomla puedes desactivar el historial del buscador.
Ya con todo esto como que estamos listos para crear nuestro exploit con token y todo, hacemos un php que lanze una petición POST al buscador y seguidamente lanzamos la redirección hacia el componente afectado para causar la ejecución arbitraria, luego el xss llamará a un archivo de javascript alojado en otro servidor que realizará las acciones y estas serán obtener el token de seguridad y agregar un nuevo superadministrador para nosotros, seguido por la creación de un componente con una shell c99 incrustada para ganar el acceso total al servidor y si es posible rootearlo dependiendo de la versión del mismo y el estado de seguridad que pueda tener.
Voy a ir preparando los archivos para explicar paso por paso como hacerlo. Hasta la prox.