17 Лют, 2023

Впровадження шаблону

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

Впровадження шаблону це тип уразливості безпеки, що виникає, коли зловмисник може впровадити код в файл шаблону, який обробляється веб-додатком. Ця вразливість виникає, коли веб-додатком не вдається належним чином очистити користувальницький введення, що використовується для створення динамічного контенту, такого як HTML або інші шаблони. Зловмисники можуть використовувати цю уразливість для виконання довільного коду на сервері, крадіжки конфіденційних даних або маніпулювання поведінкою веб-додатки.

Приклад уразливого коду на різних мовах програмування:


В PHP:

				
					<?php
  $template = $_GET['template']; // User-controlled input
  include('templates/' . $template . '.php');
?>

				
			


У цьому PHP-коді include оператор використовується для включення файлу на основі керованого користувачем вводу$_GET['template']). Якщо зловмисник може контролювати значення templateвони можуть впровадити шкідливий код включений у файл.

• в Python:

				
					from jinja2 import Template

template_string = request.POST.get('template')
template = Template(template_string)
output = template.render()

				
			


У цьому коді на Python механізм створення шаблонів Jinja2 використовується для візуалізації шаблону на основі користувальницького введення (request.POST.get('template')). Якщо зловмисник може контролювати значення templateвони можуть впровадити шкідливий код в який відображається шаблон.

• В Java:

				
					String template = request.getParameter("template");
String result = String.format("Welcome, %s!", template);
out.println(result);

				
			


У цій Java-коді користувальницький введення (request.getParameter("template")) використовується для побудови рядка, що виводиться користувачеві. Якщо зловмисник може контролювати значення templateвони можуть впровадити шкідливий код в сконструйовану рядок.

Приклади впровадження шаблону експлуатації

Витяг конфіденційної інформації:
Якщо веб-додаток вразливим для впровадження шаблону, зловмисник може впровадити в шаблон код, що дозволяє йому отримувати конфіденційну інформацію з сервера. Наприклад, зловмисник може впровадити код, який зчитує конфіденційні дані з файлу на сервері і відправляє їх назад на власний сервер зловмисника.

Виконання довільного коду:
Зловмисник може впровадити код в шаблон, який дозволяє йому виконувати довільний код на сервері. Наприклад, зловмисник може впровадити код, який створює оболонку на сервері, що дозволяє зловмисникові виконати будь-яку команду, яку він захоче.

Міжсайтовий скриптінг (XSS):
Якщо веб-додаток вразливим для впровадження шаблону, зловмисник може впровадити в шаблон код, що дозволяє йому виконати атаку з використанням міжсайтового скриптинга (XSS). Наприклад, зловмисник може впровадити код, який краде облікові дані користувача або перенаправляє користувача на шкідливий веб-сайт.

Відмова в обслуговуванні (DoS):
Зловмисник може впровадити код в шаблон, який призведе до аварійного завершення роботи веб-додатки або його відмови відповідати на запити, що призведе до атаки типу "відмова в обслуговуванні" (DoS). Наприклад, зловмисник може впровадити код, який створює нескінченний цикл, споживаючи ресурси сервера і змушуючи додаток перестати відповідати на запити.

Методи підвищення привілеїв для впровадження шаблонів

Використання уразливості в базовій операційній системі або платформі веб-додатки:
Якщо зловмисник може виконати довільний код на сервері за допомогою вразливості впровадження шаблону, він може бути в змозі ідентифікувати та використовувати інші уразливості в базовій операційній системі або середовищі веб-додатків для отримання підвищених привілеїв.

Доступ до конфіденційних файлів конфігурації:
Зловмисник може використовувати уразливість впровадження шаблону для доступу до конфіденційних файлів конфігурації на сервері та їх зміни, таким як файл конфігурації бази даних або веб-сервера. Змінюючи ці файли, зловмисник може отримати підвищені привілеї.

Доступ до інших облікових записів користувачів:
Якщо веб-додаток запускається від імені привілейованої облікового запису користувача або служби, зловмисник може використовувати уразливість впровадження шаблону для доступу або зміни інших облікових записів користувачів в системі, потенційно отримуючи підвищені привілеї.

Використання слабких прав доступу до файлів:
Якщо права доступу до файлів у веб-застосунку або пов'язаних з ним файлах є слабкими, зловмисник може мати можливість змінювати критично важливі файли на сервері, наприклад ті, що пов'язані з аутентифікацією або авторизація користувача. Змінюючи ці файли, зловмисник може отримати підвищені привілеї.

Загальна методологія та контрольний список для введення шаблону

Методологія:

  1. Визначте механізм створення шаблонів: Першим кроком у тестуванні на наявність вразливостей для впровадження шаблонів є визначення механізму створення шаблонів, який використовується веб-додатком. Деякі поширені механізми для створення шаблонів включають Twig, Jinja2 і Smarty.

  2. Розуміння синтаксису і поведінки механізму створення шаблонів: Після того як механізм створення шаблонів визначено, важливо зрозуміти синтаксис і поведінку механізму. Це можна зробити, прочитавши документацію і поекспериментувавши з мовою шаблонів, щоб побачити, як він обробляє користувальницький введення.

  3. Визначте точки користувальницького введення: Наступним кроком є визначення точок у веб-додатку, де користувальницький введення використовується для створення динамічного контенту. Це може включати вхідні дані форми, параметри запиту або файли cookie.

  4. Тест на ін'єкцію: Як тільки точки користувальницького введення будуть визначені, важливо протестувати ці вхідні дані на предмет вразливостей при впровадженні. Це можна зробити, ввівши код на вхідні дані і спостерігаючи за результуючим результатом, щоб побачити, чи введений код.

  5. Тест на контекстно-залежні фільтри: Багато механізми створення шаблонів включають фільтри або інші механізми для уникнення користувальницького введення в певних контекстах. Важливо перевірити наявність цих фільтрів і переконатися, що вони використовуються правильно, щоб запобігти уразливості при впровадженні.

  6. Автоматизуйте тестування: Тестування на наявність вразливостей для впровадження шаблонів може бути трудомістким процесом, особливо для великих або складних веб-додатків. Може бути корисно використовувати автоматизовані інструменти, такі як інструменти статичного аналізу або сканери вразливостей, щоб допомогти в процесі тестування.

  7. Перевірка результатів: Після виявлення потенційних вразливостей важливо підтвердити отримані результати, спробувавши використовувати уразливість і переконавшись, що вона може бути використана для виконання довільного коду або доступу до конфіденційної інформації.

Контрольний список:

  1. Визначте механізм створення шаблонів: Визначте, який механізм створення шаблонів використовується веб-додатком, наприклад Twig, Jinja2 або Smarty.

  2. Розуміння синтаксису механізму створення шаблонів: Отримаєте уявлення про синтаксис механізму створення шаблонів і про те, як він працює, переглянувши документацію або поекспериментувавши з мовою.

  3. Визначте точки користувальницького введення: Визначте будь області, в яких користувальницький введення використовується для створення динамічного контенту, наприклад вводяться дані форми, параметри запиту або файли cookie.

  4. Тест на ін'єкцію: Спробуйте ввести код в ці області користувальницького введення і поспостерігайте за результуючим результатом, щоб побачити, чи введений код.

  5. Тест на контекстно-залежні фільтри: Визначте, чи має механізм створення шаблонів якісь вбудовані фільтри або інші механізми для уникнення користувальницького введення в певних контекстах, і переконайтеся, що вони використовуються правильно, щоб запобігти уразливості при впровадженні.

  6. Перевірте наявність інших заходів безпеки: Переконайтеся, що для запобігання ін'єкційних атак використовуються інші заходи безпеки, такі як перевірка вхідних даних і кодування вихідних даних.

  7. Використовуйте інструменти: Розгляньте можливість використання автоматизованих інструментів, таких як інструменти статичного аналізу або сканери вразливостей, для надання допомоги в процесі тестування і виявлення потенційних вразливостей.

  8. Перевірка результатів: Спробуйте використовувати будь-які виявлені потенційні уразливості, щоб переконатися, що вони можуть бути використані для виконання довільного коду або доступу до конфіденційної інформації.

  9. Перевірка на підвищення привілеїв: Шукайте потенційні методи підвищення привілеїв, які можна було б використовувати для розширення доступу на сервері, наприклад, для доступу до конфіденційних файлів конфігурації або зміни дозволів файлів.

  10. Регулярне повторне тестування: Регулярно проводите повторне тестування веб-додатки на наявність вразливостей, пов'язаних з впровадженням шаблонів, оскільки з часом по мірі розвитку програми можуть з'явитися нові уразливості.

Набір інструментів для експлуатації Впровадження шаблону

Ручні інструменти:

  • Burp Suite: Інструмент тестування веб-додатків, який можна використовувати для ручної перевірки вразливостей впровадження шаблонів. Він включає в себе перехоплює проксі-сервер і безліч інших функцій для ручного тестування.

  • OWASP ZAP: Інструмент тестування безпеки веб-додатків з відкритим вихідним кодом, який можна використовувати для ручної перевірки вразливостей впровадження шаблонів. Він включає в себе безліч функцій для ручного тестування, таких як перехоплює проксі-сервер і різні сканери.

  • Postman: Популярний інструмент тестування API, який можна використовувати для ручного тестування вразливостей впровадження шаблонів в кінцевих точках API. Він включає в себе безліч функцій для ручного тестування, таких як відправка HTTP-запитів і перевірка відповідей.

  • Insomnia: Ще один популярний інструмент тестування API, який можна використовувати для ручної перевірки вразливостей впровадження шаблонів в кінцевих точках API. Він включає в себе безліч функцій для ручного тестування, таких як відправка HTTP-запитів і перевірка відповідей.

  • Python requests library: Популярна бібліотека Python, яку можна використовувати для ручного тестування вразливостей впровадження шаблонів у веб-додатках. Він включає в себе функції для відправки HTTP-запитів та перевірки відповідей.

Автоматизовані інструменти:

  • tplmap: Інструмент з відкритим вихідним кодом для автоматичного тестування вразливостей впровадження шаблонів у веб-додатках. Він включає в себе безліч функцій для автоматичного виявлення і використання вразливостей впровадження шаблонів.

  • Commix: Інструмент з відкритим вихідним кодом для автоматичного тестування різних вразливостей при впровадженні у веб-додатки, включаючи впровадження шаблонів. Він включає в себе безліч функцій для автоматичного виявлення і використання вразливостей, пов'язаних з впровадженням.

  • sqlmap: Інструмент з відкритим вихідним кодом для автоматичного тестування вразливостей SQL-ін'єкцій у веб-додатках, але також має функцію для виявлення і використання вразливостей впровадження шаблонів.

  • XSStrike: Інструмент з відкритим вихідним кодом для автоматичного тестування різних вразливостей веб-додатків, включаючи впровадження шаблонів. Він включає в себе безліч функцій для автоматичного виявлення і використання вразливостей, пов'язаних з впровадженням.

  • Skipfish: Інструмент тестування безпеки веб-додатків з відкритим вихідним кодом, який може автоматично виявляти різні уразливості веб-додатків, включаючи впровадження шаблонів.

  • Vega: Інструмент тестування безпеки веб-додатків з відкритим вихідним кодом, який може автоматично виявляти різні уразливості веб-додатків, включаючи впровадження шаблонів.

  • Nikto: Сканер веб-сервер з відкритим вихідним кодом, який можна використовувати для автоматичного виявлення різних вразливостей веб-додатків, включаючи впровадження шаблонів.

  • Arachni: Інструмент тестування безпеки веб-додатків з відкритим вихідним кодом, який може автоматично виявляти різні уразливості веб-додатків, включаючи впровадження шаблонів.

  • Grabber: Сканер веб-додатків з відкритим вихідним кодом, який можна використовувати для автоматичного виявлення різних вразливостей веб-додатків, включаючи впровадження шаблонів.

  • Acunetix: Комерційний сканер веб-додатків, який може автоматично виявляти різні уразливості веб-додатків, включаючи впровадження шаблонів.

  • AppScan: Комерційний сканер веб-додатків, який може автоматично виявляти різні уразливості веб-додатків, включаючи впровадження шаблонів.

  • Netsparker: Комерційний сканер веб-додатків, який може автоматично виявляти різні уразливості веб-додатків, включаючи впровадження шаблонів.

Плагіни для браузера:

  • Hackbar: Плагін для браузера Firefox, який можна використовувати для ручного тестування вразливостей впровадження шаблонів шляхом введення користувальницьких корисних навантажень.

  • Tamper Data: Плагін для браузера Firefox, який можна використовувати для ручної перевірки вразливостей впровадження шаблонів шляхом перехоплення і зміни HTTP-запитів і відповідей.

  • Web Developer: Плагін для браузера Firefox і Chrome, який включає в себе безліч функцій для тестування веб-додатків, включаючи можливість змінювати HTTP-запити і відповіді.

  • Burp Suite Proxy: Плагін для браузера Chrome, який інтегрує перехоплення проксі-сервера Burp Suite безпосередньо в браузер.

  • OWASP ZAP Proxy: Плагін для браузера Firefox, який інтегрує перехоплює проксі-сервер OWASP ZAP безпосередньо в браузер.

Середній бал CVSS Впровадження шаблону стека

Оцінка загальної системи оцінки вразливостей (CVSS) для вразливості, пов'язаної з впровадженням шаблону, може змінюватись в залежності від конкретного контексту і серйозності уразливості. Проте проблеми, пов'язані з впровадженням шаблонів, зазвичай вважаються уразливими високою або критичної серйозності.

Згідно Національної базі даних вразливостей (NVD), середній бал CVSS для вразливостей, пов'язаних з впровадженням шаблонів, в даний час складає 7,5 з 10, що вважається вразливістю високого ступеня серйозності. Однак важливо відзначити, що оцінка CVSS може варіюватися в залежності від конкретних деталей уразливості, таких як тип використовуваного механізму шаблонів, ступінь впровадження і потенційний вплив на систему.

Також варто відзначити, що CVSS - це всього лише один із способів оцінки серйозності проблеми, і при оцінці загального ризику уразливості важливо враховувати інші фактори, такі як ймовірність використання та потенційний вплив на організацію.

Загальна перерахування слабких місць (CWE)

CWE-94: Неправильний контроль генерації коду ('Впровадження коду') Цей CWE пов'язаний з генерацією коду додатком небезпечним чином, що може призвести до атак з використанням коду. Коли додаток дозволяє ненадійному користувача введення впливати на згенерований код, зловмисник може впровадити шкідливий код в потік коду програми і виконати його. Це може привести до різних атак, включаючи крадіжку даних, підвищення привілеїв і віддалене виконання коду.

CWE-98: Неправильний контроль імені файлу інструкції Include / Require у програмі PHP ("Віддалене включення файлу PHP') Цей CWE відноситься до додатків PHP, які використовують оператор include /require для імпорту зовнішнього коду. Коли зловмисник може контролювати ім'я файлу, яке передається в інструкцію include /require, він може впровадити свій власний код у додаток і виконати його. Це може призвести до цілого ряду атак, включаючи крадіжку даних, підвищення привілеїв і віддалене виконання коду.

CWE-116: Неправильне кодування або екранування вихідних даних Цей CWE пов'язаний з виведенням даних з програми, які неправильно закодовані або екрановані. Коли програма не вдається належним чином закодувати або екранувати дані, що вводяться користувачем, відображаються у вихідних даних програми, зловмисник може впровадити шкідливий код в вихідні дані і виконати його. Це може призвести до цілого ряду атак, включаючи атаки з використанням міжсайтового скриптинга (XSS) і крадіжку даних.

CWE-118: Неправильний доступ до індексуємому ресурсу ('Помилка діапазону') Цей CWE пов'язаний з додатками, які звертаються до індексовані ресурсів, таких як масиви або рядки, небезпечним чином. Коли додаток дозволяє ненадійному користувача введення впливати на значення індексів цих ресурсів, зловмисник може змусити додаток зчитувати або записувати дані за межі ресурсу. Це може призвести до цілого ряду атак, включаючи крадіжку даних, підвищення привілеїв і віддалене виконання коду.

CWE-119: неправильне обмеження операцій в межах буфера пам'яті Цей CWE пов'язаний з уразливими переповнення буфера, які можуть бути використані шляхом впровадження шаблону. Коли програма не вдається належним чином обмежити операції, що виконуються в буфері пам'яті, зловмисник може перезаписати сусідні комірки пам'яті і виконати довільний код. Це може призвести до цілого ряду атак, включаючи крадіжку даних, підвищення привілеїв і віддалене виконання коду.

CWE-120: копіювання в буфер без перевірки розміру вхідних даних ("Класичне переповнення буфера") Цей CWE пов'язаний з уразливими переповнення буфера, які можуть бути використані з допомогою впровадження шаблону. Коли програма копіює дані з ненадійного джерела в буфер без попередньої перевірки розміру даних, зловмисник може перезаписати сусідні комірки пам'яті і виконати довільний код. Це може призвести до цілого ряду атак, включаючи крадіжку даних, підвищення привілеїв і віддалене виконання коду.

CWE-123: умова запису "що-де" Це умова CWE відноситься до додатків, які записують дані в комірку пам'яті, до якої у них не повинно бути доступу. Коли додаток записує дані в довільну комірку пам'яті, зловмисник може змінити важливі дані або виконати довільний код. Це може призвести до цілого ряду атак, включаючи крадіжку даних, підвищення привілеїв і віддалене виконання коду.

CWE-128: помилка перенесення Цей CWE пов'язаний з додатками, які виконують обчислення з використанням цілочисельних значень, які можуть переноситися в від'ємне значення, викликаючи несподіване поведінку. Коли програма не вдається належним чином обробити помилки перенесення, зловмисник може використовувати це поведінка для зміни важливих даних або виконання довільного коду. Це може призвести до цілого ряду атак, включаючи крадіжку даних, підвищення привілеїв і віддалене виконання коду.

CWE-129: неправильна перевірка індексу масиву Цей CWE пов'язаний з додатками, які використовують ненадійне значення для індексації масиву або іншої структури даних. Коли програма не вдається належним чином перевірити значення індексу, зловмисник може викликати збій програми.

Топ-10 CVE, пов'язаних з впровадженням шаблонів

CVE-2022-4300 – У FastCMS була виявлена уразливість. Він був оцінений як критичний. Ця проблема впливає на деяку невідому обробку файлу / шаблон / редагування обробника шаблону компонента. Маніпуляція призводить до ін'єкції. Атака може бути ініційована віддалено. Експлойт був розкритий громадськості і може бути використаний. Цієї уразливості був присвоєний ідентифікатор VDB-214901.

CVE-2022-4282 – У SpringBootCMS була виявлена уразливість, яка була класифікована як критична. Ця проблема пов'язана з деякими невідомими функціями управління шаблонами компонентів. Маніпуляція призводить до ін'єкції. Атака може бути запущена віддалено. Експлойт був розкритий громадськості і може бути використаний. VDB-214790 - це ідентифікатор, присвоєний цієї уразливості.

CVE-2022-42121 – Уразливість SQL-ін'єкції в модулі компонування в Liferay Portal з 7.1.3 за 7.4.3.4 і Liferay DXP 7.1 до fix pack 27, 7.2 до fix pack 17, 7.3 до service pack 3 і 7.4 GA дозволяє зловмисникам з віддаленої аутентифікацією виконувати довільні команди SQL за допомогою обробленої корисного навантаження, введеної в шаблон сторінки. 'Поле "Ім'я".

CVE-2022-39365 – Pimcore - це платформа управління даними і досвідом з відкритим вихідним кодом. До версії 10.5.9 керований користувачем рендеринг шаблонів twig в `Pimcore / Mail` і `ClassDefinition \ Layout \ Text` вразливий для впровадження шаблонів на стороні сервера, що може призвести до віддаленого виконання коду. Версія 10.5.9 містить виправлення для цієї проблеми. Як обхідного шляху можна застосувати виправлення вручну.

CVE-2022-36799 – Ця проблема існує для документування того, що було реалізовано поліпшення безпеки в тому, як сервер Jira і Центр обробки даних використовують шаблони. Порушені версії сервера та центру обробки даних Atlassian Jira дозволяли віддаленим зловмисникам з правами системного адміністратора виконувати довільний код з допомогою впровадження шаблонів, що призводило до віддаленого виконання коду (RCE) у функції шаблонів електронної пошти. У цьому випадку поліпшення безпеки полягало в захисті від використання бібліотеки XStream для можливості виконання довільного коду в шаблонах velocity. Порушені версії знаходяться до версії 8.13.19, від версії 8.14.0 до версії 8.20.7 і від версії 8.21.0 до версії 8.22.1.

CVE-2022-34771 – Tabit – довільна відправка SMS від імені Tabits. Повторна відправка OTP API tabit дозволяє зловмисникові відправляти повідомлення від імені tabits кожному, хто зареєстрований в системі – API отримує параметри: номер телефону і користувальницьке повідомлення, ми можемо використовувати цей API для відправки шкідливих повідомлень будь-якому користувачеві системи. Крім того, API, ймовірно, має якийсь потенціал впровадження шаблонів. При введенні {{OTP}} в поле настроюваного повідомлення воно форматується в OTP.

CVE-2022-34625 – Було виявлено, що Mealie1.0.0beta3 містить уразливість для впровадження шаблонів на стороні сервера, яка дозволяє зловмисникам виконувати довільний код з допомогою створеного шаблону Jinja2.

CVE-2022-32101 – було виявлено, що kkcms версії v1.3.7 містить уразливість SQL-ін'єкції через параметр cid в /template/wapian/vlist.php .

CVE-2022-29078 – Пакет 3.1.6 ejs (він же Вбудовані шаблони JavaScript для Node.js дозволяє впровадження шаблону на стороні сервера у налаштуваннях [параметри перегляду][outputFunctionName]. Це аналізується як внутрішня опція і перезаписує параметр outputFunctionName довільній командою операційної системи (яка виконується при компіляції шаблону).

CVE-2022-27662 – У версіях F5 Traffic SDC 5.2.x, попередніх версій і 5.2.2 5.1.x, попереднім версіям 5.1.35, на нерозкриту сторінці утиліти налаштування Traffic SDC існує збережена уразливість для впровадження міжсайтового шаблон, яка дозволяє зловмиснику виконувати інструкції, що залежать від мови шаблону, в контексті сервера. Примітка: Версії програмного забезпечення, які досягли кінця технічної підтримки (EoTS), не оцінюються

Впровадження шаблону подвиги

  • {{7*7}}: Це простий експлойт, який демонструє, як впровадження шаблону може бути використане для виконання довільного коду. У цьому випадку виконуваний код являє собою просто математичне обчислення (49).

  • {{config.items()}}: Цей експлойт витягує параметри конфігурації цільового додатка шляхом виклику функції 'items' єкта config.

  • {{request.application}}: Цей експлойт отримує ім'я цільового додатка, викликаючи властивість 'application' єкта запиту.

  • {% for x in ().class.base.subclasses() %}{{x}}{% endfor %}: Цей експлойт демонструє, як механізм шаблонів можна використовувати для перебору підкласів класу 'object' в Python, що дозволяє зловмисникам ідентифікувати вразливі цілі.

  • {{self.request.class.mro[1].subclasses()}}: Цей експлойт отримує список всіх підкласів класу 'RequestHandler' у веб-фреймворку Tornado.

  • {{self.class.mro[1].subclasses()}}: Цей експлойт отримує список всіх підкласів поточного класу в Python.

  • {% import os %}{{os.popen(‘whoami’).read()}}{% endimport %}: Цей експлойт імпортує модуль 'os' і запускає команду 'whoami' для отримання імені користувача поточного користувача.

  • {% set cmd = ‘ls’ %} {% set output = execute(cmd) %} {{output}}: Цей експлойт задає команду для виконання (в даному випадку 'ls'), а потім викликає функцію з ім'ям 'execute' для виконання команди і повернення вихідних даних.

  • {{system('cat /etc/passwd')}}: Цей експлойт використовує функцію 'system' для виконання команди і повернення вихідних даних. У цьому випадку виконується команда 'cat /etc/passwd', яка витягує вміст файлу паролів Unix-подібній системі.

  • {% for c in [request.form.keys()] %} {{c}} {% endfor %}: Цей експлойт витягує імена всіх полів форми, надісланих користувачем, шляхом перебору ключів об'єкта 'form' в Flask.

Практикуючись в тестуванні на Впровадження шаблону

  1. Встановіть навмисно вразливе веб-додаток, таке як DVIA або OWASP Mutillidae, і використовуйте інструмент, такий як Burp Suite або ZAP, для виявлення випадків впровадження шаблонів. Спробуйте ввести код і подивитися, чи виконується він.

  2. Використовуйте вразливу віртуальну машину, таку як WebGoat або Metasploitable, і спробуйте визначити випадки впровадження шаблонів, вручну переглядаючи програму і шукаючи області, в яких користувальницький введення використовується для створення шаблонів.

  3. Створіть простий веб-програма, яка приймає дані, що вводяться користувачем і використовує механізм шаблонів для генерації вихідних даних. Навмисно залиште уразливість, яка допускає впровадження шаблону, а потім спробуйте самостійно використовувати уразливість шляхом впровадження коду.

  4. Пошукайте в Інтернеті CTF або програми пошуку помилок, які пропонують винагороду за виявлення вразливостей, пов'язаних з впровадженням шаблонів. Це може стати відмінним способом попрактикуватися в більш реалістичною обстановці.

  5. Ознайомтеся з документацією та керівництвами по популярних движка шаблонів, таких як Jinja2, Smarty і Twig, щоб зрозуміти, як вони працюють і до яких типів вразливостей вони можуть бути піддані.

Для введення шаблону дослідження

OWASP Top 10 – A1: Ін'єкції:
Це всеосяжне керівництво з безпеки веб-додатків, в якому розглядаються поширені уразливості, включаючи впровадження шаблонів.

Академія веб-безпеки PortSwigger:
Цей безкоштовний онлайн-ресурс пропонує безліч лабораторних робіт і вправ з безпеки веб-додатків, включаючи такі теми, як впровадження шаблонів.

Мега-підручник з колби:
Це безкоштовний онлайн-підручник, у якому детально розповідається про веб-платформі Flask, в тому числі про те, як використовувати механізм шаблонів Jinja2 і як уникнути поширених помилок безпеки.

Документація дизайнера шаблонів Jinja2:
Це офіційна документація для движка шаблонів Jinja2, який зазвичай використовується у веб-додатках. Він включає в себе розділ, присвячений міркувань безпеки і передовій практиці.

Документація по шаблону Twig:
Це офіційна документація для движка шаблонів Twig, який використовується в багатьох популярних PHP-фреймворках. Він включає в себе розділ про безпеку і про те, як уникнути недоліків, таких як впровадження шаблонів.

Документація по движку шаблонів Smarty:
Це офіційна документація для механізму шаблонів Smarty, який використовується в багатьох популярних PHP-додатках. Він включає в себе розділ про безпеку і про те, як уникнути недоліків, таких як впровадження шаблонів.

Огляди коду, орієнтовані на безпеку – Керівництво:
Це керівництво Національного центру передового досвіду в області кібербезпеки включає розділ, присвячений виявленню і запобіганню вразливостей, пов'язаних з впровадженням шаблонів.

Книги з оглядом впровадження шаблонів

"Уразливості веб-додатків: виявлення, використання, запобігання" автор: Стівен Палмер: У цій книзі розглядаються різні уразливості веб-додатків, включаючи впровадження шаблонів, і даються рекомендації по їх виявленню і запобіганню.

"Злом веб-додатків: Серія "Мистецтво злому" автор: Дафидд Штуттард і Маркус Пінто: У цій книзі розглядається широкий спектр питань безпеки веб-додатків, включаючи впровадження шаблонів і способи їх використання.

"Заплутана мережа: керівництво по забезпеченню безпеки сучасних веб-додатків" Міхал Залевські: У цій книзі розглядаються різні теми безпеки веб-додатків, включаючи поширені уразливості, такі як впровадження шаблонів, і даються рекомендації щодо захисту від них.

"Керівництво хакера веб-додатків: пошук і використання недоліків безпеки" Дэфидд Штуттард і Маркус Пінто: У цій книзі докладно розглядається безпека веб-додатків, включаючи розділ про впровадження шаблонів і про те, як його використовувати.

"Black Hat Python: програмування на Python для хакерів і пентестеров" автор: Джастін Сейтц: У цій книзі розглядаються різні теми, пов'язані зі зломом і тестуванням на проникнення, в тому числі способи використання вразливостей, пов'язаних з впровадженням шаблонів.

"Gray Hat Python: програмування на Python для хакерів і реверс-інженерів" автор: Джастін Сейтц: У цій книзі розглядаються різні просунуті теми злому і зворотного проектування, включаючи розділ про використання вразливостей, пов'язаних з впровадженням шаблонів.

"Куховарська книга з тестування на проникнення в веб-інтерфейс Python: більше 60 незамінних рецептів Python, які гарантують, що у вас завжди під рукою правильний код для тестування веб-додатків" Кемерон Б'юкенен: Ця книга містить практичне керівництво з тестування веб-додатків на наявність вразливостей, таких як впровадження шаблонів, і включає приклади коду і сценаріїв.

"Тестування на проникнення: практичне введення у злом" автор Джорджія Вайдман: Ця книга являє собою введення в тестування на проникнення, включаючи розділ про безпеку веб-додатків і поширених вразливості, таких як впровадження шаблонів.

"Кулінарна книга з тестування веб-безпеки: систематичні методи швидкого пошуку проблем" Пако Хоуп і Бен Вальтер: Ця книга містить керівництво з тестування веб-додатків на наявність вразливостей в системі безпеки, включаючи розділ, присвячений виявленню і використанню впровадження шаблонів.

"Розширене тестування на проникнення для високозахищених середовищ: Абсолютна керівництво з безпеки" автор: Чи Аллен: У цій книзі докладно розглядаються передові методи тестування на проникнення, включаючи розділ про використання вразливостей впровадження шаблонів.

Список корисних навантажень Впровадження шаблону

Ось кілька прикладів корисних навантажень, які можна використовувати для тестування вразливостей впровадження шаблонів:

  1. {{7*7}}
  2. {{7**7}}
  3. {{config.items()}}
  4. {{os.system('id')}}
  5. {{request.headers}}
  6. {{request.application}}
  7. {{self}}
  8. {{self.request}}
  9. {{self.session}}
  10. {{self.settings}}
  11. {{self.get_secure_cookie(‘admin’)}}
  12. {{self.current_user}}
  13. {{self.application}}
  14. {{self.get_argument(‘password’)}}
  15. {{self.get_body_argument(‘username’)}}
  16. {{self.request.headers}}
  17. {{self.request.uri}}
  18. {{self.request.arguments}}
  19. {{self.request.path}}
  20. {{self.request.method}}

Як захиститися від впровадження шаблону

  1. Перевірка вхідних даних: Перевірте дані, що вводяться користувачем, щоб переконатися, що вони відповідають очікуваного типу і формату даних і що вони не містять несподіваних символів або синтаксису.

  2. Використовуйте безпечний механізм створення шаблонів: Використовуйте механізм створення шаблонів з вбудованим захистом від впровадження шаблонів, наприклад Jinja2, Twig або Handlebars.

  3. Обмежити доступ до шаблону: Обмежте доступ шаблонів до системних ресурсів і обмежте дозволу користувача, що запускає механізм шаблонів.

  4. Використовуйте безпечні методи кодування: Дотримуйтесь правил безпечного кодування, такі як очищення вхідних даних, кодування вихідних даних і контроль доступу, щоб запобігти впровадження шкідливого коду.

  5. Підтримуйте програмне забезпечення в актуальному стані: Оновлюйте програмне забезпечення бібліотеки з допомогою останніх виправлень і оновлень безпеки, щоб запобігти використання відомих вразливостей.

  6. Відстежувати підозрілу активність: Слідкуйте за своїм додатком на предмет підозрілої активності, такий як несподіване поведінку або незвичайні схеми трафіку, і досліджувати будь-які потенційні загрози безпеки.

  7. Використовуйте брандмауер веб-додатків: Використовуйте брандмауер веб-додатків, який може виявляти і запобігати атаки з використанням шаблонів, а також налаштовувати його на блокування будь-яких підозрілих запитів.

Заходи по пом'якшенню наслідків впровадження шаблону

  1. Перевірка вхідних даних: Перевірте дані, що вводяться користувачем, щоб переконатися, що вони відповідають очікуваного типу і формату даних і що вони не містять несподіваних символів або синтаксису.

  2. Використовуйте безпечний механізм створення шаблонів: Використовуйте механізм створення шаблонів з вбудованим захистом від впровадження шаблонів, наприклад Jinja2, Twig або Handlebars.

  3. Санітарна обробка вхідних даних: Очистіть вхідні дані, щоб видалити всі потенційно небезпечні символи або код, і перетворіть їх у безпечний формат перед передачею в механізм створення шаблонів.

  4. Кодування вихідного сигналу: Використовуйте кодування висновку, щоб запобігти виконання будь-якого користувача введення у вигляді коду і запобігти впровадження шкідливого коду у відповідь.

  5. Контроль доступу: Обмежте доступ до механізму створення шаблонів і пов'язаних з ними ресурсів тільки авторизованим користувачам і обмежте дозволу користувача, що запускає механізм створення шаблонів.

  6. Підтримуйте програмне забезпечення в актуальному стані: Оновлюйте програмне забезпечення бібліотеки з допомогою останніх виправлень і оновлень безпеки, щоб запобігти використання відомих вразливостей.

  7. Відстежувати підозрілу активність: Слідкуйте за своїм додатком на предмет підозрілої активності, такий як несподіване поведінку або незвичайні схеми трафіку, і досліджувати будь-які потенційні загрози безпеки.

  8. Використовуйте брандмауер веб-додатків: Використовуйте брандмауер веб-додатків, який може виявляти і запобігати атаки з використанням шаблонів, а також налаштовувати його на блокування будь-яких підозрілих запитів.

Висновок

Впровадження шаблону це вразливість, яка виникає, коли зловмисник може впровадити шкідливий код в механізм шаблонів, який потім може бути виконаний як частина вихідних даних програми. Цей тип вразливості може призвести до серйозних наслідків, включаючи крадіжку конфіденційних даних, виконання довільного коду і захоплення всієї системи.

Для захисту від впровадження шаблонів важливо слідувати методам безпечного кодування, таким як перевірка вхідних даних, кодування вихідних даних і контроль доступу, а також використовувати безпечний механізм створення шаблонів, який має вбудований захист від цього типу вразливостей. Крім того, важливо підтримувати програмне забезпечення в актуальному стані з використанням останніх виправлень і оновлень безпеки, а також відстежувати ваш додаток на предмет підозрілої активності.

Інші Послуги

Готові до безпеки?

зв'язатися з нами