File uploads-ը ժամանակակից բազմաթիվ applications-ի հիմնական մասերից է։ Անկախ նրանից խոսքը գնում է profile photo ի upload ի, document ի , ZIP file ի share ի կամ data ի import ի մասին, այս feature ը հանդիպում է գրեթե ամենուր։ Բայց հենց այն պահին, երբ application ը թույլ է տալիս userներին ինչ-որ բան upload անել, այն նաև բացում է մի դուռ երբեմն շատ վտանգավոր դուռ։ Շատ developerner file uploads-ը ընկալում են որպես պարզ feature Իրականում, վատ implemented file handling-ը ամենատարածված ուղիներից մեկն է, որով attackers-ը կարող են compromise անել servers-ը, escalate privileges-ը կամ նույնիսկ ստանալ full remote access։
Ինչու File Uploads-ը դառնում են High-Risk
Երբ developer-ը implement է անում file uploads feature, նա պետք է հաշվի առնի մի քանի կարևոր բաներ ` Ինչ file types են allowed, Արդյոք content-ը ճիշտ է validated, Որտեղ են պահվում uploaded files-ը, Ինչպես են դրանք accessed լինում, Ինչպես են server-side tools-ը process անում uploaded files-ը
Եթե այս քայլերից որևէ մեկը ճիշտ չի implemented, attackerը կարող են upload անել՝ web shell er, malicious archives payloads, որոնք disguised են որպես images, oversized files DoS ի համար,, specially crafted filenames , ինչի արդյունքում կարող են առաջանալ լուրջ vulnerabilities։ Հիմնական խնդիրն այն է, որ file upload-ը հաճախ ընկալվում է որպես “ուղղակի file save” գործողություն, բայց իրականում դա մի ամբողջ attack surface է, որտեղ input ը գալիս է untrusted userից, և եթե validation + storage logicը թույլ է, systemը շատ արագ կարող է compromise լինել։
Attack Vector 1: Remote Code Execution (RCE)
File upload vulnerabilities-ի ամենավտանգավոր հետևանքներից մեկը հենց Remote Code Execution (RCE) ն է։
Ինչպես է դա տեղի ունենում
Եթե application-ը թույլ է տալիս file uploads և այդ ֆայլերը պահում է web-accessible directory-ում, attacker-ը կարող է upload անել script file (օրինակ՝ .php, .jsp, .asp և այլն) և այն անմիջապես execute անել browser-ի միջոցով։
Typical Exploitation Flow
Ստեղծել offensive shell file
Upload անել այն file upload feature ի միջոցով
Ուղղակի բացել ֆայլը browser ում
https://testik.am/uploads/shell.phpGET parameters-ի միջոցով command execution anel
https://testik.com/uploads/shell.php?cmd=idԵրբ այն execute է արվում, attackerը ստանում է serverի ամբողջական վերահսկողություն։
Attack Vector 2: Unrestricted File Upload
Սա տեղի է ունենում, երբ applicationը թույլ է տալիս ցանկացած file extension կամ content type՝ առանց ստուգելու՝
MIME type
File signature
File content
Storage location
Այս սահմանափակումների բացակայությունը հաճախ դարձնում է հնարավոր RCE-ն և բազմաթիվ այլ attacks։
Attack Vector 3: ZipSlip (Archive Extraction Vulnerability)
Որոշ applications թույլ են տալիս userներին upload անել ZIP archives և դրանք ավտոմատ extract անել serverի վրա։ Եթե extraction process ը չի validate անում file pathsը, attackerը կարող են օգտագործել path traversal ZIP entriesի ներսում։
Malicious ZIP Example
Archive-ը կարող է պարունակել file path այսպիսի ձևով
../../../../etc/passwd Երբ այն extract է արվում, կարող է overwrite անել կամ տեղադրել files նախատեսված directory-ից դուրս. Tools, ինչպիսիք են evilarc, օգտագործվում են malicious archives արագ ստեղծելու համար։
Attack Vector 4: File Overwrite via Path Manipulation
Եթե upload endpointը թույլ է տալիս userին վերահսկել filenameը և developerը չի sanitize անում paths-ը attackerը կարող է overwrite անել sensitive system files։
Example Using Burp Suite
Փոխել այս parameterը՝
spiderman=/etc/passwdto
spiderman=../../../../etc/passwdԵթե accepted է լինում, սա կարող է խախտել system-ը կամ թույլ տալ privilege escalation։
Attack Vector 5: Path Traversal File Write
Նույնիսկ երբ file overwriteը blocked է, attackerը կարող են դեռևս դուրս գալ upload directoryից՝ օգտագործելով ../ sequences։
orinak
Original intended path՝
/files/uploads/user/Attackerը փոխում է
filename=../../../chmtnel.txtԵթե այն պահվում է intended folderից դուրս, կարող է թույլ տալ
malicious files տեղադրել
bypass անել access controlsը
trigger անել serverի սխալ վարքագիծ
Attack Vector 6: Large File Denial of Service (DoS)
Առանց strict size limitsի, attackerը կարող են upload անել շատ մեծ files (հարյուրավոր MB կամ նույնիսկ GB), ինչը կարող է առաջացնել
disk exhaustion
high memory usage
slowdown կամ system crash
Սա DoS attacks-ի ամենապարզ տեսակներից մեկն է։
Attack Vector 7: Server-Side Injection via Filename
Filenameը հաճախ դիտարկվում է որպես input field, որը ignored է security տեսանկյունից։ Սակայն եթե serverը այն unsafe կերպով logs, parses կամ processes է անում, այն կարող է դառնալ injection point։
SQL Injection Through Filename
anun=sleep(10)--.jpgCommand Injection Through Filename
anun=; sleep 10;.jpgAttack Vector 8: Metadata (EXIF) Leakage
Image files հաճախ պարունակում են EXIF metadata, ինչպիսիք են
GPS coordinates
Device model
Date and time
User information
Եթե applicationը թույլ է տալիս ուրիշներին access ունենալ uploaded imagesին, այս sensitive metadataն կարող է unintentionally leak լինել։ Սա հաճախ անտեսված խնդիր է, որովհետև focus-ը սովորաբար լինում է հենց image contentի վրա, ոչ թե այն hidden data ի, որը image ի ներսում պահված է։









Comments (1)