Unicode Injection

Support HackTricks

Introduction

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

Unicode Normalization

यूनिकोड सामान्यीकरण तब होता है जब यूनिकोड कैरेक्टर को ASCII कैरेक्टर में सामान्यीकृत किया जाता है

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

Unicode Normalization

\u to %

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

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

Emoji Injection

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

इस मामले में, त्रुटि यह थी कि सर्वर ने दुर्भावनापूर्ण कैरेक्टर को हटाने के बाद Windows-1252 से UTF-8 में 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;

Emoji सूचियाँ:

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

Last updated