Copy Link
Add to Bookmark
Report

SET 026 0x0B

  

-[ 0x0A ]--------------------------------------------------------------------
-[ [Paseando por la red] ]---------------------------------------------------
-[ madfran ]----------------------------------------------------------SET-26-

INTRODUCCION

No siempre se encuentra lo que se desea ni se destapa lo que se quiere. La
mayoria de las veces cuando navegamos por estas redes tenebrosas, lo unico que
encontramos es una coleccion de dibujos, fotografias y montajes, que solo
disparan una cantidad enorme de colores y movimientos sin mas objeto que
reclamar nuestra atencion pero sin ninguna intencion de darnos nada a cambio.
Normalmente el aburrimiento nos puede y mecanicamente nos encontramos
introduciendo en los campos que nos presentan las web, codigos que no tienen
ninguna similitud con nuestro nombre y apellidos.

Un observador casual se preguntara para que introducimos esta serie de
caracteres extravagantes en el sitio donde una pringosa web esta intentando
enterarse de nuestros datos mas intimos. Que pretendemos con esta serie de %20
/, ? y demas cosas que no dicen nada a los comunes mortales, es bastante
evidente. Estamos intentando explotar alguno de los miles de defectos que
adornan las web de esta tierra (otras no conozco) para enterarnos de algunas
tonterias, como la password del administrador, la cuenta bancaria de algunos
cientos de confiados usuarios o el numero de la tarjeta VISA de unos miles de
incautos que han comprado alguna tonteria en esta o aquella infame web.


TECNOLOGIA WEB

A pesar del tiempo que lleva en marcha la red de redes, los protocolos sobre
los que se basa la web son todavia de forma fundamental los viejos y queridos
HTTP que trabajan a traves del puerto 80 y su hermano gemelo HTTPS que se
comunica a traves del puerto 443. Ya pueden introducir los firewalls que les
de la gana y las protecciones que deseeen, pero siempre deben dejar estas dos
puertas para poderse comunicar con el exterior y siempre que alguien deja una
puerta abierta,... un indeseable pueda aprovechar el momento.

Si hacemos un poco de historia y recorrido de protocolos, nos encontramos que
existen diversas versiones del mismo protocolo. Para el HTTP, tenemos :

HTTP/0.9
Nunca he sabido el porque de este numero de version tan heterodoxo,
pero el caso es que fue el primero en salir ahi por el anyo 1990.
Sus especificaciones se encuentran en el documento RFC1945 que si
teneis ganas de leer, podeis encontrar en,
www.ietf.org/rfc/rfc1945.txt
Hasta 1996 su uso fue mas bien modesto debido al estado infantil en
que se encontraba por aquel entonces la red. Eran tiempos en que todo
se hacia a base de telnet y de menus con nulos contenidos graficos

HTTP/1.0
Se presento en sociedad en Mayo de 1994 y a pesar de su avanzada edad
(en terminos informaticos), sigue siendo el rey de los protocolos
HTTP en la red. Esta va a ser el arma de aprendizaje para controlar el
funcionamiento del sistema cliente/servidor. En el mismo documento antes
mencionado (rfc1945), podreis encontrar las especificaciones.

HTTP/1.1
Oficialmente salio en 2001 (no se en que mes) y es la ultima version
de este protocolo. Esta documentada en el RFC2616, que podeis encontrar
en la misma web antes aludida. Existe una diferencia fundamental con
respecta a las versiones anteriores y es que soporta el paso de
parametros con el query '?'. Este hecho es el motor de muchas de las
aplicaciones que se encuentran en la red y es el principal punto de
apoyo para iniciar ataques en toda regla.

Para el HTTPS solo existe una version, que se encuentra especificada en el
documento RFC2246. En el fondo este protocolo es un trafico HTTP cifrado. Con
lo cual solo emisor y receptor son capaces de entenderse y no existe la
posibilidad de que terceros a la escucha se enteren de nuestro trafico. Los
mensajes se cifran mediante una especificacion SSL (Secure Sockets Layer) de
la cual hay diversas versiones con sus protocolos (SSLv1, SSLv2, SSLv3)

Si nos centramos en los protocolos HTTP sin cifrar, lo primero de todo es
comprobar que version esta corriendo en la maquina que deseamos visitar. Todo
el mundo debiera saber que lo que vemos en nuestro navegador no es lo que
realmente recibe nuestra maquina sino una interpretacion de lo que le llega. En
el fondo es como las personas, no decimos lo que vemos o hemos visto, sino que
damos nuestra interpretacion particular, de forma gratuita. Dejando a parte
las digresiones que tanto me gustan pero que a ninguna parte llevan, lo que nos
hace falta es un interprete que no ponga nada de su parte, eso existe (al menos
en el mundo de la informatica de redes) y se llama netcat. Es una herramienta
que podeis encontrar en el disco duro de mi PC, pero como no tengo intencion de
daros acceso al mismo, lo mejor es que lo busqueis en algun sitio de confianza
tipo www.l0pht.com o algo por el estilo, en todo caso podeis buscar en google
pero tened cuidado con lo que os bajais porque hay versiones con troyanos
incluidos gratis en el paquete.

Una vez teneis el netcat en vuestras manos solo teneis que teclear,

nc.exe www.ejemplo.com 80
GET / HTTP/1.0
y darlo dos veces al return

Como respuesta el servidor os devolvera una informacion parecida a esta,

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: http://191.11.12.2/
default.htm

.... y otras informaciones

Con todo esto ya podeis saber conque tipo de maquina os enfrentais (tambien
han podido falsear los header, pero esto es otra historia) y podeis empezar
a planificar el ataque. De momento es bueno saber que tipo de comandos podeis
emplear.

Si os enfrentais a servidor HTTP/1.0 podeis utilizar,

GET Devuelve el contenido del archivo solicitado. Si se pide un archivo
html devolvera el contenido pero si es un archivo ASP, el servidor
procesara el archivo y enviara el resultado de la ejecucion del archivo
Atentos a la diferencia !

HEAD En este caso no devuelve el contenido del archivo sino el resultado
de informacion generica del servidor. COn esta informacion se puede
empezar a trabajar !

POST Solicita al servidor aceptar una cierta informacion para realizar
algunas tareas con ella. Normalmente se utiliza en contexto de scripts
CGI.

Si estais frente a un HTTP/1.1 , hay mas opciones,

CONNECT Utilizado si queremos jugar con un proxy que tiene las suficientes
habilidades para hacer switch dinamico.

DELETE Sirve para borrar cosas, pero casi nunca esta activada en los
servidores modernos, por motivos obvios.

GET Mismas funciones que en el caso del protocolo HTTP/1.0.

HEAD Mismas funciones que en el caso del protocolo HTTP/1.0.

OPTIONS Informa de las opciones disponibles. Si ponemos un *, nos informara de
todo lo que esta implementado en el servidor. Por tanto es sumamente
practico como punto de partida.

POST Mismas funciones que en el caso del protocolo HTTP/1.0.

PUT Crea un fichero con el contenido (casi) que le solicitemos. Para
registrar salidas que luego van a ser entradas de otras scripts es
bastante practico.

TRACE Envia una peticion de mensaje loopback. Es muy util para descubrir los
proxys en linea.


ALGO SOBRE CARACTERES ESPECIALES

Despues de conocer que tipo de adversario tenemos, es bueno conocer que tipo de
informacion podemos utilizar. Cualquier tipo de archivo html no es otra cosa
que un conjunto de caracteres alfanumericos, pero como de costumbre e incluso
entre los seres humanos ocurre, no todos los caracteres son iguales ni tienen
la misma importancia ni siquiera un comportamiento parecido.

En el caso de la tecnologia HTTP es bueno repasar algunos caracteres,

? Es un separador query. Todo lo que se encuentra a su derecha se
interpreta como una peticion query a una base de datos o de entrada a un
programa.

& Separador de parametros. Muy util si queremos enviar varios parametros
al mismo tiempo y no deseamos que se mezclen de una forma obscena e
inutil para nuestros propositos.

= Separa el nombre de un parametro de su contenido y de paso lo asigna
para que posteriormente pueda ser tratado de forma decente.

+ Se transforma en un espacio (casi siempre).

: Separador de protocolo. Ya sabeis, lo que esta antes normalmente es un
http, pero a veces es un https e incluso ftp.

# Se utiliza para indicar un punto concreto de arranque dentro de un
mismo archivo. O sea .....index.html#1 es distinto de ...index.html#2
pero se encuentra dentro del mismo archivo index.html

% Es un caracter de escape para indicar que a continucion se encontrara
una notacion hexadecimal.

@ Bastante famoso, no? Se utiliza para direccion de correo electronico

~ En ambientes tipo unix, indica un directorio personal


Tambien es bueno saber algo de los metacaracteres,

* Es un caracter comodin

; Su significado difere en funcion de la aplicacion. Para lenguajes como
C o perl es un indicador de final de linea. En scripts Bourne o queries
SQL es un separador de comandos.

| Es un caracter pipe para encadenar el resultado de un comando con la
entrada de otro.


' El caracter acento grave se utiliza como comando de substitucion de
salida. Poniendo un ejemplo clarificador si conseguimos que el servidor
trague con un comando tal como
files='ls -la'
conseguira que el resultado de la instruccion ls -la pase a engrosar
el contenido del fichero files.

Todo programe que corra en un servidor que se precie de serlo, debe controlar
que no se le envien este tipo de caracteres, pero esto no es el caso de
muchisimas aplicaciones que todavia se encuentran activas. Si encontramos
alguno de estos servidores con exceso de espiritu de colaboracion y capaz de
prestar todo tipo de informacion, solo hace falta saber un poco sobre el sistema
operativo a atacar y en poco tiempo se tendra completo acceso.

Sin embargo estos son tiempos pasados y salvo los servidores carentes de
cualquier interes, los mas serios han aprendido la leccion y cuidan sus scripts,
sin embargo al poco tiempo aparecio otro tipo de problema. Los caracteres
Unicode.


CODIFICACION UNICODE

La codificacion ASCII hexadecimal es mas que suficiente para dar servicio al
alfabetico latino (con todas sus variantes) a la numeracion arabiga y a algunos
caracteres mas de uso normal, como los operadores matematicos. El problema
empezo cuando se quiso dar servicio a todo tipo de alfabetos y caracteres
esotericos para lo cual hubo que hechar mano de la codificacion UTF-8
(Universal Character Set Translation Format). A pesar que UCS esta mantenido
por ISO, hubo un grupo de empresas (fundamentalmente vendedores de software)
que se dedicaron a estudiar la posibilidad de unificar la representacion de
una serie de codigos bajo un unico esquema. Este grupo se conoce como el
Unicode Consortium (www.unicode.org).

Sin entrar en como funciona este galimatias, lo importante es darse cuenta
(como se dieron cuanta algunos) que el mismo caracter se puede representar
en un unico byte, con dos o con tres. Fue asi como un avispado, hacia el
Octubre de 2000, descubrio que el caracter '/' se representa como el 00101111
en binario, como 47 en decimal y 2F en hexadecimal.

Todo esto en un unico byte, pero queria decir lo mismo 1100000 10101111, o
49327 o C0 AF si se emplean dos bytes. Reflexionando sobre el tema se le ocurrio
poner en el navegador %C0%AF y el servidor que solo controlaba el paso de un
escualido 2F, dejo pasar el '/' y el tipo en cuestion consiguio entrar en muchos
sitios que antes le estaban vedados y seguidores suyos crearon el gusano Code
Red. Este es la famosa vulnerabilidad Unicode.

Un ejemplo muy sencillo de la explotacion de la vulnerabilidad es,

http://www.servidor.com/scripts/..%C0%AF../winnt/system32/cmd.exe?/c+dir+d:\

Esta sencilla conbinacion, nos lista el contenido del directorio raiz del
disco d: de un servidor con windows NT con su software sin actualizar (ya hay
pocos de esos, tampoco os molesteis conmogo si no encontrais ninguno a las
primeras de cambio).


ALGO MAS QUE APRENDER

Los programadores que tienen que crear los pesados conjuntos de caracteres que
configuran los modernos programas, se valen normalmente de tecnologias bastante
standard. Siempre es bueno saber de estamos hablando antes de empezar a teclear
codigos a diestro y siniestro. He ahi una forma basica de reconocer la
tecnologia empleada.

Si vemos que en la URL del navegador hay algo que termina con una cierta
extension, podemos deducir lo que tenemos al otro lado de los cables.

Extension Technologia Plataforma
.pl Perl CGI script Generico. Normalmente UNIX
.asp Active Server Pages Microsoft IIS
.aspx ASP+ Microsoft .NET
.php PHP script Generico. Normalmente Apache
.cfm CodFusion Generico. Normalmente Microsoft IIS
.nsf Lotus Domino Servidor Lotus Domino


CASO PRACTICO

Supongamos una URL de aquellas cutres de hace anyos que tiene un aspecto tal
como, www.servidor.com/cgi-bin/login.cgi

La pantalla de nuestro navegador muestra la tipica ventana donde se pide el
nombre de usuario y el password invitando a validar todo mediante un boton
standard login. Supongamos que introducimos como usuario 'pepe' y como password
'nena'. Si, a continuacion, en lugar de dar al login le damos en el menu a
Ver/Fuente (suponiendo que nuestra configuracion sea en castellano) veremos el
listado del fichero html y cuyo aspecto puede parecerse a este.

<form method=POST actions="/cgi-bin/login.cgi">
<table border=0>
<tr>
<td>Nombre:</td> <td>input name=user type=text width=20></td>
</tr>
<tr>
<td>Password:</td> <td>input name=pass type=password width=20></td>
</tr>
</table>
<input type=submit value="login">
</form>

O sea estamos intentando pasar las variables 'user' y 'password' y cada una de
ellas tendra el valor de 'pepe' y 'nena'. La primera variable es de tipo text
y la segunda de tipo password, aunque la unica diferencia es que el contenido
de la primera variable se ve en la pantalla y la segunda no, impidiendo que
cualquier fisgon mire por encima de tu hombro. Por lo demas no ofrece ningun
tipo de proteccion adicional.

Lo importante de esta historia es que se puede enviar la informacion a traves
de la ventana del navegador o bien mediante la siguiente URL

http://www.dominio.com/cgi-bin/login.cgi?user=pepe&password=nena

Poder lanzar peticiones de login sin tener que pasar por la pantallita es el
punto de partido para poder planificar ataques de fuerza bruta en linea.


RECUENTO FINAL

No vamos a explicar con detalle todo lo que se puede hacer, se ha hecho, se esta
haciendo y se hara en el futuro. Como en casi todos mis articulos, lo unico que
pretendo (con escualidos resultados) es despertar la curiosidad de alguien para
que continue el camino que yo solo he senyalado.

Solo hace falta quedarse con unos pocos conceptos.

- Lo que veis en el navegador solo es la interpretacion de un codigo.
- Este codigo puede ser by-pasado mediante caracteres insertados directamente
en la URL del navegador.
- Los codigos pueden construirse con distintos esquemas, pero los programadores
preferentemente utilizan tan solo unos pocos por aquello de 'que inventen ellos'.

Para que no os quedeis con mal sabor de boca, os dare algunas direcciones
utiles que os pueden servir tanto para profundizar un tema concreto como para
descargar herramientas automaticas.

UTILIDADES

www.foundstone.com
SuperScan Un scaner de puertos TCP muy popular bajo Windows
FScan Un scaner en linea de comando. Tambien bajo Windows

www.wiretrip.net/rfp/
Whister Un scaner para vulnerabilidades de web. Escrito en PERL

www.nstalker.com/stealth/
Stealth Scanner Scanner de vulnerabilidades de web.

www.nessus.org
Nessus Scanner Scanner de vulnerabilidades.

www.cerberus-infosec.co.uk
Cerberus Scanner de vulnerabilidades de web y de bases de datos.

www.nextgenss.com
Typhon I Similar a Cerberus

www.insecure.org/nmap/
Nmap Creo que es el mejor scanner que incluye todo tipo de
servicios e identificacion de sistemas operativos


LINK Y RECURSOS

http://www.packetstormsecurity.org
http://www.securityfocus.com
http://www.securiteam.com
http://neworder.box.sk
http://www.cert.org
http://www.wiretrip.net/rfp/


HERRAMIENTAS AUTOMATICAS

Netcat Herramienta para efectuar conexiones sin ningun tipo de interface. Es
muy util para automatizar ataques o para ver codigos ocultos.

Whisker Es un buscador de vulnerabilidades que corre bajo Unix y Windows. Puede
utilizarse para realizar ataques de fuerza bruta.

Brutus La ultima vez que lo busque lo encontre en www.hoobie.net/brutus
Es uno de los automatas de ataque mas completos

Achilles
Actua como un proxy, de forma que permite modificar la informacion que
recibe antes de devolver la respuesta. Las posibilidades posibilidades
son las siguientes :
- Servidor proxy (puerto configurable)
- Interceptacion de trafico HTTP y SSL
- Insercion y modificacion de datos en linea
- Recalculo de campos HTTP
- Chequeo de buffer overflow
- Registro de sesiones HTTP y SSL

Cookie Pal
Se utiliza para controlar los cambios que se producen en los cookies
que recibimos.

Teleport Pro
Muestra todas las referencias que existen bajo una direccion URL


*EOF*

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT