LFI2RCE Via temp file uploads

Ondersteun HackTricks

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

PHP Lêer opgelaai

Wanneer 'n PHP enjin 'n POST versoek 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 lêeroplaai hanteering in PHP skripte. Die move_uploaded_file funksie moet gebruik word om hierdie tydelike lêers na 'n gewenste ligging te verskuif indien volhoubare stoorplek buite die skrip se uitvoering benodig word. Na uitvoering, verwyder PHP outomaties enige oorblywende tydelike lêers.

Sekuriteitswaarskuwing: Aanvallers, wat bewus is van die tydelike lêers se ligging, mag 'n Local File Inclusion kwesbaarheid benut om kode uit te voer deur toegang tot die lêer tydens opgelaai.

Die uitdaging vir ongemagtigde toegang lê in die voorspelling van die tydelike lêer se naam, wat doelbewus gerandomiseer is.

Exploitatie op Windows Stelsels

Op Windows genereer PHP tydelike lêernames met die GetTempFileName funksie, wat 'n patroon soos <path>\<pre><uuuu>.TMP oplewer. Opmerklik:

  • Die standaard pad is tipies C:\Windows\Temp.

  • Die voorvoegsel is gewoonlik "php".

  • Die <uuuu> verteenwoordig 'n unieke hexadesimale waarde. Krities, as gevolg van die funksie se beperking, word slegs die laer 16 bits gebruik, wat 'n maksimum van 65,535 unieke name met konstante pad en voorvoegsel moontlik maak, wat brute force haalbaar maak.

Boonop is die eksploitasiestap vereenvoudig op Windows stelsels. 'n Besonderheid in die FindFirstFile funksie laat die gebruik van wildcard in Local File Inclusion (LFI) pades toe. Dit stel in staat om 'n insluitpad 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<<) benodig word. 'n Mens kan sistematies hierdie maskers probeer om die opgelaaide tydelike lêer te ontdek.

Exploitatie op GNU/Linux Stelsels

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

Support HackTricks

Last updated