Si hakerat fshehin "Backdoors" në imazhe PNG (Dhe si të mbroni uebfaqen tuaj)
Ngarkimi i imazheve (File Upload) është një nga funksionalitetet më të zakonshme në uebfaqe, nga fotot e profilit deri te ngarkimi i dokumenteve. Por, çfarë ndodh kur ai imazh i pafajshëm .png është në të vërtetë një "kalë troje" që i jep sulmuesit kontroll të plotë mbi serverin tuaj?

Ky lloj sulmi njihet si File Upload Vulnerability, dhe hakerat përdorin një teknikë shumë të zgjuar manipulimi në nivel Hex Code për të anashkaluar filtrat e sigurisë.

Si funksionon mashtrimi me "Magic Bytes"?
Sistemet kompjuterike dhe serverat nuk i dallojnë llojet e skedarëve vetëm nga prapashtesa (si .jpg ose .png). Ata lexojnë bajtet e para të skedarit, të njohura si Magic Bytes. Për një imazh PNG, kodi Hex fillon gjithmonë me 89 50 4E 47.
Një sulmues mund të marrë një skript malinj të shkruar në PHP konkretisht një Reverse Shell, i cili i jep akses në terminalin e serverit tuaj dhe të injektojë Magic Bytes të një PNG-je në fillim të këtij skedari.
Kur ky skedar ngarkohet, mekanizmat e dobët të validimit në uebfaqe (që kontrollojnë vetëm rreshtin e parë ose MIME type) mashtrohen. Serveri juaj thotë: "Ky është një imazh i rregullt PNG" dhe lejon ruajtjen e tij. Por, nëse sulmuesi gjen një shteg për të detyruar serverin ta lexojë atë si skedar .php, kodi ekzekutohet dhe uebfaqja juaj komprometohet plotësisht.
Si të mbroheni nga ky sulm?
Të mos i besosh inputit të përdoruesit është rregulli numër një, por për ngarkimet e skedarëve duhen marrë hapa më të avancuar:
- Ri-krijimi i imazheve: Përdorni librari (si GD në PHP) për të përpunuar dhe ri-krijuar çdo imazh të ngarkuar nga e para. Kjo fshin automatikisht çdo kod malinj të fshehur në metadata ose në fund të skedarit.
- Bllokimi i ekzekutimit: Konfiguroni serverin tuaj (Apache ose Nginx) që të mos lejojë kurrë ekzekutimin e skripteve PHP brenda direktorisë së
uploads. - Ruajtja jashtë Web Root: Ruani skedarët e ngarkuar në një direktori që nuk mund të aksesohet drejtpërdrejt nga URL-ja publike.
Siguria kibernetike nuk është bardhë e zi. Çdo input duhet trajtuar si një kërcënim i mundshëm derisa të provohet e kundërta.