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:

luis.3w

Miembro Regular
Se incorporó
4 Agosto 2019
Mensajes
80
gracias por la info, me sirvió el procedimiento con phyton, impeque.


Enviado desde mi iPhone utilizando Tapatalk
 
Upvote 0

Marco.osorio

Miembro Activo
Se incorporó
22 Junio 2021
Mensajes
2
Hola, Logré instalar la actualización sin internet de modo local, intentaré explicar lo que hice de la mejor manera;

- Primero descargé la última versión de Python en desde su sitio (https://www.python.org/downloads/)

- Despúes instalé flask a través de cmd con esta serie de comandos:

cd C:/router/
(en realidad puede ser cualquier directorio a elección)

Luego utilizé el comando python

py -m venv env

Se crea una carpeta de nombre env dentro de ese directorio, luego:

env\scripts\activate (importante ocupar "\" en vez de "/")

Después instalamos flask:

pip install flask

Ahora ejecutar el .py que mandó OP con el comando:

flask run -h 192.168.1.60 -p 80

(192.168.1.60 es el número que me asignó el router, puede ser cualquiera)

Luego en inspeccionar elemento ocupé http://192.168.1.60/cpe_and_common/v2/Check.action?latest=true y me dio la opción de actualizar. Ojo que el .py y el archivo del firmware debe estar en la misma carpeta.

Adjunto va el .py que utilizé para el servidor, lo único que hice comparado con OP fue cambiar la línea 11

return jsonify({'name': 'B2368', 'version': 'B2368_V100R001C00SPC085T', 'url': 'http://192.168.1.60/FW', 'status': '0'})

Substituyendo 'url' por mi ip local.

*edit:

Si tienen el siguente problema; Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.

Ocupen este comando al estar en (env):

set FLASK_APP=app.py

Ojalá le ayude a alguien y cualquier duda feliz de ayudar.
Hola buenas

intente flask run con ip pero me sigue saliendo el error y utilice el comando set antes con el archivo descargado pero me continua apareciendo este error

flask run -h 192.168.1.62
* Serving Flask app 'app.py' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Usage: flask run [OPTIONS]
Try 'flask run --help' for help.

Error: Could not import 'app'.

me ayudarías bastante para tener señal estable con mi router y dejar de ocupar mi celular

gracias
saludos
 
Upvote 0

Marco.osorio

Miembro Activo
Se incorporó
22 Junio 2021
Mensajes
2
Hola, me inscribí en el foro, solo ara agradecer a compañero que compartio la forma de poder desbloquearlo con python. Es real y funciona muy bien. solo considerar que.

Los archivos que realizaran la actualización deben de estar junto al archivo .py y ademas estar en la raiz de la carpeta "routes", (siguiendo el ejemplo). PROBADO Y FUNCIONANDO en la FECHA DE 20 de mayo 2021, en equipo B2368-57.
Si alguien requiere que le ayude. que me contacte por acá.
Saludos
ayuda plis


Hola buenas

intente flask run con ip pero me sigue saliendo el error y utilice el comando set antes con el archivo descargado pero me continua apareciendo este error

flask run -h 192.168.1.62
* Serving Flask app 'app.py' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Usage: flask run [OPTIONS]
Try 'flask run --help' for help.

Error: Could not import 'app'.

me ayudarías bastante para tener señal estable con mi router y dejar de ocupar mi celular

gracias
saludos
 
Upvote 0

L1TeL

Miembro Activo
Se incorporó
8 Agosto 2021
Mensajes
1
Hola a todos!! Tengo un B2368-66 recién comprado en Amazon, totalmente libre directamente de Huawei pero en el menú no me deja configurar el APN de forma manual, por lo que no puedo conseguir que mi SIM (chip) funcione. Sí funciona con algunos chips de Vodafone porque se configura automáticamente, alguien puede ayudarme para conseguir activar el menú que me permita configurar el APN? Supongo que a través de actualizar el firmware??
 
Upvote 0

xr1s

Pro
Se incorporó
22 Marzo 2021
Mensajes
815
Hola a todos!! Tengo un B2368-66 recién comprado en Amazon, totalmente libre directamente de Huawei pero en el menú no me deja configurar el APN de forma manual, por lo que no puedo conseguir que mi SIM (chip) funcione. Sí funciona con algunos chips de Vodafone porque se configura automáticamente, alguien puede ayudarme para conseguir activar el menú que me permita configurar el APN? Supongo que a través de actualizar el firmware??
Tienes el link todavia de amazon?

Ademas, ya hicistes la inscripcion del IMEI?
 
Upvote 0

fjc

Miembro Activo
Se incorporó
17 Octubre 2021
Mensajes
2
hola buenas saben que entiendo todo hasta la parte de flash, pero no logro entender donde tengo que inspeccionar, me ayudan pliss :(
 
Upvote 0

Fijxu

Capo
Se incorporó
19 Enero 2020
Mensajes
107
Cabros no cacho nada de ese router pero para que se eviten problemas de hosteo y weas aca les dejo mi server con lo necesario para actualizar y todo eso, deberia funcionar por lo que tengo entendido pero no aseguro que funcione porque no tengo este router.
Pero si sirve bacan, si hay un error, me avisan y ahi veo que onda

https://2.zzls.xyz/ -> La lista de URLS

Lo que se necesita para la actualización:


y en caso que necesiten HTTP:

 
Upvote 0

fjc

Miembro Activo
Se incorporó
17 Octubre 2021
Mensajes
2
No tengo este router pero los pasos para ingresar deberian ser los mismos, ignora la seccion donde elimino type="password" por que eso es de mi router y no tiene nada que ver

si bro entiendo, pero en mi caso no es la manera de entrar ya que tengo los datos, pero la url que solo se ve en la parte de "actualizar" y mi router/antena tiene bloqueada esa categoría de fabrica
 
Upvote 0

xr1s

Pro
Se incorporó
22 Marzo 2021
Mensajes
815
si bro entiendo, pero en mi caso no es la manera de entrar ya que tengo los datos, pero la url que solo se ve en la parte de "actualizar" y mi router/antena tiene bloqueada esa categoría de fabrica
creo que la ultima actualizacion del proveedor quito la opcion. Habian varios preguntando por eso mismo en otro hilo me parece.

Sin solucion simple hasta el momento... a menos que actualices directo el modulo LTE con boot-pin y consola... que se sepa aca.
 
Última modificación:
Upvote 0

meltdown

Fanático
Se incorporó
24 Septiembre 2019
Mensajes
1.742
Creo que actualizar por consola es relativamente fácil y sin tanto dramas

Enviado desde mi LYA-L29 mediante Tapatalk
 
Upvote 0

TheLucasBenji

Miembro Activo
Se incorporó
23 Mayo 2022
Mensajes
5
Tengo una pregunta, si hago todo esto, luego seguire pudiendo usar el chip con el plan que me entrega entel? y si la respuesta es si, sacaré algun beneficio de ello? como?.
Gracias de antemano.
 
Upvote 0

MELERIX

Fanático
Se incorporó
30 Diciembre 2013
Mensajes
1.486
Tengo una pregunta, si hago todo esto, luego seguire pudiendo usar el chip con el plan que me entrega entel? y si la respuesta es si, sacaré algun beneficio de ello? como?.
Gracias de antemano.

si pues, ya que queda liberado para cualquier compañía, además quedan liberadas mas redes.
 
Upvote 0

xr1s

Pro
Se incorporó
22 Marzo 2021
Mensajes
815
Tengo una pregunta, si hago todo esto, luego seguire pudiendo usar el chip con el plan que me entrega entel? y si la respuesta es si, sacaré algun beneficio de ello? como?.
Gracias de antemano.
No tiene sentido.

Si estas con el plan de internet hogar entel y lo ocupas y te sirve, para que liberar/desbloquear?

La utilidad de este proceso es poder ocupar con otras compañías y bandas.
 
Upvote 0

MELERIX

Fanático
Se incorporó
30 Diciembre 2013
Mensajes
1.486
No tiene sentido.

Si estas con el plan de internet hogar entel y lo ocupas y te sirve, para que liberar/desbloquear?

La utilidad de este proceso es poder ocupar con otras compañías y bandas.

no es solo para eso, también sirve para liberar y poder ocupar las otras bandas de Entel (y no solo la única reservada que tiene esa unidad), así puedes aprovechar 4G+ por ejemplo y tener mejor roaming.
 
Upvote 0

xr1s

Pro
Se incorporó
22 Marzo 2021
Mensajes
815
no es solo para eso, también sirve para liberar y poder ocupar las otras bandas de Entel (y no solo la única reservada que tiene esa unidad), así puedes aprovechar 4G+ por ejemplo y tener mejor roaming.
Pero eso no es lo que pregunta el cumpa.

Segun lo que se entiende, el ya tiene el plan hogar inalambrico (https://www.entel.cl/hogar/internet-inalambrico/), que SOLO funciona sobre banda 42 (no sirve roaming, ni otras bandas, aca ya lo probaron), entonces que funcionalidad le aporta si es que quiere seguir con ese plan?

1653413793604.png
 
Upvote 0

MELERIX

Fanático
Se incorporó
30 Diciembre 2013
Mensajes
1.486
Pero eso no es lo que pregunta el cumpa.

Segun lo que se entiende, el ya tiene el plan hogar inalambrico (https://www.entel.cl/hogar/internet-inalambrico/), que SOLO funciona sobre banda 42 (no sirve roaming, ni otras bandas, aca ya lo probaron), entonces que funcionalidad le aporta si es que quiere seguir con ese plan?

Ver adjunto 23707

bueno, otra cosa que gana es que puede poner un firmware liberado mas reciente para el ODU y que no tiene el bug de NVIMG.
 
Upvote 0

TheLucasBenji

Miembro Activo
Se incorporó
23 Mayo 2022
Mensajes
5
No tiene sentido.

Si estas con el plan de internet hogar entel y lo ocupas y te sirve, para que liberar/desbloquear?

La utilidad de este proceso es poder ocupar con otras compañías y bandas.
El problema es que no me sirve, me va peor que el de mi celular(si sé que por el tema de las bandas) y me va pesimo, a 2 megas de descarga con suerte, no me sirve para nada y ni para estar en discord haciendo tareas, desde que lo pusieron (el viernes pasado) la luz siempre esta en naranja, nunca a llegado ni a los 10 megas y tal vez si lo liberara podia ocupar otras bandas para que por ultimo me sirva de algo, ya page 30 lucas por una wea que no me sirve y queria ver si le podia sacar algun provecho por mis metodos, ayer intente liberarlo pero en el proceso me di cuenta de que no me aparece la opcion de actulizacion en linea, vi que otros tambien tiene el mismo problema y no he encontrado solucion asi que de momento no puedo hacer nada por ello :( Si alguien encuentra la forma de liberar el equipo que venga con firmware 11.620.22.33.00 (que esa es la que tengo yo y creo que es ese el que quita lo de la actualizacion en linea) me dice xfa
 
Upvote 0

TheLucasBenji

Miembro Activo
Se incorporó
23 Mayo 2022
Mensajes
5
Pero eso no es lo que pregunta el cumpa.

Segun lo que se entiende, el ya tiene el plan hogar inalambrico (https://www.entel.cl/hogar/internet-inalambrico/), que SOLO funciona sobre banda 42 (no sirve roaming, ni otras bandas, aca ya lo probaron), entonces que funcionalidad le aporta si es que quiere seguir con ese plan?

Ver adjunto 23707
vi en un comentario de esto mismo en este foro que decia que le pasaba lo mismo que a mi, lo liberó y le funcionaba mejor, solo que tenia como tope 30 megas
 
Upvote 0
Subir