LFI2RCE Via temp file uploads
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
Kyk na die volledige besonderhede van hierdie tegniek in https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
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 hantering 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.
Sekuriteitswaaksaamheid: 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 Eienaardigheid 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:
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.