Pikaboo (2021)

Ключевые моменты прохождения:

✅ Эксплуатируем стандартную Union SQL-инъекцию ✅ Эксплуатируем атаку Off-by-slash (Nginx мисконфиг) ✅ Эксплуатируем LFI ✅ Эксплуатируем LFI -> Log Poisoning через FTP ✅ Вытаскиваем полезную информацию через LDAP(389 порт) ✅ Эксплуатируем уязвимость через perl

Разведка

По дефолту сканируем nmap'ом:

Методом угадывания можно нащупать панель админа с HTTP-авторизацией:

В выводе nmap'а написано, что используется nginx, а на веб-странице, что Apache. Можно предположить, что Nginx является прокси для Apache. Также можно вспомнить очень популярный мисконфиг nginx - "Off-by-slash".

Уязвимость "Off-by-slash" заключается в отсутствии завершающего слэша в location в nginx конфиге, например, может быть так:

Через раздел Typography можно найти LFI:

Разумеется, нужно все делать через php-врапперы, потому что в ином случае код php страниц просто не отобразится:

Теперь можно пробрутить и это:

Тут можно эксплуатировать такую атаку, как Log Poisoning, так как все то, что выведено на странице из логов, может выполняться, как PHP-код.

Делаем такой сплойт и указываем его в качестве имени при подключении по FTP:

Сразу после подключения можно глянуть крон:

csvupdate - это скрипт, написанный на Perl, который читает CSV файлы и добавляет содержимое в PocketApi файлы. Итак, смотрим открытые порты:

389 порт - это LDAP, точнее сервис, который работает на протоколе LDAP.

LDAP - протокол прикладного уровня для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU-T протокола DAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей. Обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAP-сеансов, инкапсулированных в SSL, обычно используется порт 636. В данном файле мы можем найти креды, которые помогут с ldap'ом:

Теперь смотрим LDAP:

Декодим пароль из base64:

По ssh подключиться не получилось, пробуем FTP:

Чтобы подняться до рута нужно использовать уязвимость в perl функции open(). То есть, мы можем использовать символ | для того, чтобы исполнять различный код. Вот тут можно разобрать подробно данную уязвимость.

Сначала ставим листенер для будущего рута на нашей машине:

Создаем сплойт на нашей машине так:

Подключаемся по FTP, настраиваем домашнюю директорию и загружаем эксплоит:

Last updated

Was this helpful?