Unicode Normalization

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

WhiteIntel ni injini ya utaftaji inayotumia dark-web ambayo inatoa huduma za bure za kuangalia ikiwa kampuni au wateja wake wame vamiwa na malware za wizi.

Lengo kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulio ya ransomware yanayotokana na malware za kuiba taarifa.

Unaweza kuangalia tovuti yao na kujaribu injini yao bure kwa:


Hii ni muhtasari wa: https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/. Angalia kwa undani zaidi (picha zimetolewa hapo).

Kuelewa Unicode na Usawazishaji

Usawazishaji wa Unicode ni mchakato unaohakikisha uwakilishi tofauti wa binary wa herufi unastandadishwa kwa thamani sawa ya binary. Mchakato huu ni muhimu katika kushughulikia herufi katika programu na usindikaji wa data. Kiwango cha Unicode hufafanua aina mbili za usawa wa herufi:

  1. Usawa wa Kanoni: Herufi zinachukuliwa kuwa sawa kwa kanoni ikiwa zinaonekana na kumaanisha sawa wakati zinapochapishwa au kuonyeshwa.

  2. Usawa wa Ulinganifu: Aina dhaifu ya usawa ambapo herufi zinaweza kuwakilisha herufi sawa lakini zinaweza kuonyeshwa tofauti.

Kuna algoritimu nne za usawazishaji wa Unicode: NFC, NFD, NFKC, na NFKD. Kila algoritimu hutumia mbinu tofauti za usawazishaji wa kanoni na ulinganifu. Kwa uelewa zaidi, unaweza kuchunguza mbinu hizi kwenye Unicode.org.

Mambo Muhimu kuhusu Ufananuzi wa Unicode

Kuelewa ufananuzi wa Unicode ni muhimu, hasa unaposhughulikia masuala ya kuingiliana kati ya mifumo au lugha tofauti. Hapa kuna mambo muhimu:

  • Pointi za Kanuni na Herufi: Katika Unicode, kila herufi au alama inapewa thamani ya nambari inayoitwa "pointi ya kanuni".

  • Uwakilishi wa Bayti: Pointi ya kanuni (au herufi) inawakilishwa na bayti moja au zaidi kwenye kumbukumbu. Kwa mfano, herufi za LATIN-1 (zinazotumiwa sana katika nchi zinazozungumza Kiingereza) zinawakilishwa kwa kutumia bayti moja. Walakini, lugha zenye seti kubwa ya herufi zinahitaji bayti zaidi kwa uwakilishi.

  • Ufananuzi: Istilahi hii inahusu jinsi herufi zinabadilishwa kuwa mfululizo wa bayti. UTF-8 ni kiwango cha kawaida cha ufananuzi ambapo herufi za ASCII zinawakilishwa kwa kutumia bayti moja, na hadi bayti nne kwa herufi nyingine.

  • Usindikaji wa Data: Mifumo inayosindika data lazima iwe na ufahamu wa ufananuzi unaotumiwa ili kubadilisha mfululizo wa bayti kuwa herufi.

  • Toleo za UTF: Mbali na UTF-8, kuna viwango vingine vya ufananuzi kama UTF-16 (ikitumia angalau bayti 2, hadi 4) na UTF-32 (ikitumia bayti 4 kwa herufi zote).

Ni muhimu kuelewa dhana hizi ili kushughulikia kwa ufanisi na kupunguza masuala yanayoweza kutokea kutokana na ugumu wa Unicode na njia zake mbalimbali za ufananuzi.

Mfano wa jinsi Unicode inavyosawazisha bayti mbili tofauti zinazowakilisha herufi sawa:

unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "chlo\u00e9")

Orodha ya wahusika sawa wa Unicode inaweza kupatikana hapa: https://appcheck-ng.com/wp-content/uploads/unicode_normalization.html na https://0xacb.com/normalization_table

Kugundua

Ikiwa unaweza kupata ndani ya programu-jalizi ya wavuti thamani ambayo inarudiwa, unaweza kujaribu kutuma 'KELVIN SIGN' (U+0212A) ambayo inahusisha "K" (unaweza kuituma kama %e2%84%aa). Ikiwa "K" inarudiwa, basi, aina fulani ya kawaida ya Unicode inafanywa.

Mfano mwingine: %F0%9D%95%83%E2%85%87%F0%9D%99%A4%F0%9D%93%83%E2%85%88%F0%9D%94%B0%F0%9D%94%A5%F0%9D%99%96%F0%9D%93%83 baada ya unicode ni Leonishan.

Mifano ya Kudhoofika

Kiwango cha Kufilisika cha SQL Injection

Fikiria ukurasa wa wavuti ambao unatumia herufi ' kuunda maswali ya SQL na mchango wa mtumiaji. Wavuti hii, kama hatua ya usalama, inafuta visa vyote vya herufi ' kutoka kwa mchango wa mtumiaji, lakini baada ya kufuta huko na kabla ya uundaji wa swali, inafanya kawaida kutumia Unicode mchango wa mtumiaji.

Kisha, mtumiaji mwenye nia mbaya anaweza kuingiza herufi tofauti ya Unicode inayolingana na ' (0x27) kama %ef%bc%87, wakati mchango unapopata kawaida, alama ya nukta moja inaundwa na kutokuwa na usalama wa SQLInjection unaonekana:

Baadhi ya wahusika wa Unicode wa kuvutia

  • o -- %e1%b4%bc

  • r -- %e1%b4%bf

  • 1 -- %c2%b9

  • = -- %e2%81%bc

  • / -- %ef%bc%8f

  • --- %ef%b9%a3

  • #-- %ef%b9%9f

  • *-- %ef%b9%a1

  • ' -- %ef%bc%87

  • " -- %ef%bc%82

  • | -- %ef%bd%9c

' or 1=1-- -
%ef%bc%87+%e1%b4%bc%e1%b4%bf+%c2%b9%e2%81%bc%c2%b9%ef%b9%a3%ef%b9%a3+%ef%b9%a3

" or 1=1-- -
%ef%bc%82+%e1%b4%bc%e1%b4%bf+%c2%b9%e2%81%bc%c2%b9%ef%b9%a3%ef%b9%a3+%ef%b9%a3

' || 1==1//
%ef%bc%87+%ef%bd%9c%ef%bd%9c+%c2%b9%e2%81%bc%e2%81%bc%c2%b9%ef%bc%8f%ef%bc%8f

" || 1==1//
%ef%bc%82+%ef%bd%9c%ef%bd%9c+%c2%b9%e2%81%bc%e2%81%bc%c2%b9%ef%bc%8f%ef%bc%8f

Kigezo cha sqlmap

XSS (Udukuzi wa Msalaba wa Tovuti)

Unaweza kutumia moja ya herufi zifuatazo kudanganya programu ya wavuti na kutumia XSS:

Tambua kwamba kwa mfano herufi ya kwanza ya Unicode inayopendekezwa inaweza kutumwa kama: %e2%89%ae au kama %u226e

Fuzzing Regexes

Wakati seva ya nyuma ina kagua kuingia kwa mtumiaji na regex, inaweza kuwa inawezekana kwamba kuingia ina kawaida kwa regex lakini sio kwa mahali ambapo ina tumiwa. Kwa mfano, katika Uelekezaji wa Wazi au SSRF regex inaweza kuwa inaweka kawaida URL iliyotumwa lakini kisha kuifikia kama ilivyo.

Zana recollapse inaruhusu kuzalisha mabadiliko ya kuingia kufanya fuzzing kwa seva ya nyuma. Kwa habari zaidi angalia github na hii chapisho.

Marejeo

WhiteIntel ni injini ya utaftaji inayotumia dark-web ambayo inatoa kazi za bure kuchunguza ikiwa kampuni au wateja wake wameathiriwa na programu hasidi za wizi.

Lengo kuu la WhiteIntel ni kupambana na utekaji wa akaunti na mashambulio ya ransomware yanayotokana na programu hasidi ya wizi wa habari.

Unaweza kutembelea tovuti yao na kujaribu injini yao kwa bure hapa:

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated