Skip to content

submissions/lab1.md #1

Description

@alileeeek

Lab 1 — Submission

Triage Report: OWASP Juice Shop

Scope & Asset

  • Asset: OWASP Juice Shop (local lab instance)
  • Image: bkimminich/juice-shop:v20.0.0
  • Image digest: sha256:fd58bdc9745416afce8184ee0666278a436574633ea7880365153a63bfd418b0
  • Host OS: Windows 11
  • Docker version: Docker version 29.2.1, build a5c7197

Deployment Details

  • Run command used: docker run -d --name juice-shop -p 127.0.0.1:3000:3000 bkimminich/juice-shop:v20.0.0
  • Access URL: http://127.0.0.1:3000
  • Network exposure: 127.0.0.1 only? [x] Yes [ ] No
  • Container restart policy: default no (we didn't use --restart flag)

Health Check

  • HTTP code on /: 200
  • API check (first 200 chars of /api/Products): {"status":"success","data":[{"id":1,"name":"Apple Juice (1000ml)","description":"The all-time classic.","price":1.99,"deluxePrice":0.99,"image":"apple_juice.jpg","createdAt":"2026-06-09T18:28:05.316Z","updatedAt":"2026-06-09T18:28:05.316Z","deletedAt":null},{"id":2,"name":"Orange Juice (1000ml)","description":"Made from oranges hand-picked by Uncle Dittmeyer.","price":2.99,"deluxePrice":2.49,"image":"orange_juice.jpg","createdAt":"2026-06-09T18:28:05.316Z","updatedAt":"2026-06-09T18:28:05.316Z","deletedAt":null}
  • Container uptime: Up 29 minutes

Initial Surface Snapshot (from browser exploration)

  • Login/Registration visible: [x] Yes — notes: Icon in top-right corner, opens a modal.
  • Product listing/search present: [x] Yes — notes: Grid of products, search bar at the top.
  • Admin or account area discoverable: [x] Yes — notes: "Account" menu in top-right, "Administration" link is hidden but can be found in source code.
  • Client-side errors in DevTools console: [ ] Yes — notes: No critical errors on initial load.
  • Pre-populated local storage / cookies: Yes, token (JWT), bid (basket ID), and language preferences are stored in Local Storage.

Security Headers (Quick Look)

Run: curl -I http://127.0.0.1:3000
Output:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Feature-Policy: payment 'self'
X-Recruiting: /#/jobs
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Tue, 09 Jun 2026 18:28:06 GMT
ETag: W/"26af-19eada44b5c"
Content-Type: text/html; charset=UTF-8
Content-Length: 9903
Vary: Accept-Encoding
Date: Tue, 09 Jun 2026 18:57:52 GMT
Connection: keep-alive
Keep-Alive: timeout=5

Which of these are MISSING?

  • Content-Security-Policy (CSP)
  • Strict-Transport-Security (HSTS)
  • X-Content-Type-Options: nosniff (Usually present in Juice Shop)
  • X-Frame-Options

Top 3 Risks Observed

  1. Missing Strict-Transport-Security (HSTS): The application is served over plain HTTP locally. If deployed in production without HSTS, it is vulnerable to Man-in-the-Middle (MitM) attacks where an attacker can downgrade connections. Maps to OWASP A02: Cryptographic Failures.
  2. Unauthenticated API Endpoints: The /api/Products/<id>/reviews endpoint can be accessed without any authentication token. This exposes internal data structures and could allow attackers to scrape data or attempt injection attacks without needing a user session. Maps to OWASP A01: Broken Access Control.
  3. Sensitive Data in Client-Side Storage: The application stores a JWT token and basket ID (bid) in the browser's Local Storage. If the application has an XSS (Cross-Site Scripting) vulnerability, an attacker can easily steal these tokens via JavaScript. Maps to OWASP A03: Injection (leading to Session Hijacking) or A05: Security Misconfiguration.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions