Skip to main content

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

HackBrowser

HackBrowser est le crawler web autonome de Cyberstrike. Il ouvre un navigateur Chromium, laisse un LLM naviguer dans l’application cible en lisant l’arbre d’accessibilite, et transmet chaque requete HTTP capturee — enrichie du contexte UI — au pipeline d’analyse. Le proxy-agent analyse et teste ensuite chaque requete.

Quand utiliser HackBrowser

Cas d’usageChoix
Exploration manuelle avec plusieurs rolesExtension Chrome
Crawl automatise sans surveillanceHackBrowser
Besoin du contexte UI des formulaires (readonly, hidden, disabled) sur les capturesHackBrowser
Session de navigateur pre-authentifiee existanteL’un ou l’autre — l’extension Chrome est plus simple

Les deux chemins alimentent le meme endpoint /session/ingest et le meme pipeline proxy-agent. Vous pouvez les combiner au sein d’une meme session.

Comment ca fonctionne

┌────────────────────────────────────────────────────────────────────┐
│ Chromium (Playwright) │
│ ├── Scanner — DOM → arbre d'accessibilite (RawElement[]) │
│ ├── Navigator — Appel LLM → plan de page (taches form/clic) │
│ ├── Executor — Plan → actions Playwright │
│ ├── Capture — Requetes HTTP + snapshot ui_context │
│ └── Panneau — Overlay de telemetrie Shadow-DOM (mode visible) │
└────────────────────────┬───────────────────────────────────────────┘
│ POST /session/ingest
▼
┌────────────────────────────────────────────────────────────────────┐
│ API Cyberstrike │
│ ├── Normaliser → dedupliquer → Request.add │
│ └── IngestQueue → SessionPrompt(agent="proxy-agent") │
└────────────────────────┬───────────────────────────────────────────┘
▼
proxy-agent → proxy-analyzer + testeurs de vulnerabilites

Le LLM voit la page comme un arbre d’accessibilite et decide quels formulaires remplir et quels boutons cliquer. Chaque requete capturee inclut un snapshot ui_context — les champs de formulaire, leurs indicateurs, et tous les parametres caches — que le proxy-analyzer utilise pour identifier les formes de requete suspectes.

Lancer un crawl

/hackbrowser

Lancez /hackbrowser dans le TUI pour ouvrir le dialogue de lancement avec des champs pour l’URL cible, les identifiants, la portee, les libelles a exclure, le nombre d’etapes et le mode headless.

OptionDescription
URL cibleL’URL a partir de laquelle commencer le crawl
PorteeMotifs de noms d’hote pour limiter la capture (ex. *.example.com)
ExclureLibelles UI que le planificateur doit eviter (correspondance semantique)
EtapesNombre maximum de pages a crawler (defaut : 50)
IdentifiantsIdentifiant(s) avec lesquels crawler. Force le navigateur visible.
HeadlessExecuter sans fenetre de navigateur visible

Annuler un crawl

/hackbrowser-stop

Lance par l’agent

L’agent peut aussi lancer HackBrowser de maniere autonome lorsque la conversation le demande (ex. “tester cette application”). L’outil retourne immediatement — les captures arrivent dans la session au fur et a mesure de la progression du crawl.

Crawls multi-identifiants

Selectionnez deux identifiants ou plus dans le dialogue de lancement /hackbrowser pour executer un crawl sequentiel par role.

Pour chaque identifiant, HackBrowser ouvre une fenetre Chromium visible, attend que vous vous connectiez, puis execute le crawl complet etiquete avec cet ID d’identifiant. Le pipeline WSTG peut ensuite comparer ce que chaque role peut acceder.

Charge utile du contexte UI

Le differentiel par rapport a l’extension Chrome est le bloc ui_context attache a chaque capture :

{
"ui_context": {
"pageUrl": "https://shop.example.com/settings/profile",
"formName": "Update Profile",
"fields": [
{ "name": "email", "type": "text", "isReadOnly": true },
{ "name": "role", "type": "hidden", "isHidden": true, "value": "user" }
],
"hiddenParams": ["account_id", "_csrf"]
}
}

Le proxy-analyzer utilise ces signaux pour signaler :

  • Champ readonly envoye dans la requete → tester si le serveur l’applique
  • Champ hidden → candidat d’assignation en masse
  • Parametre dans hiddenParams (aucun element UI) → parametre cache a plus haut risque
  • Element visible par un seul role → tester avec d’autres identifiants

Portee reseau

Par defaut, HackBrowser capture les requetes correspondant a *.{eTLD+1} de l’URL cible. Remplacez la portee dans le dialogue de lancement /hackbrowser en ajoutant des motifs de noms d’hote personnalises (ex. app.example.com, api.example.com).

Depannage

ErreurSolution
Chromium non installebunx playwright install chromium
Playwright non installenpm install --prefix ~/.local/share/cyberstrike playwright
Worker introuvableReinstaller : npm install -g @cyberstrike-io/cyberstrike
Deja en cours d’executionAttendre la fin ou lancer /hackbrowser-stop

Danger

N’utilisez HackBrowser que contre des cibles autorisees. Les tests de penetration non autorises sont illegaux.