AIKraft/Skills/prototype-pollution

prototype-pollution

Тестирование prototype pollution в JavaScript-стеках. Применяется при слиянии пользовательского ввода с объектами, конфигурировании библиотек через ненадежные ключи или поиске RCE-гаджетов через загрязненный Object.prototype в Node и браузере.

yaklang official Разработка ★ 2.4k

Что делает навык

Skill выполняет экспертное тестирование Prototype Pollution в JavaScript-стеках (клиент и сервер), фокусируясь на поведении парсеров и пост-загрязняющих sink-ах. Он решает задачу обнаружения уязвимостей при слиянии пользовательского ввода с объектами, конфигурировании библиотек через ненадежные ключи или поиске RCE-гаджетов через загрязненный Object.prototype.

Когда применять

  • Обнаружение уязвимостей при глубоких слияниях (deep merges), рекурсивном assign или преобразовании URL-запросов во вложенные объекты.
  • Поиск цепочек гаджетов (gadget chains) для получения RCE, например, через EJS или паттерны типа Timelion.
  • Исследование влияния загрязнения на выполнение команд через child_process или переменные окружения NODE_OPTIONS.
  • Тестирование клиентской части (client-side) через отражение ввода в DOM или маршрутизацию фреймворков.

Как работает

  1. Определить приоритетные векторы: искать глубокие слияния, JSON.parse с последующим Object.assign или рекурсивное присваивание.
  2. Выполнить первичные клиентские пробы с использованием ключей __proto__ или constructor[prototype] (например, #__proto__[polluted]=1).
  3. При возможности отражения ввода в DOM или маршрутизацию фреймворков, проверить глобальные свойства объекта с помощью alert(1) или console.
  4. Провести black-box пробы в стиле Express/qs для обнаружения sink-ов на серверной стороне.
  5. Исследовать цепочки гаджетов (EJS, Timelion, child_process) для оценки возможности получения RCE через загрязненный прототип.

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

Проанализируй этот JSON-объект на наличие уязвимости Prototype Pollution при использовании глубокого слияния.
Выполни клиентские пробы Prototype Pollution для параметра URL, который может быть отражен в DOM.
Исследуй цепочки гаджетов в данном Node.js коде, чтобы найти возможность RCE через загрязнение Object.prototype.

Описание составлено по SKILL.md навыка, сверено 07.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «prototype-pollution» из репозитория: # https://github.com/yaklang/hack-skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r prototype-pollution/ ~/.claude/skills/prototype-pollution/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.