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.php

GET 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/passwd

to

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)--.jpg

Command Injection Through Filename

anun=; sleep 10;.jpg

Attack 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 ի ներսում պահված է։