crlf-response-splitting

Construct nested CRLF injection payloads to execute JavaScript despite strict Content Security Policy.

11|1|Updated May 4, 2026
One-click install
npx skills add https://github.com/dreadnode/capabilities --skill crlf-response-splitting
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: crlf-response-splitting
Source: https://github.com/dreadnode/capabilities/tree/main/capabilities/web-security/skills/crlf-response-splitting
Command: npx skills add https://github.com/dreadnode/capabilities --skill crlf-response-splitting

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill solves the issue of strict Content Security Policy (CSP) blocking all inline and external script execution even when CRLF injection is confirmed in response headers, preventing XSS attacks in these restricted environments.

Core Features & Use Cases

  • Nested Response Splitting: Enables XSS execution by chaining two same-origin CRLF-injectable endpoints to bypass CSP set to script-src 'self'.
  • Multiple Payload Truncation Methods: Supports delivery via missing Content-Length, Transfer-Encoding: chunked, and fixed Content-Length padding for different HTTP target configurations.
  • Built-in Detection Workflow: Includes steps to confirm CRLF injection presence and validate CSP configuration to determine if nested splitting is required. Use case: For a red team assessment of a web application with strict CSP and a header parameter vulnerable to CRLF injection, use this Skill to craft a working payload that executes arbitrary JavaScript despite CSP restrictions.

Quick Start

Use the crlf-response-splitting skill to craft a nested payload that bypasses strict CSP when you have confirmed CRLF injection in a response header.

Frequently Asked Questions about crlf-response-splitting

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I bypass a strict Content Security Policy when I have CRLF injection but inline scripts are blocked?

Nested response splitting bypasses strict CSP by chaining two same-origin CRLF-injectable endpoints. This technique injects headers to split the response, allowing arbitrary JavaScript execution even when CSP restricts script sources to 'self' only.

What is nested response splitting and how does it work for CSP bypass?

Nested response splitting is a technique that chains two same-origin CRLF-injectable endpoints. It works by injecting carriage return and line feed characters into response headers, splitting the HTTP stream to serve a payload that bypasses script-src 'self' restrictions.

What payload truncation methods work for HTTP response splitting attacks?

Payload truncation methods for HTTP response splitting include missing Content-Length, Transfer-Encoding: chunked, and fixed Content-Length padding. These delivery methods accommodate different HTTP target configurations to ensure the injected payload executes properly.

How do I confirm CRLF injection presence and validate CSP configuration before crafting a payload?

You confirm CRLF injection presence and validate CSP configuration using a built-in detection workflow. This process verifies header parameter vulnerabilities and checks the Content Security Policy setup to determine if nested response splitting is required for successful execution.

Can I use response splitting for XSS if the target web application enforces script-src 'self'?

Yes, you can achieve XSS execution when a target enforces script-src 'self' by using nested response splitting. This method leverages confirmed CRLF injection in response headers to chain same-origin endpoints and execute arbitrary JavaScript despite the restriction.

When should I use fixed Content-Length padding versus Transfer-Encoding chunked for response splitting?

Use fixed Content-Length padding or Transfer-Encoding: chunked based on the target's HTTP configuration. These multiple payload truncation methods provide flexibility for response splitting delivery when missing Content-Length is not a viable option for the specific web server.