
Rust में लिखा async API सुरक्षा स्कैनर जो CORS, CSP, GraphQL, JWT, OpenAPI और सक्रिय API पोस्चर जाँच के लिए है।
यदि यह प्रोजेक्ट आपके काम में सहायक है, तो निरंतर रखरखाव और नई सुविधाओं का समर्थन करें।
ETH दान वॉलेट
0x11282eE5726B3370c8B480e321b3B2aA13686582
ऊपर दिया गया QR कोड स्कैन करें या वॉलेट पता कॉपी करें।
API बेसलाइन परीक्षण और रिग्रेशन पहचान हेतु एसिंक्रोनस, मॉड्यूलर API सुरक्षा स्कैनर।
अनुकूली समवर्तीता और CI-तैयार आउटपुट (NDJSON/SARIF) का उपयोग करके डिस्कवरी को लक्षित जाँचों (CORS/CSP/GraphQL/OpenAPI/JWT/API सुरक्षा) के साथ जोड़ता है।
उपयोग-मामले: रेड-टीम/API पेंटेस्ट डिस्कवरी और एक्सप्लॉइट सत्यापन के लिए आक्रमण (offense), तथा CI/CD रिग्रेशन गेटिंग, निरंतर API सख्तीकरण और प्रारंभिक गलत-कॉन्फ़िगरेशन पहचान के लिए रक्षा (defense)।
बड़े पैमाने पर स्कैन करना? Triage मोड देखें — मुख्य सुरक्षा जाँचों के साथ 20 मिनट में 5000 लक्ष्यों को स्कैन करें, फिर निष्कर्षों में खतरे की खुफिया जानकारी (पोर्ट, CVE, ASN, डोमेन आयु) जोड़ने के लिए Enrich मोड का उपयोग करें।
ApiHunterapihunterapi_scannerapihunter (cargo run के लिए डिफ़ॉल्ट)खोज-क्षमता के लिए इन्हें GitHub रिपॉजिटरी सेटिंग्स में सेट करें:
Async API security scanner for CORS/CSP/GraphQL/JWT/OpenAPI and active API posture checks.https://github.com/Teycir/ApiHunterrust, security, api-security, scanner, graphql, cors, csp, jwt, openapi, sarif, ndjsonflowchart LR A[CLI apihunter] --> B[main.rs] D[Input Sources] --> E[Pre-filter + Discovery] B --> C[HttpClient + Config] E --> F[runner.rs] C --> F
F --> G1[Passive scanners]
F --> G2[Active scanners]
I[template-tool] --> H[CVE templates]
H --> G2
G1 --> J[Findings]
G2 --> J
J --> K[Reporter]
K --> L[Auto Reports]
K --> M[CI/CD Controls]
## ApiHunter क्यों?
### मुख्य लाभ
- **API-प्रथम आर्किटेक्चर**: REST/GraphQL API के लिए विशेष रूप से निर्मित, वेब ऐप स्कैनर से रूपांतरित नहीं
- **बुद्धिमान गलत-सकारात्मक न्यूनीकरण**:
- कैनरी प्रोबिंग के साथ SPA कैच-ऑल पहचान
- संदर्भ-जागरूक गुप्त सत्यापन (फ्रंटएंड बनाम बैकएंड)
- बॉडी सामग्री सत्यापन और रेफरर जाँच
- डुप्लिकेट निष्कर्षों को छोड़ने के लिए प्रतिक्रिया फिंगरप्रिंटिंग
- **डिज़ाइन से उत्पादन-सुरक्षित**:
- त्रुटियों पर पीछे हटने वाली अनुकूली समवर्तीता (AIMD)
- कॉन्फ़िगर करने योग्य विलंब के साथ प्रति-होस्ट दर सीमा
- विनम्रता नियंत्रण (पुनः प्रयास, टाइमआउट, WAF से बचाव)
- सक्रिय जाँच के लिए ड्राई-रन मोड
- **चुपके और बचाव**:
- क्यूरेटेड पूल से रनटाइम User-Agent रोटेशन (assets/user_agents.txt)
- जिटर के साथ यादृच्छिक अनुरोध विलंब
- प्रति-होस्ट विलंब प्रवर्तन (बर्स्ट पैटर्न से बचाता है)
- एक्सपोनेंशियल बैकऑफ़ के साथ पुनः प्रयास तर्क
- वैध ट्रैफ़िक के साथ घुलने-मिलने के लिए कस्टम हेडर इंजेक्शन
- सर्वर प्रतिक्रियाओं के आधार पर अनुकूली समय
- डिफ़ॉल्ट मोड में कोई हार्डकोडेड स्कैनर फिंगरप्रिंट नहीं
### स्टेल्थ तकनीकों पर गहन चर्चा
ApiHunter WAF (वेब एप्लिकेशन फ़ायरवॉल) और बॉट सुरक्षा प्रणालियों द्वारा पहचान से बचने के लिए कई स्टेल्थ तकनीकों का उपयोग करता है:
#### 1. User-Agent रोटेशन
**यह क्या करता है:** एक फ़ाइल से 100+ वास्तविक ब्राउज़र User-Agent स्ट्रिंग्स के बीच यादृच्छिक रूप से चक्रण करता है (`assets/user_agents.txt`)
**यह क्यों काम करता है:** बॉट आमतौर पर एक ही User-Agent का उपयोग करते हैं (जैसे `curl/7.68.0`). Chrome, Firefox, Safari, आदि होने का दिखावा करके, आप वैध ट्रैफ़िक में घुल-मिल जाते हैं
**सरल उपमा:** हमेशा एक ही वर्दी पहनने के बजाय अलग-अलग भेष बदलने जैसा
#### 2. यादृच्छिक समय और जिटर
**यह क्या करता है:** जिटर (छोटे यादृच्छिक बदलाव) के साथ अनुरोधों के बीच यादृच्छिक विलंब जोड़ता है (`--delay-ms` द्वारा नियंत्रित)
**यह क्यों काम करता है:** बॉट सही अंतराल पर अनुरोध भेजते हैं (ठीक 100ms के अंतर पर). मनुष्य अप्रत्याशित होते हैं. यादृच्छिक समय ट्रैफ़िक को जैविक दिखाता है
**सरल उपमा:** रोबोट की तरह मार्च करने के बजाय अनियमित कदमों से चलना
#### 3. प्रति-होस्ट विलंब प्रवर्तन
**यह क्या करता है:** प्रत्येक डोमेन के लिए विलंब को अलग-अलग ट्रैक करता है, वैश्विक रूप से नहीं
**यह क्यों काम करता है:** बर्स्ट पैटर्न को रोकता है जहाँ आप एक होस्ट को तुरंत 50 बार हिट करते हैं. प्रत्येक होस्ट विनम्र, दूरी वाले अनुरोध देखता है
**सरल उपमा:** एक ही व्यक्ति पर बार-बार चिल्लाने के बजाय विभिन्न बातचीत में बारी-बारी से भाग लेना
#### 4. अनुकूली समवर्तीता (AIMD)
**यह क्या करता है:** 429 (दर सीमा) या 503 (सर्वर व्यस्त) त्रुटियाँ मिलने पर स्वचालित रूप से धीमा हो जाता है, सफलता मिलने पर गति बढ़ाता है
**यह क्यों काम करता है:** पकड़े जाने पर पीछे हटता है, ब्राउज़रों के पुनः प्रयास करने के तरीके की नकल करता है. WAF देखते हैं "यह क्लाइंट हमारी सीमाओं का सम्मान करता है"
**सरल उपमा:** ट्रैफ़िक जाम होने पर धीमा होना, खुली सड़कों पर गति बढ़ाना
#### 5. एक्सपोनेंशियल बैकऑफ़ के साथ पुनः प्रयास
**यह क्या करता है:** जब कोई अनुरोध विफल होता है, तो पुनः प्रयास करने से पहले 1s, फिर 2s, फिर 4s प्रतीक्षा करता है
**यह क्यों काम करता है:** वैध क्लाइंट शालीनता से पुनः प्रयास करते हैं. बॉट अक्सर तुरंत हमला करते हैं या हार मान जाते हैं
**सरल उपमा:** दरवाज़े पर दस्तक देना, लगातार पीटने के बजाय हर बार अधिक समय प्रतीक्षा करना
#### 6. कोई स्कैनर फिंगरप्रिंट नहीं
**यह क्या करता है:** `X-Scanner: ApiHunter` जैसे हेडर या अनुमानित पैटर्न नहीं भेजता
**यह क्यों काम करता है:** कई उपकरण हस्ताक्षर छोड़ते हैं (Nuclei templates, sqlmap patterns). ApiHunter स्पष्ट मार्करों से बचता है
**सरल उपमा:** "सुरक्षा परीक्षक" कहने वाला नाम टैग नहीं पहनना
#### 7. कनेक्शन पुन: उपयोग और पूलिंग
**यह क्या करता है:** प्रति-होस्ट HTTP क्लाइंट पूल का उपयोग करता है, कनेक्शन को सक्रिय रखता है
**यह क्यों काम करता है:** ब्राउज़र कनेक्शन का पुन: उपयोग करते हैं. हर अनुरोध के लिए खोलना/बंद करना संदिग्ध लगता है
**सरल उपमा:** दरवाज़ा बंद करके फिर से घंटी बजाने के बजाय दरवाज़ा खुला रखना
#### 8. कस्टम हेडर इंजेक्शन
**यह क्या करता है:** `Referer`, `X-Forwarded-For`, कस्टम कुकीज़ जैसे हेडर जोड़ सकता है
**यह क्यों काम करता है:** अनुरोधों को एक वैध एप्लिकेशन प्रवाह से आया हुआ दिखाता है (लिंक पर क्लिक किया, सत्र कुकीज़ हैं)
**सरल उपमा:** बाड़ कूदने के बजाय स्थल में प्रवेश करते समय टिकट स्टब दिखाना
#### पहचान तुलना
| तकनीक | बिना बचाव के | बचाव के साथ |
|-----------|----------------|-------------|
| **User-Agent** | `python-requests/2.28.0` (स्पष्ट बॉट) | `Mozilla/5.0 (Windows NT 10.0; Win64; x64)...` (Chrome जैसा दिखता है) |
| **Timing** | सटीक 100ms अंतराल → WAF ब्लॉक करता है | 120ms, 95ms, 180ms → मानव जैसा दिखता है |
| **Retries** | तुरंत पुनः प्रयास → प्रतिबंध | 1s→2s→4s प्रतीक्षा → "धैर्यवान क्लाइंट" |
| **Concurrency** | 100 समानांतर हिट → अलार्म | प्रतिक्रिया के आधार पर अनुकूली 5→10→3 → "विनम्र ब्राउज़र" |
#### `--waf-evasion` कब उपयोग करें
- Cloudflare/Akamai/AWS WAF के साथ उत्पादन API का परीक्षण करना
- बड़े स्कैन के दौरान IP प्रतिबंधों से बचना
- पैठ परीक्षण जहाँ आपको नज़रों से दूर रहने की आवश्यकता होती है
- **CI/CD मूल (Native)**:
- बेसलाइन डिफिंग (केवल नए निष्कर्षों की रिपोर्ट करें)
- रीयल-टाइम मॉनिटरिंग के लिए स्ट्रीमिंग NDJSON आउटपुट
- GitHub/GitLab कोड स्कैनिंग के लिए SARIF 2.1.0
- पाइपलाइन नियंत्रण के लिए एग्ज़िट कोड बिटमास्क
- गंभीरता-आधारित फ़िल्टरिंग और विफलता सीमाएँ
- **पैमाने पर प्रदर्शन**:
- शून्य-लागत अमूर्तताओं के साथ Rust async रनटाइम (tokio)
- सेमाफोर-सीमित समानांतरता के साथ समवर्ती स्कैनिंग
- कनेक्शन बाधाओं से बचने के लिए प्रति-होस्ट HTTP क्लाइंट पूल
- कुशल मेमोरी उपयोग (कोई GC रुकावट नहीं)
- **व्यापक प्रमाणीकरण समर्थन**:
- कुकी/हेडर निष्कर्षण के साथ JSON-आधारित प्रमाणीकरण प्रवाह
- द्वि-पहचान IDOR/BOLA परीक्षण
- सत्र फ़ाइल आयात (Excalibur एकीकरण)
- Bearer, Basic, और कस्टम हेडर प्रमाणीकरण
- विशेषाधिकार वृद्धि जाँच के लिए स्वचालित अन-प्रमाणित क्लाइंट
## स्कैनर मॉड्यूल
ApiHunter में 13 अंतर्निहित स्कैनर मॉड्यूल शामिल हैं. विस्तृत पहचान तर्क के लिए [docs/scanners.md](https://github.com/teycir/apihunter/blob/HEAD/docs/scanners.md) देखें.
| स्कैनर | प्रकार | यह क्या पहचानता है |
|---------|------|----------------|
| **CORS** | निष्क्रिय | वाइल्डकार्ड ऑरिजिन, क्रेडेंशियल्स के साथ परावर्तित ऑरिजिन, नल ऑरिजिन स्वीकृति, regex बायपास कमजोरियाँ (सफ़िक्स/प्रीफ़िक्स हमले), गुम Vary: Origin, असुरक्षित प्रीफ़्लाइट विधियाँ |
| **CSP** | निष्क्रिय | गुम Content-Security-Policy, unsafe-inline/unsafe-eval निर्देश, वाइल्डकार्ड स्रोत, बायपास करने योग्य CDN होस्ट (JSONP गैजेट), गुम frame-ancestors |
| **GraphQL** | निष्क्रिय | इंट्रोस्पेक्शन सक्षम, संवेदनशील स्कीमा फ़ील्ड (user/password/token प्रकार), फ़ील्ड सुझाव (स्कीमा रिसाव), क्वेरी बैचिंग, उपनाम एम्प्लीफिकेशन (DoS), GraphiQL/Playground एक्सपोज़र |
| **JWT** | निष्क्रिय | alg=none टोकन, कमजोर HS256 सीक्रेट (वर्डलिस्ट-आधारित), गुम/अत्यधिक समाप्ति, पेलोड में संवेदनशील दावे, एल्गोरिथम भ्रम कमजोरियाँ |
| **OpenAPI** | निष्क्रिय | गुम सुरक्षा योजनाएँ, बिना प्रमाणीकरण आवश्यकताओं वाले ऑपरेशन, फ़ाइल अपलोड एंडपॉइंट, अभी भी मौजूद पुराने ऑपरेशन, असुरक्षित संवेदनशील एंडपॉइंट |
| **API Versioning** | निष्क्रिय | संस्करण हेडर प्रकटीकरण, समवर्ती विरासत/नए API संस्करण, डिप्रिकेशन हेडर, और सौम्य क्वेरी/संस्करण वेरिएंट में प्रतिक्रिया बहाव (साथ ही `--response-diff-deep` के माध्यम से गहन मोड) |
| **gRPC/Protobuf** | निष्क्रिय + सक्रिय | gRPC ट्रांसपोर्ट/कंटेंट-टाइप सिग्नल, protobuf सतह संकेत, और वैकल्पिक रिफ्लेक्शन/हेल्थ प्रोब सिग्नल |
| **API Security** | निष्क्रिय + सक्रिय | गुम सुरक्षा हेडर (X-Content-Type-Options, X-Frame-Options), सर्वर संस्करण प्रकटीकरण, संवेदनशील पथों तक अन-प्रमाणित पहुँच, HTTP विधि गणना, डिबग एंडपॉइंट, गुप्त एक्सपोज़र पैटर्न, सक्रिय IDOR/BOLA जाँच (बॉडी + चयनित हेडर तुलना), ब्लाइंड SSRF कॉलबैक प्रोब, और गेटवे/बायपास प्रोब सिग्नल |
| **Mass Assignment** | सक्रिय | परावर्तित संवेदनशील फ़ील्ड (is_admin, role, permissions), संग्रहीत स्थिति परिवर्तन, फ़ील्ड इंजेक्शन के माध्यम से विशेषाधिकार वृद्धि |
| **OAuth/OIDC** | सक्रिय | रीडायरेक्ट URI सत्यापन बायपास, गुम state पैरामीटर, PKCE समर्थन समस्याएँ (गुम S256, प्लेन की अनुमति), इम्प्लिसिट फ्लो सक्षम, पासवर्ड ग्रांट सक्षम |
| **Rate Limit** | सक्रिय | गुम दर सीमा (बर्स्ट प्रोब), गुम Retry-After हेडर, IP हेडर स्पूफिंग बायपास (X-Forwarded-For) |
| **WebSocket** | सक्रिय | सामान्य पथों पर WebSocket अपग्रेड स्वीकृति, गुम ऑरिजिन सत्यापन, अन-प्रमाणित WebSocket कनेक्शन |
| **CVE Templates** | सक्रिय | `assets/cve_templates/*.toml` से टेम्पलेट-संचालित CVE पहचान (वर्तमान में 168 टेम्पलेट), बेसलाइन बनाम बायपास डिफरेंशियल मिलान |
**निष्क्रिय स्कैनर** डिफ़ॉल्ट रूप से चलते हैं और तैयार किए गए अनुरोध भेजे बिना प्रतिक्रियाओं का विश्लेषण करते हैं.
**सक्रिय स्कैनर/जाँच** के लिए `--active-checks` की आवश्यकता होती है और वे संभावित रूप से आक्रामक प्रोब भेजते हैं (IDOR/BOLA, म्यूटेशन, बायपास परीक्षण).
IDOR/BOLA `API Security` स्कैनर के अंतर्गत आता है (कोई समर्पित `--no-idor` फ़्लैग नहीं है; इसे अक्षम करने के लिए `--no-api-security` का उपयोग करें).
### मॉड्यूल आउटपुट और सिग्नल नोट्स
ये नोट्स संक्षेप में बताते हैं कि निष्कर्ष कैसे उत्सर्जित होते हैं और सामान्यतः शोर किस कारण होता है:
| मॉड्यूल | निष्कर्ष उपसर्ग / आकार | सामान्य गलत-सकारात्मक | सामान्य गलत-नकारात्मक |
|---------|-------------------------|-------------------------|-------------------------|
| CORS | `cors/*` ऑरिजिन/साक्ष्य फ़ील्ड के साथ | गैर-संवेदनशील रूट्स पर प्रतिबिंब | ऑरिजिन जाँच केवल प्रमाणित रूट्स पर लागू होती है |
| CSP | `csp/*` निर्देश साक्ष्य के साथ | माइग्रेशन के दौरान जानबूझकर लागू विरासती CSP | CSP केवल उत्पादन CDN एज पथ पर दिया गया |
| GraphQL | `graphql/*` एंडपॉइंट + क्षमता सिग्नल के साथ | आंतरिक/परीक्षण टेनेंट के लिए सार्वजनिक प्लेग्राउंड | स्कीमा नियंत्रण केवल प्रमाणीकरण के बाद सक्षम |
| JWT | `jwt/*` टोकन दावे/हेडर साक्ष्य के साथ | सिंथेटिक प्रतिक्रियाओं में परीक्षण/डेमो टोकन | स्कैन की गई प्रतिक्रियाओं में टोकन कभी दिखाई नहीं देता |
| OpenAPI | `openapi/*` ऑपरेशन/सुरक्षा संदर्भ के साथ | स्पेक में जानबूझकर पुराने लेकिन अवरुद्ध एंडपॉइंट शामिल हैं | स्पेक अनुपलब्ध या निजी दस्तावेज़ों में विभाजित |
| API Versioning | `api_versioning/*` + `response_diff/*` | नियंत्रित माइग्रेशन के दौरान कई समर्थित संस्करण | संस्करणित पथ वर्तमान सीड सेट से खोजे नहीं जा सकते |
| gRPC/Protobuf | `grpc_protobuf/*` ट्रांसपोर्ट/रिफ्लेक्शन साक्ष्य के साथ | खुले RPC सतह के बिना एज प्रॉक्सी पर gRPC-जैसे मेटाडेटा | gRPC एंडपॉइंट अलग होस्ट/पथ के पीछे सीड सेट से नहीं पहुँचे |
| API Security | `api_security/*` हेडर/पथ/विधि साक्ष्य के साथ | गैर-प्रोड में जानबूझकर उजागर डिबग/परीक्षण एंडपॉइंट | नियंत्रण प्रमाणीकरण/सत्र संदर्भ के पीछे लागू |
| Mass Assignment | `mass_assignment/*` परावर्तित/संग्रहीत डेल्टा के साथ | प्रतिध्वनि व्यवहार जो बैकएंड स्थिति को संग्रहीत नहीं करता | म्यूटेशन छिपे सत्यापन नियमों द्वारा अस्वीकृत |
| OAuth/OIDC | `oauth/*` रीडायरेक्ट/मेटाडेटा साक्ष्य के साथ | ढीली नीतियों वाला गैर-उत्पादन IdP कॉन्फ़िगरेशन | मेटाडेटा में दृश्यमान नहीं होने वाला गतिशील नीति प्रवर्तन |
| Rate Limit | `rate_limit/*` बर्स्ट/429 व्यवहार के साथ | वैश्विक ट्रैफ़िक शेपिंग ऐप-स्तरीय लिमिटर व्यवहार को छुपाती है | लंबी-विंडो लिमिटर छोटे प्रोब विंडो द्वारा ट्रिगर नहीं होते |
| WebSocket | `websocket/*` अपग्रेड/ऑरिजिन जाँच के साथ | सार्वजनिक WS एंडपॉइंट जानबूझकर अनाम | हैंडशेक हेडर के माध्यम से आवश्यक प्रमाणीकरण प्रोब में प्रदान नहीं किया गया |
| CVE Templates | `cve/<id>/<check>` टेम्पलेट साक्ष्य के साथ | सामान्य एंडपॉइंट्स पर फिंगरप्रिंट टकराव | कमजोर पथ/संदर्भ सीड URL से नहीं पहुँचा |
जाँच-दर-जाँच विवरण और उपचार मार्गदर्शन के लिए, [docs/scanners.md](https://github.com/teycir/apihunter/blob/HEAD/docs/scanners.md) और [docs/findings.md](https://github.com/teycir/apihunter/blob/HEAD/docs/findings.md) देखें.
स्कैनर दस्तावेज़ों में अब स्रोत-संरेखित [Module Check Catalog](https://github.com/teycir/apihunter/blob/HEAD/docs/scanners.md#module-check-catalog) और [False-Positive Expectation Model](https://github.com/teycir/apihunter/blob/HEAD/docs/scanners.md#false-positive-expectation-model) शामिल हैं.
## विशेषताएँ
### निष्क्रिय सुरक्षा विश्लेषण
- **CORS गलत कॉन्फ़िगरेशन पहचान**:
- लक्ष्य डोमेन के आधार पर गतिशील ऑरिजिन उत्पादन
- Regex बायपास परीक्षण (सफ़िक्स/प्रीफ़िक्स हमले)
- क्रेडेंशियल-जागरूक गंभीरता स्कोरिंग
- वाइल्डकार्ड और नल ऑरिजिन पहचान
- **CSP नीति विश्लेषण**:
- गुम/कमजोर Content Security Policy पहचान
- असुरक्षित inline/eval निर्देश
- वाइल्डकार्ड स्रोत पहचान
- नीति बायपास पैटर्न
- **GraphQL सुरक्षा**:
- इंट्रोस्पेक्शन क्वेरी पहचान
- संवेदनशील प्रकार/फ़ील्ड नाम विश्लेषण
- क्वेरी बैचिंग समर्थन पहचान
- उपनाम एम्प्लीफिकेशन (DoS) प्रोबिंग
- सक्रिय म्यूटेशन फ़ज़िंग (`--active-checks`, `--dry-run` समर्थन करता है)
- GraphiQL/Playground एक्सपोज़र
- **JWT टोकन विश्लेषण**:
- एल्गोरिथम भ्रम (alg=none, HS256→RS256)
- कमजोर सीक्रेट पहचान (क्यूरेटेड वर्डलिस्ट)
- लंबे समय तक जीवित टोकन पहचान (गुम/अत्यधिक exp)
- संवेदनशील दावा एक्सपोज़र
- हेडर और कुकीज़ से टोकन निष्कर्षण
- **OpenAPI/Swagger विश्लेषण**:
- सुरक्षा योजना सत्यापन
- फ़ाइल अपलोड एंडपॉइंट पहचान
- पुराने ऑपरेशन को फ़्लैग करना
- गुम सुरक्षा परिभाषाएँ
- प्रदर्शन के लिए स्पेक कैशिंग
- **gRPC/Protobuf कवरेज**:
- gRPC प्रतिक्रिया मेटाडेटा/कंटेंट-टाइप पहचान
- एंडपॉइंट मेटाडेटा/पथ आकृति से Protobuf सतह संकेत पहचान
- ज्ञात gRPC पथों पर वैकल्पिक रिफ्लेक्शन/हेल्थ सक्रिय प्रोब सिग्नल
- **गुप्त एक्सपोज़र पहचान**:
- AWS कुंजियाँ (AKIA*, secret keys)
- Google API कुंजियाँ (AIza*)
- GitHub टोकन (ghp_*, github_pat_*)
- Slack टोकन (xox*)
- Stripe कुंजियाँ (sk_live_*, pk_live_*)
- डेटाबेस URL, निजी कुंजियाँ, bearer टोकन
- संदर्भ-जागरूक सत्यापन (गलत-सकारात्मक कम करता है)
- **API सुरक्षा जाँच**:
- HTTP विधि गणना
- डिबग एंडपॉइंट पहचान
- निर्देशिका लिस्टिंग एक्सपोज़र
- Security.txt उपस्थिति
- प्रतिक्रिया हेडर विश्लेषण (HSTS, X-Frame-Options, आदि)
- त्रुटि संदेश प्रकटीकरण
### सक्रिय सुरक्षा परीक्षण (--active-checks)
- **API सुरक्षा IDOR/BOLA जाँच** (3-स्तरीय दृष्टिकोण):
- अन-प्रमाणित पहुँच परीक्षण
- बॉडी फिंगरप्रिंट और स्थिर हेडर स्नैपशॉट के माध्यम से प्रतिक्रिया तुलना
- ID गणना (±2 रेंज वॉक)
- क्रॉस-यूज़र प्राधिकरण बायपास (द्वि-पहचान)
- कॉलबैक-शैली क्वेरी पैरामीटर के माध्यम से ब्लाइंड SSRF कॉलबैक प्रोबिंग (`APIHUNTER_OAST_BASE`, `--dry-run` समर्थन करता है)
- गेटवे फिंगरप्रिंट और बायपास प्रोबिंग (`api_security/gateway-*`)
- **मास असाइनमेंट कमजोरियाँ**:
- परावर्तित संवेदनशील फ़ील्ड इंजेक्शन
- संग्रहीत स्थिति परिवर्तन पहचान
- बेसलाइन→म्यूटेट→पुष्टि सत्यापन
- फ़ील्ड इंजेक्शन के माध्यम से विशेषाधिकार वृद्धि
- **OAuth/OIDC सुरक्षा**:
- रीडायरेक्ट URI सत्यापन बायपास
- State पैरामीटर हैंडलिंग
- PKCE समर्थन पहचान
- मेटाडेटा कॉन्फ़िगरेशन हार्डनिंग
- इम्प्लिसिट फ्लो और पासवर्ड ग्रांट पहचान
- **दर सीमा (Rate Limiting)**:
- बर्स्ट अनुरोध प्रोबिंग
- गुम दर सीमा पहचान
- Retry-After हेडर सत्यापन
- IP हेडर स्पूफिंग बायपास परीक्षण
- **WebSocket सुरक्षा**:
- सामान्य पथों पर अपग्रेड स्वीकृति
- ऑरिजिन सत्यापन परीक्षण
- गुम प्रमाणीकरण जाँच
- **CVE टेम्पलेट इंजन**:
- TOML-आधारित टेम्पलेट कैटलॉग
- Nuclei YAML आयात समर्थन
- बेसलाइन बनाम बायपास डिफरेंशियल मिलान
- होस्ट+टेम्पलेट डिडुप्लिकेशन
- लोडर गुणवत्ता गेट अमान्य/असुरक्षित अनुरोध टेम्पलेट छोड़ देते हैं (उदाहरण के लिए अनसुलझे अनुरोध प्लेसहोल्डर)
- खंड-जागरूक संदर्भ मिलान व्यापक पथ-उपस्ट्रिंग अति-ट्रिगरिंग को कम करता है
- वर्तमान स्थानीय कैटलॉग: 168 टेम्पलेट (क्यूरेटेड हार्डनड जाँच शामिल हैं जैसे CVE-2022-22947, CVE-2021-29442, CVE-2021-29441, CVE-2020-13945, CVE-2021-45232, CVE-2022-24288)
### खोज और गणना
- **एंडपॉइंट खोज**:
- robots.txt पार्सिंग
- sitemap.xml पार्सिंग
- OpenAPI/Swagger स्पेक आयात
- HAR फ़ाइल आयात (Excalibur एकीकरण)
- Postman/Insomnia कलेक्शन आयात (`--collection`)
- JavaScript एंडपॉइंट निष्कर्षण
- समान-होस्ट फ़िल्टरिंग
- **URL पहुँच-क्षमता प्री-फ़िल्टरिंग**:
- मृत एंडपॉइंट को छोड़ने के लिए त्वरित प्री-चेक
- कॉन्फ़िगर करने योग्य टाइमआउट
- --no-filter के साथ वैकल्पिक बायपास
### प्रदर्शन और विश्वसनीयता
- **अनुकूली समवर्तीता (AIMD)**:
- त्रुटियों के आधार पर स्वचालित दर समायोजन
- योगात्मक वृद्धि (हर 5s)
- 429/503/टाइमआउट पर गुणात्मक कमी
- **स्टेल्थ और WAF बचाव**:
- रनटाइम पूल से User-Agent रोटेशन (100+ वास्तविक UA के साथ assets/user_agents.txt)
- फ़ाइल अनुपलब्ध होने पर एम्बेडेड फ़ॉलबैक UA
- पहचान पैटर्न से बचने के लिए यादृच्छिक विलंब जिटर
- प्रति-होस्ट समय प्रवर्तन (वैश्विक नहीं)
- एक्सपोनेंशियल बैकऑफ़ के साथ पुनः प्रयास तर्क
- कस्टम हेडर इंजेक्शन (X-Forwarded-For, Referer, आदि)
- 429/503 प्रतिक्रियाओं के आधार पर अनुकूली समय
- सहकारी परीक्षण के लिए विनम्रता मोड
- डिफ़ॉल्ट रूप से User-Agent या हेडर में कोई स्कैनर फिंगरप्रिंट नहीं
- **संसाधन प्रबंधन**:
- सेमाफोर-सीमित समानांतरता
- प्रति-होस्ट HTTP क्लाइंट पूल
- कनेक्शन पुन: उपयोग और पूलिंग
- कॉन्फ़िगर करने योग्य टाइमआउट और पुनः प्रयास
- **त्रुटि हैंडलिंग**:
- JoinSet के माध्यम से पैनिक रिकवरी
- कैप्चर की गई त्रुटियाँ अलग से रिपोर्ट की जाती हैं
- स्कैनर विफलताओं पर सुगम डिग्रेडेशन
### आउटपुट और रिपोर्टिंग
- **एकाधिक आउटपुट प्रारूप**:
- प्रिटी JSON (मानव-पठनीय)
- NDJSON (स्ट्रीमिंग, पार्स करने योग्य)
- SARIF 2.1.0 (GitHub/GitLab कोड स्कैनिंग)
- **बेसलाइन डिफिंग**:
- बेसलाइन स्नैपशॉट उत्पन्न करें
- केवल नए निष्कर्षों की रिपोर्ट करने के लिए स्कैन की तुलना करें
- प्रतिगमन परीक्षण के लिए उपयुक्त
- **ऑटो-सेव रिपोर्ट** (डिफ़ॉल्ट रूप से सक्षम, `--no-auto-report` से अक्षम करें):
- ~/Documents/ApiHunterReports/<timestamp>/ में सहेजे जाते हैं
- findings.json (संरचित निष्कर्ष)
- summary.md (मार्कडाउन रिपोर्ट)
- scan.log (निष्पादन लॉग)
- **रीयल-टाइम स्ट्रीमिंग**:
- खोजे जाने पर निष्कर्ष स्ट्रीम करें
- लाइव पार्सिंग के लिए NDJSON प्रारूप
- प्रगति ट्रैकिंग
- **गंभीरता फ़िल्टरिंग**:
- न्यूनतम गंभीरता के आधार पर फ़िल्टर करें (info/low/medium/high/critical)
- CI/CD के लिए विफल-पर सीमा
- एग्ज़िट कोड बिटमास्क (0x01 निष्कर्ष, 0x02 त्रुटियाँ)
### एकीकरण और विस्तारशीलता
- **प्लग करने योग्य स्कैनर आर्किटेक्चर**:
- मॉड्यूल जोड़ने के लिए Scanner ट्रेट लागू करें
- Async-प्रथम डिज़ाइन
- स्वतंत्र स्कैनर निष्पादन
- प्रति स्कैनर पैनिक अलगाव
- **TOML-आधारित विस्तारशीलता**:
- assets/cve_templates/*.toml में CVE टेम्पलेट कैटलॉग
- नई जाँच जोड़ने के लिए कोई कोड परिवर्तन आवश्यक नहीं
- टेम्पलेट-संचालित कमजोरी पहचान
- समुदाय-साझा करने योग्य टेम्पलेट प्रारूप
- **Nuclei टेम्पलेट आयात**:
- YAML → TOML रूपांतरण के लिए template-tool बाइनरी
- स्वचालित मैचर अनुवाद (status, word, regex, dsl)
- सुरक्षित प्रीफ़्लाइट अनुरोध-श्रृंखला निष्कर्षण
- अपस्ट्रीम टेम्पलेट से पहचान तर्क संरक्षित करता है
- **दोहरा विस्तार मॉडल**:
- **कोड-आधारित**: जटिल तर्क के लिए Scanner ट्रेट लागू करने वाले Rust स्कैनर लिखें
- **टेम्पलेट-आधारित**: सिग्नेचर-आधारित जाँच (CVE, गलत कॉन्फ़िगरेशन) के लिए TOML टेम्पलेट लिखें
- दोनों दुनिया का सर्वश्रेष्ठ: प्रदर्शन + लचीलापन
- **पूरक उपकरण**:
- Excalibur ब्राउज़र एक्सटेंशन (HAR कैप्चर)
- BurpAPIsecuritysuite (मैन्युअल परीक्षण)
- वर्कफ़्लो: कैप्चर → स्वचालित करें → गहन परीक्षण
### कॉन्फ़िगरेशन और नियंत्रण
- **लचीला इनपुट**:
- फ़ाइल-आधारित URL सूचियाँ
- stdin (अन्य उपकरणों से पाइप)
- HAR फ़ाइल आयात
- Postman/Insomnia कलेक्शन आयात
- OpenAPI स्पेक आयात
- **सूक्ष्म स्कैनर नियंत्रण**:
- व्यक्तिगत स्कैनर सक्षम/अक्षम करें
- सक्रिय बनाम निष्क्रिय मोड
- सक्रिय जाँच के लिए ड्राई-रन
- प्रति-स्कैनर कॉन्फ़िगरेशन
- **नेटवर्क कॉन्फ़िगरेशन**:
- HTTP/HTTPS प्रॉक्सी समर्थन
- TLS प्रमाणपत्र सत्यापन नियंत्रण
- कस्टम हेडर और कुकीज़
- कॉन्फ़िगर करने योग्य टाइमआउट और पुनः प्रयास
- **स्कैन प्रोफ़ाइल**:
- quickscan.sh (तेज़, कम-प्रभाव)
- deepscan.sh (व्यापक, सक्रिय जाँच)
- inaccessiblescan.sh (धीमी सेटिंग्स के साथ पहले से दुर्गम लक्ष्यों की पुनः जाँच)
- baselinescan.sh (बेसलाइन उत्पन्न करें)
- diffscan.sh (बेसलाइन से तुलना करें)
- authscan.sh (प्रमाणित स्कैनिंग)
- sarifscan.sh (CI/CD एकीकरण)
- scan-and-report.sh (स्कैन चलाएँ + नवीनतम रिपोर्ट पथ प्रिंट करें)
- split-by-host.sh (लक्ष्यों को होस्ट द्वारा विभाजित करें और वैकल्पिक रूप से स्कैन को फैन आउट करें)
## अन्य उपकरणों के साथ तुलना| सुविधा | ApiHunter | Nuclei | ZAP | Burp Suite | ffuf |
|---------|-----------|--------|-----|------------|------|
| **भाषा** | Rust | Go | Java | Java | Go |
| **प्रदर्शन** | ⚡⚡⚡ एसिंक, अनुकूली समवर्ती | ⚡⚡ तेज़ समानांतर | ⚡ मध्यम | ⚡ मध्यम | ⚡⚡⚡ बहुत तेज़ |
| **एपीआई-प्रथम डिज़ाइन** | ✅ एपीआई के लिए निर्मित | ❌ सामान्य वेब | ⚠️ हाइब्रिड | ⚠️ हाइब्रिड | ❌ फ़ज़िंग केंद्रित |
| **गलत-सकारात्मक फ़िल्टरिंग** | ✅ SPA पहचान, बॉडी सत्यापन, रेफ़रर जाँच | ⚠️ टेम्पलेट-निर्भर | ⚠️ कई FPs | ✅ अच्छा | N/A |
| **CORS/CSP विश्लेषण** | ✅ गहन नीति पार्सिंग | ⚠️ मूल टेम्पलेट | ✅ अच्छा | ✅ अच्छा | ❌ |
| **GraphQL इंट्रोस्पेक्शन** | ✅ स्कीमा एक्सपोज़र + संवेदनशील फ़ील्ड जाँच | ⚠️ मूल पहचान | ⚠️ सीमित | ✅ एक्सटेंशन के माध्यम से | ❌ |
| **OpenAPI/Swagger** | ✅ सुरक्षा योजना विश्लेषण | ❌ | ✅ केवल आयात | ✅ आयात + स्कैन | ❌ |
| **JWT विश्लेषण** | ✅ alg=none, कमज़ोर सीक्रेट, समाप्ति | ⚠️ टेम्पलेट के माध्यम से | ⚠️ सीमित | ✅ एक्सटेंशन के माध्यम से | ❌ |
| **IDOR/BOLA पहचान** | ✅ 3-स्तरीय (अनधिकृत/रेंज/क्रॉस-यूज़र) | ⚠️ मैनुअल टेम्पलेट | ⚠️ सीमित | ✅ मैनुअल परीक्षण | ❌ |
| **गुप्त पहचान** | ✅ संदर्भ-जागरूक (फ्रंटएंड बनाम बैकएंड) | ⚠️ रेगेक्स-आधारित | ⚠️ मूल | ⚠️ मूल | ❌ |
| **सक्रिय जाँच** | ✅ ऑप्ट-इन (IDOR, मास-असाइनमेंट, OAuth/OIDC, वेबसॉकेट, रेट-लिमिट, CVE टेम्पलेट) | ✅ टेम्पलेट-आधारित | ✅ सक्रिय स्कैन | ✅ सक्रिय स्कैन | ✅ फ़ज़िंग |
| **WAF बाईपास** | ✅ UA रोटेशन, विलंब, पुनर्प्रयास, अनुकूली समय | ⚠️ मूल | ⚠️ सीमित | ✅ अच्छा | ⚠️ मूल |
| **CI/CD एकीकरण** | ✅ NDJSON, SARIF, एग्ज़िट कोड | ✅ JSON, SARIF | ⚠️ XML रिपोर्ट | ⚠️ XML/JSON | ✅ JSON |
| **बेसलाइन डिफिंग** | ✅ अंतर्निहित | ❌ बाहरी उपकरण | ❌ | ❌ | ❌ |
| **प्रमाणीकरण प्रवाह** | ✅ JSON-आधारित प्री-स्कैन लॉगिन | ⚠️ हेडर इंजेक्शन | ✅ सत्र प्रबंधन | ✅ सत्र प्रबंधन | ⚠️ हेडर इंजेक्शन |
| **स्ट्रीमिंग आउटपुट** | ✅ रीयल-टाइम NDJSON | ❌ केवल बैच | ❌ | ❌ | ✅ |
| **संसाधन उपयोग** | 🟢 कम (Rust) | 🟢 कम (Go) | 🟡 उच्च (Java) | 🟡 उच्च (Java) | 🟢 कम (Go) |
| **सीखने की अवस्था** | 🟢 सरल CLI | 🟢 टेम्पलेट सिंटैक्स | 🟡 GUI जटिलता | 🔴 कठिन | 🟢 सरल |
| **विस्तारशीलता** | ✅ Rust ट्रेट सिस्टम | ✅ YAML टेम्पलेट | ✅ ऐड-ऑन | ✅ एक्सटेंशन | ⚠️ सीमित |
| **लाइसेंस** | MIT (निःशुल्क) | MIT (निःशुल्क) | Apache 2.0 (निःशुल्क) | वाणिज्यिक | MIT (निःशुल्क) |
| **सबसे उपयुक्त** | CI/CD में API सुरक्षा, रिग्रेशन परीक्षण, CORS/GraphQL/JWT विश्लेषण | सामान्य भेद्यता स्कैनिंग, CVE पहचान | पूर्ण वेब ऐप पेंटेस्टिंग | मैनुअल पेंटेस्टिंग, जटिल वर्कफ़्लो | निर्देशिका/पैरामीटर फ़ज़िंग |
### मुख्य विभेदक
**ApiHunter:** API-प्रथम डिज़ाइन, SPA पहचान, बेसलाइन डिफिंग, 3-स्तरीय IDOR/BOLA, संदर्भ-जागरूक गुप्त, AIMD समवर्ती, **स्टील्थ/WAF बाईपास (UA रोटेशन, जिटर, अनुकूली समय)**, **द्वैत विस्तारशीलता (TOML टेम्पलेट + Rust मॉड्यूल)**
**Nuclei:** व्यापक CVE कवरेज, केवल YAML टेम्पलेट, मूल बाईपास
**ZAP/Burp:** मैनुअल परीक्षण, प्रॉक्सी वर्कफ़्लो, GUI-आधारित एक्सटेंशन, सीमित स्टील्थ
**ffuf:** शुद्ध फ़ज़िंग, सामग्री खोज, सीमित विस्तारशीलता, मूल बाईपास
## त्वरित आरंभ```bash
cargo build --release
# Scan URLs from a file (newline-delimited)
./target/release/apihunter --urls ./targets/cve-regression-real-public.txt --format ndjson --output ./results.ndjson
# Or scan URLs from stdin
cat ./targets/cve-regression-real-public.txt | ./target/release/apihunter --stdin --min-severity medium
ApiHunter apps/desktop में एक डेस्कटप ऐप भी शामिल करता है।```bash
cd apps/desktop
npm install
npm run tauri dev
Desktop scan input supports:
- मैन्युअल मल्टी-टारगेट प्रविष्टि (प्रति पंक्ति एक URL या कॉमा-सेपरेटेड)
- `Load CSV` के माध्यम से CSV आयात (अधिकतम 307,200 बाइट्स / 300 KiB)
- निर्देशित स्कैन प्रीसेट: `Quick Passive` और `Deep Active`
- कठोर सीमा: प्रति रन अधिकतम 3,000 टारगेट (डुप्लिकेट हटाकर पूर्ण `http/https` URL के रूप में मान्य किए गए)
- स्कोप नियंत्रण: डिस्कवरी चालू/बंद, एक्सेसिबिलिटी फ़िल्टरिंग + टाइमआउट, प्रति साइट अधिकतम एंडपॉइंट्स
- API वर्ज़निंग नियंत्रण: वैकल्पिक डीप रिस्पॉन्स-डिफ़ प्रोबिंग टॉगल
- उन्नत नियंत्रण: proxy, headers, cookies, bearer/basic auth, TLS अमान्य-प्रमाणपत्र टॉगल
- सक्रिय जाँचों के लिए ब्लाइंड SSRF कॉलबैक सहसंबंध इनपुट (`OAST callback base`)
- प्रदर्शन नियंत्रण: प्रति-होस्ट क्लाइंट, अनुकूली समवर्तीता, कस्टम यूज़र-एजेंट पूल के साथ WAF एवेज़न
- `API Versioning` और `gRPC/Protobuf` सहित पूर्ण स्कैनर टॉगल कवरेज
- दाएँ-संरेखित कैरेट्स के साथ संक्षेपणीय स्कैन अनुभाग; `Safety and Scan Behavior`, `Runtime Limits`, और `Scanner toggles` डिफ़ॉल्ट रूप से संक्षिप्त होते हैं
- प्रति-टारगेट पूर्णता/निष्कर्ष स्नैपशॉट के साथ समानांतर-रन प्रगति कार्ड
- परिणाम विश्लेषण डैशबोर्ड: गंभीरता हीटमैप, सबसे-खराब-टारगेट कार्ड, स्कैन दक्षता, स्कैनर कवरेज, शीर्ष असुरक्षित पथ, जाँच गंभीरता विवरण
- सत्र दृढ़ता: अगले लॉन्च पर पिछले स्कैन परिणाम स्वतः पुनर्स्थापित हो जाते हैं
- एनरिच मोड पैनल: findings NDJSON लोड करें, थ्रेट-इंटेल एनरिचमेंट चलाएँ, उच्च-स्कोर वाले होस्ट्स को सीधे `Deep Active` प्रीसेट के साथ Full Scan में प्रमोट करें
- एक्सपोर्ट UX: आकार लेबल + `Save All Reports` + प्रति-रन टाइमस्टैम्प्ड फ़ाइलनाम; एक्सपोर्ट में प्रति-टारगेट JSON बंडल, NDJSON, SARIF, Insomnia कलेक्शन, और Insomnia Runner डेटा शामिल हैं
विस्तृत उपयोग के लिए [HOWTO.md](https://github.com/teycir/apihunter/blob/HEAD/HOWTO.md), Vulhub-आधारित CVE सत्यापन लैब्स के लिए [docs/lab-setup.md](https://github.com/teycir/apihunter/blob/HEAD/docs/lab-setup.md), और आंतरिक विवरण के लिए [docs/](https://github.com/teycir/apihunter/blob/HEAD/docs/) देखें।
यदि आप एक रिलीज़ डेस्कटॉप बाइनरी चाहते हैं:```bash
cd apps/desktop
npm run tauri build
./src-tauri/target/release/apihunter-desktop
क्लिक करने योग्य Linux ऐप आइकन/लॉन्चर इंस्टॉल करें:```bash cd apps/desktop npm run desktop:install-icon
नोट: डेस्कटॉप डेव स्टार्टअप अब निर्मित फ्रंटएंड एसेट्स का सीधे उपयोग करता है और इसके लिए अलग `localhost:1420` सर्वर की आवश्यकता नहीं होती है।
विस्तृत उपयोग के लिए [HOWTO.md](https://github.com/teycir/apihunter/blob/HEAD/HOWTO.md), Vulhub-आधारित CVE सत्यापन लैब के लिए [docs/lab-setup.md](https://github.com/teycir/apihunter/blob/HEAD/docs/lab-setup.md), और आंतरिक विवरण के लिए [docs/](https://github.com/teycir/apihunter/blob/HEAD/docs/) देखें।
### NDJSON फाइंडिंग का उदाहरण```json
{
"url": "https://api.example.com/graphql",
"check": "graphql/introspection-enabled",
"title": "GraphQL introspection is enabled",
"severity": "MEDIUM",
"detail": "Introspection query returned schema metadata from a public endpoint.",
"evidence": "POST /graphql -> HTTP 200 with __schema fields in response body",
"scanner": "graphql",
"timestamp": "2026-03-19T14:02:11.824Z"
}
main.rs ──► cli.rs (args) ──► config.rs (Config) │ runner.rs (orchestration) ┌──────┴────────────────────────────┐ discovery/ scanner/ ├─ robots.rs ├─ cors.rs ├─ sitemap.rs ├─ csp.rs ├─ swagger.rs ├─ jwt.rs ├─ js.rs ├─ graphql.rs ├─ headers.rs ├─ openapi.rs └─ common_paths.rs ├─ api_security.rs ├─ api_versioning.rs ├─ grpc_protobuf.rs ├─ mass_assignment.rs ├─ oauth_oidc.rs http_client.rs ├─ rate_limit.rs auth.rs ├─ cve_templates.rs waf.rs └─ websocket.rs reports.rs error.rs
**प्रवाह:** CLI args → Config → Runner Discovery + Scanners का समन्वय करता है → HTTP Client (Auth/WAF के साथ) → Reports
## टेम्पलेट टूलिंग
ApiHunter **दोहरी विस्तारशीलता** का समर्थन करता है: **TOML टेम्पलेट्स** (बिना कोड) या **Rust मॉड्यूल्स** (पूर्ण नियंत्रण) के माध्यम से जाँचें जोड़ें।
### TOML टेम्पलेट प्रारूप
`assets/cve_templates/*.toml` में कस्टम जाँचें बनाएँ:```toml
id = "custom-api-check"
name = "Custom API Vulnerability"
severity = "high"
[[requests]]
method = "GET"
path = "/api/vulnerable"
[[requests.matchers]]
type = "status"
values = [200]
[[requests.matchers]]
type = "word"
part = "body"
words = ["sensitive_data", "exposed"]
मौजूदा Nuclei YAML टेम्पलेट्स को परिवर्तित करें:```bash
cargo run --bin template-tool -- import-nuclei
--input tests/fixtures/upstream_nuclei/CVE-2022-24288.yaml
--output assets/cve_templates/cve-2022-24288.toml
### कस्टम Rust स्कैनर जोड़ें
जटिल लॉजिक के लिए `Scanner` ट्रेट लागू करें:```rust
#[async_trait]
impl Scanner for MyCustomScanner {
async fn scan(
&self,
url: &str,
client: &HttpClient,
config: &Config,
) -> (Vec<Finding>, Vec<CapturedError>) {
// Your custom scanning logic
}
}
विवरण के लिए HOWTO.md और docs/scanners.md देखें।
ScanScripts/ में सामान्य स्कैन प्रोफाइल के लिए सुविधाजनक रैपर शामिल हैं:
--auth-flow आवश्यक है, सक्रिय जाँचें सक्षम करता है, WAF एवेज़न, retries: 2, timeout: 15s, delay: 150ms)./ScanScripts/quickscan.sh targets/cve-regression-real-public.txt
cat targets/cve-regression-real-public.txt | ./ScanScripts/deepscan.sh --stdin
./ScanScripts/baselinescan.sh targets/cve-regression-real-public.txt
./ScanScripts/diffscan.sh targets/cve-regression-real-public.txt baseline.ndjson
./ScanScripts/authscan.sh targets/cve-regression-real-public.txt --auth-flow auth.json
./ScanScripts/sarifscan.sh targets/cve-regression-real-public.txt
./ScanScripts/split-by-host.sh targets/cve-regression-real-public.txt --scan-cmd ./ScanScripts/quickscan.sh --jobs 4
सभी रैपर स्क्रिप्ट `split-by-host.sh` को छोड़कर `--stdin` और अंतिम ApiHunter फ़्लैग्स का समर्थन करती हैं।
## परीक्षण रणनीति
ApiHunter परीक्षण को उद्देश्य के अनुसार विभाजित किया गया है:
- **इकाई परीक्षण** (`tests/*_scanner.rs`, parser/config परीक्षण): स्कैनर लॉजिक और एज केस।
- **एकीकरण परीक्षण** (`tests/integration_runner.rs`, startup/CLI व्यवहार): ऑर्केस्ट्रेशन और रनटाइम वायरिंग।
- **फिक्स्चर प्रतिगमन परीक्षण** (`tests/cve_templates_real_data.rs`, `tests/cve_templates_upstream_parity.rs`): वास्तविक पेलोड को दोबारा चलाएँ और पिन किए गए अपस्ट्रीम टेम्पलेट्स से तुलना करें।
- **मॉक-सर्वर परीक्षण** (एकाधिक स्कैनर सुइट्स): इंटरनेट लक्ष्यों पर निर्भर हुए बिना नियतात्मक व्यवहार जाँच।
- **लाइव-लक्ष्य जाँचें**: केवल वैकल्पिक/मैनुअल (डिफ़ॉल्ट `cargo test` का हिस्सा नहीं)।
पूर्ण परीक्षण मैट्रिक्स और कवरेज मैप के लिए समर्पित [परीक्षण मार्गदर्शिका](https://github.com/teycir/apihunter/blob/HEAD/docs/testing.md) देखें।
केंद्रित सुइट्स चलाएँ:```bash
cargo test --test cors_scanner
cargo test --test graphql_scanner
cargo test --test cve_templates_runtime_ext
cargo test --test integration_runner
पूर्ण सत्यापन चलाएँ:```bash cargo test
वास्तविक-डेटा एकीकरण गेट चलाएँ (फिक्स्चर + लाइव अनदेखा किए गए सूट):```bash
# Fixture-backed real payload regression suites
cargo test --test cve_templates_real_data --test cve_templates_upstream_parity --test cve_templates_runtime_ext
# Manual live internet integration suites (ignored by default)
cargo test --test live_vulnerable_apis --test live_real_world_targets -- --ignored
Live suites use default target inventories:
targets/vuln-api-regression-real-public.txttargets/real-world-integration-public.txtYou can override with:
APIHUNTER_LIVE_VULN_TARGET_FILE or APIHUNTER_LIVE_VULN_TARGETSAPIHUNTER_LIVE_REAL_TARGET_FILE or APIHUNTER_LIVE_REAL_TARGETSपूर्ण दस्तावेज़ीकरण docs/ में उपलब्ध है। इससे शुरू करें:
Completed (v0.7.0): Glass UI पुनः डिज़ाइन, स्कैन पर्सिस्टेंस (last-scan store), परिणाम विश्लेषण डैशबोर्ड (गंभीरता हीटमैप, सबसे-खराब-लक्ष्य कार्ड, स्कैन दक्षता, स्कैनर कवरेज, चेक गंभीरता विवरण), Enrich → Deep-Scan प्रमोट फ़्लो, ट्राइएज/थ्रेट-इंटेल मोड, डिस्कवरी कॉन्फ़िगरेशन, WebSocket/Mass-Assignment/OAuth/Rate-Limit/CVE स्कैनर्स, विस्तारित Nuclei इम्पोर्टर, Docker इमेज
अगला: App.tsx कंपोनेंट विभाजन, स्कैन हिस्ट्री रिंग-बफ़र, फाइंडिंग डिटेल ड्रॉअर, HTML/PDF रिपोर्ट निर्यात, GitHub Actions नेटिव ऐक्शन, लाइव प्रगति में प्रति-लक्ष्य टाइमिंग
Rust स्टेबल की आवश्यकता है (1.76+ पर परीक्षण किया गया)।```bash git clone https://github.com/Teycir/ApiHunter cd ApiHunter cargo build --release
### पूर्व-निर्मित रिलीज़ आर्टिफैक्ट
टैग किए गए रिलीज़ (`v*`) निम्न के लिए पूर्व-निर्मित `apihunter` बाइनरी प्रकाशित करते हैं:
- Linux (`x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`)
- macOS (`x86_64-apple-darwin`)
- Windows (`x86_64-pc-windows-msvc`)
प्रत्येक रिलीज़ आपूर्ति-श्रृंखला आर्टिफैक्ट भी प्रकाशित करता है:
- SHA256 चेकसम फ़ाइलें (`*.sha256`)
- Sigstore कुंजी-रहित हस्ताक्षर सामग्री (`*.sig`, `*.pem`, `*.sigstore.json`)
- SPDX JSON SBOM (`apihunter-release-assets-sbom.spdx.json`)
- GitHub आर्टिफैक्ट प्रमाणन (प्रोवेनेंस और SBOM प्रमाणन मेटाडेटा)
[GitHub Releases](https://github.com/Teycir/ApiHunter/releases) से डाउनलोड करें।
### डेस्कटॉप इंस्टॉलेशन (Tauri + React)
डेस्कटॉप ऐप का सोर्स `apps/desktop` में है।
प्रोडक्शन डेस्कटॉप बाइनरी बनाएं और चलाएं:```bash
cd apps/desktop
npm install
npm run tauri build
./src-tauri/target/release/apihunter-desktop
विकास मोड के लिए:```bash cd apps/desktop npm run tauri dev
क्लिक करने योग्य Linux लॉन्चर आइकन इंस्टॉल करें:```bash
cd apps/desktop
npm run desktop:install-icon
डेस्कटॉप विशेषताएँ (संक्षेप में):
Quick Passive और Deep Activedocker build -t apihunter:local . docker run --rm apihunter:local --help
अपनी वर्तमान निर्देशिका में फ़ाइलों से स्कैन चलाएँ:```bash
docker run --rm -v "$PWD:/work" apihunter:local \
--urls /work/targets/cve-regression-real-public.txt \
--format ndjson \
--output /work/results.ndjson
*आपको --urls, --stdin, --har, या --collection में से ठीक एक प्रदान करना होगा।
| कोड |
|---|
--proxy अपने आप TLS सत्यापन अक्षम नहीं करता। प्रमाणपत्र जाँचें तब तक सक्षम रहती हैं जब तक --danger-accept-invalid-certs स्पष्ट रूप से सेट न किया जाए।--danger-accept-invalid-certs केवल नियंत्रित प्रयोगशाला/डिबग उपयोग के लिए है। यह फ़्लैग सक्षम होने पर ApiHunter एक स्पष्ट रनटाइम चेतावनी उत्सर्जित करता है।--waf-evasion और सक्रिय जाँचें IDS/WAF अलर्ट ट्रिगर कर सकती हैं। केवल स्पष्ट लिखित प्राधिकरण के साथ और सहमत परीक्षण अवधियों के भीतर चलाएँ।ApiHunter एक पूरक सुरक्षा परीक्षण टूलकिट का हिस्सा है:
--har और --session-file फ़्लैग के माध्यम से ApiHunter के साथ उपयोग करें।वर्कफ़्लो: Excalibur से ट्रैफ़िक कैप्चर करें → ApiHunter से स्वचालित बेसलाइन → BurpAPIsecuritysuite से गहन मैन्युअल परीक्षण
लेखक: Teycir Ben Soltane
ईमेल: [email protected]
वेबसाइट: teycirbensoltane.tn
प्रश्न: ApiHunter बनाम Nuclei/ZAP/Burp क्यों?
उत्तर: API-प्रथम डिज़ाइन, SPA पहचान, बेसलाइन अंतर, 3-स्तरीय IDOR, संदर्भ-जागरूक रहस्य। Nuclei (CVE कवरेज) और ZAP/Burp (मैन्युअल परीक्षण) के पूरक।
प्रश्न: प्रोडक्शन-सुरक्षित?
उत्तर: हाँ। --delay-ms और कम --concurrency उपयोग करें। quickscan.sh आज़माएँ।
प्रश्न: प्रमाणित स्कैन?
उत्तर: --auth-bearer, --auth-basic, या --auth-flow। IDOR के लिए: --auth-flow-b।
प्रश्न: गति तुलना (1000 एंडपॉइंट)?
यह एंडपॉइंट विलंबता, पुनः प्रयास, लक्ष्य व्यवहार और सक्षम जाँचों पर निर्भर करता है। थ्रूपुट बनाम प्रभाव समायोजित करने के लिए --concurrency, --delay-ms, और --active-checks उपयोग करें।
प्रश्न: धीमा स्कैन?
--concurrency बढ़ाएँ (डिफ़ॉल्ट: 20), --delay-ms कम करें (डिफ़ॉल्ट: 150ms), --adaptive-concurrency सक्षम करें।
प्रश्न: आउटपुट प्रारूप?
pretty (डिफ़ॉल्ट), ndjson (स्ट्रीमिंग), sarif (CI एकीकरण)।
प्रश्न: CI/CD एकीकरण?```bash ./target/release/apihunter --urls targets/cve-regression-real-public.txt --fail-on medium --format sarif --output results.sarif
**प्रश्न: बेसलाइन डिफिंग?**```bash
./target/release/apihunter --urls targets/cve-regression-real-public.txt --format ndjson --output baseline.ndjson
./target/release/apihunter --urls targets/cve-regression-real-public.txt --baseline baseline.ndjson --format ndjson
प्रश्न: पैसिव बनाम एक्टिव जाँच?
पैसिव (डिफ़ॉल्ट): प्रतिक्रियाओं का विश्लेषण करें। एक्टिव (--active-checks): निर्मित अनुरोध भेजें (IDOR, mass-assignment, OAuth, rate-limit, CVE probes)।
प्रश्न: CORS परीक्षण?
डायनामिक ओरिजिन जनरेशन: null, https://evil.com, https://<target>.evil.com, https://evil<target>। प्रतिबिंबित होने पर regex बाइपास का परीक्षण करता है।
प्रश्न: IDOR पहचान?
3-स्तरीय: (1) बिना प्रमाणीकरण वाला फ़ेच, (2) ID गणना (±2), (3) क्रॉस-यूज़र (--auth-flow-b)।
प्रश्न: सीक्रेट पहचान?
AWS/Google/GitHub/Slack/Stripe कुंजियाँ, बियरर टोकन, DB URL, निजी कुंजियाँ। संदर्भ-जागरूक सत्यापन।
प्रश्न: कुकीज़?
--cookies "session=abc", --session-file excalibur.json, या --auth-flow login.json।
प्रश्न: प्रॉक्सी?
--proxy http://proxy.corp.com:8080
प्रश्न: डीबग लॉगिंग?
RUST_LOG=debug ./target/release/apihunter --urls targets/cve-regression-real-public.txt
प्रश्न: अनुकूली समवर्तीता?
AIMD: हर 5 सेकंड में 1 बढ़ाता है, त्रुटियों (429/503/timeouts) पर आधा कर देता है। --adaptive-concurrency से सक्षम करें।
प्रश्न: स्कैनर अक्षम करें?
--no-cors, --no-csp, --no-graphql, --no-api-security, --no-jwt, --no-openapi, --no-api-versioning, --no-mass-assignment, --no-oauth-oidc, --no-rate-limit, --no-cve-templates, --no-websocket।
प्रश्न: क्या ApiHunter गुप्त (stealthy) है?
उत्तर: हाँ। विशेषताएँ: 100+ वास्तविक ब्राउज़रों से UA रोटेशन (assets/user_agents.txt), जिटर के साथ यादृच्छिक विलंब, प्रति-होस्ट रेट लिमिटिंग, 429/503 पर अनुकूली बैकऑफ़, हेडर में कोई स्कैनर फ़िंगरप्रिंट नहीं, एक्सपोनेंशियल रीट्राई लॉजिक, कस्टम हेडर इंजेक्शन। --waf-evasion से सक्षम करें।
प्रश्न: WAF evasion कैसे काम करता है?
उत्तर: स्वचालित रूप से क्यूरेटेड पूल से User-Agents घुमाता है, विलंब में यादृच्छिक जिटर जोड़ता है, प्रति-होस्ट टाइमिंग लागू करता है (वैश्विक विस्फोट नहीं), रेट लिमिट पर एक्सपोनेंशियल रूप से बैकऑफ़ करता है, और वैध ट्रैफ़िक के साथ घुलने-मिलने के लिए कस्टम हेडर इंजेक्शन की अनुमति देता है। डिफ़ॉल्ट हेडर में कोई "scanner" स्ट्रिंग नहीं होती।
विकास दिशानिर्देशों के लिए CONTRIBUTING.md देखें।
| फ़्लैग | डिफ़ॉल्ट | विवरण |
|---|
--urls | required* | न्यूलाइन-सीमांकित URL फ़ाइल का पथ |
--stdin | off | न्यूलाइन-सीमांकित URL को stdin से पढ़ें |
--har | off | HAR (log.entries[].request.url) से संभावित API अनुरोध URL आयात करें |
--collection | off | Postman/Insomnia कलेक्शन एक्सपोर्ट JSON से संभावित API अनुरोध URL आयात करें |
--output | stdout | परिणाम stdout की बजाय फ़ाइल में लिखें |
--format | pretty | आउटपुट प्रारूप: pretty, ndjson, या sarif |
--stream | off | आने पर NDJSON निष्कर्ष स्ट्रीम करें |
--baseline | none | केवल-अंतर निष्कर्षों के लिए बेसलाइन NDJSON |
--quiet | off | गैर-त्रुटि stdout आउटपुट दबाएँ |
--summary | off | क्वाइट मोड में भी सारांश प्रिंट करें |
--no-auto-report | off | ~/Documents/ApiHunterReports के अंतर्गत स्थानीय स्वतः रिपोर्ट लिखना छोड़ें |
--min-severity | info | इस स्तर से नीचे के निष्कर्ष फ़िल्टर करें |
--fail-on | medium | इस गंभीरता पर या उससे ऊपर गैर-शून्य exit कोड लौटाएँ |
--concurrency | 20 | अधिकतम सक्रिय अनुरोध |
--max-endpoints | 50 | प्रति साइट स्कैन किए जाने वाले एंडपॉइंट सीमित करें (0 = असीमित) |
--delay-ms | 150 | प्रति होस्ट अनुरोधों के बीच न्यूनतम विलंब |
--retries | 1 | क्षणिक विफलता पर पुनः प्रयासों की संख्या |
--timeout-secs | 8 | प्रति अनुरोध टाइमआउट सेकंड में |
--no-filter | off | अगम्य URL की पूर्व-फ़िल्टरिंग छोड़ें |
--filter-timeout | 3 | अभिगम्यता पूर्व-जाँच के लिए टाइमआउट (सेकंड) |
--no-discovery | off | एंडपॉइंट खोज छोड़ें और केवल दिए गए सीड URL स्कैन करें |
--waf-evasion | off | WAF बाइपास ह्युरिस्टिक्स सक्षम करें |
--user-agents | none | अल्पविराम-पृथक UA सूची (WAF बाइपास को दर्शाता है) |
--headers | none | अतिरिक्त अनुरोध हेडर (जैसे Authorization: Bearer ...) |
--cookies | none | अल्पविराम-पृथक कुकीज़ (जैसे session=abc,theme=dark) |
--auth-bearer | none | Authorization: Bearer <token> जोड़ें |
--auth-basic | none | HTTP बेसिक प्रमाणीकरण जोड़ें (user:pass) |
--auth-flow | none | JSON ऑथ फ़्लो फ़ाइल (स्कैन-पूर्व लॉगिन) |
--auth-flow-b | none | क्रॉस-यूज़र IDOR जाँचों के लिए दूसरा ऑथ फ़्लो |
--unauth-strip-headers | none | अनऑथ जाँचों के लिए हटाने हेतु अतिरिक्त हेडर नाम |
--session-file | none | Excalibur सत्र JSON ({"hosts": {...}}) से कुकीज़ लोड/सहेजें |
--proxy | none | HTTP/HTTPS प्रॉक्सी URL |
--danger-accept-invalid-certs | off | TLS प्रमाणपत्र सत्यापन छोड़ें |
--active-checks | off | सक्रिय (संभावित रूप से हस्तक्षेपकारी) जाँचें सक्षम करें |
--dry-run | off | सक्रिय जाँचों का ड्राई-रन (म्यूटेशन अनुरोध भेजे बिना इच्छित जाँचों की रिपोर्ट करें) |
--response-diff-deep | off | API वर्ज़निंग जाँचों में गहन प्रतिक्रिया-अंतर वैरिएंट जाँचें सक्षम करें |
--per-host-clients | off | प्रति-होस्ट HTTP क्लाइंट पूल का उपयोग करें |
--adaptive-concurrency | off | अनुकूली समवर्तिता (AIMD) |
--no-cors | off | CORS स्कैनर अक्षम करें |
--no-csp | off | CSP स्कैनर अक्षम करें |
--no-graphql | off | GraphQL स्कैनर अक्षम करें |
--no-api-security | off | API सुरक्षा स्कैनर अक्षम करें |
--no-jwt | off | JWT स्कैनर अक्षम करें |
--no-openapi | off | OpenAPI स्कैनर अक्षम करें |
--no-api-versioning | off | API वर्ज़निंग स्कैनर अक्षम करें |
--no-grpc-protobuf | off | gRPC/Protobuf स्कैनर अक्षम करें |
--no-mass-assignment | off | मास असाइनमेंट स्कैनर अक्षम करें (सक्रिय जाँचें) |
--no-oauth-oidc | off | OAuth/OIDC स्कैनर अक्षम करें (सक्रिय जाँचें) |
--no-rate-limit | off | रेट लिमिट स्कैनर अक्षम करें (सक्रिय जाँचें) |
--no-cve-templates | off | CVE टेम्पलेट स्कैनर अक्षम करें (सक्रिय जाँचें) |
--no-websocket | off | WebSocket स्कैनर अक्षम करें (सक्रिय जाँचें) |
| अर्थ |
|---|
0 | --fail-on सीमा पर या उससे ऊपर कोई निष्कर्ष नहीं और कोई त्रुटि नहीं |
1 | --fail-on सीमा पर या उससे ऊपर एक या अधिक निष्कर्ष |
2 | एक या अधिक स्कैनर ने त्रुटियाँ कैप्चर कीं |
3 | निष्कर्ष और त्रुटियाँ दोनों |