Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

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

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
fuzzilli — एक जावास्क्रिप्ट इंजन फ़ज़र | Kitploit
उपकरण/GitHubGitHub/googleprojectzero/fuzzilli
भेद्यता विश्लेषणफज़िंगबाइनरी विश्लेषणपेपर और शोधलर्निंग और शिक्षा
GitHubgoogleprojectzero/fuzzilli

fuzzilli

एक जावास्क्रिप्ट इंजन फ़ज़र

रिपॉजिटरी देखें
2.3k366836 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Fuzzilli

गतिशील भाषा इंटरप्रेटरों के लिए एक (कवरेज-निर्देशित) फजर, जो एक कस्टम मध्यवर्ती भाषा ("FuzzIL") पर आधारित है, जिसे उत्परिवर्तित (mutate) कर जावास्क्रिप्ट में अनुवादित किया जा सकता है।

उपयोग

इस फजर का उपयोग करने के मूल चरण हैं:

  1. समर्थित जावास्क्रिप्ट इंजनों में से किसी एक का स्रोत कोड डाउनलोड करें। समर्थित जावास्क्रिप्ट इंजनों की सूची के लिए Targets/ निर्देशिका देखें।
  2. लक्ष्य की निर्देशिका से संबंधित पैच लागू करें। उस निर्देशिका में README.md भी देखें।
  3. कवरेज इंस्ट्रूमेंटेशन के साथ इंजन को संकलित करें (क्लैंग >= 4.0 की आवश्यकता है) जैसा कि README में वर्णित है।
  4. फजर को संकलित करें: swift build [-c release].
  5. फजर चलाएँ: swift run [-c release] FuzzilliCli --profile=<profile> [अन्य क्ली विकल्प] /path/to/jsshell. यह भी देखें swift run FuzzilliCli --help।

फजली और समर्थित जावास्क्रिप्ट इंजनों को डॉकर और Google Compute Engine के अंदर बनाना और चलाना भी समर्थित है।

हैकिंग

Fuzzilli लाइब्रेरी के उपयोग का एक उदाहरण देखने और विभिन्न कॉन्फ़िगरेशन विकल्पों के साथ खेलने के लिए main.swift देखें। इसके बाद, उच्च-स्तरीय फजिंग लॉजिक के लिए Fuzzer.swift देखें। वहाँ से किसी भी दिलचस्प हिस्से में गोता लगाएँ।

इस परियोजना में पैच, परिवर्धन, अन्य योगदान आदि का बहुत स्वागत है! हालाँकि, योगदानकर्ताओं के लिए नोट्स जल्दी से देख लें। Fuzzilli मोटे तौर पर Google के Swift के लिए कोड शैली गाइड का अनुसरण करता है।

यदि आप इस परियोजना की मदद से पाई गई किसी भेद्यता के लिए [email protected] पर एक संक्षिप्त नोट (संभवतः CVE नंबर सहित) भेज सकते हैं या एक पुल अनुरोध खोल सकते हैं तो बहुत सराहना की जाएगी ताकि इसे बग शोकेस अनुभाग में शामिल किया जा सके। इसके अलावा आप निश्चित रूप से किसी भी बग बाउंटी, CVE क्रेडिट आदि का दावा कर सकते हैं :)

अवधारणा

जब मुख्य इंटरप्रेटर बग, जैसे कि JIT कंपाइलर में, के लिए फजिंग की जाती है, तो उत्पन्न प्रोग्रामों की सिमैंटिक शुद्धता एक चिंता का विषय बन जाती है। यह अधिकांश अन्य परिदृश्यों के विपरीत है, उदाहरण के लिए रनटाइम API की फजिंग, जहाँ सिमैंटिक शुद्धता को जनरेटेड कोड को try-catch कंस्ट्रक्ट में लपेटकर आसानी से दरकिनार किया जा सकता है। स्वीकार्य दर पर सिमैंटिकली सही नमूने प्राप्त करने के लिए अलग-अलग संभावनाएँ हैं, उनमें से एक उत्परिवर्तन दृष्टिकोण है जिसमें कोष में सभी नमूने भी सिमैंटिकली मान्य होते हैं। उस स्थिति में, प्रत्येक उत्परिवर्तन में एक मान्य नमूने को अमान्य में बदलने की संभावना कम होती है।

एक उत्परिवर्तन-आधारित जावास्क्रिप्ट फजर को लागू करने के लिए, जावास्क्रिप्ट कोड पर उत्परिवर्तन को परिभाषित करना होता है। किसी प्रोग्राम के AST या अन्य सिंटैक्टिक तत्वों को उत्परिवर्तित करने के बजाय, एक कस्टम मध्यवर्ती भाषा (IL) को परिभाषित किया जाता है जिस पर प्रोग्राम के नियंत्रण और डेटा प्रवाह में उत्परिवर्तन अधिक सीधे किए जा सकते हैं। इस IL का बाद में निष्पादन के लिए जावास्क्रिप्ट में अनुवाद किया जाता है। मध्यवर्ती भाषा मोटे तौर पर इस प्रकार दिखती है:

v0 <− LoadInteger '0'
v1 <− LoadInteger '10'
v2 <− LoadInteger '1'
v3 <− LoadInteger '0'
BeginFor v0, '<', v1, '+', v2 −> v4
   v6 <− BinaryOperation v3, '+', v4
   Reassign v3, v6
EndFor
v7 <− LoadString 'Result: '
v8 <− BinaryOperation v7, '+', v3
v9 <− LoadGlobal 'console'
v10 <− CallMethod v9, 'log', [v8]

जिसे आसानी से निम्नलिखित जावास्क्रिप्ट कोड में अनुवादित किया जा सकता है:

const v0 = 0;
const v1 = 10;
const v2 = 1;
let v3 = 0;
for (let v4 = v0; v4 < v1; v4 = v4 + v2) {
    const v6 = v3 + v4;
    v3 = v6;
}
const v7 = "Result: ";
const v8 = v7 + v3;
const v9 = console;
const v10 = v9.log(v8);

या मध्यवर्ती अभिव्यक्तियों को इनलाइन करके निम्नलिखित जावास्क्रिप्ट कोड में:

let v3 = 0;
for (let v4 = 0; v4 < 10; v4++) {
    v3 = v3 + v4;
}
console.log("Result: " + v3);

FuzzIL में कई गुण हैं:

  • एक FuzzIL प्रोग्राम केवल निर्देशों की एक सूची है।
  • एक FuzzIL निर्देश एक ऑपरेशन है जिसमें इनपुट और आउटपुट वेरिएबल और संभावित रूप से एक या अधिक पैरामीटर (ऊपर के संकेतन में एकल उद्धरणों में) होते हैं।
  • निर्देशों के इनपुट हमेशा वेरिएबल होते हैं, कोई तत्काल मान नहीं होते।
  • एक निर्देश का प्रत्येक आउटपुट एक नया वेरिएबल होता है, और मौजूदा वेरिएबल को केवल समर्पित संचालन जैसे Reassign निर्देश के माध्यम से पुन: असाइन किया जा सकता है।
  • प्रत्येक वेरिएबल का उपयोग करने से पहले परिभाषित किया जाता है।

इन प्रोग्रामों पर कई उत्परिवर्तन किए जा सकते हैं:

  • InputMutator: प्रोग्राम के डेटाफ्लो को उत्परिवर्तित करने के लिए निर्देशों के इनपुट वेरिएबल को अलग-अलग वेरिएबल से बदलता है।
  • CodeGenMutator: कोड उत्पन्न करता है और उसे उत्परिवर्तित प्रोग्राम में कहीं सम्मिलित करता है। कोड या तो कोड जनरेटर चलाकर या कोष से किसी अन्य प्रोग्राम से कुछ निर्देशों की प्रतिलिपि बनाकर (स्प्लिसिंग) उत्पन्न किया जाता है।
  • CombineMutator: कोष से एक प्रोग्राम को उत्परिवर्तित प्रोग्राम में एक यादृच्छिक स्थान पर सम्मिलित करता है।
  • OperationMutator: संचालन के पैरामीटर को उत्परिवर्तित करता है, उदाहरण के लिए एक पूर्णांक स्थिरांक को एक अलग से बदलना।
  • और भी बहुत कुछ...

Fuzzilli कैसे काम करता है इसकी अधिक विस्तृत चर्चा यहाँ पाई जा सकती है।

कार्यान्वयन

फजर Swift में लागू किया गया है, जिसमें कुछ भाग (जैसे कवरेज माप, सॉकेट इंटरैक्शन, आदि) C में लागू किए गए हैं।

आर्किटेक्चर

एक फजर इंस्टेंस (Fuzzer.swift में लागू) निम्नलिखित केंद्रीय घटकों से बना होता है:

  • MutationFuzzer: उत्परिवर्तन लागू करके मौजूदा प्रोग्रामों से नए प्रोग्राम तैयार करता है। बाद में उत्पादित नमूनों को निष्पादित करता है और उनका मूल्यांकन करता है।
  • ScriptRunner: लक्ष्य भाषा के प्रोग्राम निष्पादित करता है।
  • Corpus: दिलचस्प नमूनों को संग्रहीत करता है और उन्हें कोर फजर को प्रदान करता है।
  • Environment: रनटाइम वातावरण का ज्ञान रखता है, जैसे उपलब्ध बिल्टिन, प्रॉपर्टी नाम और विधियाँ।
  • Minimizer: क्रैश और दिलचस्प प्रोग्राम को छोटा करता है।
  • Evaluator: मूल्यांकन करता है कि क्या कोई नमूना किसी मीट्रिक, जैसे कोड कवरेज, के अनुसार दिलचस्प है।
  • Lifter: FuzzIL प्रोग्राम को लक्ष्य भाषा (जावास्क्रिप्ट) में अनुवादित करता है।

इसके अलावा, कई मॉड्यूल वैकल्पिक रूप से उपलब्ध हैं:

टूल डाउनलोड करें