Use this skill to plan and execute a complete authorized web application security assessment. It is the coordinating layer that sequences all 13 testing areas, delegates each area to the appropriate domain skill, and ensures nothing is missed.
Invoke it when:
Do not invoke it for unauthorized testing. Verify scope — exact hostnames, paths, and restrictions — before beginning. Advise the application owner to back up data before testing commences.
Apply these cross-cutting rules throughout every testing phase:
URL Encoding Reference: When injecting data into HTTP requests through a proxy (not a browser form), URL-encode characters that have special meaning in request syntax:
| Character | Meaning | Encoded Form |
|---|---|---|
| ----------- | --------- | -------------- |
& | Parameter separator (query string and body) | %26 |
= | Name/value separator | %3d |
? | Query string start | %3f |
(space) | URL end / cookie delimiter | %20 or + |
+ | Encoded space | %2b |
; | Cookie separator | %3b |
# | Fragment identifier (truncates URL in browser) | %23 |
% | URL-encoding prefix | %25 |
| null byte | Nonprinting | %00 |
| newline | Nonprinting | %0a |
WHY: Submitting unencoded special characters causes them to be interpreted as request structure rather than data values. This produces false negatives — payloads that appear to be sent but are never received by the application in the intended form. Always verify the final request in the proxy before concluding a payload failed.
False Positive Procedure: When a crafted input produces a response associated with a vulnerability (error message, behavioral anomaly), always double-check by submitting benign input in the same parameter. If benign input triggers the same response, the finding is a false positive — the behavior exists independently of the attack payload.
WHY: Applications frequently display error messages or unusual behavior for reasons unrelated to the specific payload submitted. Confirming that benign input does not trigger the same response is the minimum verification step before recording a finding.
State Accumulation and Reset: Applications accumulate session state from prior requests, which can mask or distort test results. When investigating an anomaly, start a fresh browser session, navigate normally to the relevant location using only benign requests, then resubmit the crafted input. Alternatively, use a proxy replay tool (Burp Repeater) to isolate and resend specific requests.
WHY: If session state from earlier tests has altered the application's behavior — partially authenticated, locked-out account, cart in intermediate state — results from subsequent tests in that session cannot be attributed to the specific payload being tested.
Load-Balanced Environments: When the application sits behind a load balancer, consecutive requests may be handled by different back-end servers with slightly different configurations. Successful attacks that create server-side state (files written to disk, database records) may not be reproducible immediately. Repeat the same attack several times in succession to ensure routing to the relevant server before concluding an attack failed.
WHY: State-modifying attacks (command injection writing a file, SQL injection inserting a row) may succeed on one server but the confirmation request hits a different server. Repeating the request increases the probability of routing consistency and prevents missed exploits.
Complete reconnaissance before active vulnerability testing. Findings from reconnaissance directly shape how much time to invest in each subsequent testing area.
Purpose: Build a complete inventory of all reachable content, hidden directories, debug functionality, and identifier-driven functions. This inventory defines the scope of all subsequent testing.
Invoke: web-application-attack-surface-mapping
This skill covers:
Output required before proceeding: Complete URL inventory, list of hidden content discovered, confirmed live debug parameters (if any).
Purpose: Understand core functionality, all data entry points, server-side technologies, and map behavior to likely vulnerability classes. Produces the prioritized attack plan that directs investment across Areas 3–13.
Invoke: web-application-attack-surface-mapping (the analysis sub-tasks are included in this skill)
This skill covers:
Output required before proceeding: Prioritized test plan with attack surface map. This plan determines how much time to allocate to each subsequent area.
Purpose: Identify all cases where security enforcement relies on client-side mechanisms (HTML field constraints, JavaScript validation, hidden parameters, browser extension logic) rather than server-side enforcement.
Invoke: client-side-attack-testing
This skill covers:
WHY: Client-side controls are enforced by code running on a machine the attacker controls. Any security decision made solely by the client is bypassed by sending a crafted request directly via a proxy, bypassing the browser entirely.
Key output: List of parameters where client-side validation is not replicated server-side; any decoded ViewState revealing sensitive data or injectable input channels.
Purpose: Identify flaws in the application's business logic that cannot be detected by automated scanning — step-skipping in multistage processes, trust boundary violations, transaction manipulation.
Invoke: application-logic-flaw-testing
This skill covers:
WHY: Logic flaws do not produce anomalous error messages detectable by fuzzing — they produce the wrong valid responses. They require understanding the intended workflow and systematically violating assumptions.
Key output: Any step-skip vulnerabilities, trust elevation paths, transaction manipulation vectors.
Purpose: Assess the strength, implementation, and resilience of all authentication functions — login, registration, account recovery, remember-me, and impersonation.
Invoke: authentication-security-assessment
This skill covers (14 sub-areas):
WHY: Authentication is the application's primary trust boundary. Weaknesses here often provide direct access to every other vulnerability in the application.
Key output: Any enumeration vectors, brute-force feasibility assessment, session fixation risk from account recovery, credential transmission flaws.
Purpose: Assess how the application establishes, maintains, and terminates user sessions — token generation, transmission security, and token handling.
Invoke: session-management-security-assessment
This skill covers (10 sub-areas):
WHY: Weak session management allows attackers to hijack authenticated sessions without needing credentials — nullifying authentication entirely.
Key output: Predictability rating for session tokens, any insecure transmission paths, CSRF susceptibility, session fixation feasibility.
Purpose: Verify that all privilege segregation — vertical (role-based) and horizontal (data ownership) — is enforced server-side on every request, at every stage of multistage functions.
Invoke: access-control-vulnerability-testing
This skill covers (4 sub-areas):
WHY: Access controls are the most commonly broken class of web application control. Server-side enforcement must be present for every protected request — not only the first request in a sequence.
Key output: Any vertical privilege escalation paths, horizontal data isolation failures, insecure access control method bypasses.
Purpose: Fuzz every request parameter across the application for the full range of injection vulnerability classes, then follow up each positive signal with targeted exploitation testing.
Invoke (fuzzing phase): web-application-fuzzing-automation
Invoke (SQL injection follow-up): sql-injection-detection-and-exploitation
Invoke (XSS follow-up): xss-detection-and-exploitation
Invoke (server-side injection follow-up): server-side-injection-testing
Fuzzing procedure (Area 7.1): For every distinct request that submits parameters server-side, load into an automated fuzzer and submit the following payload sets across all parameter values simultaneously:
', '--, '; waitfor delay '0:30:0'--, 1; waitfor delay '0:30:0'--xsstest, *">|| ping -i 30 127.0.0.1 ; x, | ping -n 30 127.0.0.1 |, ` ping 127.0.0.1 `../../../../../../../../etc/passwd, ..\..\..\..\..\boot.ini;echo 111111, response.write 111111http:/// , http:/// Configure response grep terms: error, exception, illegal, invalid, fail, stack, access, directory, file, not found, varchar, ODBC, SQL, SELECT, 111111. Also grep for payload echo (XSS/header injection indicator). Set up a listener to detect file inclusion callbacks.
WHY: Fuzzing all parameters simultaneously with a broad payload set surfaces anomalies that indicate where to investigate further. The goal is not to confirm exploitability from fuzzing alone, but to quickly identify which of hundreds of parameters warrant manual follow-up.
Follow-up by vulnerability type after fuzzing:
sql-injection-detection-and-exploitation to confirm, fingerprint database, and exploit for data extraction or authentication bypassxss-detection-and-exploitation for reflected XSS, stored XSS, header injection, and open redirection follow-upserver-side-injection-testing for command retrieval, out-of-band channel establishment, and privilege escalationserver-side-injection-testing for filter bypass sequences and file content escalationserver-side-injection-testing for platform-specific command execution verificationserver-side-injection-testing for remote file inclusion exploitationAlso fuzz out-of-band input channels (email content processed by the application, data fetched from external URLs). Run an automated vulnerability scanner alongside manual fuzzing to provide independent findings for comparison.
Key output: Complete list of anomalous responses per parameter, confirmed vulnerability type per positive signal, follow-up findings from domain skills.
Purpose: Test vulnerability classes that are triggered only by specific application functionality types, not by generic fuzzing — these require understanding what the function does before testing it.
Invoke: server-side-injection-testing
This skill covers 7 function-specific injection types. Apply each only where the corresponding functionality is present:
%0aCc:, %0d%0aBcc:, full DATA command injection). WHY: applications that concatenate user input directly into SMTP commands allow sending arbitrary email through the server — spam relay and phishing delivery.%n%n%n%n..., %s%s%s%s...) for format string vulnerabilities.), then balanced open/close pairs. Submit XML comment open/close characters across adjacent parameters to comment out portions of the SOAP message. (wildcard returns many results), ))))))))) (syntax error), and expression pairs that produce differential behavior () (cn=). Try appending LDAP attributes (cn, mail, uid, objectclass) as comma-separated additions.' or count(parent::[position()=1])=0 or 'a'='b (false condition) vs. ' or count(parent::[position()=1])>0 or 'a'='b (true condition). Differential behavior without error indicates XPath injection; extract the XML tree one byte at a time using substring conditions.localhost and your own IP for incoming connection callbacks. Inject URL-encoded additional parameters (%26foo%3dbar) to test HTTP parameter injection.Key output: Any confirmed function-specific injection vulnerabilities with exploitation evidence.
Purpose: Assess whether isolation between tenants in a shared hosting environment is effective, and whether compromise of one application enables lateral movement.
Covered inline (no dedicated domain skill required):
WHY: Shared hosting converts an application-layer vulnerability into a host-layer vulnerability. SQL injection that reads one customer's data may read all customers' data if the database is shared.
Key output: Any cross-tenant access capability, shared component abuse vectors.
Purpose: Assess the security posture of the web server and application container independently of the application logic — default credentials, dangerous HTTP methods, misconfigurations, and known software vulnerabilities.
Invoke: web-application-hardening-assessment
This skill covers (7 sub-areas):
WHY: Application server vulnerabilities are independent of the application code and frequently overlooked in application-focused reviews. Default credentials on a management interface can bypass all application-layer security controls.
Key output: Any accessible administrative interfaces, dangerous methods enabled, proxy functionality, virtual host leakage, known CVEs applicable to identified server software.
Purpose: Cover browser-client security issues that do not fit into the preceding categories: DOM-based attacks, local privacy vulnerabilities, weak transport security, and cross-origin policy misconfigurations.
Covered inline:
document.location, document.URL, document.referrer, window.location) flow into dangerous sinks (document.write(), eval(), document.body.innerHTML, window.location, document.open()). Test for DOM XSS and DOM-based open redirection by crafting URLs with payloads in the fragment or query string.expires attribute); inspect their contents for sensitive data. Check whether pages containing sensitive data are served with Cache-control: no-store, Pragma: no-cache, and Expires: past-date headers. Check whether sensitive form fields use autocomplete=off.Access-Control-Allow-Origin response headers for overly permissive cross-origin resource sharing (CORS) configuration — particularly * or reflection of the request's Origin header. Review crossdomain.xml (Flash) and clientaccesspolicy.xml (Silverlight) for overly permissive cross-domain access grants.Key output: Any DOM XSS vectors, sensitive data in persistent cookies, missing cache headers on sensitive pages, weak ciphers, permissive CORS or cross-domain policy.
Purpose: Investigate all cases where the application has disclosed information about its internal structure, technology stack, credentials, or error handling that could enable or refine attacks.
Invoke: web-application-hardening-assessment
Review and investigate:
WHY: Information leakage findings rarely produce direct impact but consistently enable more effective exploitation of other findings. A stack trace revealing the database query structure makes SQL injection exploitation dramatically more efficient.
For grey-box or white-box engagements where source code is available, run alongside all testing phases:
Invoke: source-code-security-review
Source code review finds vulnerabilities that black-box testing cannot detect — insecure cryptography, hardcoded credentials, business logic flaws invisible from the outside, and dangerous function calls in code paths not reached by testing. It also confirms exploitability of suspected vulnerabilities and extends testing coverage beyond what the running application reveals.
After completing all applicable areas, consolidate findings across testing phases:
source-code-security-review alongside all black-box testing phases. Source access enables confirmation of false positives, discovery of non-reachable code paths, and identification of cryptographic and business logic flaws invisible from the outside.Scenario: A client has contracted a penetration test of their retail web application. Authorization is confirmed. A staging environment is available.
Trigger: "Conduct a full penetration test of shop.example.com per the signed scope document. We have admin, seller, and buyer accounts."
Process:
web-application-attack-surface-mapping. Discover 340 URLs, 3 hidden admin endpoints, debug parameter test=true active on /checkout/. Technology: Java/Spring, PostgreSQL, Nginx. Prioritized plan: admin endpoints (highest), checkout debug parameter, search sort parameter, file upload.client-side-attack-testing. Find price field enforced only by JavaScript maxlength — server accepts arbitrary decimal values. Find ViewState on admin pages not MAC-protected.authentication-security-assessment. Find username enumeration via timing difference on login. Account recovery sends predictable sequential tokens. No lockout policy.session-management-security-assessment. Session tokens pass Sequencer entropy test. Session does not expire server-side — 14-day-old token accepted. CSRF on fund-transfer function — no anti-CSRF token.access-control-vulnerability-testing. Buyer account can access /admin/users/export (IDOR). Seller can modify other sellers' product prices by changing seller_id parameter.web-application-fuzzing-automation across all 340 parameterized requests. SQL injection signal in product search sort parameter (time delay). XSS signal in product review name parameter (payload reflected). Invoke sql-injection-detection-and-exploitation — confirm SQL injection, extract user table. Invoke xss-detection-and-exploitation — confirm stored XSS, demonstrate session hijacking.* on /api/ endpoints.Output: 12 findings (2 Critical, 4 High, 4 Medium, 2 Low). Critical: SQL injection on search (full database read), CSRF on fund transfer. Report delivered with reproduction steps and remediation guidance.
Scenario: An internal security team is reviewing the company HR portal before a compliance audit. Source code and credentials for all role levels are available.
Trigger: "Security review of our HR portal — full access including source code. Findings needed for the compliance audit."
Process:
web-application-attack-surface-mapping against both source code and live application. Source grep reveals 6 API endpoints not linked from the frontend, including /api/payroll/export-all. Technology fingerprint: Python/Django, PostgreSQL.client-side-attack-testing. Employee ID field client-validated but server accepts any integer. Hidden role parameter in profile update endpoint.authentication-security-assessment and session-management-security-assessment. Multi-factor authentication bypass: second factor not verified if step parameter is posted directly to final stage endpoint. Session fixation: pre-login session token retained after authentication.access-control-vulnerability-testing. Employee can access other employees' pay stubs by incrementing document ID. Manager-level API endpoints accessible with employee token.web-application-fuzzing-automation. Source code confirms manager_id parameter builds raw SQL string — confirmed injection. name field in search uses parameterized queries — no injection.source-code-security-review across all phases: finds hardcoded database credentials in settings.py, insecure deserialization in session handling, timing-safe comparison missing from password verification.Output: 9 findings. Critical: MFA bypass, SQL injection. High: broken access control (pay stubs), session fixation. Report formatted for compliance audit with GDPR and SOC 2 control mapping.
Scenario: A client has applied fixes to findings from a prior engagement. They need a re-test of the remediated items plus any newly introduced surface.
Trigger: "Re-test the 8 findings from last quarter's report. They say everything is fixed. Also check the new API they launched."
Process:
web-application-attack-surface-mapping focused on changed areas. New /api/v2/ endpoints identified — not present in prior engagement.web-application-fuzzing-automation against all /api/v2/ endpoints. XXE vulnerability found in new XML upload endpoint (Area 8.7). SQL injection in one new search parameter.access-control-vulnerability-testing — new API endpoints accessible without authentication.Output: 5 of 8 prior findings confirmed remediated; 3 inadequately fixed with bypass demonstrated. 3 new findings (Critical: unauthenticated API access; High: SQL injection in new endpoint; Medium: XXE). Differential report delivered showing remediation status per prior finding plus new findings.
web-application-attack-surface-mapping SKILL.mdclient-side-attack-testing SKILL.mdauthentication-security-assessment SKILL.mdsession-management-security-assessment SKILL.mdaccess-control-vulnerability-testing SKILL.mdweb-application-fuzzing-automation SKILL.mdsql-injection-detection-and-exploitation SKILL.mdxss-detection-and-exploitation SKILL.mdserver-side-injection-testing SKILL.mdapplication-logic-flaw-testing SKILL.mdweb-application-hardening-assessment SKILL.mdsource-code-security-review SKILL.mdreferences/url-encoding-reference.mdreferences/findings-templates.mdThis skill is licensed under CC-BY-SA-4.0.
Source: BookForge — The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws by Dafydd Stuttard, Marcus Pinto.
This skill is standalone. Browse more BookForge skills: bookforge-skills
共 1 个版本
暂无安全检测报告