Skip to main content

Cyberstrike is now open source! AI-powered penetration testing for security professionals. Star on GitHub

HackBrowser

HackBrowser कब उपयोग करें

उपयोग का मामलाचुनें
कई भूमिकाओं के साथ मैनुअल अन्वेषणChrome Extension
बिना उपस्थिति वाला स्वचालित क्रॉलHackBrowser
कैप्चर पर UI फ़ॉर्म संदर्भ (readonly, hidden, disabled फ़्लैग) चाहिएHackBrowser
मौजूदा पूर्व-प्रमाणित ब्राउज़र सत्रदोनों — Chrome Extension सरल है

दोनों पथ परस्पर अनन्य नहीं हैं। दोनों एक ही /session/ingest एंडपॉइंट और एक ही proxy-agent पाइपलाइन को फ़ीड करते हैं। आप एक ही सत्र में उन्हें मिश्रित कर सकते हैं।

यह कैसे काम करता है

┌────────────────────────────────────────────────────────────────────┐
│ Chromium (Playwright) │
│ ├── Scanner — DOM → accessibility tree (RawElement[]) │
│ ├── Navigator — LLM call → page plan (form/click tasks) │
│ ├── Executor — Plan → Playwright actions │
│ ├── Capture — HTTP requests + ui_context snapshot │
│ └── Live panel — Shadow-DOM telemetry overlay (visible mode) │
└────────────────────────┬───────────────────────────────────────────┘
│ POST /session/ingest (HTTP loopback)
│ text + response + ui_context + access_context
▼
┌────────────────────────────────────────────────────────────────────┐
│ Cyberstrike API │
│ ├── Normalize → deduplicate → Request.add │
│ └── IngestQueue → SessionPrompt(agent="proxy-agent") │
└────────────────────────┬───────────────────────────────────────────┘
▼
proxy-agent → proxy-analyzer + 8 vulnerability testers

Chrome Extension के विपरीत, HackBrowser स्वयं ब्राउज़र चलाता है। LLM पेज को एक्सेसिबिलिटी ट्री (बटन लेबल, इनपुट रोल, ARIA एट्रिब्यूट) के रूप में देखता है और तय करता है कि कौन से फ़ॉर्म भरने हैं और कौन से बटन क्लिक करने हैं। प्रत्येक कैप्चर किए गए अनुरोध में एक ui_context स्नैपशॉट शामिल होता है — फ़ॉर्म फ़ील्ड, उनके फ़्लैग (readonly, disabled, hidden), और UI में मौजूद नहीं अनुरोध पैरामीटर — जिसका उपयोग proxy-analyzer और proxy-tester-mass-assignment संदिग्ध अनुरोध आकृतियों की पहचान करने के लिए करते हैं।

तीन प्रवेश बिंदु

एक ही क्रॉल इंजन तीन प्रवेश बिंदुओं को शक्ति प्रदान करता है। जो आपके संदर्भ में फिट हो वह चुनें।

प्रवेश बिंदुरूपकब उपयोग करें
cyberstrike hackbrowser <target>CLI सबकमांडएक ताज़ा क्रॉल से जुड़ा नया TUI सत्र शुरू करें
/hackbrowserTUI स्लैश कमांडपहले से खुले सत्र में क्रॉल लॉन्च करें
hackbrowser टूलLLM-कॉल करने योग्य टूलबातचीत के आधार पर एजेंट क्रॉल करने का निर्णय लेता है

तीनों एक ही लॉन्चर (launchHackbrowser) को कॉल करते हैं, एक ही WorkerOptions स्कीमा उपयोग करते हैं, और एक ही HackbrowserStatus साइडबार एंट्री में प्रगति लिखते हैं।

CLI सबकमांड

Cyberstrike शुरू करें, एक सत्र बनाएँ, और एक कमांड में क्रॉल लॉन्च करें:

Terminal window
cyberstrike hackbrowser https://shop.example.com

विकल्प:

फ़्लैगविवरण
--scope <pattern>होस्टनाम स्कोप पैटर्न (जैसे *.example.com)। दोहराने योग्य। लक्ष्य URL से व्युत्पन्न *.{eTLD+1} पर डिफ़ॉल्ट।
--exclude <label>UI लेबल जिसे प्लानर को छोड़ना होगा (जैसे "Delete Account")। दोहराने योग्य। सिमेंटिक मैच।
--steps <n>क्रॉल करने के लिए अधिकतम पेज। डिफ़ॉल्ट 50।
--credential <label>जिस क्रेडेंशियल से क्रॉल करना है। दोहराने योग्य। मैनुअल लॉगिन के लिए विज़िबल ब्राउज़र बाध्य करता है।
--headfullब्राउज़र को विज़िबल मोड में चलाएँ। --credential सेट होने पर बाध्य।

TUI तुरंत खुलता है और क्रॉल बैकग्राउंड में चलता है। क्रॉल प्रगति करते हुए कैप्चर सत्र में स्ट्रीम होते हैं।

स्लैश कमांड

मौजूदा सत्र के अंदर:

/hackbrowser

लक्ष्य URL, क्रेडेंशियल, स्कोप, एक्सक्लूड लेबल, स्टेप्स, और हेडलेस मोड के लिए फ़ील्ड के साथ एक लॉन्च डायलॉग खोलता है। सत्र ID निहित है — कैप्चर वर्तमान सत्र में आते हैं।

इन-फ़्लाइट क्रॉल रद्द करने के लिए:

/hackbrowser-stop

यह कमांड केवल तब दिखाई देती है जब क्रॉल starting या crawling चरण में हो। ब्राउज़र वर्तमान पेज के लंबित कार्य पूरे करता है, साफ़ बंद होता है, और अंतिम स्थिति लिखता है। रद्दीकरण को सामान्य लाइफ़साइकल एग्ज़िट माना जाता है, विफलता नहीं।

टूल

जब बातचीत की मांग हो (जैसे “इस ऐप का परीक्षण करें”, “हमारे पास लक्ष्य URL है लेकिन कोई कैप्चर किए गए अनुरोध नहीं हैं”) तो एजेंट स्वायत्त रूप से HackBrowser लॉन्च कर सकता है। टूल बैकग्राउंड क्रॉल शुरू करने के बाद तुरंत लौटता है — कैप्चर अगले 30 सेकंड से 2 मिनट में सत्र में स्ट्रीम होते हैं।

पैरामीटर:

पैरामीटरविवरण
targetलक्ष्य URL (आवश्यक)
credentialsक्रॉल करने के लिए क्रेडेंशियल ID की सरणी। headless: false बाध्य करता है।
scopeकैप्चर को सीमित करने के लिए होस्टनाम पैटर्न
excludeछोड़ने के लिए UI लेबल
stepsअधिकतम पेज (डिफ़ॉल्ट 50)
headlessfalse होने पर विज़िबल ब्राउज़र। क्रेडेंशियल प्रदान करने पर false बाध्य।

क्रॉल चरण

एक सामान्य क्रॉल तीन चरणों से गुज़रता है:

1. Anonymous
└── BFS-explore the public surface, defer auth pages (login/register/logout)
2. Authenticated transition (one of these)
├── --credential admin — manual login, browser opens visibly
├── (saved session file) — load cookies, skip login [standalone CLI only]
└── deferred-auth ordering — register → login → logout
3. Post-login re-discovery
└── Re-queue all visited pages for fingerprint-based re-exploration.
Pages with unchanged fingerprint are skipped (no LLM call).

क्रॉलर प्रति-URL रीविज़िट कैप (प्रति क्रेडेंशियल 2 विज़िट) और पथ-पैटर्न एनक्यू कैप का सम्मान करता है ताकि एक बग्गी ऐप या अनंत-पेजिंग UI क्रॉल को रोक न सके।

मल्टी-क्रेडेंशियल क्रॉल

अनुक्रमिक प्रति-भूमिका क्रॉल चलाने के लिए दो या अधिक --credential फ़्लैग (या टूल को credentials: [...]) पास करें:

Terminal window
cyberstrike hackbrowser https://shop.example.com \
--credential admin \
--credential customer

प्रत्येक क्रेडेंशियल के लिए, HackBrowser एक विज़िबल Chromium विंडो खोलता है, आपके मैनुअल लॉगिन की प्रतीक्षा करता है, फिर उस क्रेडेंशियल ID से टैग किया गया पूर्ण क्रॉल चलाता है। प्रत्येक क्रॉल के कैप्चर अलग से टैग किए जाते हैं, ताकि proxy-agent तुलना कर सके कि प्रत्येक भूमिका क्या एक्सेस कर सकती है।

Caution

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

योजनाबद्ध: बिना उपस्थिति लॉगिन

क्रॉल इंजन पहले से तीन बिना उपस्थिति लॉगिन पथ आंतरिक रूप से लागू करता है; ये स्टैंडअलोन CLI में एक्सपोज़ हैं लेकिन अभी तक cyberstrike hackbrowser सबकमांड, /hackbrowser स्लैश कमांड, या hackbrowser टूल के माध्यम से वायर नहीं हैं। इन्हें वायर करना रोडमैप पर है।

योजनाबद्ध फ़्लैगव्यवहारउपयोग का मामला
--session <path>पहले सेव की गई सत्र फ़ाइल से कुकीज़ लोड करेंपूर्व-प्रमाणित सत्रों के साथ CI रन
--save-session <path>सफल लॉगिन के बाद पुन: उपयोग के लिए कुकीज़ सेव करेंएक बार इंटरैक्टिव लॉगिन, फिर बिना उपस्थिति पुन: चलाना
--user <name> / --pass <secret>खोजे गए लॉगिन फ़ॉर्म को स्वचालित रूप से भरेंसरल फ़ॉर्म-आधारित auth के विरुद्ध पूरी तरह बिना उपस्थिति क्रॉल

जब तक ये एक्सपोज़ नहीं होते, पूरी तरह बिना उपस्थिति मल्टी-रोल परीक्षण Chrome Profiles के साथ Chrome Extension के माध्यम से सबसे अच्छा किया जाता है, जहाँ आप प्रति कंटेनर एक बार लॉगिन करते हैं और कैप्चर पारदर्शी रूप से होता है।

पेज डिफ़ और एलिमेंट उपलब्धता

मल्टी-क्रेडेंशियल मोड में, हर क्रेडेंशियल द्वारा एक ही पेज विज़िट करने के बाद, HackBrowser /session/ingest को एक पेज-डिफ़ रिकॉर्ड भेजता है:

  • किन क्रेडेंशियल ने पेज तक पहुँचा (visited_by)
  • प्रत्येक क्रेडेंशियल कौन से इंटरैक्टिव एलिमेंट देख सकता था (जैसे button:Delete User → ["admin"])
  • क्या पेज DOM फ़िंगरप्रिंट क्रेडेंशियल में मैच करता था

proxy-agent इस सिग्नल का उपयोग भूमिका-आधारित एक्सेस अंतर पहचानने के लिए करता है बिना प्रत्येक एंडपॉइंट को प्रति क्रेडेंशियल पुनः परीक्षण किए।

UI संदर्भ पेलोड

Chrome Extension पर विभेदक हर कैप्चर से जुड़ा ui_context ब्लॉक है। इसमें अनुरोध फ़ायर होने के समय फ़ॉर्म संरचना होती है:

{
"text": "PUT /api/users/42 HTTP/1.1\r\n...",
"sessionID": "session-abc123",
"credential_id": "web_credential-admin",
"scheme": "https",
"response": { "status": 200, "headers": {...}, "body": "..." },
"ui_context": {
"pageUrl": "https://shop.example.com/settings/profile",
"pageTitle": "Edit Profile",
"componentPath": "Settings > Profile",
"formName": "Update Profile",
"fields": [
{ "name": "email", "type": "text", "isReadOnly": true, "isHidden": false, "value": "..." },
{ "name": "username", "type": "text", "isReadOnly": false, "isHidden": false, "value": "..." },
{ "name": "role", "type": "hidden", "isReadOnly": false, "isHidden": true, "value": "user" }
],
"hiddenParams": ["account_id", "_csrf"]
},
"trigger_element": "button:Save",
"element_roles": ["admin"],
"page_url": "/settings/profile",
"page_visited_by": ["admin", "customer"]
}

proxy-analyzer और proxy-tester-mass-assignment इन सिग्नल का उपयोग संदिग्ध आकृतियों को फ़्लैग करने के लिए करते हैं:

  • UI में फ़ील्ड readonly है लेकिन अनुरोध में भेजा गया → परीक्षण करें कि सर्वर इसे लागू करता है या नहीं
  • फ़ील्ड type=hidden है → मास-असाइनमेंट उम्मीदवार
  • अनुरोध पैरामीटर hiddenParams में है (कोई UI एलिमेंट मौजूद नहीं) → सर्वोच्च-जोखिम छिपा पैरामीटर
  • एलिमेंट केवल visible_to: ["admin"] → एक गैर-एडमिन क्रेडेंशियल के साथ एक ही एंडपॉइंट परीक्षण करें

नेटवर्क स्कोप

डिफ़ॉल्ट रूप से, HackBrowser उन अनुरोधों को कैप्चर करता है जिनका होस्टनाम लक्ष्य URL के *.{eTLD+1} से मेल खाता है — Public Suffix List का उपयोग करके व्युत्पन्न। https://shop.example.com के लिए, इसका मतलब है *.example.com के तहत कुछ भी कैप्चर किया जाता है।

--scope (CLI) या scope: [...] (टूल/स्लैश) पास करके डिफ़ॉल्ट ओवरराइड करें। कई स्कोप यूनियन किए जाते हैं:

Terminal window
cyberstrike hackbrowser https://app.example.com \
--scope app.example.com \
--scope api.example.com

स्कोप एक नेटवर्क फ़िल्टर है। यह ब्राउज़र को आउट-ऑफ़-स्कोप होस्ट (जैसे लॉगिन के दौरान तृतीय-पक्ष SSO प्रदाता) पर नेविगेट करने से नहीं रोकता — वे नेविगेशन काम करते हैं, लेकिन उनका ट्रैफ़िक API को अग्रेषित नहीं होता।

संवेदनशील क्रियाओं को बाहर करना

--exclude का उपयोग करके प्लानर को उन लेबल से दूर रखें जिन्हें आप क्रॉल के दौरान ट्रिगर नहीं करना चाहते:

Terminal window
cyberstrike hackbrowser https://app.example.com \
--exclude "Delete Account" \
--exclude "Cancel Subscription" \
--exclude "Wipe Data"

Exclude LLM के कार्य योजना के विरुद्ध एक सिमेंटिक मैच है, regex नहीं। UI में जैसे दिखाई देते हैं वैसे लेबल पास करें — प्लानर को उन लेबल से मेल खाने वाले कार्यों की कभी योजना न बनाने का निर्देश दिया जाता है।

यह proxy-agent डिस्पैचर के अंदर WSTG-अक्षम क्रियाओं से स्वतंत्र है (जो पहले से परीक्षण स्तर पर विनाशकारी पेलोड फ़िल्टर कर सकता है)। --exclude का उपयोग करें ताकि क्रॉलर बटन क्लिक ही न करे।

लाइव टेलीमेट्री पैनल

जब ब्राउज़र विज़िबल मोड में चलता है, HackBrowser हर पेज पर एक Shadow-DOM पैनल इंजेक्ट करता है। पैनल रियल-टाइम क्रॉल ईवेंट दिखाता है — पेज ट्रांज़िशन, प्लान निर्णय, कैप्चर किए गए अनुरोध, इंटेलिजेंस सिग्नल (एम्प्टी-स्टेट डिटेक्शन, रीविज़िट ट्रिगर), क्रेडेंशियल स्विच।

--no-panel (स्टैंडअलोन CLI) से पैनल अक्षम करें। टूल या स्लैश कमांड के माध्यम से आह्वान करने पर, जब भी headless: false हो पैनल चालू रहता है।

पैनल पेज पर चलने वाले किसी भी परीक्षण को प्रभावित नहीं करता। यह लक्ष्य एप्लिकेशन से स्टाइल को पूरी तरह अलग करने के लिए Shadow DOM का उपयोग करता है।

स्थिति साइडबार

क्रॉल चलते समय, TUI साइडबार एक Hackbrowser अनुभाग दिखाता है:

  • चरण: starting → crawling → completed / failed
  • लक्ष्य URL
  • अन्वेषित पेज
  • कैप्चर किए गए एंडपॉइंट
  • वर्तमान पेज (crawling के दौरान)
  • लागत (completed के बाद)

वर्कर सबप्रोसेस से पैरेंट तक CSEvent रिकॉर्ड बहने पर साइडबार SSE के माध्यम से लाइव अपडेट होता है।

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

रद्दीकरण

इन-फ़्लाइट क्रॉल रद्द करने के तीन तरीके:

ट्रिगरव्यवहार
/hackbrowser-stop स्लैश कमांडविश्वसनीय। IPC के माध्यम से वर्कर को abort भेजता है।
सक्रिय चैट टर्न पर Esc (केवल टूल लॉन्च)ctx.abort को वर्कर को अग्रेषित करता है।
TUI बंद करना (CLI सबकमांड)onExit Playwright को रिलीज़ करने के लिए stopHackbrowser कॉल करता है।

सभी मामलों में एजेंट बाहर निकलने से पहले वर्तमान पेज के लंबित कार्य पूरे करता है। ब्राउज़र साफ़ बंद होता है। स्थिति completed में ट्रांज़िशन होती है, failed नहीं — रद्दीकरण सामान्य है।

Info

रद्दीकरण विलंबता। एजेंट पुनरावृत्ति सीमाओं (BFS पेज के बीच) पर abort सिग्नल की जाँच करता है। प्रगति में LLM कॉल SDK स्तर पर रद्द नहीं होते। सबसे खराब स्थिति /hackbrowser-stop जारी होने के बाद एक पूरे पेज का काम है।

पुन: प्रवेश

प्रति सत्र केवल एक HackBrowser रन की अनुमति है। पहला सक्रिय होने के दौरान उसी सत्र में दूसरा क्रॉल लॉन्च करने का प्रयास त्रुटि फेंकता है — रन कतारबद्ध नहीं होते। नया क्रॉल शुरू करने के लिए, या तो:

  1. वर्तमान रन पूरा होने तक प्रतीक्षा करें या इसे रद्द करें, या
  2. एक ताज़ा सत्र बनाएँ

यह टूल, स्लैश, और CLI सबकमांड सभी के लिए लॉन्चर स्तर पर लागू है।

समस्या निवारण

Chromium ब्राउज़र इंस्टॉल नहीं है

Chromium browser is not installed at /Users/.../chrome.app/...
Run: bunx playwright install chromium

HackBrowser वर्कर Playwright के बंडल Chromium का उपयोग करता है। त्रुटि में दिखाए गए कमांड से इसे एक बार इंस्टॉल करें। bunx playwright install और npx playwright install में एक ही कैश साझा किया जाता है।

playwright इंस्टॉल नहीं है

playwright is not installed. Run:
npm install --prefix ~/.local/share/cyberstrike playwright
npx playwright install chromium

Playwright JavaScript पैकेज स्वयं नहीं मिला। यह न्यूनतम इंस्टॉलेशन पर हो सकता है। npm पैकेज और Chromium ब्राउज़र बाइनरी इंस्टॉल करने के लिए दिखाए गए दो कमांड चलाएँ।

hackbrowser worker नहीं मिला

hackbrowser worker not found at ~/.local/share/cyberstrike/bin/hackbrowser-worker.js.
Re-install cyberstrike (npm install -g @cyberstrike-io/cyberstrike) to set it up.

वर्कर JavaScript बंडल postinstall स्क्रिप्ट द्वारा रखा जाता है। इसे फिर से बनाने के लिए Cyberstrike पुन: इंस्टॉल करें।

multi-credential mode requires headless: false

मल्टी-क्रेडेंशियल क्रॉल हमेशा मैनुअल लॉगिन उपयोग करते हैं। ब्राउज़र विज़िबल के साथ फिर से चलाएँ, या सिंगल-क्रेडेंशियल मोड पर लौटें।

hackbrowser already running for session

वर्तमान सत्र में एक सक्रिय क्रॉल है। इसके पूरा होने तक प्रतीक्षा करें या पहले /hackbrowser-stop चलाएँ।

संबंधित दस्तावेज़

  • Chrome Extension — Chrome Profiles के साथ मैनुअल-ब्राउज़िंग विकल्प