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:

lord_darwin

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
29
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?
Me funciona la 2 y la 7 hasta ahora. Tengo que seguir haciendo pruebas, pero creo que la 28 no funciona, por ende, no tengo CA, pero no estoy seguro ya que en un momento me salió que tenía CA activo. Tengo que subir la antena a un mejor lugar ya que aún la tengo en el interior de la casa.
Según mi iphone, tengo CA con la banda 2 y 28, por lo que se que llegan esas bandas.
 
Upvote 0

Da3s

Da3sGamingLaptops (Ex Zhotta)
Se incorporó
27 Septiembre 2015
Mensajes
173
Me funciona la 2 y la 7 hasta ahora. Tengo que seguir haciendo pruebas, pero creo que la 28 no funciona, por ende, no tengo CA, pero no estoy seguro ya que en un momento me salió que tenía CA activo. Tengo que subir la antena a un mejor lugar ya que aún la tengo en el interior de la casa.
A jaja por acá sólo llega la 28 así que estoy jodido

Enviado desde mi BLA-L29 mediante Tapatalk
 
Upvote 0

buffay

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
2
Gracias amigo, mañana lo intentaré y te cuento como me va. Saludos y me alegro que te haya funcionado el desbloqueo!
 
Upvote 0

lord_darwin

Miembro Activo
Se incorporó
8 Agosto 2020
Mensajes
29
Me funciona la 2 y la 7 hasta ahora. Tengo que seguir haciendo pruebas, pero creo que la 28 no funciona, por ende, no tengo CA, pero no estoy seguro ya que en un momento me salió que tenía CA activo. Tengo que subir la antena a un mejor lugar ya que aún la tengo en el interior de la casa.
Según mi iphone, tengo CA con la banda 2 y 28, por lo que se que llegan esas bandas.
Corrijo:
Solo me funciona la 7 llegando hasta 15mb máximo, 9-12mb casi siempre.
Las otras bandas no me funcionan, pero si llega la señal. Al parecer el plan hogar de 30mb no deja conectarse a otras bandas que no sean la 42 y las 7.
Aunque seguiré haciendo pruebas por un tiempo, creo que desistiré del plan pero intentaré quedarme con la antena para comprar bolsas prepower y tener mayor velocidad.
 
Upvote 0

soulsitg

Miembro Activo
Se incorporó
1 Julio 2020
Mensajes
21
hola compitas vi que estan trabajando con las bandas dentro de la antena para que tengan mejor señal y estabilidad.. estuve viendo una app que se llama network cell info desde el celular de la misma compañia para verificar que antenas tengo cerca de la casa y a que frecuencia o banda trabaja dentro de lo que me recomendo la aplicacion le deje solo esa banda y ahora sobrepasa los 20 mb siempre.. ya que en cada direccion eso podria variar se los recomiendo. sl2
 
Upvote 0

AldoVile

Miembro Activo
Se incorporó
29 Agosto 2020
Mensajes
4
Hola, alguien sabe que es lo que se desbloquea, el router o la antena, pasa que le entro agua a mi antena y dejo de funcionar, estuve viendo anuncios y venden solo la antena pero no sabe si esta desbloqueada, alguien me puede ayudar?? tengo miedo de comprarla y que no me sirva
 
Upvote 0

MELERIX

Fanático
Se incorporó
30 Diciembre 2013
Mensajes
1.486
Hola, alguien sabe que es lo que se desbloquea, el router o la antena, pasa que le entro agua a mi antena y dejo de funcionar, estuve viendo anuncios y venden solo la antena pero no sabe si esta desbloqueada, alguien me puede ayudar?? tengo miedo de comprarla y que no me sirva

ambas, por algo son 2 firmware, uno para el router y otro para el modem/antena.
 
Upvote 0

janzpogi

Miembro Activo
Se incorporó
5 Septiembre 2020
Mensajes
1
hi, i have problem with my device b2368-57 also. Im from philippines. The problem is that when i click maintenance tab, there is no software upgrade menu. Do you have another way to upgrade firmware so that i can unlock my device?
 
Upvote 0

MELERIX

Fanático
Se incorporó
30 Diciembre 2013
Mensajes
1.486
hi, i have problem with my device b2368-57 also. Im from philippines. The problem is that when i click maintenance tab, there is no software upgrade menu. Do you have another way to upgrade firmware so that i can unlock my device?

without the menu is kinda impossible, because you need to have at least the online update menu.
 
Upvote 0

Jeanjncls

Miembro Activo
Se incorporó
14 Octubre 2020
Mensajes
1
no tendrás un video, así como a prueba de idiotas ?, tengo algo de conocimiento de Python y era (y no cacho de librerias :c).
 
Upvote 0

openAI

Miembro Activo
Se incorporó
2 Enero 2021
Mensajes
2
their is no update option on my b2368
 

Archivo adjunto

  • Screenshot_2021-01-02-16-51-40-71.png
    Screenshot_2021-01-02-16-51-40-71.png
    45,1 KB · Visitas: 235
Upvote 0

EmmyBelen

Miembro Activo
Se incorporó
21 Enero 2021
Mensajes
1
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, soy nueva este es mi primer post
seguí todos los pasos de TomaHawk45pero al momento de cambiar la url me dice falla de red al igual que a LetsRoll algún consejo?
 
Upvote 0

marckys28

Miembro Activo
Se incorporó
18 Febrero 2021
Mensajes
3
error cannot import app
it only made pin disabled so it will detect other cards but does not work.
can you help no admin access no update in menu
 
Última modificación:
Upvote 0

Bulletman

Miembro Activo
Se incorporó
14 Abril 2021
Mensajes
2
Hola amigos.
Alguien sabe? desbloquear estos equipos, cuando no dan la opcion de actualizar en linea.
 
Upvote 0

rafthael

Miembro Activo
Se incorporó
20 Mayo 2021
Mensajes
1
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
 
Upvote 0
Subir