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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Django-faille-CVE-2025-57833_test — Django के annotate() और alias() मेथड्स में डायनामिक अलियास के माध्यम से SQL इंजेक्शन (CVE-2025-57833) प्रदर्शित करने वाला शैक्षिक प्रूफ-ऑफ-कॉन्सेप्ट। इसमें असुरक्षित कोड, एक्सप्लॉइटेशन उदाहरण और फिक्स विश्लेषण शामिल है। | Kitploit
उपकरण/GitHubGitHub/loic-houchi/django-faille-cve-2025-57833_test
स्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षाडेटाबेस सुरक्षा
GitHubloic-houchi/django-faille-cve-2025-57833_test

Django-faille-CVE-2025-57833_test

Django के annotate() और alias() मेथड्स में डायनामिक अलियास के माध्यम से SQL इंजेक्शन (CVE-2025-57833) प्रदर्शित करने वाला शैक्षिक प्रूफ-ऑफ-कॉन्सेप्ट। इसमें असुरक्षित कोड, एक्सप्लॉइटेशन उदाहरण और फिक्स विश्लेषण शामिल है।

रिपॉजिटरी देखें
2131 साल पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

Django में alias के माध्यम से SQL Injection भेद्यता का परीक्षण

परिभाषा : alias क्या है?

एक alias SQL क्वेरी में किसी कॉलम या एकत्रीकरण परिणाम को दिया गया नाम है।
Django में, alias का उपयोग annotate() या alias() विधियों के साथ गणना किए गए फ़ील्ड को नाम देने के लिए किया जाता है।

उदाहरण:

from django.db.models import Count
books = Book.objects.annotate(book_count=Count('id'))

यहाँ, book_count Count('id') के परिणाम के लिए एक alias है।
यह गणना किए गए कॉलम के लिए एक पढ़ने योग्य नाम प्राप्त करने की अनुमति देता है।


शेल के माध्यम से डेटा सम्मिलित करना

जल्दी से काम करने के लिए, हम शेल के माध्यम से डेटा सम्मिलित कर सकते हैं:

python manage.py shell

निष्पादित करने के आदेश:

from myapp.models import Author, Book

a = Author.objects.create(name=" houchi pierre")
Book.objects.create(title="Les belles filles", author=a)
Book.objects.create(title="Les baux arcons", author=a)

exit()

भेद्यता का संदर्भ

Django 4.2.23 से पहले, उपयोगकर्ता द्वारा प्रदान किए गए गतिशील alias के माध्यम से SQL इंजेक्ट करना संभव था।
यह भेद्यता CVE-2025-57833 के नाम से जानी जाती है।

यह annotate() और alias() फ़ंक्शंस को प्रभावित करती थी जब उपयोगकर्ता से प्राप्त अनफ़िल्टर्ड कुंजियों के साथ एक विस्तारित शब्दकोश (**kwargs) का उपयोग किया जाता था।


भेद्य कोड का उदाहरण (myapp/views.py)

import json
from django.db.models import Count
from django.http import JsonResponse
from .models import Author

def vulnerable_view(request):
    # हम URL से alias प्राप्त करते हैं
    alias_param = request.GET.get("alias", "{}")
    try:
        # ⚠️ भेद्य: उपयोगकर्ता डेटा का सीधा मूल्यांकन
        alias_dict = json.loads(alias_param)
        for key, value in alias_dict.items():
            alias_dict[key] = eval(value)  # खतरनाक! मनमाना कोड निष्पादन की अनुमति देता है

        # गतिशील एनोटेशन के साथ queryset बनाना
        qs = Author.objects.annotate(**alias_dict).values("name", *alias_dict.keys())

        # परिणाम लौटाना
        return JsonResponse(list(qs), safe=False)

    except Exception as e:
        return JsonResponse({"error": str(e)})

स्पष्टीकरण:

  1. alias_param = request.GET.get("alias", "{}")
    उपयोगकर्ता द्वारा पारित alias पैरामीटर का मान प्राप्त करता है।

  2. alias_dict = json.loads(alias_param)
    JSON स्ट्रिंग को Python शब्दकोश में बदलता है।

  3. alias_dict[key] = eval(value)
    ⚠️ बहुत खतरनाक: eval() स्ट्रिंग को Python कोड के रूप में निष्पादित करता है।
    उपयोगकर्ता विनाशकारी SQL इंजेक्ट कर सकता है।

  4. Author.objects.annotate(**alias_dict)
    प्रदान किए गए alias के साथ गतिशील रूप से एनोटेशन लागू करता है।


मॉडल (myapp/models.py)

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    def __str__(self):
        return self.name

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    def __str__(self):
        return self.title

स्पष्टीकरण:

  • Author और Book एक ForeignKey संबंध द्वारा जुड़े हुए हैं।
  • इसकी पुस्तकों के बारे में जानकारी की गणना करने के लिए Author पर गतिशील एनोटेशन का उपयोग किया जाता है।

सुधार से पहले शोषण का उदाहरण

  • दुर्भावनापूर्ण URL:
http://127.0.0.1:8000/vuln/?alias={"evil); DROP TABLE myapp_book;--":"Count('id')"}
  • जोखिम:
    • कोई भी SQL कमांड निष्पादित करना, तालिकाओं को हटाना या डेटा संशोधित करना।
    • यह इंजेक्टेड alias के माध्यम से सीधे भेद्यता का शोषण करता है।

Django 4.2.23 में सुधार

  • Django अब alias में कुछ वर्णों को प्रतिबंधित करता है:

    • स्थान
    • उद्धरण चिह्न
    • अर्धविराम
    • SQL टिप्पणियाँ (--)
  • यदि URL में ये वर्ण हैं, तो Django एक त्रुटि उठाता है:

Column aliases cannot contain whitespace characters, quotation marks, semicolons, or SQL comments.
  • परिणाम: कोई विनाशकारी SQL इंजेक्शन संभव नहीं है।

सुरक्षित उदाहरण

http://127.0.0.1:8000/vuln/?alias={"books_count":"Count('book')"}
  • यह कोई दोष नहीं है।
  • भेद्य संस्करणों (CVE-2025-57833) पर भेद्यता केवल तब दिखाई देती है जब कोई दुर्भावनापूर्ण उपयोगकर्ता SQL इंजेक्ट कर सकता है:
    • alias में प्रतिबंधित वर्णों के माध्यम से (स्थान, अर्धविराम, उद्धरण चिह्न, SQL टिप्पणियाँ)
    • या उपयोगकर्ता से आने वाले मानों पर eval() के माध्यम से।

इस दोष से बचने के लिए अच्छी प्रथाएँ

  1. उपयोगकर्ता डेटा पर कभी भी eval() का उपयोग न करें।
  2. केवल सुरक्षित वर्णों को स्वीकार करने के लिए alias नामों को मान्य करें।
  3. एनोटेशन मानों को केवल अनुमत फ़ंक्शंस या अभिव्यक्तियों तक सीमित करें।
  4. सुधारों से लाभ उठाने के लिए Django को अद्यतन रखें।

निष्कर्ष

  • भेद्यता CVE-2025-57833 ने गतिशील alias के माध्यम से SQL इंजेक्ट करने की अनुमति दी।
  • Django 4.2.23 और इसके बाद के संस्करण इस दोष को ठीक करते हैं।
  • उपयोगकर्ता डेटा का कठोर सत्यापन आवश्यक बना रहता है।

लेखक: Loïc
तिथि: 06/09/2025

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