
Простой инструмент для обхода ограничений загрузки файлов.

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

Этот инструмент запрещён на экзамене OSCP!
Подходит для реальных пентестов. В этом режиме загружаются безвредные файлы, без попыток эксплуатации цели.
Новое — Если указана целевая папка для загруженных файлов, программа определит, отображается ли загруженный образец файла. Например, если вы выбрали PHP, программа попытается определить, выполняется ли и успешно отображается команда echo. Если да, она предложит войти в интерактивную оболочку.
Подходит, когда вы хотите эксплуатировать цель и загрузить интерактивный веб-шелл (если указан каталог загрузки). Файл будет загружен со случайным UUID, что затруднит его угадывание фаззерами.
Подходит для проверки наличия анти-малвари. Загрузите Eicar (тестовый файл анти-малвари) в систему, и если пользователь укажет местоположение загруженного файла, программа проверит, был ли файл успешно загружен и существует ли он в системе, чтобы определить, присутствует ли анти-малварь.
Посмотрите config.py в каталоге lib — вы можете добавлять новые расширения, MIME-типы, магические байты, настраивать использование протоколов HTTP/HTTPS и т. д.
Чтобы добавить новый модуль, просто добавьте функцию с нужной функциональностью в modules.py, затем добавьте имя функции в список "active_modules" в config.py.
Чтобы добавить новое расширение файла, добавьте файл sample.{ext} в assets/sample_files, затем добавьте расширение и его MIME-тип/магические байты в config.py.
git clone https://github.com/sAjibuu/Upload_Bypass.git
pip install -r requirements.txt
sudo docker pull sajibuu/upload_bypass
sudo docker build -t sajibuu/upload_bypass .
sudo docker run -v $(pwd)/request:/Upload_Bypass/{your_request_file} -it sajibuu/upload_bypass -r request -s 'file was uploaded successfully' -E php -e
Убедитесь, что слушаете порт 8080 на всех интерфейсах!
sudo docker run -v $(pwd)/request:/Upload_Bypass/{your_request_file} -it sajibuu/upload_bypass -r request -s 'file was uploaded successfully' -E php -e -p http://{docker_interface_IP}:8080
Инструмент не будет работать должным образом в следующих случаях:
Обратите внимание, что использование Upload Bypass и любые действия, предпринимаемые с его помощью, осуществляются исключительно на ваш собственный риск. Инструмент предоставляется только для образовательных и тестовых целей. Разработчик Upload Bypass не несёт ответственности за любое неправомерное использование, ущерб или незаконные действия, вызванные его использованием.
Программа работает только с файлами запросов, созданными прокси-инструментами, такими как Burp Suite и ZAP OWASP.
Перед сохранением файла запроса из используемого вами прокси (например, Burp Suite) замените следующие значения параметров на соответствующие маркеры:
Содержимое файла: *data*
Пример: замените двоичные данные изображения строкой *data*
Имя файла: *filename*
Пример: замените имя файла вместе с расширением строкой *filename*
Заголовок Content-Type: *mimetype*.
Пример: замените content-type (MIME-тип) файла строкой *mimetype*
Как это должно выглядеть в JSON-запросе:

Как это должно выглядеть в запросе с multipart-данными:

Usage: Upload Bypass [OPTIONS]
Options:
-h, --help Print help (see more with '--help')
-U, --usage Print the how to save the request file instructions.
-v, --version Print version
Required Arguments:
-r, --request_file <REQUEST_FILE> Provide a request file to be proccessed
-E, --extension <EXTENSION> Forbidden extension to check (ex: php)
-A, --allowed <EXTENSION> Allowed extension (ex: jpeg) - Optional - if not set the program will auto-detect the extension
Choose only one from the options below:
-s, --success <MESSAGE> Provide a success message when a file is uploaded (ex: File was uploaded successfully)
-f, --failure <MESSAGE> Provide a failure message when a file is uploaded (ex: File is not allowed!)
-S, --status_code <STATUS_CODE> Provide a status code for a success upload (ex: 200)
Mode Settings:
-d, --detect Upload harmless sample files (Suitable for a real penetration test)
-e, --exploit Upload Web-Shells files when testing
-a, --anti_malware Upload Anti-Malware Test file (Eicar) when testing
I. If set with -E flag the program will test with the Eicar string along with the choosen extension
II. If set without the -E flag the program will test with Eicar string and a com extension
Modules Settings:
-l, --list List all modules
-i, --include_only <MODULES> Include only modules to test from (ex: extension_shuffle, double_extension)
-x, --exclude <MODULES> Exclude modules (ex: svg_xxe, svg_xss)
Request Settings:
--base64 Encode the file data with Base64 algorithm
--allow_redirects Follow redirects
-P, --put Use the HTTP PUT method for the requests (Default is POST)
-Pa, --patch Use the HTTP Patch method for the requests (Default is POST)
-R, --response Print the response to the screen
-c, --continue Continue testing all files, even if a few uploads encountered success
-t, --time_out <NUM> Set the request timeout (Default is 8)
-rl, --rate_limit <NUMBER> Set a rate-limit with a delay in milliseconds between each request