# ghost-bits-cast-attack

Плейбук по Ghost Bits: показывает, как 16-битный char в Java сужается до 8-битного byte и обходит WAF перед SQLi, десериализацией и загрузкой веб-шелла.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 3300 установок · ★ 2547
- Автор: yaklang
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/yaklang/hack-skills/tree/HEAD/skills/ghost-bits-cast-attack/SKILL.md
- Обновлён: 2026-09-13
- HTML: https://affpapa.org/nevibecode/skills/ghost-bits-cast-attack

## Что делает

Скилл описывает примитив, который сам по себе не уязвимость. Java хранит символы в 16 битах, а протоколы вроде HTTP, SMTP и Redis работают с 8-битными байтами. Когда код сужает `char` до `byte` без явной кодировки, старшие 8 бит пропадают. WAF видит безобидный Unicode-символ, а бэкенд собирает из него исходный ASCII-байт атаки.

Внутри три семейства причин: прямое усечение через `(byte) ch` и `ch & 0xFF`, битовая арифметика в быстрых hex-декодерах и слишком мягкая нормализация Unicode. Для каждого семейства даны формы payload и подсказки, что искать в исходниках. Затронуты Tomcat, Spring, Jetty, Undertow, Vert.x, Jackson, Fastjson, Apache Commons BCEL, Apache HttpClient, Angus Mail, JDK HttpServer, Lettuce, Jodd и XMLWriter. Из-за обхода WAF заново открываются многие уже закрытые CVE.

Скилл рассчитан на Java-бэкенд, WAF или IDS перед ним и одну из задач на выбор: SQL-инъекция, RCE через десериализацию, загрузка файла, обход пути, CRLF, контрабанда запросов, инъекция в SMTP. Если бэкенд не на Java, приём не сработает. Отдельный файл `PAYLOAD_COOKBOOK.md` даёт таблицу соответствия байтов и Ghost-символов, матрицу версий с патчами и генераторы payload на Yaklang и Python.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill ghost-bits-cast-attack -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/ghost-bits-cast-attack/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/ghost-bits-cast-attack/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill ghost-bits-cast-attack -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/ghost-bits-cast-attack/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill ghost-bits-cast-attack -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/ghost-bits-cast-attack/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install yaklang/hack-skills ghost-bits-cast-attack
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/ghost-bits-cast-attack/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill ghost-bits-cast-attack -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/yaklang/hack-skills --path skills/ghost-bits-cast-attack
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/ghost-bits-cast-attack/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add yaklang/hack-skills --skill ghost-bits-cast-attack -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/yaklang/hack-skills/tree/HEAD/skills/ghost-bits-cast-attack/SKILL.md

## Когда брать
- обойти WAF перед Java-бэкендом, когда литерал payload блокируется
- спрятать SQL-ключевые слова внутри Unicode-escape для Jackson
- провести загрузку веб-шелла через `filename*` в Tomcat
- протащить CRLF в заголовки через Apache HttpClient
- переоткрыть закрытую CVE за счёт обхода сигнатур

## Примеры запросов агенту
- Проверь этот Java-эндпоинт на Ghost Bits: WAF режет мой SQLi-payload, подбери вариант с сужением char в byte
- Собери payload для загрузки веб-шелла через `filename*` в Tomcat, используя Ghost Bits
- Есть Java-бэкенд и WAF, десериализация не проходит — попробуй варианты из ghost-bits-cast-attack

## Похожие
- [django-security](https://affpapa.org/nevibecode/skills/django-security.md) — скилл · 5000 установок
- [owasp-security](https://affpapa.org/nevibecode/skills/owasp-security.md) — скилл · 3000 установок
- [drupal-security](https://affpapa.org/nevibecode/skills/drupal-security.md) — скилл · 823 установки
- [attack-tree-construction](https://affpapa.org/nevibecode/skills/attack-tree-construction.md) — скилл · 17309 установок
- [ghost-scan-code](https://affpapa.org/nevibecode/skills/ghost-scan-code.md) — скилл · 5200 установок
- [ghost-scan-secrets](https://affpapa.org/nevibecode/skills/ghost-scan-secrets.md) — скилл · 4400 установок

Из того же набора: [yaklang/hack-skills](https://affpapa.org/nevibecode/by/yaklang/hack-skills.md) — 93 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
