07 Мар, 2023

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

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

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

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


в Python:

				
					import os
from flask import Flask, request

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run()

				
			


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

• в PHP:

				
					<?php
if ($_FILES["file"]["error"] > 0)
{
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
    move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
    echo "File uploaded successfully";
}
?>

				
			

 

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

• в Java:

				
					import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class UploadServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Check if user is authorized to upload file
        if (!isAuthorized(request.getSession().getAttribute("user_id"))) {
            response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "You are not authorized to upload files.");
            return;
        }

        // Upload file
        Part filePart = request.getPart("file");
        String fileName = getFileName(filePart);
        InputStream fileContent = filePart.getInputStream();
        OutputStream out = new FileOutputStream(new File("/uploads/" + fileName));
        int read;
        byte[] bytes = new byte[1024];
        while ((read = fileContent.read(bytes)) != -1) {
            out.write(bytes, 0, read);
        }
        out.close();
        fileContent.close();
        response.getWriter().println("File uploaded successfully.");
    }

    private String getFileName(Part part) {
        String contentDisp = part.getHeader("content-disposition");
        String[] tokens = contentDisp.split(";");
        for (String token : tokens) {
            if (token.trim().startsWith("filename")) {
                return token.substring(token.indexOf("=") + 2, token.length()-1);
            }
        }
        return "";
    }

    private boolean isAuthorized(String userId) {
        // Check if user is authorized to upload file
        // Implementation not shown
        return false;
    }
}

				
			


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

• в PHP:

				
					// Check if user is authorized to upload file
if (!is_authorized($_SESSION['user_id'])) {
    die("You are not authorized to upload files.");
}

// Upload file
if (isset($_FILES['file'])) {
    $file_name = $_FILES['file']['name'];
    $file_tmp = $_FILES['file']['tmp_name'];
    $file_type = $_FILES['file']['type'];
    $file_size = $_FILES['file']['size'];

    move_uploaded_file($file_tmp, "/uploads/" . $file_name);
    echo "File uploaded successfully.";
}

				
			


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

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

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

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

Загрузка вредоносного ПО:

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

Перезапись важных файлов:

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

Эксфильтрация данных:

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

Потребление ресурсов:

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

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

Выполнение файла:

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

Перезапись файла:

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

Пересечение пути:

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

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

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

Внешний объект XML (XXE):

Злоумышленник может загрузить вредоносный XML-файл, который использует уязвимость XML External Entity (XXE) в веб-приложении. Когда приложение анализирует XML-файл, злоумышленник может считывать конфиденциальные данные с сервера или выполнять произвольный код.

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

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

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

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

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

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

  5. Тест на прохождение пути: Попытайтесь загрузить файл в каталог за пределами предполагаемого каталога загрузки, используя методы обхода пути, такие как символы “.. /”. Если приложение разрешает загрузку файла в каталог за пределами предполагаемого каталога загрузки, это может указывать на недостаточную авторизацию.

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

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

  8. Проверка на наличие уязвимостей XSS и XXE: Попытка загрузить файл, содержащий вредоносный код, который использует уязвимости межсайтового скриптинга (XSS) или XML external entity (XXE) в веб-приложении. Если код выполняется, это может свидетельствовать о недостаточной авторизации.

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

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

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

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

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

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

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

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

  7. Проверьте, не уязвимо ли приложение для атак с использованием межсайтовых сценариев (XSS) или XML external entity (XXE) через загруженные файлы.

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

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

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

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

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

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

  • Insomnia – HTTP-клиент, который можно использовать для ручного тестирования и отладки конечных точек API, включая функциональность загрузки файлов.

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

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

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

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

  • Hydra – инструмент командной строки для принудительной аутентификации и авторизации, который можно использовать для тестирования функциональности загрузки файлов.

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

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

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

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

  • Nmap – сетевой сканер, который может обнаруживать функциональность загрузки файлов на веб-серверах.

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

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

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

  • XSStrike – инструментарий обнаружения и эксплуатации XSS, который можно использовать для тестирования функциональности загрузки файлов.

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

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

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

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

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

  • Hackbar – плагин Firefox, который можно использовать для тестирования функциональности загрузки файлов и других веб-уязвимостей.

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

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

Средняя оценка уязвимостей CVSS, связанных с недостаточной авторизацией при загрузке файлов, может варьироваться в зависимости от серьезности и воздействия уязвимости, а также других факторов, таких как тип приложения и среда, в которой оно развернуто. Однако в целом уязвимости, связанные с недостаточной авторизацией при загрузке файлов, могут иметь высокий балл CVSS, варьирующийся от 6 до 10 или даже выше в некоторых случаях. Это связано с тем, что уязвимости при загрузке файлов могут привести к целому ряду угроз безопасности, включая несанкционированный доступ к конфиденциальной информации, выполнение кода и повышение привилегий, среди прочего. Поэтому важно правильно оценить и устранить эти типы уязвимостей, чтобы обеспечить безопасность и целостность приложения и его данных.

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

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

• CWE-441: Непреднамеренное доверенное лицо или посредник ("Сбитый с толку заместитель’) – Эта слабость относится к отсутствию надлежащих проверок авторизации при доступе к файлам, что может позволить злоумышленнику получить доступ к конфиденциальным файлам и манипулировать ими через промежуточный компонент.

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

• CWE-467: использование sizeof() для типа указателя – эта слабость относится к использованию функции sizeof() для типов указателей, что может привести к переполнению буфера и другим уязвимостям, связанным с памятью.

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

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

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

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

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

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

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

• CVE-2022-35239 – Страница управления файлами изображений SolarView Compact SV-CPT-MC310 версии 7.23 и более ранних версий и SV-CPT-MC310F версии 7.23 и более ранних версий содержит уязвимость недостаточной проверки при загрузке файлов. Если эта уязвимость используется, произвольный PHP-код может быть выполнен, если злоумышленник с удаленной аутентификацией загружает специально созданный PHP-файл.

• CVE-2022-31041 – Open Forms - это приложение для создания и публикации смарт-форм. Открытые формы поддерживают загрузку файлов в качестве одного из типов полей формы. Эти поля можно настроить так, чтобы конечные пользователи могли загружать только определенные расширения файлов (например, только PDF / Excel / ...). Проверка входных данных загруженных файлов недостаточна в версиях до 1.0.9 и 1.1.1. Пользователи могут изменять или удалять расширения файлов, чтобы обойти эту проверку. Это приводит к загрузке на сервер файлов, которые имеют другой тип файла, чем указано в расширении имени файла. Эти файлы могут быть загружены (вручную или автоматически) персоналом и / или другими приложениями для дальнейшей обработки. Таким образом, вредоносные файлы могут проникать во внутренние / надежные сети. Версии 1.0.9 и 1.1.1 содержат исправления для этой проблемы. В качестве обходного пути шлюз API или решение для обнаружения вторжений перед open-forms могут быть способны сканировать и блокировать вредоносный контент до того, как он попадет в приложение Open Forms.

• CVE-2022-22326 – IBM Datapower Gateway с 10.0.2.0 по 10.0.4.0, с 10.0.1.0 по 10.0.1.5 и с 2018.4.1.0 по 2018.4.1.18 может допускать несанкционированный просмотр журналов и файлов из-за недостаточной проверки авторизации. Идентификатор IBM X-Force: 218856.

• CVE-2022-0888 – Плагин Ninja Forms – File Uploads Extension WordPress уязвим для произвольной загрузки файлов из-за недостаточной проверки типа входного файла, найденного в ~/includes/ajax/controllers/uploads.php файл, который можно обойти, позволяя злоумышленникам, не прошедшим проверку подлинности, загружать вредоносные файлы, которые могут быть использованы для удаленного выполнения кода, в версиях до и включительно 3.3.0

• CVE-2021-42671 – Уязвимость неправильного контроля доступа существует в онлайн-портале инженеров Sourcecodester на PHP в nia_munoz_monitoring_system/admin/uploads. Злоумышленник может использовать эту уязвимость, чтобы обойти контроль доступа и получить доступ ко всем файлам, загруженным на веб-сервер, без необходимости аутентификации или авторизации.

• CVE-2021-42362 – Плагин WordPress Popular Posts WordPress уязвим для произвольной загрузки файлов из-за недостаточной проверки типа входного файла, найденного в ~/src/Image.php файл, который позволяет злоумышленникам с доступом уровня contributor и выше загружать вредоносные файлы, которые могут быть использованы для удаленного выполнения кода, в версиях до 5.3.2 включительно.

• CVE-2021-39352 – Плагин Catch Themes Demo Import WordPress уязвим для произвольной загрузки файлов с помощью функции импорта, найденной в ~/inc/CatchThemesDemoImport.php файл, в версиях до 1.7 включительно, из-за недостаточной проверки типа файла. Это позволяет злоумышленнику с правами администратора загружать вредоносные файлы, которые могут быть использованы для удаленного выполнения кода.

• CVE-2021-39341 – Плагин OptinMonster WordPress уязвим для раскрытия конфиденциальной информации и несанкционированного обновления настроек из-за недостаточной проверки авторизации с помощью функции logged_in_or_has_api_key в ~/OMAPI/RestApi.php файл, который может использоваться для использования вредоносных веб-скриптов на сайтах с установленным плагином. Это влияет на версии до 2.6.4 включительно.

• CVE-2021-36132 – Была обнаружена проблема в расширении FileImporter в MediaWiki до версии 1.36. Для некоторых упрощенных конфигураций переменной $wgFileImporterRequiredRight она может не проверять все соответствующие права пользователя, что позволяет пользователю с недостаточными правами выполнять операции (в частности, загрузку файлов), которые им не следует разрешать выполнять.

• CVE-2021-23014 – В версиях 16.0.x до 16.0.1.1, 15.1.x до 15.1.3 и 14.1.x до 14.1.4 в расширенных версиях WAF и ASM BIG-IP отсутствуют проверки авторизации для загрузки файлов в определенный каталог в REST API, что может позволить аутентифицированным пользователям с правами гостя загружать файлы. Примечание: Версии программного обеспечения, для которых завершилась служба технической поддержки (EoTS), не оцениваются.

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

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

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

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

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

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

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

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

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

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

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

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

Разработка тестовых примеров – Разработка тестовых примеров, имитирующих распространенные сценарии атак, такие как загрузка вредоносного файла, подделка загруженных файлов и использование уязвимостей в обход авторизации. Используйте такие инструменты, как Burp Suite, OWASP ZAP или Postman, чтобы автоматизировать некоторые из этих тестов.

Выполнение тестовых примеров – Выполните тестовые примеры и запишите результаты, включая любые обнаруженные уязвимости и шаги, предпринятые для их использования. Убедитесь, что вы придерживаетесь этических принципов взлома и не причиняете никакого вреда системе или ее пользователям.

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

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

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

OWASP Топ-10 – Загрузка файлов – Этот ресурс из Open Web Application Security Project (OWASP) предоставляет обзор рисков, связанных с загрузкой файлов, и содержит рекомендации по предотвращению и снижению этих рисков.

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

Академия Burp Suite – Этот онлайн-учебный курс от PortSwigger, создателей Burp Suite, включает раздел о загрузке файлов и о том, как проверять уязвимости.

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

События захвата флага (CTF) – Мероприятия CTF предоставляют увлекательный и сложный способ попрактиковаться в тестировании на наличие уязвимостей, включая недостаточную авторизацию при загрузке файлов. Ищите события CTF, связанные с безопасностью веб-приложений или загрузкой файлов.

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

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

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

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

“Руководство по тестированию OWASP” проектом Open Web Application Security Project (OWASP) – Это руководство предоставляет основу для тестирования веб-приложений на наличие уязвимостей в системе безопасности, включая проблемы, связанные с загрузкой файлов.

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

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

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

“Учебник хакера 3: практическое руководство по тестированию на проникновение” Питер Ким – Эта книга представляет собой практическое руководство по тестированию на проникновение и включает раздел об использовании уязвимостей при загрузке файлов.

“Расширенное тестирование на проникновение: взлом самых защищенных сетей в мире” автор: Уил Аллсопп – Эта книга представляет собой расширенное руководство по тестированию на проникновение и включает раздел о загрузке файлов и связанных с ними уязвимостях.

“Основы взлома и тестирования на проникновение” автор: Патрик Энгебретсон – Эта книга представляет собой введение в тестирование на проникновение и включает раздел о загрузке файлов.

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

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

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

  • Файл с нулевым байтом в конце имени файла, который может обойти определенные проверки типов файлов и ограничения на загрузку.

  • Файл с двойным расширением, например .php.jpg , который может обойти определенные проверки типов файлов и ограничения на загрузку.

  • Файл с ограниченным расширением, например .php или .asp, который может выполнять код на сервере, если приложение неправильно проверяет тип файла.

  • Файл с бэкдором, таким как веб-оболочка, который может обеспечить несанкционированный доступ к серверу.

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

  • Файл с недопустимыми или вредоносными метаданными, такими как данные EXIF, которые могут быть использованы для использования уязвимостей в библиотеках обработки изображений.

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

  • Файл с полезной нагрузкой JavaScript, который можно использовать для выполнения кода на стороне клиента и выполнения таких действий, как кража файлов cookie или выполнение CSRF-атак.

  • Файл с полезной нагрузкой вируса или вредоносного ПО, который может заразить сервер или клиентские компьютеры.

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

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

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

  2. Используйте безопасное хранилище файлов: Загруженные файлы должны храниться в безопасном месте, недоступном для неавторизованных пользователей. Это может включать шифрование файлов, ограничение прав доступа и использование защищенной системы хранения, такой как Amazon S3.

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

  4. Используйте сеть доставки контента (CDN): CDN можно использовать для кэширования и распространения статического контента, включая загруженные файлы, чтобы снизить нагрузку на сервер и ограничить поверхность атаки.

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

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

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

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

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

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

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

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

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

  6. Обновление приложения и сервера с помощью последних исправлений и обновлений безопасности может помочь предотвратить использование уязвимостей и эксплойтов против системы.

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

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

Заключение

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

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

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

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

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

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