26 Січ, 2023

Тип жонглювання

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

Тип жонглювання це уразливість, яка виникає, коли PHP-скрипт не перевіряє належним чином дані, введені користувачем, а замість цього покладається на жонглювання типами для автоматичної зміни типу даних змінної на основі введених даних. Це може дозволити зловмиснику маніпулювати змінною в неочікуваний спосіб, що потенційно може призвести до таких уразливостей, як ін'єкція SQL або виконання коду. Щоб запобігти вразливостям, пов'язаним з жонглюванням типами, важливо перевіряти всі дані, що вводяться користувачем, і переконатися, що вони мають очікуваний тип даних, перш ніж використовувати їх у будь-яких чутливих операціях. Translated with www.DeepL.com/Translator (free version)

Приклади вразливостей видалених файлів

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

  • Виконання коду: зловмисник може використовувати маніпулювання типами для маніпулювання введенням і виконання довільного коду на сервері.

  • Включення файлу: підтасовування типів може використовуватися для маніпулювання введенням і включення файлу, який не повинен бути доступний, що може призвести до розкриття конфіденційної інформації.

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

Важливо відзначити, що уразливість маніпулювання типами може бути усунена шляхом перевірки та очищення користувача введення і використання суворого оператори порівняння (===) замість вільного оператора порівняння (==)

Ось приклад PHP-скрипта, який вразливий для маніпулювання типами:

 
				
					<?php

$user_id = $_GET['user_id'];

$query = "SELECT * FROM users WHERE id = $user_id";
$result = mysqli_query($conn, $query);

// Do something with the result

?>

				
			

У цьому прикладі сценарій приймає дані, що вводяться користувачем з $_GET масив і присвоює його $user_id змінна, яка потім використовується в SQL-запиті. Однак скрипт неправильно перевіряє вхідні дані і замість цього використовує маніпулювання типами для автоматичного перетворення вхідних даних в ціле число. Зловмисник може маніпулювати вхідними даними для впровадження шкідливого коду SQL, що потенційно може призвести до уразливості SQL-ін'єкції.

Можливим рішенням цієї проблеми було б перевірити введення ідентифікатора користувача за допомогою функції filter_var() і переконатися, що це числове значення, перш ніж використовувати його в SQL-запиті.

				
					<?php
$user_id = $_GET['user_id'];
if (filter_var($user_id, FILTER_VALIDATE_INT)) {
  $query = "SELECT * FROM users WHERE id = $user_id";
  $result = mysqli_query($conn, $query);
  // Do something with the result
}
?>

				
			

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

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

				
					let username = prompt("Enter your username: ");
if (username == 1) {
    // code that should only be executed when $username is 1
}
				
			

У цьому прикладі, якщо зловмисник передає рядок "1" замість цілого числа, блок коду буде виконаний, оскільки JavaScript автоматично перетворює рядок в ціле число.

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

				
					username = gets.chomp
if username == 1
  # code that should only be executed when $username is 1
end

				
			

У цьому прикладі, якщо зловмисник передає рядок "1" замість цілого числа, блок коду буде виконаний, оскільки Ruby автоматично перетворює рядок в ціле число.

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

Методи підвищення привілеїв

Уразливість маніпулювання типами також може використовуватися для виконання підвищення привілеїв, яке являє собою процес використання уразливості для отримання доступу до ресурсів або привілеїв, які зазвичай недоступні зловмисникові.

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

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

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

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

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

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

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

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

  5. Перевірка на суворе порівняння: переконайтеся, що програма використовує строгий оператор порівняння (===) замість вільного оператора порівняння (==) при порівнянні користувальницького введення з передбаченими значеннями.

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

  7. Повторіть кроки 2-6 для кожної ідентифікованої вхідної точки: Повторіть процес тестування для кожної ідентифікованої вхідної точки, щоб переконатися, що всі уразливості були виявлені і усунені.

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

Набір інструментів для використання вразливостей жонглюють

  • Burp Suite: Burp Suite - це широко використовуваний інструмент тестування безпеки веб-додатків, який можна використовувати для виявлення і використання вразливостей, пов'язаних з маніпулюванням типами. Його інструменти зломщика і ретранслятора можна використовувати для маніпулювання користувальницьким введення та перевірки на наявність несподіваного поведінки.

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

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

  • BeEF: BeEF (платформа експлуатації браузера) - це інструмент, який дозволяє вам перевіряти безпеку веб-браузерів. Він може бути використаний для використання вразливостей, пов'язаних з жонглюванням типами, які приводять до виконання коду.

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

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

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

Кращі CVE

• CVE-2010-2068: Ця вразливість впливає на функцію PHP "mail ()" і дозволяє зловмиснику виконувати довільний код, маніпулюючи параметром "to".

• CVE-2012-1571: Ця уразливість зачіпає розширення PHP з ім'ям "php_cpdf" і дозволяє зловмиснику виконувати довільний код, маніпулюючи параметром "font".

• CVE-2012-2311: Ця уразливість зачіпає розширення PHP з ім'ям "php_zip" і дозволяє зловмиснику виконувати довільний код, маніпулюючи параметром "zip_entry_name".

• CVE-2012-2336: Ця вразливість впливає на функцію PHP "unserialize ()" і дозволяє зловмиснику виконувати довільний код, маніпулюючи сериализованными даними.

• CVE-2018-1000888: Ця уразливість зачіпає розширення PHP з ім'ям "php_imap" і дозволяє зловмиснику виконувати довільний код, маніпулюючи параметром "message_number".

Тип жонглювання уразливими експлойтів

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

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

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

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

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

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

Практикуюся в тестуванні на жонглювання уразливостями

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

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

  2. Запити до бази даних: перевірка на уразливості, пов'язані з маніпулюванням типами, які можуть призвести до впровадження SQL шляхом маніпулювання користувальницьким введенням, який передається в SQL-запит.

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

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

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

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

Для типу дослідження жонглювання вразливістю

Курси:

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

Курс SANS Institute з тестування веб-додатків на проникнення: Цей курс охоплює методологію і методи, використовувані для тестування веб-додатків на наявність вразливостей, включаючи маніпулювання типами.

Udemy пропонує безліч курсів з безпеки веб-додатків і тестування на проникнення, які охоплюють проблеми, пов'язані з маніпулюванням типами, і способи їх використання.

Тренувальні платформи:

OWASP WebGoat: WebGoat - це свідомо небезпечне веб-додаток, призначений для навчання концепцій безпеки веб-додатків. Вона включає в себе ряд вправ, які охоплюють проблеми, пов'язані з жонглюванням типами.

Mutillidae: Mutillidae - це ще одне завідомо небезпечне веб-додаток, який включає в себе вправи, присвячені вразливостей маніпулювання типами.

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

Відео:

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

Канал OWASP на YouTube: У OWASP є канал YouTube з кількома відеороликами, в яких розповідається про концепції безпеки веб-додатків, в тому числі про уразливості, що змінюють типи, і про те, як їх використовувати.

Книги з оглядом уразливості жонглювання типами

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

  • "The Web Application hacker's Handbook: виявлення і використання вразливостей безпеки" Дафидда Штуттарда – Ця книга являє собою всеосяжне керівництво по виявленню і використанню вразливостей веб-додатків, включаючи підтасовування типів.

  • "Хакерство: мистецтво експлуатації" Джона Еріксона – Ця книга являє собою всеосяжне введення в мистецтво експлуатації, включаючи розділ про уразливості, що маніпулюють типами, і про те, як їх використовувати.

  • "Класифікація загроз Консорціуму з безпеки веб–додатків" Консорціуму з безпеки веб-додатків - Ця книга являє собою повне керівництво по загрозам безпеки веб-додатків, включаючи уразливості з підміною типів.

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

Список корисних навантажень

Корисне навантаження SQL-ін'єкції: наприклад, зміна типу даних поля вводу з цілого числа на рядок і впровадження шкідливого коду SQL запит, такого як ' ЧИ '1'='1.

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

Корисні навантаження віддаленого виконання коду: наприклад, зміна типу даних поля вводу з рядка на масив і впровадження шкідливого коду в функцію, наприклад system("cat /etc/passwd").

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

Корисні навантаження XSS: наприклад, зміна типу даних поля вводу з рядка на масив і впровадження шкідливих скриптів на сторінку.

Як бути захищеним від вразливості віддаленого включення

  1. Правила SQL injection Sigma: Ці правила виявляють і блокують шкідливий SQL-код, який вводиться в запит за допомогою вразливості підстановки типів.

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

  3. Правила віддаленого виконання коду Sigma: ці правила будуть виявляти і блокувати спроби виконання шкідливого коду з допомогою вразливості підстановки типів.

  4. Правила несанкціонованого доступу Sigma: Ці правила виявляють і блокують спроби отримати несанкціонований доступ до конфіденційних ресурсів або функцій за допомогою вразливості з підміною типів.

  5. Правила XSS Sigma: ці правила будуть виявляти і блокувати спроби впровадження шкідливих скриптів на сторінку з допомогою вразливості підстановки типів.

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

Заходи з усунення вразливості при жонглюванні типами

Проблеми, пов'язані з маніпулюванням типами, можуть бути усунені за допомогою комбінації різних методів, в тому числі:

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

  2. Приведення типів: явне приведення змінних до відповідного типу даних перед їх використанням у будь-яких операціях. Це може запобігти непередбачені перетворення типів.

  3. Використання підготовлених інструкцій: При роботі з базами даних використовуйте підготовлені інструкції або параметризрвані запити замість об'єднання змінних в SQL-запит. Це може запобігти атаки з використанням SQL-ін'єкцій.

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

  5. Використання брандмауера веб-додатків (WAF): WAF може виявляти і блокувати шкідливий трафік до того, як він досягне програми.

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

Висновок

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

Інші Послуги

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

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