Target: https://shop.example.com
Hostname: shop.example.com
Suite: comprehensive_core · Tier: comprehensive
Generated: 2026-08-17T00:00:00.000Z
Automated testing with evidence · AI status: sampleHands-off Vulnify worker. No human tester. Exact-hostname scope lock.
Auth: none · Included retests: 2.
This automated evidence pack can support your auditor's review. It is not a PCI DSS, SOC 2, or ISO 27001 certification, and it is not a certified or human-signed penetration test.
Automated penetration test identified 7 finding(s) on shop.example.com
Vulnify ran the comprehensive_core suite against https://shop.example.com. Findings by severity: Critical 0, High 4, Medium 3, Low 0, Info 0. Check matrix: 4 passed, 6 failed, 6 not applicable.
Leadership this week: Fund XSS encoding and JWT cookie storage this week on shop.example.com, then disable GraphQL introspection on api.shop.example.com.
This is an automated, evidence-backed Vulnify assessment. It is not a PCI DSS, SOC 2, ISO 27001, or certified penetration test, and it is not a human consultant letter or attestation.
The five highest-severity fixes, in plain English, with the URL to change first.
/search?q=/account/email/file?path=//3 extra hosts found, 2 verified and tested, 1 left unverified or skipped.
| Hostname | Status | Role | Notes |
|---|---|---|---|
shop.example.com |
tested | primary | primary |
api.shop.example.com |
tested | extra | inventory |
admin.shop.example.com |
tested | extra | inventory |
staging.shop.example.com |
out_of_scope | extra | Not selected |
| Host | Critical | High | Medium | Low | Info | Total |
|---|---|---|---|---|---|---|
shop.example.com |
0 | 4 | 2 | 0 | 0 | 6 |
api.shop.example.com |
0 | 0 | 1 | 0 | 0 | 1 |
Compared with prior job sample-pentest-report: 2 new, 4 still open, 0 resolved.
A second auth profile was not supplied, so role B columns are Not tested.
| URL / object | Unauth | Role A | Role B | Outcome |
|---|---|---|---|---|
https://api.shop.example.com/orders/1001 |
401 | 200 | not_tested | role_a_ok |
Target hostname shop.example.com was tested under exact-hostname scope lock. Suite comprehensive_core executed 16 catalog checks. Engines and Vulnify modules invoked: must_checks. This run was unauthenticated. Authenticated authz and business-logic checks are not applicable until a healthy auth profile is supplied. Checks marked not_applicable were skipped because preconditions were missing (for example auth, object IDs, or optional binaries). Findings are never invented to fill those gaps. This Comprehensive Pentest includes two targeted retest cycles. Extra sibling hosts are tested only after they are verified (cap 5).
This automated evidence pack can support your auditor's review. It is not a PCI DSS, SOC 2, or ISO 27001 certification, and it is not a certified or human-signed penetration test.
| Check | OWASP | PTES | NIST |
|---|---|---|---|
baseline.tls_transport |
WSTG-CRYP-01 | PTES Vulnerability Analysis | NIST SP 800-115 3.2 Review Techniques |
baseline.security_headers |
WSTG-CONF-12 | PTES Vulnerability Analysis | NIST SP 800-115 3.2 Review Techniques |
web.xss.reflected |
WSTG-INPV-01 | PTES Exploitation | NIST SP 800-115 3.4 Target Vulnerability Validation |
web.xss.stored |
WSTG-INPV-02 | PTES Exploitation | NIST SP 800-115 3.4 Target Vulnerability Validation |
web.xss.dom |
WSTG-CLNT-01 | PTES Exploitation | NIST SP 800-115 3.4 Target Vulnerability Validation |
web.csrf.state_changing |
WSTG-SESS-05 | PTES Vulnerability Analysis | NIST SP 800-115 3.4 Target Vulnerability Validation |
web.lfi_path_traversal |
WSTG-ATHZ-01 | PTES Exploitation | NIST SP 800-115 3.4 Target Vulnerability Validation |
web.sqli.reflect_or_blind |
WSTG-INPV-05 | PTES Exploitation | NIST SP 800-115 3.4 Target Vulnerability Validation |
discover.crawl_auth |
WSTG-INFO-06 | PTES Intelligence Gathering | NIST SP 800-115 3.3 Target Identification and Analysis |
api.bola_object_id |
WSTG-ATHZ-04 | PTES Exploitation | NIST SP 800-115 3.4 Target Vulnerability Validation |
logic.priv_escalation |
WSTG-ATHZ-03 | PTES Exploitation | NIST SP 800-115 3.4 Target Vulnerability Validation |
recon.subdomain_inventory |
WSTG-INFO-01 | PTES Intelligence Gathering | NIST SP 800-115 3.3 Target Identification and Analysis |
api.graphql.introspection |
WSTG-INFO-10 | PTES Intelligence Gathering | NIST SP 800-115 3.3 Target Identification and Analysis |
session.jwt_exposure |
WSTG-SESS-02 | PTES Vulnerability Analysis | NIST SP 800-115 3.2 Review Techniques |
session.jwt_alg_none |
WSTG-CRYP-04 | PTES Exploitation | NIST SP 800-115 3.4 Target Vulnerability Validation |
repo.secrets.gitleaks |
WSTG-CONF-05 | PTES Intelligence Gathering | NIST SP 800-115 3.2 Review Techniques |
Send GET to /search?q=, observe HTTP 200, using parameter q.
Reflected XSS steals sessions, injects UI, and is a common phishing primitive on the same origin.
After the change is live, use the included targeted retest from the workspace. Do not mark the finding closed until the retest records a before/after result.
Observed GET · /search?q= · HTTP 200
Path hits /search?q= /search?q=
Browser proof no browser proof
Send POST to /account/email, observe HTTP 200.
Without anti-CSRF controls, a foreign site can change email, password, or money-moving actions as the victim.
After the change is live, use the included targeted retest from the workspace. Do not mark the finding closed until the retest records a before/after result.
Observed POST · /account/email · HTTP 200
Path hits /account/email /password/reset /account/email /account/email
Browser proof no browser proof
Send GET to /file?path=, observe HTTP 200, using parameter path.
Path traversal reads secrets, source, and sometimes credentials off disk.
After the change is live, use the included targeted retest from the workspace. Do not mark the finding closed until the retest records a before/after result.
Observed GET · /file?path= · HTTP 200
Path hits /file?path= /file?path=
Browser proof no browser proof
Send GET to /, observe HTTP 200.
JWTs in HTML or localStorage are stolen by XSS and used as bearer sessions.
After the change is live, use the included targeted retest from the workspace. Do not mark the finding closed until the retest records a before/after result.
Observed GET · / · HTTP 200
Path hits /
eyJhbGciOi...[REDACTED]
Browser proof no browser proof
Open / and confirm the recorded evidence still appears.
Missing security headers make XSS, clickjacking, and MIME confusion easier. Auditors look for these on every HTTPS response.
After the change is live, use the included targeted retest from the workspace. Do not mark the finding closed until the retest records a before/after result.
Missing headers content-security-policy strict-transport-security x-content-type-options
Path hits / /
Browser proof no browser proof
Open / and confirm the recorded evidence still appears.
Missing cookie flags or session fixation lets an attacker keep a stolen or planted session.
After the change is live, use the included targeted retest from the workspace. Do not mark the finding closed until the retest records a before/after result.
Path hits / /
Browser proof no browser proof
Send POST to /graphql, observe HTTP 200.
Public introspection hands attackers the full schema, including internal mutations.
After the change is live, use the included targeted retest from the workspace. Do not mark the finding closed until the retest records a before/after result.
Observed POST · /graphql · HTTP 200
Path hits /graphql (200)
Browser proof no browser proof
Prioritize CISA KEV and high-EPSS findings first, then Critical/High severity. Retest after each remediation batch.
Identified 2 combined path(s) from related findings. Validate and remediate path members together.
sample-cookies sample-headers sample-xsssample-xss sample-lfi sample-csrf sample-graphql| Check | Status | Summary |
|---|---|---|
baseline.tls_transport |
passed | TLS 1.2+ served on the sample host |
baseline.security_headers |
failed | CSP, HSTS, and X-Content-Type-Options missing |
web.xss.reflected |
failed | Reflected XSS confirmed on /search |
web.xss.stored |
not_applicable | No persistent sink in sample scope |
web.xss.dom |
not_applicable | No DOM sink in sample scope |
web.csrf.state_changing |
failed | State-changing forms lacked CSRF tokens |
web.lfi_path_traversal |
failed | Path parameter read a local file |
web.sqli.reflect_or_blind |
passed | SQL injection was not confirmed |
discover.crawl_auth |
not_applicable | Sample report is unauthenticated |
api.bola_object_id |
not_applicable | No authenticated object IDs in sample |
logic.priv_escalation |
not_applicable | No login role in sample |
recon.subdomain_inventory |
passed | 3 extra hosts found; 2 verified and tested |
api.graphql.introspection |
failed | Introspection open on /graphql |
session.jwt_exposure |
failed | Replayable JWT in page |
session.jwt_alg_none |
passed | alg=none rejected |
repo.secrets.gitleaks |
not_applicable | No repository zip uploaded |
Not applicable (6): web.xss.stored web.xss.dom discover.crawl_auth api.bola_object_id logic.priv_escalation repo.secrets.gitleaks