Product

From "might be vulnerable" to actual proof

The category-specific exploit verifiers inside Web Iron Shield's Verify Now engine — how each one turns a suspected finding into hard evidence.

The problem with finding lists

Classic scanners produce lists of potential vulnerabilities. You read them, you file them, and 30% turn out to be false positives. Everyone's time gets wasted — yours, your client's, the dev team's.

Verify Now is the other half of the workflow. You get a finding. You click Verify. The scanner attempts actual exploitation and tells you whether it worked, with hard evidence.

Canary-based exploit confirmation

The core technique: send something that is obviously not in the app already, look for it to come back. For command injection:

GET /products?category=; echo WISCMD40293517ZZ
→ 200 OK, 22319 bytes
  response body contains "WISCMD40293517ZZ"

That string is not in the product catalog. It is not in the HTML template. It is only in the response because the backend ran echo WISCMD40293517ZZ as a shell command. Confirmed RCE, 95% confidence.

When canaries do not work: time-based blind

Some apps suppress output. You still get confirmation by timing: inject sleep 5 and see if the response takes 5+ seconds longer than baseline.

Baseline: GET /products?category=Beverages  → 312 ms
Test:     GET /products?category=; sleep 5   → 5318 ms
  delta: +5006 ms → RCE confirmed (blind)

To avoid false positives from network jitter, we require the delta to both exceed the sleep duration minus a 500ms margin AND exceed twice the baseline. A slow-but-consistent server does not trigger a false positive this way.

SQL injection needs three channels

SQL has more ways to confirm than RCE. The verifier runs all three in order:

XSS with context awareness

A reflected marker is not proof of XSS — it is proof of reflection. The verifier sends five payloads targeting different contexts and checks whether the full payload (not just the marker) reflects unencoded:

HTML tag:       <x-WISXSS123>
Attribute:      "WISXSS123"
JS string:      ';WISXSS123;'
Event handler:  <img src=x onerror=WISXSS123()>
Script body:    <script>WISXSS123</script>

If the payload reflects in a "dangerous" context (inside a tag attribute, event handler, or script), it is HIGH severity. If only the marker (not the payload) reflects, it is LOW — meaning output is being filtered but reflection exists, worth manual investigation.

What a Verify Now report contains

Every verification produces:

Reports export to HTML, JSON, or CSV so findings drop straight into your tracker.

Safe by design

Every payload is non-destructive. No DROP TABLE, no file writes, no network callouts. The command injection test uses only echo and sleep. The SQL test is all SELECT-based. The XSS test relies on static canary strings that would not execute even if rendered — verification proves reflection or execution could happen, not that it has.

This matters because Verify Now can be triggered accidentally in the middle of a scan with client traffic on the site. Safe defaults mean you can click it without rehearsing.

Read the full Verify Now documentation for endpoint-level detail.

Scan your site for free

Download Web Iron Shield and run your first vulnerability scan in minutes.