← Back to Scanner Test Hub

Security Scan Test Page

This page contains a mix of secure and insecure elements for testing security scanners.

Expected Scan Results

CheckExpectedWhy
X-Content-Type-OptionsPASSHeader set to nosniff
Referrer-PolicyPASSHeader set to strict-origin-when-cross-origin
Permissions-PolicyPASSRestrictive policy set
Subresource IntegrityPASSSRI hash on normalize.css
HTTPS (page itself)PASSServed over HTTPS by Cloudflare
Content-Security-PolicyFAILNo CSP header set
Strict-Transport-SecurityFAILNo HSTS header set
X-Frame-OptionsFAILNo clickjacking protection
Mixed ContentFAILjQuery loaded over HTTP
Inline ScriptsFAILInline <script> block present
CSRF ProtectionFAILLogin form has no CSRF token
Secure CookiesFAILsession_prefs cookie missing Secure/HttpOnly
Open RedirectFAIL/redirect?url= accepts arbitrary URLs
Information DisclosureFAIL/api/info exposes server details
Autocomplete on PasswordFAILPassword field has autocomplete="on"
DOM XSSFAILlocation.hash written to innerHTML unsanitised
HTTP Response SplittingFAIL?lang= reflected into Set-Cookie and Content-Language headers without CR/LF filtering
IFrame Sandbox AttributeFAIL<iframe> embedded below has no sandbox attribute, so framed content runs with full privileges
Permissive CORS on fontFAIL/security/fonts/leaky.woff serves Access-Control-Allow-Origin: * with Access-Control-Allow-Credentials: true — universal cross-origin access to a font resource
Leaked secrets in JSFAIL/security/js/leaked-secrets.js ships hard-coded Stripe / AWS / GitHub / Slack / Google API tokens that match nuclei's keys,tokens regexes
Fake WordPress installFAIL/security/wordpress mimics WordPress 5.4.2 with vulnerable plugins, exposed config backup, user enumeration, xmlrpc pingback, debug.log, etc.
webpack.stats.json exposedFAIL/webpack.stats.json exposes the full webpack --json dump — CI build path, internal module tree, chunk graph, and webpack version (probe-only; not linked)
Gatsby version disclosureFAIL/page-data/app-data.json leaks gatsbyVersion (CVE pivot) and the webpack compilation hash (probe-only; not linked)
JavaScript source map exposedFAIL/security/js/webpack-runtime-8f2a1c9d7e3b4a6f0d2e.js.map ships full sourcesContent, leaking un-minified source incl. a hard-coded internal API token (probe-only; not linked)

Login Form FAIL

No CSRF token. Password field allows autocomplete.


Mixed Content Image FAIL

Image loaded over plain HTTP:

Insecure image

Secure Image PASS

Image loaded over HTTPS:

Secure image

Open Redirect FAIL

The /redirect?url= endpoint redirects to any URL without validation:

/redirect?url=https://evil.example.com

Information Disclosure FAIL

The /api/info endpoint exposes internal server details:

/api/info

HTTP Response Splitting FAIL

The ?lang= query parameter is reflected unsanitised into both the Set-Cookie (preferred_lang=...) and Content-Language response headers. Injecting CR/LF (%0d%0a) lets an attacker inject arbitrary headers or split a second HTTP response.

Current value: en

IFrame Without Sandbox FAIL

The <iframe> below embeds another page with no sandbox attribute, so the framed document runs with full privileges (scripts, forms, same-origin, top-navigation, popups). Scanners flag this as "IFrame Sandbox Attribute Not Implemented".

Permissive CORS on Font File FAIL

The font referenced below is served from /security/fonts/leaky.woff with Access-Control-Allow-Origin: * and Access-Control-Allow-Credentials: true, allowing any origin to read the font cross-origin with credentials. Scanners flag this as "Permissive Cross-Origin Resource Sharing (CORS) Allows Universal Access".

Sample text rendered with the leaky font.

Leaked Secrets in JS FAIL

The script at /security/js/leaked-secrets.js contains hard-coded Stripe, AWS, GitHub, Slack, and Google API tokens matching the patterns nuclei's keys,tokens templates look for. Because the file is served from the same origin as this page, the cross-origin filter in secrets-scanning pipelines lets it through and the keys/tokens rules fire.

Fake WordPress Installation FAIL

The subpage at /security/wordpress masquerades as a WordPress 5.4.2 site so that scanners running tech-fingerprint templates pick it up as WordPress and follow up with WP-specific vulnerability checks. It serves the standard WP fingerprints (generator meta, wp-json REST API discovery, wlwmanifest, RSD, wp-emoji, wp-block-library CSS, twentytwentyone theme) and exposes the usual WP attack surface — wp-login.php, wp-admin/, xmlrpc.php, wp-json/wp/v2/users, wp-content/uploads/, wp-content/debug.log, wp-config.php.bak, ?author=1, readme.html, and outdated plugin readmes (Contact Form 7, RevSlider, WP File Manager).

Gatsby / webpack Build Artifacts FAIL

This page is dressed up to look like a production Gatsby (webpack) build with debug artifacts left behind. These paths are not linked anywhere — real sites never announce them. Scanners find them by probing the exact, well-known paths directly:

DOM XSS FAIL

The search widget below reads location.hash and writes it directly into innerHTML. Append #<img src=x onerror=alert(1)> to the URL to trigger it.