Desbloquear un B2368 a través de una vulnerabilidad en el menú "Actualización en línea"

capgadsx

Miembro Activo
Se incorporó
16 Julio 2020
Mensajes
10
ACTUALIZACIÓN

En base a los comentarios y a algunas ideas, decidí levantar una API en AWS que realiza los pasos necesarios para engañar al router e instalar una actualización.

El código fuente de la API se encuentra en https://github.com/capgadsx/B2368Update y esta bajo la licencia GPL-3.0, lo que implica que no me hago responsable por ningún tipo de daño que esta herramienta pueda generar.

Para utilizarla solo deben reemplazar la URL de la sección Actualización en línea por la siguiente https://yq69gem3og.execute-api.us-east-1.amazonaws.com/api/cpe_and_common/v2/Check.action como se ve en la captura.


editar.png


Después solo deben presionar Verificar ahora y el router debería comenzar el proceso de actualización.

Una vez finalizado, recuerden que deben actualizar el firmware del MODEM siguiente los pasos en el post de @alambredeescoba

POST ORIGINAL

Introducción.

Primero que nada, un poco de historia, soy estudiante y contrate el servicio del Entel con el B2368 gracias a este foro y a la idea de poder desbloquearlo al obtenerlo. Sin embargo, y a como muchos les paso, este ya venia bloqueado cuando lo recibí. Cuento corto, después de dos semanas logre desbloquear el router e instalar el nuevo firmware que permite cambiar las bandas LTE, esto fue como hace tres meses y cómo funcionaba deje de revisar este foro.

Hoy al volver a leer las casi 30 páginas de comentarios del hilo anterior me di cuenta de que probablemente alguien más ya descubrió el método y esta cobrando por hacerlo, lo que me molestó, especialmente por que se atreven a cagarse a la gente con hasta 40k. Así que vengo a cagarles el negocio.

Para este método necesitaremos un par de cosas algo complejas de entender si no se tiene algún grado de conocimiento básico sobre servidores web, DNS y programación Python. Pero bue, peor es nada y quizás alguien tome esto y se le ocurra algo más simple.

Necesitamos:
  • El interprete de Python3 junto con la librería Flask
  • El archivo B2368_V100R001C00SPC085T.bin
  • Un dominio que apunte a una dirección local de la red.
  • Saber utilizar la herramienta “Inspeccionar elemento” de Chrome.
Método

Revisando el archivo del firmware con algunas herramientas de ingeniería inversa especificas para firmwares solo logre descubrir que el backend del router esta bastante bien protegido a este tipo de ataques, pero el frontend es otra historia.

Resulta que el mandril que diseño el frontend del router no realiza validaciones a la hora de enviar el formulario de la sección “Actualización en línea” por lo que podemos iniciar el proceso de actualización desde esta sección utilizando un servidor web propio. Para esto, podemos hacer click derecho en el ‘text box’ de la URL del servidor, activar la herramienta ‘Inspeccionar elemento’ (Efectivamente, Inspeccionar elemento, así de mal hecha es está wea) y quitar el atributo ‘disabled’ o simplemente cambiando el texto del atributo ‘value’ por un dominio que nosotros controlemos.

Lo que coloquemos en el campo DEBE SER UN DOMINIO, ya que, si bien el frontend no realiza ninguna validación, si lo hace el backend (a través de expresiones regulares) por lo que no podemos utilizar directamente una dirección IP local.

En mi caso utilicé el servicio gratuito y de pana https://www.duckdns.org/ el cual nos permite configurar un subdominio a cualquier dirección, como, por ejemplo:

dns.PNG


En mi red, 192.168.1.50 corresponde a una raspberry.

Con esto, yo ingrese ‘http://fwup.duckdns.org/cpe_and_common/v2/Check.action?latest=true’ en el atributo ‘value’ del ‘text-box’, por lo que ahora, debemos engañar tanto al frontend como al backend que somos un servidor de actualizaciones genuino.

Sin animo de entrar en detalle sobre el proceso de actualización, podemos resumirlo a través de tres peticiones HTTP al servidor de actualizaciones.
  • POST /cpe_and_common/v2/Check.action
El router consulta si existe alguna actualización disponible y espera un resultado JSON con el campo {‘status’: 0} (status=1 significa que no hay actualización)
  • GET /FW/full/filelist.xml
El router solicita la lista de archivos disponibles para la actualización y espera una respuesta XML con información sobre los archivos necesarios para realizar la actualización.
  • GET /FW/full/B2368_V100R001C00SPC085T.bin
El router descarga el archivo de actualización indicado en ‘filelist.xml’, para luego intentar instalarlo.

Para lograr engañar al router, utilizaremos un servidor web simple escrito en Python con la librería Flask, el cual esta adjunto como ‘fwupapi.py’ y escuchara en la dirección a la que apunta el registro DNS en el puerto 80.

Debemos dejar el archivo B2368_V100R001C00SPC085T.bin en la misma carpeta del script y ejecutar el script para iniciar el servidor.

Luego presionamos el botón ‘Verificar ahora’ en el frontend y si todo está correcto debería preguntar si desea o no instalar la actualización.

Una vez terminado el proceso deberían poder acceder al menú ‘Actualizacion local’ e instalar el otro archivo ‘B2368-Modem_V100R001C00SPC085T.bin’ del thread anterior.

Con esto el router ya debería estar desbloqueado. No tengo fotos del proceso, ya que actualmente el único router que tengo se encuentra desbloqueado.

Si bien el método es complejo, demuestra que es posible realizar la actualización incluso si ya se encontraba bloqueada la opción ‘Actualización local’.

Saludos.
 

Archivo adjunto

  • fwupapi.py.txt
    2,9 KB · Visitas: 1.397
Última modificación:

javierasaltus

Miembro Activo
Se incorporó
7 Agosto 2020
Mensajes
2
Amigo, me podrías ayudar también?, o alguien buena onda. Estoy muriendo con este internet que me anda con suerte a 1mbps. No estiendo casi nada D:
 
Upvote 0

lord_darwin

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
29
Hola. He leído varios temas sobre esto en esta página. Muy buena info, se agradece enormemente!
Hace unas semanas contraté el servicio con otra dirección ya que en mi casa no tengo dirección con la que entel pueda revisar factibilidad. Cuento corto, la contraté donde mi madre y recién hoy por montones de razones me llegó la antena desde Stgo. (estoy en la Araucanía).
Para mi sorpresa, la antena no parece tener señal, imagino que por que la banda 42 no llega justo aquí. Se que llega a unos km porque me conseguí una dirección y cercana y cuenta con factibilidad.
Entre todas las cosa que he leído, estoy intentando desbloquear la antena para poder usar las otras bandas, pero la pantalla en donde se hace la actualización online no me deja cambiar la url con la que varios usuarios lograron hacerlo aquí. Estoy intentando hacerlo de la forma local, pero mi conocimiento no es tan grande y además me está siendo aún más difícil por tener solo mac OSX en lugar de PC.
Les agrego un pantallazo del apartado donde no me deja cambiar la URL. Le ha pasado esto a alguien más?
Adjunto también la info de version del router y software.
Cualquier ayuda, se agradece.
 

Archivo adjunto

  • screen1.jpeg
    screen1.jpeg
    31,5 KB · Visitas: 282
  • screen2.jpg
    screen2.jpg
    63,7 KB · Visitas: 230
Upvote 0

liquial

Miembro Activo
Se incorporó
4 Agosto 2020
Mensajes
4
Hola. He leído varios temas sobre esto en esta página. Muy buena info, se agradece enormemente!
Hace unas semanas contraté el servicio con otra dirección ya que en mi casa no tengo dirección con la que entel pueda revisar factibilidad. Cuento corto, la contraté donde mi madre y recién hoy por montones de razones me llegó la antena desde Stgo. (estoy en la Araucanía).
Para mi sorpresa, la antena no parece tener señal, imagino que por que la banda 42 no llega justo aquí. Se que llega a unos km porque me conseguí una dirección y cercana y cuenta con factibilidad.
Entre todas las cosa que he leído, estoy intentando desbloquear la antena para poder usar las otras bandas, pero la pantalla en donde se hace la actualización online no me deja cambiar la url con la que varios usuarios lograron hacerlo aquí. Estoy intentando hacerlo de la forma local, pero mi conocimiento no es tan grande y además me está siendo aún más difícil por tener solo mac OSX en lugar de PC.
Les agrego un pantallazo del apartado donde no me deja cambiar la URL. Le ha pasado esto a alguien más?
Adjunto también la info de version del router y software.
Cualquier ayuda, se agradece.
Me pasa eso
 
Upvote 0

lord_darwin

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
29
Ok. Leí de nuevo y logré cambiar la url con inspect element, pero no logra conectarse a internet. Por ahora solo estoy conectado a internet mediante el celular y no me toma esa conexión para hacer la comprobación de la url.
 
Upvote 0

buffay

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
2
Ok. Leí de nuevo y logré cambiar la url con inspect element, pero no logra conectarse a internet. Por ahora solo estoy conectado a internet mediante el celular y no me toma esa conexión para hacer la comprobación de la url.
Hola amigo: lo lograste? yo estoy en la misma situación y también en Mac OSX. No he podido hacer mucho con mis conocimientos. cuéntame si lo lograste a ver si me das una ayuda!
Saludos
 
Upvote 0

lord_darwin

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
29
Hola amigo: lo lograste? yo estoy en la misma situación y también en Mac OSX. No he podido hacer mucho con mis conocimientos. cuéntame si lo lograste a ver si me das una ayuda!
Saludos
Hola. La verdad es que nada aún. Algo estoy haciendo mal, claramente. Me parece que no estoy ingresando las ip correctas.
No me queda claro cual es la que hay que ingresar en el archivo que se edita con el block de notas.
Aún así, he usado todas las combinaciones de ip y nada. Todas me arrojan el mensaje de que no hay red.
Tal vez si alguien lo deja con manzanitas aún mas claro para gente mas lenta como nosotros, sería ideal.
 
Upvote 0

hipertenzo

Miembro Regular
Se incorporó
21 Julio 2020
Mensajes
61
Hola. La verdad es que nada aún. Algo estoy haciendo mal, claramente. Me parece que no estoy ingresando las ip correctas.
No me queda claro cual es la que hay que ingresar en el archivo que se edita con el block de notas.
Aún así, he usado todas las combinaciones de ip y nada. Todas me arrojan el mensaje de que no hay red.
Tal vez si alguien lo deja con manzanitas aún mas claro para gente mas lenta como nosotros, sería ideal.
.
 
Última modificación:
Upvote 0

lord_darwin

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
29
@buffay Estoy tratando de usar XAMPP como sale en el primer post de este hilo: #1

@hipertenzo Gracias por el video!, como dije arriba, estoy tratando de usar XAMPP para hacer básicamente lo mismo, pero no me funciona.
Creo que puedo instalar flask que viene con Pyton para Osx, así que en un rato más les cuento.
 
Upvote 0

hipertenzo

Miembro Regular
Se incorporó
21 Julio 2020
Mensajes
61
@buffay Estoy tratando de usar XAMPP como sale en el primer post de este hilo: #1

@hipertenzo Gracias por el video!, como dije arriba, estoy tratando de usar XAMPP para hacer básicamente lo mismo, pero no me funciona.
Creo que puedo instalar flask que viene con Pyton para Osx, así que en un rato más les cuento.
pero hacelo tal cual el video no necesitas mas que seguir los pasos, he desbloqueado 3 así
.
 
Upvote 0

lord_darwin

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
29
Lo logré. Instalé el nuevo firmware y ahora tengo internet usando las otras bandas y con el plan hogar.
Terminé usando otro NAMP, que es prácticamente lo mismo que XAMP.
Una vez que entendí lo que estaba haciendo se me hizo muy fácil. Era montar un servidor local y hacer creer al software del router que era una dirección http en línea. Por ser un servidor local, hay que poner los datos en el servidor, que en este caso es el firmware. Luego apuntar las ips correctamente a ese servidor y al router para que el software sepa de donde está sacando el firmware para actualizar.

Aprovecho de decir que el plan hogar funciona desbloqueando las bandas.
 
Upvote 0

Da3s

Da3sGamingLaptops (Ex Zhotta)
Se incorporó
27 Septiembre 2015
Mensajes
173
Aprovecho de decir que el plan hogar funciona desbloqueando las bandas.

Te funciona el plan hogar cambiando la banda a la 28 por ejemplo? O a alguna que no sea la 42 que es la que viene por default?

Enviado desde mi BLA-L29 mediante Tapatalk
 
Upvote 0
Subir