Введення команди
Одна крапка з комою в полі форми, і сервер виконає вашу команду.
Що таке Введення команди?
Ін’єкція команди перетворює один веб-запит на виконання коду під власним ідентифікатором сервера. Програма вставляє введені користувачем дані в командний рядок і передає їх до оболонки, яка читає кожен спеціальний символ як синтаксис. Ви додасте крапку з комою до поля хоста інструменту мережевої діагностики, запустите другу команду та прочитаєте файл середовища з паролем бази даних у ньому. Потім ви замінюєте об’єднаний рядок на execFile , щоб хост залишався одним аргументом, і ви бачите, чому фільтрація небезпечних символів завжди програє.
Що ви дізнаєтесь у Введення команди
- Визначте шаблон оболонки: будь-який введений користувачем введений рядок команди, який передається в оболонку (exec, system, sh -c), є кандидатом на впровадження команди
- Зрозумійте, як роздільник оболонки, наприклад крапка з комою, перетворює одну команду на дві, якщо введення не зберігається поза оболонкою
- Застосуйте виправлення списку аргументів: execFile або породження з масивом аргументів, щоб програма запускалася безпосередньо, а символи оболонки у вхідних даних залишалися літералом
- Зрозумійте, чому фільтрація таких символів, як ; та | не вдається (інші роздільники, кодування та заміни обходять його)
- Зменшіть радіус вибуху з найменшими привілеями та зберігайте секрети від файлів, які працівник може читати
Введення команди — Кроки навчання
-
Інструмент діагностики
Trelvane запускає платформу хостингу та пропонує загальнодоступний Looking Glass: вставте хост, а периферійні сервери Trelvane перевірять його для вас і повернуть необроблений вихід. Зручно для клієнтів, які перевіряють, чи доступний сервер. Боб відкриває його, щоб побачити, як він поводиться, перш ніж торкнутися його.
-
Він виконує справжню команду
Один рядок на цій сторінці — вся причина, чому Боб зацікавлений.
-
Використовуйте функцію
Слідкуйте за нормальною поведінкою інструменту. Виконайте перевірку ping звичайного хосту, щоб браузер зафіксував запит, який надсилає сторінка.
-
Знайдіть запит
Запит вийшов, і браузер його зафіксував. Відкрийте панель «Мережа» та прочитайте, куди сторінка її надіслала та як хост подорожує.
-
Ввести другу команду
Боб більше ніколи не торкається форми. Він редагує отриманий запит на панелі «Мережа» та переписує значення host : петлеву адресу, крапку з комою, потім дві власні команди. Якщо сервер створює свою команду ping, вставляючи значення, крапка з комою завершує ping, а команди Боба виконуються одразу після неї. Він зв’язує id , щоб побачити, від імені кого працює сервер, і cat файлу робочого середовища, де агенти хостингу зберігають пароль бази даних і ключі хмари.
-
Зникли ключі
Пінг виконується, а потім з’являються рядки, які пінг ніколи не створює.
-
Перевірка знань
Ви щойно спостерігали, як інструмент ping виконує команди зловмисника та видає секрети сервера. Зафіксуйте чому.
-
Попередження
Ви володієте послугою Looking Glass від Trelvane. Вночі моніторинг помітив, що працівник діагностики робить те, що ніколи не повинен робити інструмент ping: виконує команди оболонки та читає власний секретний файл. Відділ безпеки надіслав вам деталі електронною поштою.
-
Відкрийте обробник
Кінцева точка ping обслуговується ping.js . Відкрийте його та подивіться, як він виконує команду.
-
Помітьте недолік
Обробник вставляє значення хоста в командний рядок і передає весь рядок до оболонки для запуску.
Охоплення стандартів безпеки
OWASP Top 10
- A05:2025 Injection
- A03:2021 Injection
CWE
- CWE-78 Improper Neutralization of Special Elements used in an OS Command
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security