20 Лют, 2023

Уразливості при завантаженні файлів

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

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

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

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


В PHP:

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

				
					$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
}

				
			


Більш безпечним способом перевірки типу файлу в PHP є використання $_FILES["fileToUpload"]["type"] атрибут або сторонню бібліотеку, щоб перевірити, чи дозволений тип файлу.

• в Python:

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

				
					@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    file.save(file.filename)
    return 'File uploaded successfully'

				
			


Щоб встановити обмеження за розміром в Python, ви можете використовувати max_content_length атрибут в app об'єкт, як показано в наступному прикладі:

				
					from flask import Flask, request

app = Flask(__name__)
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024  # 16MB limit

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    file.save(file.filename)
    return 'File uploaded successfully'


				
			


• 
В Java:

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

				
					@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
    try {
        byte[] bytes = file.getBytes();
        Path path = Paths.get(file.getOriginalFilename());
        Files.write(path, bytes);
        return "File uploaded successfully";
    } catch (IOException e) {
        e.printStackTrace();
        return "Error uploading file";
    }
}

				
			


Щоб очистити ім'я файлу, Java, ви можете використовувати регулярний вираз або сторонню бібліотеку, як показано в наступному прикладі:

				
					import org.apache.commons.lang3.StringUtils;

@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
    try {
        String fileName = StringUtils.cleanPath(file.getOriginalFilename());
        byte[] bytes = file.getBytes();
        Path path = Paths.get(fileName);
        Files.write(path, bytes);
        return "File uploaded successfully";
    } catch (IOException e) {
        e.printStackTrace();
        return "Error uploading file";
    }
}

				
			

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

Впровадження шкідливого ПО:

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

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

Віддалене виконання коду:

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

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

Відмова в обслуговуванні:

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

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

Методи підвищення привілеїв для вразливостей при завантаженні файлів

Завантаження виконуваного файлу і виконання його від імені привілейованого користувача:

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

Завантаження веб-оболонки та отримання віддаленого доступу:

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

Завантаження файлу шкідливої корисним навантаженням:

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

Завантаження файлу, який перезаписує конфіденційний файл:

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

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

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

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

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

  3. Перевірка на наявність вразливостей при завантаженні файлів: Спроба завантажити файли, що містять шкідливий код, такий як віруси або трояни, або які можуть виконувати довільний код на сервері. Перевірте наявність різних типів розширень файлів, таких як PHP, JSP і ASP, оскільки вони можуть використовуватися для виконання коду на сервері.

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

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

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

  7. Результати документування: Документуйте будь вразливості або проблеми, виявлені в ході тестування, включаючи кроки, зроблені для їх відтворення, і вплив, який вони можуть справити на систему. Це може допомогти розробникам та системним адміністраторам зрозуміти ризики, пов'язані з уразливими при завантаженні файлів, і зробити кроки по їх усуненню.

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

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

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

  3. Протестуйте різні типи розширень файлів, включаючи виконувані файли, такі як .php, .jsp і .asp. Ці типи файлів потенційно можуть виконуватися на сервері, що призводить до вразливостей віддаленого виконання коду.

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

  5. Перевірте максимальний розмір файлів, які можуть бути завантажені на сервер. Якщо максимальний розмір файлу не задане, зловмисник може завантажити файл надмірно великого розміру, що викличе атаки типу "відмова в обслуговуванні" (DoS) на сервері.

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

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

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

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

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

Набір інструментів для експлуатації Уразливості при завантаженні файлів

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

  • Burp Suite – Інструмент перехоплення проксі, який дозволяє тестировщику маніпулювати запитами і відповідями. Його можна використовувати для зміни запитів на завантаження файлів і перевірки на наявність вразливостей при завантаженні файлів.

  • Postman – Інструмент тестування API, який можна використовувати для тестування функціональності завантаження файлів шляхом надсилання HTTP-запитів на сервер.

  • cURL – Інструмент командного рядка, який можна використовувати для відправки HTTP-запитів і тестування функціональності завантаження файлів.

  • Firefox Developer Edition – Веб-браузер, який включає в себе інструменти розробника, такі як мережевий монітор і відладчик JavaScript. Його можна використовувати для перевірки та зміни запитів на завантаження файлів і відповідей.

  • Chrome Developer Tools – Набір інструментів веб-розробки, вбудований в браузер Google Chrome. Він включає в себе стінну панель, яку можна використовувати для відстеження та зміни запитів на завантаження файлів і відповідей.

  • ZAP Proxy – Інструмент перехоплення проксі, який можна використовувати для тестування функціональності завантаження файлів і виявлення вразливостей при завантаженні файлів.

  • OWASP FileZilla – Сканер безпеки веб-додатків, який можна використовувати для виявлення вразливостей при завантаженні файлів та інших проблем безпеки.

  • Nmap – Інструмент дослідження мережі та аудиту безпеки, який можна використовувати для виявлення відкритих портів і служб у цільовій системі.

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

  • Wfuzz – Інструмент для злому паролів веб-додатків, який можна використовувати для тестування функціональності завантаження файлів та виявлення вразливостей.

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

  • Metasploit Framework – Інструмент тестування на проникнення, який можна використовувати для перевірки вразливостей при завантаженні файлів і використання їх для отримання віддаленого доступу до цільовій системі.

  • SQLMap – Інструмент для тестування і використання вразливостей SQL-ін'єкцій. Він може бути використаний для виявлення і використання вразливостей при завантаженні файлів у веб-додатках.

  • Acunetix – Сканер безпеки веб-додатків, який можна використовувати для виявлення вразливостей при завантаженні файлів та інших проблем безпеки.

  • Nessus – Сканер вразливостей, який можна використовувати для виявлення вразливостей при завантаженні файлів та інших проблем безпеки у веб-додатках.

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

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

  • OpenVAS – Сканер вразливостей, який можна використовувати для виявлення вразливостей при завантаженні файлів та інших проблем безпеки у веб-додатках.

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

  • Tamper Data – Розширення Firefox, яке дозволяє користувачеві перехоплювати і змінювати HTTP / HTTPS запити перед їх відправкою на сервер.

  • Live HTTP Headers – Розширення Firefox, яке дозволяє користувачеві переглядати і змінювати HTTP-заголовки для запитів та відповідей.

  • Cookie Editor – Розширення Firefox, яке дозволяє користувачеві переглядати і змінювати файли cookie для веб-сайту. Це може бути корисно для тестування функціональності завантаження файлів, що вимагає автентифікації.

Середній бал CVSS Уразливості при завантаженні файлів стека

Загальна система оцінки вразливостей (CVSS) являє собою основу для оцінки серйозності вразливостей в системі безпеки. Оцінка коливається від 0 до 10, причому 10 балів є найсерйознішими. Оцінка CVSS враховує різні фактори, такі як ймовірність використання уразливості і вплив експлойта.

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

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

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

CWE-434: необмежена завантаження файлу з небезпечним типом Ця вразливість виникає, коли додаток дозволяє користувачеві завантажувати файл з небезпечним типом файлів, наприклад, файл, який може виконувати код або запускати атаку.

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

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

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

CWE-434: необмежена завантаження файлу з небезпечним типом Ця вразливість виникає, коли додаток дозволяє користувачеві завантажувати файл з небезпечним типом файлів, наприклад, файл, який може виконувати код або запускати атаку.

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

CWE-434: необмежена завантаження файлу з небезпечним типом Ця вразливість виникає, коли додаток дозволяє користувачеві завантажувати файл з небезпечним типом файлів, наприклад, файл, який може виконувати код або запускати атаку.

CWE-434: необмежена завантаження файлу з небезпечним типом Ця вразливість виникає, коли додаток дозволяє користувачеві завантажувати файл з небезпечним типом файлів, наприклад, файл, який може виконувати код або запускати атаку.

CWE-434: необмежена завантаження файлу з небезпечним типом Ця вразливість виникає, коли додаток дозволяє користувачеві завантажувати файл з небезпечним типом файлів, наприклад, файл, який може виконувати код або запускати атаку.

CWE-434: необмежена завантаження файлу з небезпечним типом Ця вразливість виникає, коли додаток дозволяє користувачеві завантажувати файл з небезпечним типом файлів, наприклад, файл, який може виконувати код або запускати атаку.

Топ-10 CVE, пов'язаних з уразливими при завантаженні файлів

CVE-2023-24646 – Вразливість при завантаженні довільного файлу в компонент /fos/admin/ajax.php of Food Ordering System версії 0 дозволяє зловмисникам виконувати довільний код з допомогою створеного PHP-файлу.

CVE-2023-24508 – Пристрої Baicells Nova 227, Nova 233 і Nova 243 LTE TDD eNodeB і Nova 246 з прошивкою через RTS / RTD 3.6.6 уразливі для віддаленого використання коду оболонки за допомогою HTTP-командних ін'єкцій. Команди виконуються з використанням виконання перед входом в систему і виконуються з правами root. Наведені нижче методи були протестовані і перевірені стороннім аналітиком і були підтверджені придатними для використання особлива подяка Рустаму Аміну за надання інструкцій по відтворенню.

CVE-2023-24022 – Пристрої Baicells Nova 227, Nova 233 і Nova 243 LTE TDD eNodeB з прошивкою через RTS / RTD 3.7.11.3 мають жорстко запрограмовані облікові дані, які легко виявляються і можуть використовуватися віддаленими зловмисниками для аутентифікації через ssh. (Облікові дані зберігаються в прошивці, зашифрованою функцією crypt.)

CVE-2023-23937 – Pimcore - це платформа управління даними і досвідом з відкритим вихідним кодом: PIM, MDM, CDP, DAM, DXP / CMS і цифрова комерція. Функція завантаження для оновлення акаунта користувача неправильно перевіряє тип вмісту файлу, дозволяючи будь аутентифікованим користувачеві обійти цю перевірку безпеки, додавши дійсну підпис (наприклад, GIF89) і відправивши будь-неприпустимий тип вмісту. Це може дозволити зловмиснику, який пройшов перевірку автентичності, завантажувати HTML-файли з вмістом JS, які будуть виконуватися в контексті домену. Ця проблема була виправлена у версії 10.5.16.

CVE-2023-23851 – SAP Business Planning and Consolidation – версії 200, 300, дозволяє зловмисникові з бізнес-авторизацією завантажувати будь-які файли (включаючи веб-сторінки) без належної перевірки формату файлу. Якщо інші користувачі відвідують завантажену шкідливу веб-сторінку, зловмисник може виконувати дії від імені користувачів без їх згоди, що впливає на конфіденційність та цілісність системи.

CVE-2023-23607 – erohtar / Dasherr - це панель моніторингу для самостійних сервісів. В порушених версіях необмежена завантаження файлів дозволяє будь-якому користувачеві, який не пройшов перевірку автентичності, виконувати довільний код на сервері. Файл /www/include/filesave.php дозволяє завантажувати будь-який файл в будь-яке місце. Якщо зловмисник завантажує php-файл, він може виконати код на сервері. Ця проблема була виправлена у версії 1.05.00. Користувачам рекомендується виконати оновлення. Відомих обхідних шляхів для вирішення цієї проблеми не існує.

CVE-2023-23314 – Уразливість для завантаження довільних файлів в компоненті /api/upload zdir версії v3.2.0 дозволяє зловмисникам виконувати довільний код через створений ssh-файл.

CVE-2023-23135 – Уразливість для завантаження довільних файлів в Ftdms версії v3.1.6 дозволяє зловмисникам виконувати довільний код, завантажуючи файл JPG.

CVE-2023-22937 – In Splunk Enterprise versions below 8.1.13, 8.2.10, and 9.0.4, the lookup table upload feature let a user upload lookup tables with unnecessary filename extensions. Lookup table file extensions may now be one of the following only: .csv, .csv.gz, .kmz, .kml, .mmdb, or .mmdb.gzl. For more information on lookup table files, see [About lookups](https://docs.splunk.com/Documentation/Splunk/latest/Knowledge/Aboutlookupsandfieldactions).

CVE-2023-22735 – Zulip - це інструмент командного спільної роботи з відкритим вихідним кодом. У версіях zulip до фіксації `2f6c5a8`, але після фіксації `04cf68b` користувачі могли завантажувати файли з довільним `Content-Type`, які будуть обслуговуватися з імені хоста Zulip з заголовком `Content-Disposition: inline` без заголовків `Content-Security-Policy`, що дозволяє їм обманювати інших користувачів виконання довільного Javascript в контексті програми Zulip. Крім іншого, це дозволяє красти сеанси. Зачіпаються тільки розгортання, які використовують сховище S3 (не сховище на локальному диску), і тільки розгортання, в яких розгорнуто фіксація 04cf68b45ebb5c03247a0d6453e35ffc175d55da, яка була лише в "основному", а не в будь-якому номерному випуску. Порушені користувачі повинні знову оновитися з основного, щоб розгорнути це виправлення. Перемикання з сховища S3 на сховище на локальному диску номінально пом'якшило б цю проблему, але, ймовірно, вимагає більше зусиль, ніж оновлення до останньої версії "main", яка усуває проблему.

Уразливості при завантаженні файлів подвиги

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

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

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

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

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

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

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

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

Практикуючись в тестуванні на Уразливості при завантаженні файлів

Використання уразливого веб-додатки: Ви можете знайти вразливі веб-додатки з уразливими для завантаження файлів в Інтернеті, такі як чертовски вразливе веб-додаток (DVWA) або WebGoat. Ці програми призначені для навмисної уразливості і можуть використовуватися для практичного тестування та використання вразливостей при завантаженні файлів.

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

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

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

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

Для вивчення вразливостей завантаження файлів

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

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

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

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

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

  6. Беріть участь в заходах та завдання Capture The Flag (CTF), присвячених вразливостей при завантаженні файлів. Це може стати відмінним способом попрактикуватися і застосувати свої навички в безпечної, контрольованому середовищі.

Книги з оглядом вразливостей при завантаженні файлів

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

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

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

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

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

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

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

Керівництво по тестуванню OWASP v4 проект Open Web Application Security Project – Ця книга являє собою всеосяжне керівництво по тестування веб-додатків, включаючи уразливості при завантаженні файлів. У ньому міститься докладна інформація про те, як перевірити веб-додатки на наявність цих вразливостей і як їх усунути.

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

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

Список вразливостей для завантаження файлів корисних навантажень

  • Основні типи файлів: .jpg, .png .gif, .txt, .pdf .docx, .xlsx .pptx, .mp4, .mp3

  • Веб-оболонки: .php, .asp, .aspx, .jsp, .pl, .py, .rb

  • Шкідливі виконувані файли: .exe, .msi .bat, .cmd .jar

  • ZIP-бомби: ZIP-файли, що містять велику кількість вкладених каталогів і файлів, призначені для відмови в обслуговуванні або збоїв системи.

  • Корисне навантаження міжсайтового скриптинга (XSS): файли .html або .js, що містять скрипти, які можуть виконуватися на сервері або в браузері жертви.

  • Корисне навантаження віддаленого виконання коду (RCE): файли .php або .jsp, які можуть виконувати довільний код на сервері

  • Корисна навантаження на основі зображень: зображення, що містять корисну навантаження, закодовану в метаданих або колірних каналах.

  • Корисна навантаження на основі PDF, PDF-файли, які містять JavaScript або інший шкідливий вміст.

  • Корисні навантаження на основі XML: XML-файли, які можна використовувати для впровадження шкідливого коду на додаток.

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

Як захиститися від вразливостей при завантаженні файлів

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

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

  3. Використовуйте політику безпеки контенту: CSP може допомогти запобігти XSS атаки, обмежуючи типи вмісту, яке може бути завантажене на сторінку.

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

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

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

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

Заходи щодо усунення вразливостей при завантаженні файлів

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

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

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

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

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

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

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

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

Висновок

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

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

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

Інші Послуги

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

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