// Técnicas Avançadas de Hacking //
Conteúdo:
Introdução
Ferramentas que você precisa
Inclusão de Arquivo Local (LFI) com Log Poisioning
Envenenamento de Cookies
Upload de arquivo irrestrito e desvio de filtro
Explorando $_SERVER['PHP_SELF']
Conclusão
// Introdução //
Spoiler : Alerta de imagem grande!
Olá, @ APPLEZ aqui. Alguns de vocês podem me conhecer como 0verlord, mas podem me chamar de qualquer um. Decidi compartilhar com vocês algumas das minhas façanhas favoritas. Aproveitar!
Como desenvolvedor da Web, você deve ser extremamente cuidadoso ao codificar. Se você esquecer de limpar apenas um campo ou entrada em seu site, isso pode ser fatal. Estas são apenas algumas das minhas façanhas favoritas, acho-as muito divertidas de realizar. Se você quiser que eu faça um tutorial sobre qualquer outro exploit, poste abaixo! Outro comentário digno de nota: se você realmente receber um shell de servidor e um administrador do site o excluir, não se preocupe! As probabilidades são, eles nem sabem como você chegou lá em primeiro lugar; impressionantes 63%dos proprietários de sites nem sabem como você fez isso. Vamos continuar, mas lembre-se de que Sinister.ly não sou responsável pelo que você faz com essas informações, é APENAS para fins educacionais!
// Ferramentas que você precisa //
Raposa de fogo
Adulteração de dados
Cabeçalhos HTTP ativos
Um tema Badass para o Firefox
Uma VPN (não uma VPN gratuita, uma VPN SEM LOGS como http://privateinternetaccess.com )
Seu shell php favorito
// Inclusão de arquivo local (com envenenamento de log) //
Este é o meu exploit favorito, de longe. O objetivo disso é primeiro encontrar o caminho do log de erro, gerar um erro no servidor com um agente de usuário falsificado com sua carga útil php e, finalmente, acessar o arquivo de log e sua carga útil php será executada, permitindo que você carregue um shell , kit de exploração ou simplesmente desfigurar o site. Isso não funcionará em todos os sites, se você está se perguntando. Como sempre, os detalhes dessa exploração variam de site para site; nem todos os sites têm os mesmos diretórios ou nomes de arquivos de log. Vamos começar explicando os fundamentos do LFI:
1) Encontre um site vulnerável
Aqui estão alguns idiotas do Google LFI para você começar:
Código:
inurl:contacts.php?page=
inurl:index.php?page=
inurl:include.php?file=
inurl:catalog.php?catID=
2) Teste de vulnerabilidade
Você encontrou um site com um URL semelhante a este:
Código:
http://www.website.com/index.php?catID= … =index.php
Agora você precisa editar a URL (depois de &file= ) para ficar assim:
Código:
http://www.website.com/index.php?catID= … etc/passwd
Se for vulnerável, parte da página deve ser substituída por algum texto semelhante a este:
Código:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/.......
Você pode se perguntar: "PATA MERDA! O QUE ACONTECEU?!?!?" A resposta é simples.
../ informa ao servidor que você deseja subir um diretório. Você deseja mover todo o caminho até o diretório raiz, portanto, pode ser necessário adicionar muitos deles.
/etc/passwd é um arquivo que já manteve o nome de usuário e a senha com hash de todos os usuários do sistema, mas esses dias se foram. Não há muito uso para este arquivo, exceto para testar seu LFI.
Agora você pode ler qualquer arquivo no servidor! Mas, a menos que haja um arquivo particularmente suculento no servidor que você deseja ver, pode parecer que o LFI é bastante inútil. Esse não é o caso.
3) Encontre um arquivo de log de erros
Esta etapa é muito vital para levar essa exploração para o próximo nível. Um arquivo de log de erros pode conter o IP de uma pessoa, localização, agente do usuário e pode revelar vulnerabilidades adicionais no site. Mas, para nossos propósitos, injetaremos o arquivo de log com uma carga útil do php.
Aqui estão alguns locais onde pode estar:
Código:
../../../../../../../apache/logs/error.log
../../../../../../../apache/logs/access.log
../../../../../../../apache/logs/error.log
../../../../../../.../apache/logs/access.log
../../../../../../../apache/logs/error.log
../../../../../../../apache/logs/access.log
../../../../../../../etc/httpd/logs/acces_log
../../../../../../../etc/httpd/logs/acces.log
../../../../../../../etc/httpd/logs/error_log
../../../../../../../etc/httpd/logs/error.log
../../../../../../../var/www/logs/access_log
../../../../../../../var/www/logs/access.log
../../../../../../../usr/local/apache/logs/access_log
../../../../../../../usr/local/apache/logs/access.log
../../../../../../../var/log/apache/access_log
../../../../../../../var/log/apache2/access_log
../../../../../../../var/log/apache/access.log
../../../../../../../var/log/apache2/access.log
../../../../../../../var/log/access_log
../../../../../../../var/log/access.log
../../../../../../../var/www/logs/error_log
../../../../../../../var/www/logs/error.log
../../../../../../../usr/local/apache/logs/error_log
../../../../../../../usr/local/apache/logs/error.log
../../../../../../../var/log/apache/error_log
../../../../../../../var/log/apache2/error_log
../../../../../../../var/log/apache/error.log
../../../../../../../var/log/apache2/error.log
../../../../../../../var/log/error_log
../../../../../../../var/log/error.log
Depois de encontrar o arquivo de log, você está de ouro ! Tudo o que você deve fazer agora é gerar um erro e falsificar alguns dos dados enviados ao servidor. Para isso, você usará dados de adulteração.
3) Entregar a carga
Não posso contar todos os detalhes sobre como fazer isso; requer tentativa e erro (espero que seja um erro ) Existem inúmeras maneiras de enviar um erro a um site. Estarei usando o SQLi para lançar um erro, por exemplo. Você precisará do Tamper Data , mencionado próximo ao início do tópico.
Agora, você tem a vulnerabilidade do SQLi, mas para isso não iremos explorá-la, apenas usá-la para criar o erro. Simplesmente abra os dados da adulteração, inicie a adulteração, execute sua URL SQLied e uma caixa pop-up aparecerá. Clique em adulteração. Agora, no campo user-agent, substitua seu user-agent por sua carga útil php. Você pode simplesmente escrever um script para obter acesso ao cmd, um script de upload ou até mesmo todo o seu shell (embora eu não o recomende). Por fim, toque no botão enviar, fume um baseado e comemore seu sucesso. A última etapa é navegar até o arquivo de log mais uma vez e sua carga útil do php deve ser executada.
// Envenenamento por Cookies //
Aqui está um vídeo de 7 minutos para ajudar a explicar o que é isso e como explorá-lo. Em vez de usar o wtfever que ele está usando em um computador Windows muito antigo, você pode usar Live HTTP Headers e Tamper Data .
Basicamente, alguns sites armazenam algumas informações em seus cookies, que nunca devem ser permitidos no lado do cliente. É uma exploração bastante simples e exige uma codificação realmente noob para que um site seja vulnerável. Isso não se limita apenas a alterar os campos do seu cookie; você também pode fazer SQLi e XSS, dependendo da situação. Com isso dito, é muito difícil dizer exatamente o que fazer, já que cada site provavelmente terá diferentes formatos de cookies. O envenenamento por cookies costuma ser esquecido; você pensaria que alguém poderia SQL injetar seu site com um mero cookie? Se alguém precisar de informações adicionais sobre isso, sinta-se à vontade para postar abaixo com sua pergunta.
// Upload de arquivo irrestrito e desvio de filtro //
O upload irrestrito de arquivos é exatamente o que parece ser, a capacidade de fazer upload de qualquer tipo de arquivo, incluindo php. Existem inúmeras maneiras de fazer isso, mas analisarei apenas algumas. Essa exploração geralmente é usada em conjunto com FPD (Full Path Disclosure) para localizar o arquivo que você carregou.
Método 1: JavaScript
Em alguns casos, a entrada é limpa usando javascript. Você NUNCA deve fazer isso. Para ignorar, basta desativar o javascript no seu navegador.
Método 2: O byte nulo
Você descobriu que a entrada não é limpa por javascript, mas por php. Se ao menos você pudesse alterar a extensão em seu shell para um tipo de arquivo aceito pelo servidor, faça-o desaparecer. Felizmente, você PODE ! O byte nulo, %00, faz com que o site desconsidere tudo o que o segue.
Exemplo:
Código:
c99.php.png
muda para:
Código:
c99.php%00.png
Quando carregado, a parte .png será descartada. O byte nulo é uma ótima ferramenta para muitos tipos de desvio de filtro, incluindo o desvio de filtros LFI.
Exemplo:
Código:
.%00./.%00./.%00./etc/passwd
Método 3: Verificação do cabeçalho do arquivo
É aqui que o servidor verifica o cabeçalho do arquivo para identificar o tipo de arquivo. Se o cabeçalho corresponder a qualquer coisa na lista de permissões de tipo de arquivo, ele será carregado. Se não, você terá que fazer um pouco mais de trabalho.
Etapa 1:
digamos que o servidor permita apenas arquivos png. Usando o último método e combinando-o com este, você ainda poderá carregar seu shell. Primeiro, você precisa encontrar qualquer arquivo png.
Passo 2:
Abra o arquivo com notepad++ (ou outro IDE). Agora, copie e cole seu shell na parte inferior do arquivo. Salve o arquivo como c99.php%00.png. O código pode ou não ser executado, depende das configurações do arquivo phpinfo.ini. Em alguns casos, funcionará e é uma maneira muito sorrateira de ignorar os filtros.
// Exploração de $_SERVER['PHP_SELF'] //
$_SERVER['PHP_SELF'] é uma variável em php que simplesmente contém o url atual da página da web.
Exemplo:
Página atual:
Código:
http://website.com/penis/swag/yolo.php
A variável $_SERVER['PHP_SELF'] contém:
Código:
penis/swag/yolo.php
Para explorar isso, tudo o que você precisa fazer é adicionar seu código malicioso ao final da url.
Exemplo:
Código:
http://website.com/forums/index.php <?php echo phpinfo(); ?>
a variável PHP_SELF conterá e ecoará:
Código:
forums/index.php <?php echo phpinfo(); ?>
Como na maioria das vezes $_SERVER['PHP_SELF'] está sendo repetido como um href para um botão, o servidor imprimirá o diretório, imprimirá E executará o código malicioso. Você também pode fazer XSS com isso.
//Conclusão //
Se você tiver alguma dúvida, comentário, sugestão, correção ou preocupação, sinta-se à vontade para me enviar uma mensagem privada ou postar abaixo. Se eu postei isso na seção errada, um administrador certamente irá corrigi-lo. Espero que você tenha aprendido uma ou duas coisas. Este tópico será revisado e editado, talvez até adicionado, se necessário. Espero que gostem tanto quanto eu!
Obrigado por ler,