Перейти к содержимому
← Каталог nodejs Command Injection

Code Injection: eval() в Node.js калькуляторе

Веб-калькулятор вычисляет пользовательские выражения через eval(). Это даёт атакующему полный RCE: доступ к process.env, child_process и любым модулям Node.js.

hardnodejsPro
Задача
# Инъекция через выполнение динамического кода ## Сценарий Перед вами интернет-магазин SecureShop. На сайте есть встроенный калькулятор — простой инструмент для расчёта скидок и итоговых сумм. Пользователь вводит выражение, сервер вычисляет результат и возвращает его в UI. Реализация выглядит безобидно, но в Python (как и в большинстве динамических языков) существует целый класс уязвимостей **Code Injection** — когда пользовательский ввод попадает в механизм динамического выполнения кода. Это не классическая Command Injection через системную оболочку — это выполнение произвольного кода на языке самого приложения, что часто даёт атакующему ещё больше возможностей: доступ ко всем встроенным функциям, импорт любых модулей, прямое чтение файлов через языковой API без обращения к shell. В системе есть CTF-флаг — обычный текстовый файл на сервере. Ваша задача — найти узкое место в реализации калькулятора, использовать его для выполнения произвольного кода в процессе приложения и через этот канал прочитать файл с флагом. Уязвимость относится к классу **CWE-95** (некорректная нейтрализация директив в динамически вычисляемом коде) и входит в категорию инъекций OWASP. ## Цели 1. Войдите в приложение под `demo` / `demo` и найдите функциональность калькулятора. 2. Попробуйте передать через калькулятор не только арифметику, но и более сложные конструкции — наблюдая, как сервер на это реагирует. 3. На основе наблюдений сформируйте полезную нагрузку, которая прочитает с сервера произвольный файл по абсолютному пути. 4. Используйте полученный канал, чтобы прочитать файл с CTF-флагом и забрать его значение. ## Данные | Параметр | Значение | |----------|----------| | Пользователь | `demo` / `demo` |

Похожие лабораторные

Ещё лабораторные по этому типу уязвимости

CMD Injection

Blind Command Injection: time-based инъекция без вывода в Node.js

API сетевой диагностики Express выполняет ping через child_process.exec, но вывод не возвращается клиенту. Уязвимость подтверждается через задержку ответа (timing-based blind injection).

+60 XP ~40 минут
nodejsmediumPro
Exploit Fix
CMD Injection

Command Injection: Обход Blacklist-фильтра в Node.js

Функция ping в админ-панели защищена blacklist-фильтром, блокирующим пробелы и ключевые слова cat/flag/tail/less/more. Фильтр обходится через ;id, ;env и другие конструкции без пробелов.

+90 XP ~75 минут
nodejshardPro
Exploit Fix
CMD Injection

Basic Command Injection: Сетевой пинг

Простая OS Command Injection через инструмент сетевой диагностики в админ-панели.

+30 XP ~20 минут
golangeasyPro
Exploit Fix
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru