hacktricks/pentesting-web/file-inclusion/lfi2rce-via-temp-file-uploads.md
2024-02-11 02:07:06 +00:00

4.7 KiB

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Kyk na die volledige besonderhede van hierdie tegniek in https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf

PHP-lêeroplaaiing

Wanneer 'n PHP-enjin 'n POST-aanvraag ontvang wat lêers bevat wat volgens RFC 1867 geformateer is, genereer dit tydelike lêers om die opgelaaide data te stoor. Hierdie lêers is noodsaaklik vir die hanteer van lêeroplaaiing in PHP-skripte. Die move_uploaded_file-funksie moet gebruik word om hierdie tydelike lêers na 'n gewenste plek te skuif as volgehoue berging buite die uitvoering van die skrip nodig is. Na uitvoering verwyder PHP outomaties enige oorblywende tydelike lêers.

{% hint style="info" %} Veiligheidswaarskuwing: Aanvallers kan, bewus van die ligging van die tydelike lêers, 'n plaaslike lêerinsluitingskwesbaarheid uitbuit om kode uit te voer deur die lêer tydens die oplaaiing te benader. {% endhint %}

Die uitdaging vir ongemagtigde toegang lê daarin om die naam van die tydelike lêer te voorspel, wat doelbewus willekeurig gemaak word.

Uitbuiting op Windows-stelsels

Op Windows genereer PHP tydelike lêernaam met behulp van die GetTempFileName-funksie, wat 'n patroon soos <pad>\<pre><uuuu>.TMP tot gevolg het. Merk op:

  • Die verstekpad is tipies C:\Windows\Temp.
  • Die voorvoegsel is gewoonlik "php".
  • Die <uuuu> verteenwoordig 'n unieke heksadesimale waarde. Krities is dat slegs die laer 16-bits gebruik word as gevolg van die beperking van die funksie, wat 'n maksimum van 65,535 unieke name met konstante pad en voorvoegsel moontlik maak, wat brute krag uitvoerbaar maak.

Verder is die uitbuitingsproses vereenvoudig op Windows-stelsels. 'n Eienskap in die FindFirstFile-funksie maak die gebruik van wildcards in plaaslike lêerinsluitings (LFI) paaie moontlik. Dit maak dit moontlik om 'n insluitingspad soos die volgende te skep om die tydelike lêer te vind:

http://site/vuln.php?inc=c:\windows\temp\php<<

In sekere situasies mag 'n meer spesifieke masker (soos php1<< of phpA<<) vereis word. 'n Mens kan sistematies hierdie maskers probeer om die opgelaaide tydelike lêer te ontdek.

Uitbuiting op GNU/Linux-stelsels

Vir GNU/Linux-stelsels is die willekeurigheid in die naamgewing van tydelike lêers robuust, wat die name nie voorspelbaar of vatbaar vir brute krag-aanvalle maak nie. Verdere besonderhede kan in die verwysde dokumentasie gevind word.

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: