
Скрипт на Ruby, который сканирует сеть на наличие уязвимых и эксплуатируемых сторонних веб-приложений.
Yasuo — это скрипт на Ruby, который сканирует уязвимые сторонние веб-приложения.
Во время оценки безопасности сети (внутренней, внешней, redteam и т.д.) мы часто сталкиваемся с уязвимыми сторонними веб-приложениями или веб-интерфейсами, которые позволяют скомпрометировать удалённый сервер, используя общеизвестные уязвимости. Некоторые из распространённых и любимых приложений — это административный интерфейс Apache Tomcat, jmx-console JBoss, Hudson Jenkins и другие.
Если поискать в Exploit-db, то можно найти более 10 000 удалённо эксплуатируемых уязвимостей в огромном количестве веб-приложений/интерфейсов, которые могут позволить атакующему полностью скомпрометировать сервер. Эти уязвимости варьируются от RCE до вредоносной загрузки файлов, от SQL-инъекций до RFI/LFI и т.д.
Yasuo создан для быстрого сканирования сети на наличие таких уязвимых приложений, предоставляя цели для взлома на блюдечке.
Вам понадобится установить следующие gem-ы:
bundle install --path vendor
bundler exec ./yasuo.rb -f [myfile]
Yasuo предоставляет следующие параметры командной строки:
-r :: Если вы хотите, чтобы Yasuo выполнил сканирование портов, используйте этот параметр для указания IP-адреса или диапазона IP.
-l :: Если вы хотите, чтобы Yasuo выполнил сканирование портов, используйте этот параметр для указания входного файла с IP-адресами, разделёнными переводами строк, аналогично опции -iL nmap.
-s :: Укажите пользовательский файл сигнатур. [./yasuo.rb -s mysignatures.yaml -f nmap.xml] [По умолчанию — signatures.yaml]
-f :: Если вы не хотите, чтобы Yasuo выполнял сканирование портов, и у вас уже есть вывод nmap в формате xml, используйте этот параметр для передачи вывода nmap.
-u :: Принимает файл URL-адресов, разделённых переводами строк, сохранённых с предыдущего запуска Yasuo. См. ниже для получения дополнительной информации.
-n :: Указывает Yasuo не пинговать хост во время сканирования портов. Стандартная опция nmap.
-p :: Используйте этот параметр для указания номера(ов)/диапазона портов.
-A :: Используйте этот параметр для сканирования всех 65535 портов. Стандартная опция nmap.
-b [all/form/basic] :: Если обнаруженное приложение использует аутентификацию, используйте этот параметр для перебора аутентификации. выполнит перебор как формы, так и HTTP Basic auth. — только форму. — только HTTP Basic auth.
Когда Yasuo запускается, он выполняет несколько шагов перед началом перечисления уязвимых приложений. Если вы укажете IP-адрес или диапазон, он выполнит сканирование портов для указанных целей. Если вы передадите Yasuo файл с выводом nmap в xml, он разберёт этот файл и перечислит хосты с открытыми веб-портами. Затем он отправляет запрос на фиктивный (несуществующий) файл и каталог на каждый перечисленный хост:порт. Для уменьшения количества ложных срабатываний отбрасываются все ip:порт, которые отвечают HTTP 200 Ok на запросы фиктивного файла и каталога. В конце этого процесса мы получаем список, скажем, «хороших URL». Эти хорошие URL затем используются для перечисления уязвимых приложений.
Если по какой-то причине вам нужно повторно запустить Yasuo на том же наборе целей, предыдущие версии Yasuo проходили весь этот процесс снова. Это совсем не эффективно. Я знаю, я в основном туповат и медленно учусь, но постоянно развиваюсь. В любом случае, хорошей причиной для повторного запуска Yasuo на тех же целях может быть использование другого (или пользовательского) файла сигнатур.
Эта последняя версия Yasuo автоматически сохраняет файл savedURLstateXXXXX.out в той же папке, из которой запускается. Этот файл будет содержать все «хорошие URL». Если вы планируете повторно запустить Yasuo на тех же целях, просто передайте этот файл Yasuo без опций -f или -r.
Пример: ruby yasuo.rb -s my_custom_signatures.yaml -u savedURLstateXXXXX.out
Yasuo разберёт этот файл и начнёт перечисление уязвимых приложений по указанным «хорошим URL». Та-да.
./yasuo -r 127.0.0.1 -p 80,8080,443,8443 -b form
Приведённая выше команда выполнит сканирование портов для 127.0.0.1 на портах 80, 8080, 443 и 8443 и переберёт логин для всех приложений, использующих аутентификацию на основе форм.
./yasuo -l /project/hosts -p 80,8080,443,8443
Приведённая выше команда выполнит сканирование портов для хостов из файла /project/hosts на портах 80, 8080, 443 и 8443 и не будет выполнять никаких действий по перебору для обнаруженных приложений.
./yasuo -f my_nmap_output.xml -b all
Приведённая выше команда разберёт файл вывода nmap my_nmap_output.xml и переберёт логин для всех приложений, использующих как аутентификацию на основе форм, так и HTTP Basic.

allformbasic-t :: Укажите максимальное количество потоков.
-h :: Ну, догадайтесь.