Как я взломал Privnote
Privnote — крупный сервис одноразовых записок, в котором хранится ну очень много чего интересного. Написал пошаговую инструкцию для вас.
Начать свое повествование я хотел бы с простого совета: Не стоит пренебрегать старыми-добрыми хакерскими тактиками. Ведь люди наступают на те же грабли и продолжают пренебрегать элементарными правилами безопасности. Как говорится, страна ждет героев, но рожают — идиотов.
Крупные сервисы — не исключение. И сегодня я продемонстрирую это на примере Privnote.
Privnote — это крупный сервис одноразовых записок. Как-то раз у меня возникла проблема — я купил товар, который мне отдали через privnote, но забыл его сохранить. Продавец долго не выходил на связь — ведь товар то он уже отдал. А товар мне был ой как нужен.
И тут мою голову посетила удивительная мысль: а почему бы мне не взломать сам Privnote?
Для начала я решил просканить сам сайт с помощью с помощью dirbuster и всех остальных сканеров. Однако, это не дало мне ощутимых результатов.
Ну что, попробуем просканить сервер через nmap, может быть открыты какие-нибудь порты... К сожалению, ничего кроме 80,443 я не нашел.
Далее решено было искать поддомены с помощью сервиса https://securitytrails.com/list/apex_domain/privnote.com. Был обнаружен сервер, который меня заинтересовал:
git.privnote.com с IP 190.0.137.208
Я заметил, что на этом IP работал 24 порт. Ну вот теперь можно и позабавиться!
После небольших исследований я пришел к выводу, что диапазоны айпишников:
190.0.137.192/28 190.0.137.208/28
принадлежат одной и той же компании. Ну что, дергаем все домены и начинаем веселиться)
Просканив один из доменов dirbuster_ом, я нашел панельку управления какими-то шопами.
Вооружившись софтом https://github.com/sqlmapproject/sqlmap я начал сканить все post и get запросы на sql injection.
Мой совет для всех новичков - при начале сканирование обязательно добавляем аргументы --level=5 --risk=3 --batch --beep --level=5 --risk=3 - sqlmap будет сканить на полную мощь --batch - автоматизирует все нажатия --beep - сообщит звуком если чего найдет
И, о чудо, слышим звук счастья и видим скулю.
Скуля вышла только blind, но из нее не ничего вышло. Ладно, ничего страшного, и так сойдёт.
Я начал двигаться по БД и нашел таблицы с юзерами. Там меня ждал ещё один сюрприз!
Пароли находятся в отрытом виде! Однако, зайдя в админку я не нашел ни единого способа пролить шелл. Один вечер ушел безуспешно.
Отсканив все айпишники, я нашел интересную панельку с Gitea и начал перебирать все логины и пароли к ней.
Через пару минут был получен первый успешный результат) Я начал радоваться, т.к. знал про очень интересную CVE-2020-14144.
Но и тут ждала беда, ведь для успешного финала у юзера должны быть активны git hooks.
Сам эксп https://www.exploit-db.com/exploits/49383 Подробно как его использовать https://podalirius.net/en/articles/exploiting-cve-2020-14144-gitea-authenticated-remote-code-execution/
Ну что же, ищем дальше. Перебирая пароли, я в очередной раз зашел с другой учетки и увидел, что у меня есть админ права!
Спешно набираю в консоли nc -lvp 555
запускаю экп. Наконец-то я на сервере.
Начинаю копать сервер на предмет наличия всяких интересных файлов, параллельно запустив https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS
Полазив в самом Gitea, я не нашел ни одной репы, связанной с privnote. Совсем ничего интересного нет.
Помозговав, попробовал ввести вот такую вот команду: ssh root@privnote.com
Опа, коннект пошел, значит я в локальной сети!
Сижу и перебираю логины с паролями, но тут мимо меня пролетела розовая птица обломинго. Введя первый же пароль вижу Host key verification failed.
Не прокатит значит побрутить ssh, так как вход только по ключу. Исследуя остальные сервера, у меня получилось зайти на еще два из них, но без видимого результата.
Всё, больше нет не каких зацепок, и смысла дальше куда то лезть.
Но, в последний момент, мне в голову пришла еще одна идея: а не попробовать ли мне залогиниться в почте того юзера, у которого был админ доступ к Gitea?
И действительно, я вошел! На глаза тут же попался интересный каталог в почте.
Вижу, что нашему юзеру перенаправляются все письма от: aws@privnote.com
Захожу на https://signin.aws.amazon.com/ и начинаю подбирать пароли... Безуспешно.
Ну что же, последнее, что можно придумать - это сбросить пароль, словить письмо и надеяться, что меня быстро не спалят.
Письмо приходит, захожу в aws.
Работа с aws заслуживает отдельной статьи, но об этом чуть позже.
Пришлось поизвиваться, но все-таки я смог сделать snapshots, примонтировал его к диску, а диск подключил к своей впс (которую я создал на aws). По итогу мной были выкачены все файлы.
Работа сделана, можно расслабиться. Game over. Мы выиграли.
Что я могу сказать по поводу этого сервиса - ребята действительно молодцы, после прочтения записка удаляется и её не восстановить.
В БД кроме вот таких вот записей ничего нет:
В логах сервера тоже инфа не хранится:
В некоторых логах, конечно, были айпи, но, поскольку их мало, понятно что специально их не хранят:
Заключение
Всю жизнь меня терзали сомнения, что контора Privnote хранит все логи, все это кем-то читается и используется в корыстных целях. На практике все оказалось наоборот, ребята действительно молодцы. Слово свое держат.
Однако, эта статья подтверждает, что при желании взломать можно всё.
На сегодня закончим. Спасибо за внимание!