02 Мар, 2023

Неспособность ограничить загрузку файлов

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

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

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


в PHP

Распространенной ошибкой является использование $_FILES $_FILES глобальная переменная для прямого доступа к загруженному файлу без выполнения какой-либо проверки. Вот один из примеров:

				
					<?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.";
}
?>

				
			


В этом примере нет проверки типа файла, размера или количества загруженных файлов. Это делает приложение уязвимым для атак, когда злоумышленник может загрузить вредоносные файлы на сервер.

в Ruby на рельсах

Распространенной ошибкой является использование params[:file] параметр для прямого доступа к загруженному файлу без выполнения какой-либо проверки. Вот один из примеров:

				
					class UploadController < ApplicationController
  def index
    if request.post?
      uploaded_io = params[:file]
      File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
        file.write(uploaded_io.read)
      end
    end
  end
end

				
			


В этом примере нет проверки типа файла, размера или количества загруженных файлов. Это делает приложение уязвимым для атак, когда злоумышленник может загрузить вредоносные файлы на сервер.

в Node.js

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

				
					const express = require('express');
const fileUpload = require('express-fileupload');
const app = express();

app.use(fileUpload());

app.post('/upload', function(req, res) {
  if (!req.files || Object.keys(req.files).length === 0) {
    return res.status(400).send('No files were uploaded.');
  }

  let uploadedFile = req.files.file;
  let fileName = uploadedFile.name;
  let filePath = __dirname + '/uploads/' + fileName;

  uploadedFile.mv(filePath, function(err) {
    if (err) {
      return res.status(500).send(err);
    }

    res.send('File ' + fileName + ' uploaded!');
  });
});

				
			


В этом примере нет проверки типа файла, размера или количества загруженных файлов. Это делает приложение уязвимым для атак, когда злоумышленник может загрузить вредоносные файлы на сервер.

• в C#

В C # распространенной ошибкой является использование HttpPostedФайл класс для прямого доступа к загруженному файлу без выполнения какой-либо проверки. Вот один из примеров:

				
					using System;
using System.IO;
using System.Web;
using System.Web.UI;

public partial class Upload : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            HttpPostedFile file = Request.Files["file"];
            if (file != null && file.ContentLength > 0)
            {
                string fileName = Path.GetFileName(file.FileName);
                string path = Server.MapPath("~/uploads/") + fileName;
                file.SaveAs(path);
                StatusLabel.Text = "File " + fileName + " uploaded successfully!";
            }
        }
    }
}

				
			


В этом примере нет проверки типа файла, размера или количества загруженных файлов. Это делает приложение уязвимым для атак, когда злоумышленник может загрузить вредоносные файлы на сервер.

Примеры использования Неспособность ограничить загрузку файлов

Загрузка вредоносного скрипта

Злоумышленник может загрузить вредоносный скрипт, замаскированный под изображение, PDF или любой другой формат файла. Как только скрипт загружен, злоумышленник может выполнить его на сервере и получить доступ к конфиденциальной информации или получить контроль над сервером. Например, злоумышленник может загрузить PHP-скрипт с .jpg расширение, которое при выполнении на сервере открывает черный ход для злоумышленника для выполнения произвольного кода.

Атаки типа "отказ в обслуживании" (DoS)

Злоумышленник может загрузить на сервер большие файлы, что приведет к сбою или отказу сервера отвечать на запросы. Это может привести к DoS-атаке, когда законные пользователи не смогут получить доступ к серверу. Например, злоумышленник может загрузить большой видеофайл, который занимает все доступное дисковое пространство на сервере.

Межсайтовый скриптинг (XSS)

Злоумышленник может загрузить файл, содержащий вредоносный код, например JavaScript, а затем обманом заставить пользователя загрузить и выполнить файл. Это может привести к межсайтовой скриптовой атаке (XSS), при которой злоумышленник может украсть учетные данные пользователя или внедрить вредоносный код в браузер пользователя. Например, злоумышленник может загрузить файл, содержащий код JavaScript, который крадет пользовательские файлы cookie и отправляет их на сервер злоумышленника.

Удаленное выполнение кода (RCE)

Злоумышленник может загрузить файл, содержащий вредоносный код, который позволяет ему выполнять команды на сервере. Это может привести к атаке удаленного выполнения кода (RCE), при которой злоумышленник может получить полный контроль над сервером. Например, злоумышленник может загрузить файл, содержащий полезную нагрузку для внедрения команд, которая при выполнении позволяет злоумышленнику выполнять произвольные команды на сервере.

Методы повышения привилегий при невозможности ограничить загрузку файлов

Загрузка веб-оболочки

Злоумышленник может загрузить веб-оболочку, которая представляет собой скрипт, позволяющий ему выполнять произвольный код на сервере. Как только веб-оболочка загружена, злоумышленник может использовать ее для повышения привилегий, выполняя команды от имени пользователя с более высокими привилегиями. Например, злоумышленник может загрузить веб-оболочку, которая позволяет ему выполнять команды от имени пользователя root.

Использование уязвимости в веб-приложении

Злоумышленник может использовать уязвимость при загрузке файла для загрузки файла, содержащего эксплойт веб-приложения. Эксплойт может быть использован для повышения привилегий, воспользовавшись уязвимостью в веб-приложении. Например, злоумышленник может загрузить файл, содержащий PHP-эксплойт, который позволяет ему выполнять произвольный код от имени пользователя веб-сервера.

Злоупотребление правами доступа к файлам

Злоумышленник может использовать уязвимость для загрузки файлов, чтобы загрузить файл с неправильными правами доступа к файлам. Например, злоумышленник может загрузить файл, который может быть выполнен всеми, включая пользователя root. Как только файл будет выполнен, злоумышленник может повысить привилегии, выполняя команды от имени пользователя root.

Загрузка вредоносного плагина или расширения

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

Общая методология и контрольный список за неспособность ограничить загрузку файлов

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

  1. Определите функциональность загрузки файлов: Первым шагом является определение функциональности загрузки файлов в приложении. Это можно сделать путем проверки исходного кода, проверки функциональности приложения или использования инструмента веб-прокси для перехвата запросов.

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

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

  4. Тест для проверки на стороне сервера: Проверьте, выполняет ли приложение проверку загруженных файлов на стороне сервера. Попытайтесь загрузить файлы, содержащие недопустимое содержимое, например файлы с неправильными расширениями или файлы с неправильными заголовками, и посмотрите, отклоняет ли их приложение.

  5. Тест для проверки на стороне клиента: Проверьте, выполняет ли приложение проверку загруженных файлов на стороне клиента. Попытайтесь обойти проверку на стороне клиента, изменив код на стороне клиента или используя инструмент для управления HTTP-запросом.

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

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

  8. Тест на повышение привилегий: Проверьте на повышение привилегий, попытавшись загрузить файл, который можно использовать для повышения привилегий, например веб-оболочку или вредоносный плагин.

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

  1. Проверьте, существует ли в приложении функция загрузки файлов.

  2. Проверьте, есть ли в приложении ограничения на разрешенные типы файлов, которые могут быть загружены.

  3. Проверьте, есть ли в приложении ограничения на размер файла, который может быть загружен.

  4. Проверьте, выполняет ли приложение проверку загруженных файлов на стороне сервера.

  5. Проверьте, выполняет ли приложение проверку загруженных файлов на стороне клиента.

  6. Проверьте, выполняет ли приложение манипуляции с именами файлов в загруженных файлах.

  7. Проверьте, имеет ли приложение надлежащие разрешения на загруженные файлы.

  8. Проверьте, хранит ли приложение загруженные файлы в надежном и безопасном месте.

  9. Проверьте, есть ли в приложении соответствующие средства контроля безопасности, такие как проверка подлинности и контроль доступа, для доступа к загруженным файлам.

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

  11. Проверьте на повышение привилегий, попытавшись загрузить файл, который можно использовать для повышения привилегий, например веб-оболочку или вредоносный плагин.

  12. Документируйте все выводы и предоставьте рекомендации по устранению выявленных уязвимостей.

Набор инструментов для эксплуатации Неспособность ограничить загрузку файлов

Ручные Инструменты:

  • Burp Suite – Популярный инструмент тестирования веб-приложений, который включает в себя перехватчик загрузки файлов и различные другие инструменты для анализа веб-трафика.

  • OWASP ZAP – Бесплатный сканер безопасности веб-приложений с открытым исходным кодом, который включает в себя сканер загрузки файлов и другие инструменты тестирования уязвимостей.

  • Fiddler – Прокси-сервер для веб-отладки, который может перехватывать трафик HTTP и HTTPS, включая загрузку файлов.

  • Tamper Data – Плагин для браузера Firefox, который позволяет пользователям перехватывать и изменять HTTP-запросы, включая загрузку файлов.

  • Inspect Element – Встроенный инструмент браузера, который позволяет пользователям просматривать и изменять код HTML, CSS и JavaScript, включая функциональность загрузки файлов.

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

  • Nessus – Сканер уязвимостей, который включает в себя плагин для выявления уязвимостей, связанных с невозможностью ограничить загрузку файлов.

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

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

  • Qualys – Облачный инструмент управления уязвимостями, который включает в себя плагин для выявления уязвимостей, связанных с невозможностью ограничить загрузку файлов.

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

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

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

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

  • Metasploit Framework – Инструмент тестирования на проникновение с открытым исходным кодом, который включает в себя модуль для использования уязвимостей, связанных с невозможностью ограничить загрузку файлов.

  • OWASP Amass – Инструмент отображения сети и сканирования уязвимостей с открытым исходным кодом, который включает в себя плагин для выявления уязвимостей, связанных с ограничением загрузки файлов.

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

  • Chrome DevTools – Встроенный инструмент в Google Chrome, который позволяет пользователям просматривать и изменять код HTML, CSS и JavaScript, включая функции загрузки файлов.

  • Firefox Developer Tools – Встроенный инструмент в Firefox, который позволяет пользователям просматривать и изменять код HTML, CSS и JavaScript, включая функции загрузки файлов.

  • Tamper Chrome – Расширение браузера для Google Chrome, которое позволяет пользователям перехватывать и изменять HTTP-запросы, включая загрузку файлов.

  • HackBar – Расширение браузера для Firefox, которое позволяет пользователям перехватывать и изменять HTTP-запросы, включая загрузку файлов.

  • Requestly – Расширение браузера для Chrome, Firefox и Edge, которое позволяет пользователям изменять HTTP-запросы, включая загрузку файлов.

Средний балл CVSS Сбой стека для ограничения загрузки файлов

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

Оценка CVSS за неспособность ограничить уязвимости при загрузке файлов может сильно различаться в зависимости от конкретной реализации и серьезности воздействия. Однако, в целом, эти уязвимости можно считать уязвимостями высокой степени серьезности с оценкой CVSS 7.0 или выше.

Согласно Национальной базе данных уязвимостей (NVD), средний балл CVSS за неспособность ограничить уязвимости при загрузке файлов за последние 5 лет (по состоянию на 2023 год) составляет около 8,5, что считается критическим уровнем серьезности. Это указывает на то, что неспособность ограничить загрузку файлов является серьезной уязвимостью, которая может оказать значительное влияние на безопасность веб-приложения.

Общее перечисление слабых мест (CWE)

• CWE-434: неограниченная загрузка файла с опасным типом – этот CWE связан с загрузкой файла без проверки его типа, что может привести к загрузке вредоносных файлов, таких как исполняемые файлы, скрипты и другие типы файлов, которые могут нанести вред системе.

• CWE-400: неконтролируемое потребление ресурсов – это CWE связано с загрузкой больших файлов или загрузкой большого количества файлов, что может потреблять чрезмерные ресурсы и вызывать атаки типа "отказ в обслуживании".

• CWE-434: неограниченная загрузка файла с опасным типом – этот CWE связан с загрузкой файла без проверки его типа, что может привести к загрузке вредоносных файлов, таких как исполняемые файлы, скрипты и другие типы файлов, которые могут нанести вред системе.

• CWE-352: Подделка межсайтовых запросов (CSRF) – Этот CWE связан с загрузкой файла через вредоносный веб-сайт, который использует учетные данные аутентифицированного пользователя для выполнения несанкционированных действий.

• CWE-434: неограниченная загрузка файла с опасным типом – этот CWE связан с загрузкой файла без проверки его типа, что может привести к загрузке вредоносных файлов, таких как исполняемые файлы, скрипты и другие типы файлов, которые могут нанести вред системе.

• CWE-434: неограниченная загрузка файла с опасным типом – этот CWE связан с загрузкой файла без проверки его типа, что может привести к загрузке вредоносных файлов, таких как исполняемые файлы, скрипты и другие типы файлов, которые могут нанести вред системе.

• CWE-444: Непоследовательная интерпретация HTTP–запросов ("Контрабанда HTTP-запросов") - этот CWE связан с загрузкой файла с использованием методов контрабанды HTTP-запросов, которые могут обходить средства контроля безопасности и выполнять несанкционированные действия.

• CWE-522: недостаточно защищенные учетные данные – этот CWE связан с загрузкой файла, содержащего конфиденциальную информацию, такую как пароли или токены аутентификации, к которым могут получить доступ злоумышленники и использовать их в злонамеренных целях.

• CWE-434: неограниченная загрузка файла с опасным типом – этот CWE связан с загрузкой файла без проверки его типа, что может привести к загрузке вредоносных файлов, таких как исполняемые файлы, скрипты и другие типы файлов, которые могут нанести вред системе.

• CWE-400: неконтролируемое потребление ресурсов – это CWE связано с загрузкой больших файлов или загрузкой большого количества файлов, что может потреблять чрезмерные ресурсы и вызывать атаки типа "отказ в обслуживании".

Топ-10 CVE, связанных с невозможностью ограничить загрузку файлов

• CVE-2019-16114 – В ATutor 2.2.4 злоумышленник, не прошедший проверку подлинности, может изменить настройки приложения и заставить его использовать созданную им базу данных, что позволяет ему получить доступ к приложению. Затем он может изменить каталог, в который приложение загружает файлы, что позволяет ему добиться удаленного выполнения кода. Это происходит потому, что install/include/header.php не ограничивает определенные изменения (для db_host, db_login, db_password и content_dir) в install/include/step5.php .

• CVE-2018-1306 – Код файла PortletV3AnnotatedDemo Multipart Portlet war, представленный в Apache Pluto версии 3.0.0, может позволить удаленному злоумышленнику получить конфиденциальную информацию, вызванную невозможностью ограничить информацию о пути, предоставленную во время загрузки файла. Злоумышленник может воспользоваться этой уязвимостью для получения конфигурационных данных и другой конфиденциальной информации.

• CVE-2018-1000627 – Battelle V2I Hub 2.5.1 может позволить удаленному злоумышленнику получить конфиденциальную информацию, вызванную невозможностью ограничить доступ к файлу ключа API. Злоумышленник может воспользоваться этой уязвимостью, чтобы получить текущий ключ API для получения несанкционированного доступа к системе.

• CVE-2017-18229 – В GraphicsMagick 1.3.26 была обнаружена проблема. Уязвимость при сбое выделения была обнаружена в функции ReadTIFFImage в coders / tiff.c, которая позволяет злоумышленникам вызывать отказ в обслуживании через созданный файл, поскольку размер файла неправильно используется для ограничения выделения строк сканирования, полос и листов.

• CVE-2017-16787 – Утилита веб-настройки в устройствах Meinberg LANTIME с прошивкой до версии 6.24.004 позволяет удаленным злоумышленникам читать произвольные файлы, используя сбой для ограничения доступа по URL.

• CVE-2017-11357 – Прогресс пользовательского интерфейса Telerik для ASP.NET AJAX до версии R2 2017 SP2 не ограничивает должным образом пользовательский ввод в RadAsyncUpload, что позволяет удаленным злоумышленникам выполнять произвольную загрузку файлов или выполнять произвольный код.

• CVE-2016-5661 – Гражданский портал доступа Accela Civic Platform полагается на клиента для ограничения типов файлов для загрузки, что позволяет удаленным пользователям, прошедшим проверку подлинности, выполнять произвольный код с помощью измененных параметров _EventArgument и filename.

• CVE-2013-6737 – IBM System Storage Storwize V7000 Unified 1.3.x и 1.4.x до версии 1.4.3.0 неправильно ограничивает содержимое файла дампа при обнаружении аппаратного сбоя 1691, что позволяет удаленным пользователям, прошедшим проверку подлинности, получать конфиденциальные фрагменты клиентских данных, считывая этот файл после его копирования.

• CVE-2013-5465 – IBM Maximo Asset Management 7.x до 7.1.1.7 LAFIX.20140319-0837, 7.1.1.11 до IFIX.20140323-0749, 7.1.1.12 до IFIX.20140321-1336, 7.5.x до 7.5.0.3 IFIX027 и 7.5.0.4 до IFIX011; SmartCloud Control Desk 7.x до 7.5.0.3 и 7.5.1.x до 7.5.1.2; и Tivoli IT Asset Management для ИТ, Tivoli Service Request Manager, Maximo Service Desk и база данных управления изменениями и конфигурациями (CCMDB) 7.x до 7.1.1.7 LAFIX.20140319-0837, 7.1.1.11 до IFIX.20140207-1801 и 7.1.1.12 до IFIX.20140218-1510 не ограничивают должным образом типы файлов во время загрузки, что позволяет удаленно проходить проверку подлинности пользователи должны оказывать неопределенное влияние с помощью недопустимого типа.

• CVE-2011-2933 – Уязвимость при загрузке произвольного файла существует в admin/media/upload.php в WebsiteBaker 2.8.1 и более ранних версиях из-за невозможности ограничить загружаемые файлы с расширениями .htaccess, .php4, .php5 и .phtl.

Неспособность ограничить загрузку файлов подвиги

  • Загрузка файлов XSS: Злоумышленники могут загрузить файл, содержащий вредоносный код, например файл JavaScript или флэш-объект, и обманом заставить пользователей загрузить и выполнить его, что может привести к межсайтовой скриптовой атаке (XSS).

  • Удаленное выполнение кода: Злоумышленники могут загрузить файл, содержащий вредоносный код, который может быть выполнен на сервере, что может привести к удаленному выполнению кода (RCE) и поставить под угрозу систему.

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

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

  • Обход аутентификации: Злоумышленники могут загрузить файл, содержащий обходной скрипт, который может обойти проверки подлинности и предоставить несанкционированный доступ к системе.

  • Отказ в обслуживании (DoS): Злоумышленники могут загрузить файл, содержащий большие объемы данных, которые могут потреблять чрезмерные ресурсы и вызывать атаку типа "отказ в обслуживании" (DoS).

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

  • Загрузка оболочки: Злоумышленники могут загрузить файл, содержащий сценарий оболочки, который может быть выполнен на сервере, и предоставить им доступ к системе из командной строки.

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

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

Практикуясь в тестировании на Неспособность ограничить загрузку файлов

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

Использование уязвимого веб-приложения: например, DVWA или Mutillidae, чтобы попрактиковаться в использовании уязвимостей при загрузке файлов.

Используйте лабораторию тестирования на проникновение: например, HackTheBox или TryHackMe, чтобы попрактиковаться в использовании уязвимостей при загрузке файлов в контролируемой среде.

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

Используйте автоматизированные инструменты: например, Burp Suite или OWASP ZAP, для сканирования уязвимостей при загрузке файлов и практики их использования.

За неспособность исследования ограничить загрузку файлов

Читайте о Топ-10 OWASP: OWASP Top 10 - это список наиболее важных угроз безопасности веб-приложений, и неспособность ограничить загрузку файлов является одной из них. Прочтите о различных уязвимостях и узнайте, как их протестировать.

Узнайте об ограничениях на загрузку файлов: Изучите различные ограничения на загрузку файлов, такие как размер файла, тип файла и расширение файла, и узнайте, как их обойти.

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

Изучите реальные примеры: Посмотрите реальные примеры уязвимостей при загрузке файлов и узнайте, как они использовались.

Изучите лежащие в основе технологии: Изучите базовые технологии, используемые при разработке веб-приложений, такие как HTTP, HTML и JavaScript, чтобы лучше понять, как могут возникать уязвимости при загрузке файлов.

Пройдите онлайн-курсы: Пройдите онлайн-курсы по безопасности веб-приложений, например, предлагаемые Udemy, Coursera или SANS, чтобы узнать больше о невозможности ограничить загрузку файлов и других рисках безопасности веб-приложений.

Книги с обзором отказа ограничить загрузку файлов

Безопасность веб-приложений: Руководство для начинающих Брайан Салливан и Винсент Лью – Эта книга представляет собой введение в безопасность веб-приложений, включая отказ от ограничения загрузки файлов, с четкими объяснениями и примерами из реального мира.

Руководство хакера веб-приложений: поиск и использование недостатков безопасности автор: Дафидд Штуттард и Маркус Пинто – Эта книга охватывает широкий спектр вопросов безопасности веб-приложений, включая отказ от ограничения загрузки файлов, с практическими рекомендациями и подробными объяснениями.

Взлом веб-приложений: Серия "Искусство взлома", тестирование безопасности на проникновение для современных DevOps и облачных сред Майк Шема – В этой книге представлен обзор безопасности веб-приложений, включая отказ от ограничения загрузки файлов, с практическими рекомендациями и практическими упражнениями.

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

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

Веб-взлом 101: Как заработать деньги, взламывая этично Питер Яворски – Эта книга представляет собой введение во взлом веб-приложений, включая отказ ограничить загрузку файлов, с практическими рекомендациями и примерами из реального мира.

Руководство по тестированию OWASP v4.0 Проект Open Web Application Security Project – В этом руководстве содержится полный обзор тестирования безопасности веб-приложений, включая отказ ограничить загрузку файлов, с практическими рекомендациями и подробными объяснениями.

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

Практический поиск ошибок для тестировщиков на проникновение: практическое руководство, помогающее этичным хакерам обнаруживать недостатки безопасности веб-приложений Джозеф Маршалл – Эта книга представляет собой практическое руководство по поиску и использованию уязвимостей веб-приложений, включая отказ ограничить загрузку файлов, с реальными примерами и практическими упражнениями.

Основы веб-взлома: инструменты и методы для атаки в Интернете автор: Джош Паули – Эта книга представляет собой введение в безопасность веб-приложений, включая отказ от ограничения загрузки файлов, с практическими рекомендациями и пошаговыми инструкциями.

Список полезных нагрузок Неспособность ограничить загрузку файлов

  1. Команды оболочки в виде имен файлов: <?php system($_GET['cmd']); ?> сохраненный как file.php.jpg

  2. Загрузка файлов с двойными расширениями: file.php.jpg или file.php.gif

  3. Загрузка файлов без расширения: file.php или file

  4. Загрузка файлов с недопустимыми расширениями: file.php.jpg или file.php ;.jpg

  5. Загрузка файлов с нулевым байтом: file.php.jpg

  6. Загрузка файлов с вредоносным содержимым: <?php echo "Hello world!"; ?>

  7. Загрузка файлов с PHP-кодом, встроенным в изображения: <?php echo "Hello world!"; ?> сохраненный как file.jpg.php

  8. Загрузка файлов с помощью команд командной строки в метаданных: exiftool -Comment='<?php echo shell_exec($_GET['cmd']); ?>' image.jpg

  9. Загрузка файлов с PHP-кодом в метаданных: exiftool -Comment='<?php echo "Hello world!"; ?>' image.jpg

  10. Загрузка файлов с большими размерами файлов может привести к отказу в обслуживании: dd if=/dev/zero of=файл bs= 1M количество = 10000 (создает файл размером 10 ГБ)

Как быть защищенным от отказа ограничить загрузку файлов

  1. Используйте проверку на стороне сервера, чтобы ограничить типы и размеры файлов.

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

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

  4. Используйте заголовок Content-Disposition, чтобы обеспечить, чтобы загруженные файлы не рассматривались как исполняемые.

  5. Используйте политику безопасности содержимого (CSP), чтобы ограничить, откуда файлы могут быть загружены и выполнены.

  6. Очистите имена файлов и метаданные, чтобы удалить потенциально вредоносный контент.

  7. Используйте разрешения файловой системы, чтобы ограничить доступ к загруженным файлам и каталогам.

  8. Используйте антивирусное программное обеспечение для проверки загруженных файлов на наличие вирусов и вредоносных программ.

  9. Используйте брандмауэры веб-приложений (WAF) для обнаружения и блокирования атак.

  10. Обновляйте все программное обеспечение и плагины с помощью последних исправлений безопасности, чтобы предотвратить использование известных уязвимостей.

Заключение

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

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

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

Другие Услуги

Готовы к безопасности?

Связаться с нами