hacktricks/pentesting-web/unicode-injection
2024-02-09 04:37:44 +00:00
..
README.md Translated ['forensics/basic-forensic-methodology/memory-dump-analysis/R 2024-02-09 04:37:44 +00:00
unicode-normalization.md Translated ['forensics/basic-forensic-methodology/memory-dump-analysis/R 2024-02-09 04:37:44 +00:00

यूनिकोड इंजेक्शन

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

परिचय

जिस प्रकार से बैक-एंड/फ्रंट-एंड विचार करते हैं जब वह अजीब यूनिकोड वर्ण प्राप्त करते हैं, एक हमलावार संग्रहणों को छलना कर सकता है और विषयक वर्ण डाल सकता है जो XSS या SQLi जैसी अभिशाप इंजेक्शन भेदों का उपयोग किया जा सकता है।

यूनिकोड सामान्यीकरण

यूनिकोड सामान्यीकरण जब यूनिकोड वर्णों को एस्की वर्णों में सामान्यीकृत किया जाता है, तब होता है।

इस प्रकार की विकल्पित वर्णात्मकता का एक सामान्य परिदृश्य तब होता है जब सिस्टम उपयोगकर्ता के इनपुट को जांचने के बाद कुछ बदल रहा हो। उदाहरण के लिए, कुछ भाषाओं में इनपुट को अपरकेस या लोअरकेस में बनाने के लिए एक साधारण कॉल करने से दिया गया इनपुट सामान्यीकृत हो सकता है और यूनिकोड को एस्की में रूपांतरित किया जाएगा नए वर्ण उत्पन्न करते हैं।
अधिक जानकारी के लिए देखें:

{% content-ref url="unicode-normalization.md" %} unicode-normalization.md {% endcontent-ref %}

\u से % तक

यूनिकोड वर्णों को आम तौर पर \u उपसर्ग के साथ प्रस्तुत किया जाता है। उदाहरण के लिए वर्ण \u3c4b है (यहाँ जांचें)। यदि एक बैक-एंड प्रत्याय को रूपांतरित करता है प्रत्याय \u को % में, तो परिणामी स्ट्रिंग %3c4b होगी, जो URL डीकोड किया जाएगा: <4b। और, जैसा कि आप देख सकते हैं, एक < वर्ण इंजेक्ट किया गया है।
यदि बैक-एंड विकल्पशील है, तो आप इस तकनीक का उपयोग कर सकते हैं और किसी भी प्रकार के वर्ण डाल सकते हैं
आवश्यक वर्णों को खोजने के लिए https://unicode-explorer.com/ देखें।

यह वल्न वास्तव में एक विश्लेषक द्वारा पायी गई एक विकल्पितता से आती है, इसके लिए अधिक विस्तृत व्याख्या के लिए देखें https://www.youtube.com/watch?v=aUsAHb0E7Cg

इमोजी इंजेक्शन

बैक-एंड कभी-कभी इमोजी प्राप्त करने पर अजीब व्यवहार करते हैं। यही हुआ था इस व्रिटअप में जहां शोधक ने 💋img src=x onerror=alert(document.domain)//💛 जैसे पेलोड के साथ XSS प्राप्त करने में सफलता प्राप्त की।

इस मामले में, त्रुटि यह थी कि सर्वर ने हानिकारक वर्णों को हटाने के बाद UTF-8 स्ट्रिंग को Windows-1252 से UTF-8 में परिवर्तित किया (मूलत: इनपुट इनकोडिंग और एनकोडिंग से असंगति)। फिर यह सही < नहीं देता बस एक अजीब यूनिकोड वर्ण:
``इसलिए उन्होंने इस आउटपुट को फिर से UTF-8 से ASCII में परिवर्तित किया। यहनी, को < में सामान्यीकृत किया गया और इसी तरह उस सिस्टम पर उत्पादित हो सकता है।
यह हुआ था:

<?php

$str = isset($_GET["str"]) ? htmlspecialchars($_GET["str"]) : "";

$str = iconv("Windows-1252", "UTF-8", $str);
$str = iconv("UTF-8", "ASCII//TRANSLIT", $str);

echo "String: " . $str;

इमोजी सूची:

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके: