
यह रिपॉजिटरी django 4.0.1 पर xss हमले को दोहराती है (देखें CVE-2022-22818)
केवल linux पर काम करता है। Windows पर एक निर्भरता त्रुटि उत्पन्न कर सकती है।
चलाने से पहले निम्नलिखित पैकेज स्थापित करना आवश्यक है:
pip install -r requirements.txt
python -m django --version # pip install django==4.0.1
grammarinator-generate --version # pip install git+https://github.com/renatahodovan/grammarinator.git#egg=grammarinator
touch grammars/fuzzer/HTMLGenerator.py # Создаём пустой файл, который будет наполнен генератом
grammarinator-process grammars/HTMLLexer.g4 grammars/HTMLParser.g4 -o grammars/fuzzer # Заполнение файла
python runfuzz.py
django की एक फ़ाइल को पैच करना होगा, क्योंकि यह टेम्पलेट इंजन में त्रुटि उत्पन्न कर सकती है, जिससे फ़ज़िंग प्रक्रिया रुक जाएगी:
--- /home/alex/.local/lib/python3.9/site-packages/django/template/defaultfilters.py 2023-04-26 12:47:44.387239988 +0300
+++ /home/alex/.local/lib/python3.9/site-packages/django/template/defaultfilters-fixed.py 2023-04-26 12:47:33.931039539 +0300
@@ -613,7 +613,10 @@
@register.filter(is_safe=True)
def random(value):
"""Return a random item from the list."""
- return random_module.choice(value)
+ try:
+ return random_module.choice(value)
+ except IndexError:
+ return ''
@register.filter("slice", is_safe=True)
यदि आप venv उपयोग कर रहे हैं, तो पथ इस प्रकार हो सकता है: venv/lib/python3.9/site-packages/django/template/defaultfilters.py
यदि आपने पैकेज सिस्टम में स्थापित किए हैं, तो पथ: $HOME/.local/lib/python3.9/site-packages/django/template/defaultfilters.py
फ़ाइल के अंदर जाकर random टैग की परिभाषा खोजें और उसे try-catch ब्लॉक में घेर दें।
यदि ऐसा नहीं किया गया, तो फ़ज़र इस बग का पता लगने पर अपना काम समाप्त कर देगा।
| बग | साधारण फ़ज़र | निश्चित भार मोड | कूलडाउन 0.5 |
|---|---|---|---|
| debug | 20 | 20 | |
| join-escape-filter | 1000+ | 560/3520(88s)/40/740(28s)/1800(51s) | 20/900/220/760(530s) |