
ग्रोमहैक्स लैब्स -- पेलोड लिस्ट जो वे आपके पास नहीं चाहते। 1,324 इंजेक्शन प्रोब्स मदरशिप से नीचे भेजे गए ताकि 20 वल्न क्लासेस में क्या इंजेक्ट करने योग्य है, इसका पता लगाया जा सके। हम एक्सप्लॉइट नहीं करते, हम बस दरवाजा खटखटाते हैं और देखते हैं कि कौन जवाब देता है। हर पेलोड को वास्तविक पार्सर्स के खिलाफ परखा गया क्योंकि एलियंस सबूत मांगते हैं। किसी इनपुट पर भरोसा न करें। हर चीज़ पर सवाल उठाएँ!
कोई पेलोड काम नहीं कर रहा? कृपया पेलोड, लक्ष्य संदर्भ और आपकी अपेक्षित प्रतिक्रिया के साथ एक मुद्दा खोलें। सुधार या नए पेलोड वाले पुल अनुरोधों का हमेशा स्वागत है।
अनुसंधान जारी है। यह परियोजना सक्रिय विकास के अंतर्गत है और नए पेलोड, कमजोरियों की श्रेणियों और सत्यापन सुधारों के साथ नियमित रूप से अद्यतन की जाएगी।
अस्वीकरण: ये पेलोड केवल अधिकृत सुरक्षा परीक्षण, शिक्षा और अनुसंधान उद्देश्यों के लिए प्रदान किए गए हैं। लेखक किसी भी दुरुपयोग या परिणामी प्रभावों के लिए कोई जिम्मेदारी या दायित्व नहीं लेते हैं। पूरी तरह से अपने स्वयं के जोखिम पर उपयोग करें। इस परियोजना का उपयोग करके आप अपने कार्यों की पूर्ण जिम्मेदारी स्वीकार करते हैं।
लाइसेंस: MIT - देखें LICENSE
1,353 सत्यापित इंजेक्शन पेलोड जो 20 कमजोरियों की श्रेणियों, 31 डीसीरियलाइज़ेशन फ्रेमवर्क और 14 टेम्पलेट इंजनों को कवर करते हैं। हर पेलोड एक पता लगाने योग्य संकेत उत्पन्न करता है। शून्य सैद्धांतिक पेलोड।
सत्यापन: 1,353 परीक्षित / 1,353 फायर / 0 विफल / 0 छोड़े गए 35 डॉकर टेस्टबेड स्टैक के विरुद्ध। कठोर सत्यापन वास्तविक शोषण साबित करता है (सर्वर-साइड गणना, वास्तविक पार्सर त्रुटियाँ, मापी गई समय विलंब, लक्ष्य कंटेनरों से OOB कॉलबैक) -- स्ट्रिंग मिलान नहीं।
अधिकांश सार्वजनिक रूप से उपलब्ध पेलोड सूचियाँ कमजोरी के प्रकार के अनुसार व्यवस्थित होती हैं: SQL इंजेक्शन के लिए एक सूची, XSS के लिए दूसरी, कमांड इंजेक्शन के लिए और इसी तरह। एक परीक्षक उस सूची को चुनता है जो लक्ष्य से मेल खाती है, इसे एक इंट्रूडर टूल में लोड करता है, और इसे एक पैरामीटर के विरुद्ध चलाता है। यदि वे कमजोरी की श्रेणी के बारे में गलत अनुमान लगाते हैं, तो पूरा स्कैन कुछ भी उत्पन्न नहीं करता है। यदि बैकएंड एक असामान्य डेटाबेस, एक गैर-मानक टेम्पलेट इंजन, या एक भाषा है जिसका सूची में ध्यान नहीं रखा गया है, तो पेलोड चुपचाप विफल हो जाते हैं। परीक्षक आगे बढ़ता है यह सोचकर कि पैरामीटर सुरक्षित है।
इस दृष्टिकोण की दो मूलभूत समस्याएं हैं। पहली, इसमें परीक्षक को यह जानने की आवश्यकता होती है कि उसे पता लगाने से पहले कौन सी कमजोरी मौजूद है। दूसरी, प्रचलन में अधिकांश पेलोड सैद्धांतिक हैं -- परियोजनाओं और ब्लॉग पोस्टों के बीच कॉपी किए गए बिना कभी वास्तविक पार्सर के विरुद्ध परीक्षण किए। वे सही दिखते हैं। वे वाक्यगत रूप से मान्य भी हो सकते हैं। लेकिन वे वास्तव में लक्ष्य से एक पता लगाने योग्य प्रतिक्रिया ट्रिगर नहीं करते हैं।
यह परियोजना एक अलग दृष्टिकोण अपनाती है। काम की प्राथमिक इकाई पॉलीग्लॉट है -- एक एकल पेलोड स्ट्रिंग जिसे एक साथ जितने संभव हो उतने इंजेक्शन संदर्भों में मान्य (या अर्थपूर्ण रूप से अमान्य) होने के लिए इंजीनियर किया गया है। एक पॉलीग्लॉट एक साथ सिंगल कोट्स, डबल कोट्स, पैरेंथेसिस, ब्लॉक कमेंट्स, HTML विशेषताओं, टेम्पलेट डिलिमिटर्स और बैकटिक संदर्भों से बाहर निकलता है। यह जानने की आवश्यकता नहीं है कि कमजोरी क्या है, परीक्षक हर पैरामीटर पर पॉलीग्लॉट दागता है और संकेतों को देखता है।
इस संग्रह में प्रत्येक पेलोड पहचान स्तंभों के आसपास बनाया गया है -- अवलोकनीय प्रतिक्रियाएँ जो सर्वर लॉग, स्रोत कोड या फाइलसिस्टम तक पहुंच के बिना कमजोरी के अस्तित्व की पुष्टि करती हैं:
7*191 शामिल है जो 1337 पर मूल्यांकन करती है। यदि वह संख्या प्रतिक्रिया में दिखाई देती है और पेलोड ने केवल 7*191 भेजा था (शाब्दिक 1337 नहीं), तो बैकएंड ने अभिव्यक्ति की गणना की -- कोड निष्पादन का प्रमाण।यदि कोई पेलोड अपने लक्ष्य संदर्भ के विरुद्ध परीक्षण करने पर इनमें से कम से कम एक संकेत उत्पन्न नहीं करता है, तो वह सूची में नहीं है। यहां के सभी 1,353 पेलोड को शोषण के कठोर प्रमाण के साथ उद्देश्य-निर्मित डॉकर टेस्टबेड के विरुद्ध मान्य किया गया है। शून्य सैद्धांतिक हैं।
पारंपरिक OOB और समय पेलोड शेल कमांड पर निर्भर करते हैं: curl, nslookup, ping, sleep। ये लगातार टूटते हैं। वे लक्ष्य OS, उपलब्ध PATH, कौन सा शेल कमांड की व्याख्या करता है, और क्या प्रक्रिया को उपप्रक्रियाएँ बनाने की अनुमति है, पर निर्भर करते हैं। एक curl-आधारित OOB पेलोड जो Ubuntu पर काम करता है, Alpine पर विफल होता है (कोई curl नहीं), Windows पर विफल होता है (कोई curl नहीं), और एक प्रतिबंधित कंटेनर के अंदर विफल होता है (कोई आउटबाउंड प्रक्रिया निष्पादन नहीं)।
यह परियोजना जहां भी संभव हो, शेल कमांड को भाषा-मूल बिल्ट-इन से बदल देती है। Python पेलोड urllib.request.urlopen() और time.sleep() का उपयोग करते हैं। Java पेलोड java.net.URL.openStream() और Thread.sleep() का उपयोग करते हैं। Ruby Net::HTTP.get() और Kernel.sleep का उपयोग करता है। PHP file_get_contents() और sleep() का उपयोग करता है। ये फ़ंक्शन अपनी-अपनी भाषा की प्रत्येक मानक स्थापना में मौजूद हैं -- कोई PATH लुकअप नहीं, कोई उपप्रक्रिया नहीं, कोई OS निर्भरता नहीं।
जहां मानक पुस्तकालय आयात भी अवरुद्ध हो सकते हैं (सैंडबॉक्स्ड eval, प्रतिबंधित exec), पेलोड आयात-मुक्त विकल्पों का सहारा लेते हैं: समय के लिए CPU स्पिन लूप (Python में sum(range(500000000)), Node में Atomics.wait()) और OOB के लिए रॉ सॉकेट कनेक्शन (__import__('socket').create_connection(), fsockopen(), TCPSocket.new())।
सब कुछ पॉलीग्लॉट नहीं हो सकता। टेम्पलेट इंजन मौलिक रूप से असंगत सिंटैक्स का उपयोग करते हैं -- Jinja2 में {{}} का ERB के <%= %> पर कोई अर्थ नहीं है, और न ही Freemarker के ${} के रूप में पार्स होता है। डीसीरियलाइज़ेशन प्रारूप बाइनरी या संरचित डेटा होते हैं जो एक विशिष्ट फ्रेमवर्क के लिए होते हैं। इन श्रेणियों के लिए, परियोजना समान पहचान स्तंभ प्रणाली के तहत आयोजित प्रति-इंजन पेलोड का उपयोग करती है, जिसमें 7 भाषाओं में 14 टेम्पलेट इंजन और 31 डीसीरियलाइज़ेशन फ्रेमवर्क शामिल हैं।
परिणाम एक एकल संग्रह है जहां पॉलीग्लॉट उन संदर्भों को संभालते हैं जो वे कर सकते हैं (SQLi, OS कमांड इंजेक्शन, XSS, कोड इंजेक्शन) और उद्देश्य-निर्मित प्रति-इंजन पेलोड बाकी को संभालते हैं, सभी मान्य, सभी पता लगाने योग्य संकेत उत्पन्न करते हैं, सभी लाइन-बाय-लाइन इंजेक्शन टूल के लिए तैयार हैं।
सभी 35 टेस्टबेड स्टैक, सभी 55+ एंडपॉइंट, और प्रति श्रेणी सभी 4 पहचान स्तंभों को कवर करने वाले 83 पेलोड। मान्य: 83 FIRE / 0 NO-FIRE / 0 SKIPPED।
प्रत्येक इंजेक्शन श्रेणी को जहां आर्किटेक्चरली संभव हो, त्रुटि + math + समय + OOB कवरेज मिलता है। कोड निष्पादन का समर्थन करने वाले डीसीरियलाइज़ेशन फ्रेमवर्क (Pickle, PyYAML, jsonpickle, node-serialize, XMLDecoder, .NET Json.NET) को पूर्ण बहु-स्तंभ कवरेज मिलता है। जांच तक सीमित फ्रेमवर्क (PHP unserialize, Ruby Marshal, SnakeYAML, आदि) को त्रुटि-आधारित पहचान मिलती है। गहराई के लिए पूर्ण श्रेणी सूचियों पर स्विच करने से पहले इसे हर पैरामीटर पर दागें।
1,353 के बजाय 83 अनुरोध। Burp Intruder के लिए ready/minimal/payloads-only.txt का उपयोग करें।
पूर्ण ऑपरेटर गाइड के लिए HOWTOUSE.md देखें। यह "मैं एक पैरामीटर देख रहा हूं, मैं उस पर क्या फेंकूं?" को एक दोहराने योग्य कार्यप्रवाह में बदल देता है:
7*7 का 49 लौटाना eval का संकेत, {{name}} का "Alice" के रूप में रेंडर होना SSTI की पुष्टि, डायग्नोस्टिक फ़ील्ड से ping आउटपुट लीक होना, OOB लॉग में User-Agent स्ट्रिंग्स फेचर लाइब्रेरी का नाम बताती हैं), आधुनिक-स्टैक ORM फुटगन (Prisma $queryRaw, Rails .order(), Hibernate JPQL concat, Mongoose findOne(req.body)), और पूरी सूची का उपयोग करने से पहले संदेह की पुष्टि करने के लिए सस्ती जांच सूचीबद्ध करती है।rO0AB = Java, AAEAAAD///// = .NET BinaryFormatter, BAg = Ruby Marshal, gASV = Python pickle P4, / = PHP unserialize, आदि) 16-एंट्री त्वरित-संदर्भ चीट-कार्ड और अस्पष्टता समाधान हेयुरिस्टिक्स के साथ। दागने से पहले ब्लॉब का फिंगरप्रिंट लें ताकि आप सभी 232 के बजाय 5-15 मिलान वाले पेलोड लोड करें।payloadctl prepare चलाने से पहले HOWTOUSE.md का उपयोग करें। पहले फिंगरप्रिंट, दूसरा न्यूनतम सूची, तीसरा श्रेणी ड्रिल-डाउन - हर पैरामीटर पर 1,353 पेलोड की शॉटगन नहीं।
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com
`prepare` चलाने के बाद, आपकी उपयोग के लिए तैयार फ़ाइलें `ready/full/` और `ready/minimal/` में समान संरचना के साथ उपलब्ध हैं:
| फ़ाइल | क्या है? | गणना |
|------|------|-------|
| `ready/minimal/payloads-only.txt` | **न्यूनतम -- 83 अनुरोध, सभी स्तंभ** | 83 |
| `ready/full/payloads-only.txt` | पूर्ण सूची, प्रति पंक्ति एक पेलोड | 1,353 |
| `ready/full/by-category/sqli.txt` | केवल SQL इंजेक्शन | 211 |
| `ready/full/by-category/ssti.txt` | केवल टेम्पलेट इंजेक्शन | 206 |
| `ready/full/by-category/deserialization.txt` | केवल डिसीरियलाइज़ेशन | 232 |
| `ready/full/by-category/os-cmd-injection.txt` | केवल OS कमांड इंजेक्शन | 120 |
| `ready/full/by-category/code-injection.txt` | केवल कोड इंजेक्शन | 123 |
| `ready/full/by-category/ssrf.txt` | केवल SSRF | 156 |
| `ready/full/by-category/path-traversal.txt` | केवल पथ ट्रैवर्सल | 113 |
| `ready/full/by-category/xss.txt` | केवल XSS | 58 |
| `ready/full/by-category/nosql.txt` | केवल NoSQL इंजेक्शन | 32 |
| `ready/full/by-category/format-string.txt` | केवल फ़ॉर्मेट स्ट्रिंग | 38 |
| `ready/full/by-category/el-injection.txt` | केवल एक्सप्रेशन भाषा | 34 |
| `ready/full/by-category/header-crlf.txt` | केवल CRLF/हेडर इंजेक्शन | 17 |
| `ready/full/by-category/prototype-pollution.txt` | केवल प्रोटोटाइप प्रदूषण | 12 |
| `ready/full/by-category/xxe.txt` | केवल XXE | 11 |
| `ready/full/by-category/ldap-injection.txt` | केवल LDAP इंजेक्शन | 35 |
| `ready/full/by-category/xslt-injection.txt` | केवल XSLT इंजेक्शन | 30 |
| `ready/full/by-category/elasticsearch-injection.txt` | केवल Elasticsearch | 30 |
| `ready/full/by-category/cypher-injection.txt` | केवल Neo4j/Cypher | 27 |
| `ready/full/by-category/couchdb-injection.txt` | केवल CouchDB | 5 |
| `ready/full/by-category/polyglots.txt` | क्रॉस-संदर्भ बहुभाषी | 246 |
| `ready/full/by-pillar/error-payloads-only.txt` | त्रुटि-आधारित पेलोड | 324 |
| `ready/full/by-pillar/timing-payloads-only.txt` | समय-आधारित (अंधा) | 227 |
| `ready/full/by-pillar/oob-payloads-only.txt` | आउट-ऑफ़-बैंड कॉलबैक | 209 |
| `ready/full/by-pillar/math-payloads-only.txt` | गणित कैनरी (1337) | 182 |
| `ready/full/by-pillar/reflected-payloads-only.txt` | परावर्तित/सीमा-मामला | 374 |
| `ready/full/encoded/url-encoded/payloads.txt` | URL-एन्कोडेड प्रकार | 1,353 |
| `ready/full/encoded/base64/payloads.txt` | Base64 प्रकार | 1,353 |
| `ready/full/encoded/json-safe/payloads.txt` | JSON-सुरक्षित प्रकार | 1,353 |
| `ready/full/encoded/double-url-encoded/payloads.txt` | दोहरा URL-एन्कोडेड | 1,353 |
| `ready/full/encoded/html-entity/payloads.txt` | HTML एंटिटी एन्कोडेड | 1,353 |
| `ready/full/encoded/hex-escaped/payloads.txt` | हेक्स-एस्केप्ड प्रकार | 1,353 |
| `ready/full/encoded/unicode-escaped/payloads.txt` | यूनिकोड-एस्केप्ड प्रकार | 1,353 |
`ready/minimal/` निर्देशिका न्यूनतम पेलोड सेट के साथ समान संरचना (by-category, by-pillar, encoded) को दर्शाती है।
कस्टम आउटपुट निर्देशिका:```bash
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com -o /path/to/engagement/payloads
Raw templates with {domain} placeholder (for scripted substitution) are in payloads/lists/full/ and payloads/lists/minimal/.
प्रत्येक पेलोड इनमें से कम से कम एक सिग्नल उत्पन्न करता है। अपने उत्तरों में इन्हें grep करें:
कैनरी मान: 1337 (प्राथमिक, 7*191 से) और 7331 (द्वितीयक). पहचान एक सरल grep है.
20 में से 13 श्रेणियों में सभी 4 स्तंभ हैं. जिन 7 में नहीं हैं (XSS, XSLT, Format String, Prototype Pollution, CRLF, XXE, CouchDB) उनमें आर्किटेक्चरल कारण हैं -- आप टाइमिंग-आधारित CRLF या OOB फॉर्मेट स्ट्रिंग नहीं कर सकते. जहाँ क्रॉस-पिलर संभव है, पॉलीग्लॉट्स अनुभाग इसे कवर करता है.
7 एन्कोडिंग फॉर्मेट, प्रत्येक में सभी 1,353 पेलोड:
न्यूनतम पेलोड, अधिकतम संदर्भ कवरेज. पूर्ण तकनीकी विनिर्देश और प्रति-इंजन स्तंभ तालिकाओं और सटीक पेलोड सिंटैक्स के लिए SPEC.md देखें।
पहले पॉलीग्लॉट्स. एक पेलोड एक साथ ', ", ), */, -->, backticks, और टेम्पलेट डिलीमीटर से बाहर निकलता है। पॉलीग्लॉट अनुभाग मास्टर सूची का नेतृत्व करते हैं।
प्रति-इंजन जहाँ पॉलीग्लॉट नहीं पहुँच सकते. SSTI डिलीमीटर और डिसीरियलाइजेशन फॉर्मेट मौलिक रूप से इंजनों के बीच असंगत हैं।
शेल के ऊपर बिल्ट-इन. OOB और टाइमिंग पेलोड भाषा-देशी लाइब्रेरी का उपयोग करते हैं:
payloadctl)```bash./tools/payloadctl prepare abc123.oastify.com # output -> ready/ ./tools/payloadctl prepare abc123.oastify.com -o /tmp/payloads # custom dir
./tools/payloadctl build # sources/ -> payloads/full.txt ./tools/payloadctl dist # full.txt + minimum.txt -> payloads/lists/full/ + lists/minimal/ ./tools/payloadctl validate # test all 1,353 payloads against 35 testbed stacks ./tools/payloadctl validate # test a specific wordlist (e.g. lists/minimal/master.txt) ./tools/payloadctl generate # regenerate computed payloads (deser, ssti, sqli, misc) ./tools/payloadctl generate deser # deserialization only ./tools/payloadctl generate ssti # SSTI only
### विशिष्ट विकास कार्यप्रवाह```bash
# 1. Edit source files
vim payloads/sources/sqli.txt
# 2. Rebuild
./tools/payloadctl build # rebuild full.txt from sources
./tools/payloadctl dist # regenerate lists/full/ + lists/minimal/
# 3. Validate (requires Docker testbeds running)
cd testbed && ./testbed up sqli-sqlite && cd ..
./tools/payloadctl validate # expect: N FIRE / 0 NO-FIRE / 0 SKIPPED
# 4. Prepare for use
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com
. ├── README.md # This file ├── HOWTOUSE.md # Operator guide: context profiling + category selection matrix ├── SPEC.md # Technical spec - per-engine pillars, payload syntax, coverage │ ├── tools/ # CLI and generators │ ├── payloadctl # CLI entry point │ ├── cmd_build.py # Build full.txt from source files │ ├── cmd_dist.py # Generate lists/ directory │ ├── cmd_validate.py # Validate payloads against testbeds │ ├── cmd_validate_strict.py # Strict validation (proves actual exploitation) │ ├── cmd_generate.py # Run payload generators │ ├── cmd_prepare.py # Prepare payloads with callback domain │ ├── generate-deser-final.py # Deserialization generator (31 frameworks) │ ├── generate-ssti-missing.py # SSTI generator (14 engines) │ ├── generate-sqli-code-missing.py # SQLi and code injection generator │ └── generate-misc-missing.py # XXE, XSS, SSRF, path traversal generator │ ├── payloads/ │ ├── full.txt # Master list (1,353 payloads, with ## headers) │ ├── sources/ # Source files (edit these, all validated) │ │ ├── minimum.txt # 83-payload minimal list (validated, all pillars) │ │ ├── polyglots-condensed.txt # Cross-context polyglots (first in master) │ │ ├── sqli.txt # SQL injection (204) │ │ ├── ssti.txt # Template injection (168) │ │ ├── deserialization.txt # Deserialization (116, 31 frameworks) │ │ ├── os-cmd-injection.txt # OS command injection (116) │ │ ├── code-injection.txt # Code injection (112, includes Groovy) │ │ ├── ssrf.txt # SSRF (117) │ │ ├── path-traversal.txt # Path traversal (98) │ │ ├── xss.txt # XSS (49) │ │ ├── format-string.txt # Format string (33) │ │ ├── nosql.txt # NoSQL (26) │ │ ├── el-injection.txt # Expression language (26, includes MVEL) │ │ ├── header-crlf.txt # CRLF/header (14) │ │ ├── prototype-pollution.txt # Prototype pollution (10) │ │ ├── xxe.txt # XXE (8) │ │ ├── ldap-injection.txt # LDAP injection (30) │ │ ├── xslt-injection.txt # XSLT injection (25) │ │ ├── elasticsearch-injection.txt # Elasticsearch (25) │ │ ├── cypher-injection.txt # Neo4j/Cypher (22) │ │ └── couchdb-injection.txt # CouchDB (4) │ └── lists/ # Generated (don't edit, use payloadctl dist) │ ├── full/ # Full payload set │ │ ├── master.txt # 1,353 payloads with ## headers │ │ ├── payloads-only.txt # Raw lines for Burp Intruder │ │ ├── by-category/ # 20 category files │ │ ├── by-pillar/ # 5 pillar files (with -payloads-only variants) │ │ └── encoded/ # 7 encoding variants │ └── minimal/ # Minimal payload set (same structure) │ ├── master.txt # 83 payloads with ## headers │ ├── payloads-only.txt # Raw lines for Burp Intruder │ ├── by-category/ # 20 category files │ ├── by-pillar/ # 5 pillar files (with -payloads-only variants) │ └── encoded/ # 7 encoding variants │ ├── ready/ # Output from payloadctl prepare (gitignored) │ └── testbed/ # Docker validation infrastructure ├── testbed # CLI: ./testbed up ├── docker-compose.oob.yml # OOB callback catcher (HTTP 9999, TCP 9998, DNS 5353) ├── shared/oob-catcher/ # HTTP + LDAP/binary + raw TCP + DNS callback server └── stacks/ # 35 vulnerable application stacks
---
## पेलोड जोड़ना
### मौजूदा श्रेणी में पेलोड जोड़ें
1. `payloads/sources/` में स्रोत फ़ाइल संपादित करें। `##Header##` अनुभाग के अंतर्गत प्रति पंक्ति एक पेलोड।
2. प्रत्येक पेलोड को एक पता लगाने योग्य संकेत उत्पन्न करना होगा (त्रुटि, गणित 1337, समय >4.5s, OOB, प्रतिबिंब)।
3. पुनः निर्माण करें और मान्य करें: ```bash
./tools/payloadctl build && ./tools/payloadctl dist
./tools/payloadctl validate # 0 NO-FIRE required
payloads/sources/<category>.txt बनाएं जिसमें प्रत्येक स्तंभ (त्रुटि, गणित, समय, OOB) के लिए ## हेडर हों।tools/cmd_build.py के SOURCE_FILES और tools/cmd_dist.py के CATEGORY_SOURCES में जोड़ें।testbed/stacks/<category>/ में एक टेस्टबेड स्टैक बनाएं (Dockerfile + सर्वर जो POST /<endpoint> को input=<payload> के साथ उजागर करता है और {"output": "...", "error": "...", "time_ms": N} लौटाता है)।tools/cmd_validate.py में एंडपॉइंट रूटिंग जोड़ें (ENDPOINTS डिक्शनरी और _get_endpoints() फ़ंक्शन)।tools/generate-deser-final.py संपादित करें - एक फ़ंक्शन जोड़ें जो पेलोड (त्रुटि, गणित, समय, OOB) आउटपुट करता है।./tools/payloadctl generate deser && ./tools/payloadctl buildpayloads/sources/ssti.txt संपादित करें - ##EngineName (Language) - Pillar## अनुभाग जोड़ें। समय/OOB के लिए भाषा के बिल्ट-इन का उपयोग करें।ssti-<language> स्टैक में टेस्टबेड एंडपॉइंट जोड़ें।tools/cmd_validate.py के ENGINE_MAP में रूटिंग जोड़ें।\n का उपयोग करता है){domain} प्लेसहोल्डर1337 कैनरी##Header## अनुभाग श्रेणी और स्तंभ के अनुसार समूहित करते हैंवैलिडेटर प्रत्येक पेलोड को वास्तविक कमजोर अनुप्रयोगों के विरुद्ध परीक्षण करता है:```bash
cd testbed ./testbed up sqli-sqlite ./testbed up ssti-python ./testbed up deserialization-java
cd .. ./tools/payloadctl validate
How it works:
1. पेलोड फ़ाइल पढ़ता है और प्रत्येक `##` सेक्शन को मैच करने वाले टेस्टबेड एंडपॉइंट(s) पर रूट करता है
2. POST `input=<पेलोड>` एंडपॉइंट(s) पर करता है, प्रतिक्रिया में सिग्नल चेक करता है
3. एक पेलोड फायर करता है यदि कोई एंडपॉइंट रिटर्न करता है: वास्तविक पार्सर/इंटरप्रेटर त्रुटि, सर्वर-गणना `1337` (`7*191` से), >4.5s देरी, लक्ष्य कंटेनर से OOB कॉलबैक, फ़ाइल-रीड सामग्री (`root:x:0:0`), या वैध संदर्भ में रिफ्लेक्टेड इनपुट (XSS, CRLF)
कड़ी मान्यता (`tools/cmd_validate_strict.py`) इसके अतिरिक्त सत्यापित करता है:
- गणित पेलोड सर्वर-साइड गणना साबित करते हैं (पेलोड `7*191` भेजता है, शाब्दिक `1337` नहीं)
- OOB कॉलबैक टेस्टबेड कंटेनर IP से उत्पन्न होते हैं
- त्रुटि संदेशों में वास्तविक पार्सर/इंटरप्रेटर हस्ताक्षर होते हैं, सामान्य HTTP त्रुटियाँ नहीं
- समय देरी अपेक्षित सीमा (~5 सेकंड) के भीतर आती है
### टेस्टबेड स्टैक (कुल 35)
| स्टैक | पोर्ट | भाषा | एंडपॉइंट |
|-------|------|----------|-----------|
| sqli-sqlite | 8001 | Python | `/sqli`, `/sqli-numeric` |
| sqli-postgres | 8030 | Python | `/sqli` |
| ssti-python | 8003 | Python | `/jinja2`, `/mako`, `/tornado` |
| ssti-node | 8011 | Node | `/ejs`, `/nunjucks`, `/pug` |
| ssti-php | 8020 | PHP | `/twig`, `/smarty` |
| ssti-ruby | 8025 | Ruby | `/erb`, `/slim`, `/haml` |
| ssti-java | 8040 | Java | `/freemarker`, `/velocity`, `/pebble`, `/thymeleaf` |
| os-cmd-injection | 8002 | Python | `/system`, `/popen` |
| code-injection-python | 8004 | Python | `/eval` |
| code-injection-node | 8012 | Node | `/eval` |
| code-injection-php | 8021 | PHP | `/eval` |
| code-injection-ruby | 8026 | Ruby | `/eval`, `/yaml`, `/marshal`, `/oj` |
| code-injection-perl | 8031 | Perl | `/eval`, `/storable`, `/yaml` |
| xss | 8010 | Node | `/reflected` |
| xxe | 8008 | Python | `/parse`, `/xinclude` |
| ssrf | 8007 | Python | `/fetch` |
| path-traversal | 8006 | Python | `/read` |
| nosql-redis | 8015 | Node | `/eval` |
| el-injection-java | 8041 | Java | `/spel`, `/ognl` |
| prototype-pollution | 8013 | Node | `/merge` |
| deserialization-python | 8005 | Python | `/pickle`, `/yaml`, `/jsonpickle` |
| deserialization-node | 8014 | Node | `/unserialize`, `/yaml`, `/funcster` |
| deserialization-php | 8022 | PHP | `/unserialize`, `/unserialize-b64`, `/phar` |
| deserialization-java | 8042 | Java | `/deserialize`, `/yaml`, `/jackson`, `/fastjson`, `/xstream`, `/xmldecoder`, `/hessian` |
| deserialization-dotnet | 8045 | .NET | `/jsonnet`, `/binaryformatter`, `/xmlserializer`, `/losformatter`, `/javascriptserializer` |
| log4j-jndi | 8046 | Java | `/log` |
| sqli-mysql | 8050 | Python | `/sqli`, `/sqli-numeric` |
| nosql-mongo | 8051 | Node | `/find`, `/where`, `/aggregate` |
| ssi-esi | 8035 | Python | `/ssi` |
| ldap-injection | 8055 | Python + OpenLDAP | `/search`, `/auth` |
| xslt-injection | 8056 | Python | `/transform`, `/xpath` |
| elasticsearch | 8057 | Python + ES 7.17 | `/search`, `/script` |
| cypher-injection | 8058 | Python + Neo4j 5 | `/query`, `/search` |
| couchdb-injection | 8059 | Python + CouchDB 3 | `/find` |
| groovy-injection | 8060 | Groovy/JDK 21 | `/eval` |
OOB कैचर पोर्ट 9999 पर (HTTP + LDAP/बाइनरी डिटेक्शन) और 9998 पर (रॉ TCP कैच-ऑल), DNS 5353/UDP पर। HTTP कॉलबैक, LDAP/ASN.1 बाइनरी कनेक्शन (JNDI), DNS क्वेरी, और रॉ TCP कनेक्शन का पता लगाता है। प्रत्येक एंडपॉइंट `POST /<sink>` को `input=<पेलोड>` के साथ स्वीकार करता है और `{"output": "...", "error": "...|null", "time_ms": N}` लौटाता है।
---
## श्रेय
पेलोड्स का अनुसंधान और विकास [Grom Hacks](https://github.com/gromhacks) द्वारा किया गया। यह सुरक्षा अनुसंधान समुदाय के कार्य पर आधारित है जिसमें PayloadsAllTheThings, HackTricks, PortSwigger Web Security Academy, और व्यक्तिगत शोधकर्ता शामिल हैं। सभी पेलोड्स को वास्तविक कमजोर अनुप्रयोगों के विरुद्ध मान्य किया गया है।
| पेलोड | श्रेणी | स्तंभ |
|---|
| 4 | SQLi | error, math, timing, OOB (क्रॉस-डायलेक्ट पॉलीग्लॉट) |
| 4 | SSTI | error, math, timing, OOB (क्रॉस-इंजन पॉलीग्लॉट) |
| 3 | OS Cmd | math, timing, OOB (क्रॉस-शेल पॉलीग्लॉट) |
| 3 | Code Injection | math, timing, OOB (क्रॉस-भाषा) |
| 2 | XSS | math, OOB |
| 2 | XXE | file-read, OOB |
| 2 | SSRF | error, OOB |
| 1 | Path Traversal | file-read |
| 2 | NoSQL | math, error |
| 1 | EL Injection | math |
| 1 | Prototype Pollution | math |
| 1 | CRLF/Header | math |
| 1 | Format String | error |
| 1 | SSI | math |
| 2 | LDAP Injection | error, math |
| 3 | XSLT Injection | error, math, OOB |
| 2 | Elasticsearch | error, math |
| 2 | Cypher/Neo4j | error, timing |
| 1 | CouchDB | error |
| 3 | Groovy | math, timing, OOB |
| 41 | Deserialization | बहु-स्तंभ जहां समर्थित, अन्यथा केवल त्रुटि |
TzoYToid=42 और JSESSIONID देखता हूँ" से "by-category/sqli.txt + Java डीसीरियलाइज़ेशन + EL इंजेक्शन आज़माएं, math स्तंभ देखें" तक एक लुकअप में पहुँचें।| स्तंभ | पेलोड्स | क्या देखें | कब उपयोग करें |
|---|
| Error | 324 | अपवाद टेक्स्ट, स्टैक ट्रेस, प्रतिक्रिया में पार्सर त्रुटि | एप त्रुटियों को दर्शाता है |
| Timing | 227 | प्रतिक्रिया में >4.5 सेकंड लगते हैं | ब्लाइंड - कोई आउटपुट नहीं, कोई त्रुटि नहीं |
| OOB | 209 | आपके कॉलबैक सर्वर पर आउटबाउंड HTTP/DNS/LDAP/TCP | ब्लाइंड + एसिंक - टाइमिंग अविश्वसनीय |
| Math | 182 | प्रतिक्रिया बॉडी में 1337 शाब्दिक (सर्वर ने 7*191 की गणना की) | आउटपुट रिफ्लेक्ट होता है लेकिन कोई त्रुटि नहीं |
| Reflected | 374 | प्रतिक्रिया में इनपुट मान प्रतिध्वनित होता है | पार्सर विसंगतियों के लिए फ़ज़िंग |
| File-read | (उपसमूह) | प्रतिक्रिया में root: या [extensions] सामग्री | पथ ट्रैवर्सल, XXE फ़ाइल पढ़ना |
| श्रेणी | गणना | स्तंभ | कवरेज |
|---|
| SQLi | 211 | error, math, timing, oob | MySQL, PostgreSQL, Oracle, MSSQL, SQLite, CockroachDB. UNION, error, timing, OOB. संदर्भ ब्रेकआउट: ', ", ), )), */, numeric. |
| SSTI | 206 | error, math, timing, oob | Jinja2, Mako, Tornado, EJS, Nunjucks, Pug, Twig, Smarty, ERB, Slim, Haml, Thymeleaf, Pebble, Freemarker, Velocity, Razor, Go template, Mustache, Liquid. सभी भाषा बिल्ट-इन का उपयोग करते हैं. |
| Deserialization | 232 | error, math, timing, oob | 31 फ्रेमवर्क / 7 भाषाएँ. सभी भाषा-देशी पेलोड बिल्ट-इन का उपयोग करते हैं (कोई शेल कमांड नहीं). Python (pickle P0/P2/P4 via time.sleep/builtins.eval/urllib, YAML via time.sleep/builtins.eval, jsonpickle), PHP (unserialize), Node (node-serialize via JS busy-wait/http.get, js-yaml, funcster, cryo), Ruby (YAML, Marshal, Oj), Java (Jackson, Fastjson, XStream, SnakeYAML, XMLDecoder, Hessian, JNDI/Log4Shell, ObjectInputStream, ysoserial URLDNS), .NET (Json.NET, BinaryFormatter, SoapFormatter, XmlSerializer, JavaScriptSerializer, LosFormatter, ViewState, ObjectStateFormatter), Perl (Storable, YAML). |
| OS Cmd Injection | 120 | error, math, timing, oob | Bash, CMD, PowerShell. ब्रेकआउट: ;, |, ||, &&, $(), backticks. IFS बायपास, ग्लोब बायपास, हेक्स एन्कोडिंग. |
| Code Injection | 123 | error, math, timing, oob | Python, Node, PHP, Ruby, Perl, Lua, Java ScriptEngine, Groovy. आयात-मुक्त CPU स्पिन, सॉकेट-स्तरीय OOB. |
| SSRF | 156 | error, math, timing, oob | क्लाउड मेटाडेटा (AWS/GCP/Azure), IP बायपास, प्रोटोकॉल स्कीम, DNS रीबाइंडिंग, आंतरिक सेवा जांच. |
| Path Traversal | 113 | error, math, timing, oob | Linux + Windows, एन्कोडिंग बायपास, नल बाइट, PHP रैपर, UNC, NTFS ADS, 8.3 छोटे नाम. |
| XSS | 58 | error, math, oob | क्रॉस-कॉन्टेक्स्ट पॉलीग्लॉट्स (20+ कॉन्टेक्स्ट), इवेंट हैंडलर, फ़िल्टर एवेज़न, DOM क्लोबरिंग, म्यूटेशन XSS, SVG, OOB. |
| Format String | 38 | error, math | C/C++ (%s%n%x), Python ({0.__class__}), .NET ({0:X}). |
| NoSQL | 32 | error, math, timing, oob | MongoDB ऑपरेटर इंजेक्शन, $where टाइमिंग, OOB, Redis कमांड. |
| EL Injection | 34 | error, math, timing, oob | SpEL, OGNL, MVEL, Unified EL. java.net.URL के माध्यम से OOB. |
| CRLF/Header | 17 | error, math, oob | रिस्पॉन्स स्प्लिटिंग, हेडर इंजेक्शन, Host हेडर के माध्यम से OOB. |
| Prototype Pollution | 12 | error, math | __proto__, constructor.prototype, JSON और क्वेरी स्ट्रिंग वेरिएंट. |
| XXE | 11 | error, timing, oob, file-read | एक्सटर्नल एंटिटीज़, XInclude, पैरामीटर एंटिटीज़, Billion Laughs DoS. |
| LDAP Injection | 35 | error, math, timing, oob | फ़िल्टर इंजेक्शन, प्रमाणीकरण बायपास, वाइल्डकार्ड टाइमिंग, रेफरल OOB. |
| Elasticsearch | 30 | error, math, timing, oob | Painless स्क्रिप्ट इंजेक्शन, क्वेरी DSL, query_string सिंटैक्स. |
| Cypher/Neo4j | 27 | error, math, timing, oob | Cypher क्वेरी इंजेक्शन, APOC स्लीप, LOAD CSV OOB. |
| CouchDB | 5 | error, math | Mango क्वेरी इंजेक्शन, ऑपरेटर इंजेक्शन, प्रमाणीकरण बायपास. |
| XSLT Injection | 30 | error, math, oob, file-read | XPath गणित, document() SSRF, फ़ाइल पढ़ना, system-property() जानकारी लीक. |
| Polyglots/Edge Cases | 246 | error, math, timing, oob | क्रॉस-कॉन्टेक्स्ट पॉलीग्लॉट्स + बफर ओवरफ्लो, इंटीजर बाउंड्री, टाइप कन्फ्यूजन, नल बाइट. |
| एन्कोडिंग | उपयोग का मामला |
|---|
| URL-encoded | मानक क्वेरी/फॉर्म पैरामीटर |
| Double-URL-encoded | WAF बायपास, डबल-डीकोड भेद्यताएँ |
| Base64 | API बॉडी, JWT, सीरियलाइज़्ड पैरामीटर |
| JSON-safe | JSON अनुरोध निकाय (एस्केप किए गए उद्धरण) |
| HTML entity | HTML विशेषता इंजेक्शन |
| Hex-escaped | बाइनरी प्रोटोकॉल, निम्न-स्तरीय इंजेक्शन |
| Unicode-escaped | यूनिकोड सामान्यीकरण बायपास |
| भाषा | OOB बिल्ट-इन | टाइमिंग बिल्ट-इन |
|---|
| Python | urllib.request.urlopen() | time.sleep(5) |
| Java | java.net.URL.openStream() | Thread.sleep(5000) |
| Node | require('http').get() | Date.now() बिज़ी-वेट लूप |
| PHP | file_get_contents(), fsockopen() | sleep(5) |
| Ruby | Net::HTTP.get(), TCPSocket.new() | sleep(5) |
| Perl | IO::Socket::INET | select(undef,undef,undef,5) |
| .NET | System.Net.WebClient | Thread.Sleep(5000) |
शेल कमांड (curl, nslookup) OS और PATH पर निर्भर करते हैं. बिल्ट-इन हर जगह काम करते हैं.
जहाँ संभव हो आयात-मुक्त. CPU स्पिन टाइमिंग तब भी काम करती है जब आयात अवरुद्ध हों:
sum(range(500000000)) (~7s, कोई आयात नहीं)Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,5000) (सटीक 5s)99999999.times{1+1}फॉलबैक के रूप में सॉकेट-स्तरीय OOB. जब HTTP लाइब्रेरी अवरुद्ध हों: __import__('socket').create_connection(), fsockopen(), TCPSocket.new(), new java.net.Socket().
./tools/payloadctl validate