Научная статья на тему 'Обход ограничений на загрузку файлов'

Обход ограничений на загрузку файлов Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
414
30
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
НЕБЕЗОПАСНОСТЬ ЗАГРУЗКИ ФАЙЛОВ / ОБХОД ФИЛЬТРОВ / ПОЛЕЗНАЯ НАГРУЗКА / ШЕЛЛ / ФОРМА ЗАГРУЗКИ ФАЙЛОВ / FILE UPLOAD INSECURITY / FILTER BYPASS / PAYLOAD / SHELL / FILE UPLOAD FORM

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Камнева П. И., Коновалов Н. С., Побойкина А. О.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

CIRCUMVENTING FILE UPLOAD RESTRICTIONS

This article discusses how to protect against uploading files, as well as ways to bypass them. The purpose of this work is to show possible vulnerabilities in web applications. The result of this work is a demonstration of bypassing popular web filters when uploading files. The main feature of this article is the presence of detailed examples, as well as existing vulnerable test web applications, on which it is possible to test all the described methods and approaches to testing file upload forms.

Текст научной работы на тему «Обход ограничений на загрузку файлов»

УДК 004.056.53

ОБХОД ОГРАНИЧЕНИЙ НА ЗАГРУЗКУ ФАЙЛОВ П. И. Камнева1, Н. С. Коновалов2, А. О. Побойкина3

1,3 Донской государственный технический университет (г. Ростов-на-Дону, Российская Федерация) 2Ростовской государственный университет путей сообщения (г. Ростов-на-Дону, Российская Федерация)

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

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

CIRCUMVENTING FILE UPLOAD RESTRICTIONS

P. I. Kamneva1, N. S. Konovalov2, A. O. Poboykina3

1,3Don State Technical University (Rostov-on-Don, Russian Federation) 2Rostov State Transport University (Rostov-on-Don, Russian Federation)

This article discusses how to protect against uploading files, as well as ways to bypass them. The purpose of this work is to show possible vulnerabilities in web applications. The result of this work is a demonstration of bypassing popular web filters when uploading files. The main feature of this article is the presence of detailed examples, as well as existing vulnerable test web applications, on which it is possible to test all the described methods and approaches to testing file upload forms. Keywords: file upload insecurity, filter bypass, payload, shell, file upload form.

Введение. Чаще всего различного рода файлы загружаются через веб-сайты. Но данная форма загрузки может стать входной точкой для злоумышленников. С её помощью возможна загрузка вредоносного кода, который впоследствии при необходимости может быть «вызван»его хозяином. Однако существуют решения, которые помогают избежать подобных атак. В данной статье рассмотрены основные методы защиты с использованием фильтров, а также способы их обхода [1].

Валидация на стороне клиента. Данный тип проверки подразумевает проверку входных данных до того, как они отправятся на сервер. Обычно это происходит в веб-браузере. Разработчики используют данный тип проверки для удобства пользователей, чтобы оперативно уведомлять их без обновления страницы [2].

Обход валидаций на стороне клиента. Данные проверки легко обойти, отключив JavaScript в браузере или подделав http запрос после проверки с помощью утилиты burpsuite. В качестве примера можно рассмотреть задания с сайта root-me.org.

Обход валидации с проверкой формата файла в имени. Существует несколько типов данной проверки — проверка по белым и черным спискам. Проверка по черным спискам проверяет наличие в формате файлов определенных слов. Проверка по белому списку подразумевает проход только по разрешенному формату. Пример использования белого списка приведен на рис. 1.

Рис. 1. Форма загрузки фото

При загрузке файла с расширением phpтестировщик по безопасности получает уведомления о неправильном формате. Если же pentester сначала загружает wso-4.2.5.jpeg, при этом перехватывает запрос и изменяет расширение на php, то происходит успешная загрузка файла. Результаты представлены на рис. 2.После загрузкиwso-shell возможно взаимодействие с сервером.

Рис. 2. Wso-shell

Обход валидации с проверкой типа файла при загрузке. Данный тип фильтров проверяет content-type параметр при загрузке. Так как у изображений при загрузке данный параметр будет равен image/jpeg, а у php скрипта application, php скрипт не загрузится. Обходить данный фильтр довольно просто, загрузив, как и в прошлый раз шелл, а в параметрах заменив application на image/jpeg.Результат приведен на рис. 3 [3].

|.............................18632704077529342871332734129

Cnntpnt-гп cnnci ti nn- name="image" ; filename="shell.php"

ponten^^p^^^nage/jpe^J

Рис. 3. Тип загружаемого файла

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

1Т ($_РИ-ЕБ['Т:11е"]['^ге"] > 16) {

Рис. 4. Проверка длины содержимого файла

В данном примере необходимо заменить исходный шел на более простой и короткий не длиннее 16 символов, например, как на рис. 5. Результат продемонстрирован на рис. 6.

<?='$_СЕТ[а]*?>

Рис. 5. Полезная нагрузка

Рис. 6. Результат исполнения полезной нагрузки

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

Рис. 7. Полезная нагрузка с заголовком

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

Нет возможности обойти фильтр, но есть загрузка zip архивов. Если нет возможности обойти сложный фильтр, но есть возможность загрузки архивов, которые в последствии распаковываются, то одним из вариантов является возможность воспользоваться ошибкой обработки. Для выполнения данной атаки необходимо заранее подготовить zip файл с symlinks. Сделать это можно способом, изображенном на рис. 8 [6].

In -sf ../../../index.php payload.txt

Рис. 8. Подготовка полезной нагрузки

Вызвав распакованный файл, пользователь делающий запрос сможет увидеть содержимое страницы index.php (рис. 9).

С ÜJ О ä root-me.org

<?php

if!isset(S FILES!"zipflie']))<

if IS FILES! zipfile' |[ type" 1— "application/zip" 11 S FILES! 'zipfile' |[ 'type' 1—"applicati«Vx-zip-co«pressed* 11 S. FILES!'zipfile' ] ['type')—"application/octet-streaa'K Suploaddir - tip/upload/'.uniqid!*", true).'/'; nkdirfSuploaddir, $750. true);

Suploadfile - Suploaddir . mdslbasenarels FILESI'zipfile'l!'nane']>).'.zip'; if (move uploaded filets FILESI'zipflle'll'tnp nane'l, Suploadfile)) { Sfliessage - "<p>File uploaded</p> ";

>

else(

Vnessage - *«p»€rror!</|»*,

}

Szip - new ZipArchive; if (szip->open(Suploadfile)) {

// Don't know if this is safe, but it works, someone told w the flag is N3v3r_7rU5T uSEr lnpt)7 , did not understand what it neans execC/usr/bin/tineout -k2 3 /usr/bin/unzip Suploadfile' -d 'Suploaddir'", Soutput, Sret); Snessage - "<p>File unzipped <a href-".Suploaddir.">here</a>.</p>'; Szip-xloseO;

)

else<

Saessage - "<p> Oecowpression Error </p>*;

)

)

else!

Sressage - "<p> Error bad file type ! <p>";

>

>

<htel> <body>

<hl>ZIP uploa<k/hl> <?php print Sfiessage; 7>

<fore enctype-'njltipart/fom-data* nethod-'post* action* <input nare-"zipfile" type"*file"> «button type-'subfiit">Sub«it</b«tton> </fom> </body> </ht«l>

Рис. 9. Содержимое index.php

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

Библиографический список

1. Неограниченная загрузка файлов [Электронный ресурс] // Netsparker. —

URL : https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/unrestricted-file-upload/ (дата обращения : 26.11.2019).

2. UnrestrictedFileUpload [Электронный ресурс] // Trustwave.— URL : http://doc.cenzic.com/sadoc9x14ba847/CPL0001426.htm (дата обращения : 25.11.2019).

3. Unrestricted File Upload [Электронный ресурс] // Applicationsecurity.— URL : https://applicationsecurity.io/appsec-findings-database/unrestricted-file-upload/ (дата обращения : 24.11.2019).

4. Tag: Unrestricted File Upload [Электронный ресурс] // SecuriTeam Blogs. — URL : https://blogs.securiteam.com/index.php/archives/tag/unrestricted_file_upload (дата обращения : 26.11.2019).

5. Неограниченная загрузка файлов [Электронный ресурс] // Acunetix. — URL : https://www.acunetix.com/vulnerabilities/web/unrestricted-file-upload/ (дата обращения : 27.11.2019).

6. Неограниченная загрузка файлов [Электронный ресурс] // Owasp. — URL : https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload (дата обращения : 27.11.2019)/

Об авторах:

Камнева Полина Ивановна, старший преподаватель кафедры «Маркетинг и инженерная экономика» Донского государственного технического университета (344000, РФ, г. Ростов-на-Дону, пл. Гагарина, 1), polin61 @yandex.ru

Коновалов Никита Сергеевич, студент 1-го курса магистратуры направления «Информатика и вычислительная техника» Ростовского государственного университета путей сообщения (344038, РФ, г. Ростов-на-Дону, пл. Ростовского Стрелкового Полка Народного Ополчения, 2) worlak2@mail.ru

Побойкина Алина Олеговна, студентка 4-го курса направления «Экономика предприятий и организаций» Донского государственного технического университета (344000, РФ, г. Ростов-на-Дону, пл. Гагарина, 1), Alina.poboikina2011@yandex.ru

Authors:

Kamneva Polina Ivanovna, senior lecturer, the Department of Marketing and Engineering Economics, Don State Technical University (344000, Russian Federation, Rostov-on-Don, Gagarin sq. 1), polin61 @yandex.ru

Konovalov Nikita Sergeevich, 1st year student of the master's program in Computer Science and Engineering, Rostov State Transport University, (344038, Russian Federation, Rostov-on-Don, Rostovskogo Strelkovogo Polka Narodnogo Opolcheniya sq. 2), worlak2@mail.ru

Poboykina Alina Olegovna, 4th year student of Economics of Enterprises and Organizations, Don State Technical University (344000, Russian Federation, Rostov-on-Don, Gagarin sq. 1), polin61@yandex.ru

i Надоели баннеры? Вы всегда можете отключить рекламу.