Unicode Injection

Reading time: 4 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Introduction

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

Unicode Normalization

Unicode सामान्यीकरण तब होता है जब unicode वर्णों को ascii वर्णों में सामान्यीकृत किया जाता है।

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

Unicode Normalization

\u to %

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

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

Emoji Injection

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

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

php
<?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;

इमोजी सूचियाँ:

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें