
PyJFuzz - पायथन JSON फ़ज़र

PyJFuzz एक छोटा, विस्तार योग्य और उपयोग के लिए तैयार फ्रेमवर्क है जिसका उपयोग JSON इनपुट को फ़ज़ करने के लिए किया जाता है, जैसे मोबाइल एंडपॉइंट REST API, JSON कार्यान्वयन, ब्राउज़र, CLI एक्ज़ीक्यूटेबल और बहुत कुछ।
| संस्करण | 1.1.0 |
|---|---|
| होमपेज | http://www.mseclab.com/ |
| गिटहब | https://github.com/mseclab/PyJFuzz |
| लेखक | Daniele Linguaglossa (@dzonerzy) |
| लाइसेंस | MIT - (LICENSE फ़ाइल देखें) |
निर्भरताएँ
काम करने के लिए PyJFuzz को कुछ निर्भरताओं की आवश्यकता है, bottle,netifaces,GitPython और gramfuzz। आप उन्हें स्वचालित setup.py स्थापना से स्थापित कर सकते हैं।
स्थापना
आप PyJFuzz को निम्नलिखित कमांड से स्थापित कर सकते हैं
git clone https://github.com/mseclab/PyJFuzz.git && cd PyJFuzz && sudo python setup.py install
CLI उपकरण
एक बार स्थापित होने के बाद, PyJFuzz एक पायथन लाइब्रेरी और pjf नामक एक कमांड-लाइन उपयोगिता (नीचे स्क्रीनशॉट) दोनों बनाएगा
लाइब्रेरी
PyJFuzz एक लाइब्रेरी के रूप में भी काम कर सकता है, आप इसे अपने प्रोजेक्ट में निम्नानुसार आयात कर सकते हैं
from pyjfuzz.lib import *
क्लासेज़
उपलब्ध ऑब्जेक्ट/क्लास निम्नलिखित हैं:
उदाहरण
नीचे PyJFuzz द्वारा संचालित प्रोग्राम को लागू करने के कुछ सरल उदाहरण दिए गए हैं
simple_fuzzer.py
from argparse import Namespace
from pyjfuzz.lib import *
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6))
fuzzer = PJFFactory(config)
while True:
print fuzzer.fuzzed
custom_techniques.py
from argparse import Namespace
from pyjfuzz.lib import *
# Techniques may be defined by group , or by technique number
# groups are CHTPRSX , to understand what they are , please run pyjfuzz with -h switch or look at the command line screenshot
# This below will initalizate a config object which use only the P group attacks where P stay for Path Traversal
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, techniques="P"))
# once a config object is defined you can access to config.techniques to view the selected techniques for your group
print("Techniques IDs: {0}".format(str(config.techniques)))
# you can eventually modify them!
config.techniques = [2]
# This way only attack number 2 (LFI Attack) will be performed!
fuzzer = PJFFactory(config)
while True:
print fuzzer.fuzzed
simple_server.py
from argparse import Namespace
from pyjfuzz.lib import *
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, debug=True, indent=True))
PJFServer(config).run()
कभी-कभी आपको मानक गैर-अनुकूलन योग्य सेटिंग्स जैसे HTTPS या HTTP सर्वर पोर्ट को संशोधित करने की आवश्यकता हो सकती है, यह निम्नलिखित तरीके से किया जा सकता है
from argparse import Namespace
from pyjfuzz.lib import *
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, indent=True))
print config.ports["servers"]["HTTP_PORT"] # 8080
print config.ports["servers"]["HTTPS_PORT"] # 8443
print config.ports["servers"]["TCASE_PORT"] # 8888
config.ports["servers"]["HTTPS_PORT"] = 443 # Change HTTPS port to 443
याद रखें: डिफ़ॉल्ट पोर्ट बदलते समय, आवश्यक विशेषाधिकारों के कारण आपको हमेशा अपवाद को संभालना चाहिए!
नीचे PJFConfiguration ऑब्जेक्ट की सभी उपलब्ध सेटिंग्स/अनुकूलन की एक विस्तृत सूची दी गई है:
कॉन्फ़िगरेशन तालिका
तकनीक तालिका
नीचे कुछ स्क्रीनशॉट दिए गए हैं ताकि आप जान सकें कि PyJFuzz से क्या उम्मीद करनी चाहिए
PyJFuzz PyJFuzz Web Fuzzer नामक एक अंतर्निहित उपकरण के साथ आता है, यह उपकरण HTTP और HTTPS सर्वर के माध्यम से एक स्वचालित फ़ज़िंग कंसोल प्रदान करेगा, इसका उपयोग लगभग किसी भी वेब ब्राउज़र को आसानी से फ़ज़ करने के लिए किया जा सकता है, भले ही आप प्रक्रिया स्थिति को नियंत्रित नहीं कर सकते!
इस उपकरण को लॉन्च करने के लिए दो स्विच हैं (--browser-auto और --fuzz-web), पहला क्रैश होने पर स्वचालित ब्राउज़र पुनरारंभ करता है, दूसरा यह पकड़ने का प्रयास करता है कि ब्राउज़र अब अनुरोध नहीं कर रहा है। दोनों हमेशा टेस्टकेस सहेजते हैं, नीचे कुछ स्क्रीनशॉट हैं।
समस्याकृपया कोई भी समस्या यहां GitHub के माध्यम से भेजें, मैं जल्द से जल्द समाधान प्रदान करूंगा।
नीचे PyJFuzz द्वारा पाई गई ज्ञात समस्याओं की सूची दी गई है, सूची साप्ताहिक रूप से अपडेट की जाएगी
PyJFuzz का उपयोग करने के लिए धन्यवाद!
खुशहाल फ़ज़िंग mseclab की ओर से
| नाम | प्रकार | विवरण |
|---|---|---|
| json | dict | फ़ज़ करने के लिए JSON ऑब्जेक्ट |
| json_file | str | JSON फ़ाइल का पथ |
| parameters | list<str> | फ़ज़ करने के लिए पैरामीटर्स की सूची (JSON ऑब्जेक्ट से लिया गया) |
| techniques | str<int> | सक्षम हमलों की स्ट्रिंग, फ़ज़ किए गए JSON उत्पन्न करने के लिए उपयोग की जाती है, जैसे XSS, LFI आदि। उदा. "CHPTRSX" (तकनीक तालिका देखें) |
| level | int | फ़ज़िंग स्तर 0-6 की सीमा में |
| utf8 | bool | यदि सही है, तो यूनिकोड एनकोड से शुद्ध बाइट प्रतिनिधित्व पर स्विच करें |
| indent | bool | परिणाम ऑब्जेक्ट को इंडेंट करना है या नहीं सेट करें |
| url_encode | bool | परिणाम ऑब्जेक्ट को URLEncode करना है या नहीं सेट करें |
| strong_fuzz | bool | सेट करें कि स्ट्रॉन्ग फ़ज़िंग का उपयोग करना है या नहीं (स्ट्रॉन्ग फ़ज़िंग JSON संरचना को बनाए नहीं रखेगी, पार्सर फ़ज़िंग के लिए उपयोगी) |
| debug | bool | डीबग प्रिंट सक्षम करना है या नहीं सेट करें |
| exclude | bool | पैरामीटर्स विकल्प द्वारा चयनित फ़ज़िंग पैरामीटर्स को बाहर करें |
| notify | bool | सेट करें कि क्रैश होने पर प्रक्रिया मॉनिटर को सूचित करना है या नहीं, केवल PJFServer के साथ उपयोग किया जाता है |
| html | str | PJFServer के भीतर सेवा देने के लिए HTML निर्देशिका का पथ |
| ext_fuzz | bool | सेट करें कि बाहरी फ़ज़र के रूप में "command" से बाइनरी का उपयोग करना है या नहीं |
| cmd_fuzz | bool | सेट करें कि "command" से बाइनरी का उपयोग फ़ज़र लक्ष्य के रूप में करना है या नहीं |
| content_type | str | PJFServer का कंटेंट टाइप परिणाम सेट करें (डिफ़ॉल्ट application/json) |
| command | list<str> | निष्पादित करने के लिए कमांड, प्रत्येक पैरामीटर एक सूची तत्व है, आप पायथन से shlex.split का उपयोग कर सकते हैं |
| सूचकांक | विवरण |
|---|---|
| 0 | XSS इंजेक्शन (पॉलीग्लॉट) |
| 1 | SQL इंजेक्शन (पॉलीग्लॉट) |
| 2 | LFI हमला |
| 3 | SQL इंजेक्शन पॉलीग्लॉट (2) |
| 4 | XSS इंजेक्शन (पॉलीग्लॉट) (2) |
| 5 | RCE इंजेक्शन (पॉलीग्लॉट) |
| 6 | LFI हमला (2) |
| 7 | डेटा URI हमला |
| 8 | LFI और HREF हमला |
| 9 | हेडर इंजेक्शन |
| 10 | RCE इंजेक्शन (पॉलीग्लॉट) (2) |
| 11 | सामान्य टेम्पलेट इंजेक्शन |
| 12 | Flask टेम्पलेट इंजेक्शन |
| 13 | यादृच्छिक वर्ण हमला |