diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..7fc44ba40 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## Goal +A brief description of what this PR adds or fixes (1 sentence). + +## Changes +- List of changes + +## Testing +- [ ] Description of how the functionality was tested locally (e.g., running `curl 127.0.0.1:3000`). + +## Artifacts & Screenshots +- Links to files or screenshots (if necessary). + +## Checklist +- [ ] Title is clear (feat(labN): style) +- [ ] No secrets/large temp files committed +- [ ] Submission file at submissions/labN.md exists \ No newline at end of file diff --git a/.github/workflows/lab1-smoke.yml b/.github/workflows/lab1-smoke.yml new file mode 100644 index 000000000..d87b60cb5 --- /dev/null +++ b/.github/workflows/lab1-smoke.yml @@ -0,0 +1,38 @@ +name: Lab 1 Smoke Test + +on: + pull_request: + branches: [ main ] + +# pipeline only reads code +permissions: + contents: read + +jobs: + smoke-test: + runs-on: ubuntu-latest + + services: + juice-shop: + image: bkimminich/juice-shop:v20.0.0 + ports: + - 3000:3000 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + + - name: Wait for Juice Shop to be started + run: | + echo "Waiting for Juice Shop to start..." + for i in $(seq 1 30); do + curl --silent --fail http://localhost:3000/rest/admin/application-version >/dev/null && echo "Ready!" && exit 0 + sleep 2 + done + echo "Timeout!" + exit 1 + + + - name: Smoke Test (Curl Homepage) + run: curl -I http://localhost:3000 \ No newline at end of file diff --git a/submissions/lab1.md b/submissions/lab1.md new file mode 100644 index 000000000..b7c3eca3b --- /dev/null +++ b/submissions/lab1.md @@ -0,0 +1,90 @@ +# 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: macOS 26.5.1 +- Docker version: 29.5.3, build d1c06ef + +### 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: + +### Health Check +- HTTP code on `/`: 200 +- API check (first 200 chars of `/rest/products`): +```html + + + + Error: Unexpected path: /rest/products +