01 — Overview

E-commerce surfaces worth pressure-testing

247 Blinds is a UK-based e-commerce platform selling blinds, curtains, shutters, and window coverings at 247blinds.co.uk. The site handles customer accounts, order fulfillment, payment processing, admin dashboards, CMS product management, and file upload workflows for product imagery and made-to-measure specifications — fertile ground for admin access escalation, shell/RCE, XSS-to-file-upload chains, and database extraction if any boundary slips.

In scope materially: every HTTP(S) origin answering for 247blinds.co.uk and delegated subdomains, admin and staff portals, CMS and product management interfaces, customer database and order records, checkout and payment processing flows, file upload endpoints, API integrations with shipping and payment providers, staging or preview environments.
Civil exclusions only: mass harassment, ransomware, laundering.

Minimum evidence bar — non-negotiable:
1️⃣ Narrative kill chain tying root cause → exploit steps → observable impact  2️⃣ Proof the attack succeeds (replayable scripts, Burp/HAR with matched responses).
02 — Why this matters

Why probe 247 Blinds?

Flat $5K critical payouts

Validated critical exploits earn exactly $5,000 USD.

Admin access blast radius

Admin panels control product catalogs, made-to-measure pricing, customer data, and order fulfilment.

File upload & XSS vectors

Product imagery and made-to-measure specification uploads are common XSS and web shell vectors.

03 — Critical reward

$5,000 per validated critical

Critical$5,000 USD

One flat tier. Multiple criticals from the same researcher are paid independently.

Special bounty uplift: Shell/RCE + database extraction of customer PII qualifies for $10,000+ special bounty.
04 — Scope

What's in scope

Everything 247 Blinds operates at 247blinds.co.uk and its subdomains.

  • Admin and staff backoffice panels — authentication bypass, privilege escalation
  • File upload endpoints — unrestricted upload, path traversal, web shell deployment
  • XSS vectors — stored, reflected, DOM-based chaining to session theft
  • Shell/RCE — command injection, template injection, SSRF-to-RCE
  • Customer database — SQL injection, data extraction of PII and order records
  • Checkout and payment flows — price manipulation, order tampering
  • CMS and product management — content injection, media library abuse
  • API endpoints — REST and GraphQL surfaces, authentication flaws, IDOR
  • Staging / dev environments — dev-, staging-, test- subdomains
05 — Full-scope policy

No discretionary carve-outs

Every endpoint, parameter, and admin interface is eligible when a critical impact is reproducible.

  • Every hostname routing through 247 Blinds edge
  • Third-party integrations (made-to-measure configurators, payment iframes) when the vulnerability originates from 247 Blinds
  • Admin subdomains — admin, dashboard, backoffice
06 — Rules

Rules of engagement

  1. Prove exploitation success. Replayable curl flows, Burp/HAR exports, web shell access logs.
  2. Articulate kill chain. Number each hop: initial vector → escalation → admin access → data exfiltration.
  3. Document blast radius. Quantify users or records affected.
  4. Encrypt & ship privately. Sanctioned intake before broadcasting.
  5. Duplicate fairness. First fully qualifying chain wins.
07 — Submit

How to submit a report

Start from the security contact on 247blinds.co.uk.

Report Template
# Title
[Critical][Exploit-Proven] <tight title>
## Attack chain narrative
1. Preconditions
2. Entry primitive — exact HTTP verb/path/query/body
3. Pivot(s) chaining trust escalation
4. Final hop → admin access / data exfiltration / shell
## Successful exploitation evidence
• Replayable script + truncated responses
• HAR / Burp with unauthorized state change
## Reproduction package
Commands + fixtures + pinned SHAs
08 — Example

SSTI in customer enquiry form

Server-Side Template Injection via customer enquiry field — execute arbitrary commands on the server.

Python/Flask · illustrative vulnerability
# BUGGY: user input rendered through Jinja2 template directly
from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/enquiry', methods=['POST'])
def enquiry():
    name = request.form['name']
    return render_template_string(
        f"<p>Thank you, {{name}}</p>"
    )
# POST /enquiry name={{config.__class__.__init__.__globals__['os'].popen('id').read()}}
09 — FAQ

Frequently asked questions

Out of scope besides illegal stuff?

No discretionary carve-outs — only universal legal/ethical lines.

Write-ups without exploit get paid?

No. Both narrative and evidence required.

Staging environments?

Yes, when 247 Blinds labels or operates them.

Duplicates?

First validated chain + reproducible exploitation wins.

Lower severities?

Not under this $5K-flat critical playbook.

Critical chain + working exploit = $5,000

Document the attack, prove it lands, file privately.