Этот пост будет из серии "история одного взлома". Моя первая проба себя, как писателя. Решил я месяца 4 назад стать хацкером и научиться взламывать сайты. Эта история будет про мой первый взлом, который можно назвать успешным.
Произошло это спустя пару недель после начала моих "занятий". Тестировал я в те дни по порядку сайты, которые мне выдал гугл по запросу "купить суши воронеж". И с одним из них мне таки повезло. По домену можно было подумать, что на нем будут агитировать против суши и рассказывать о прелестях нашей национальной кухни, но нет, так оказались все теже суши, роллы, пиццы и подобные вещи.
После прохождения регистрации, с использование временного email'а, я стал тестировать пользовательские данные на наличие xxs. И xss тут нашлась, уязвимыми оказались поля логина, адреса доставки заказа и телефона (что встречается довольно редко, ибо это поле обычно отдельно проверяется по регулярному выражению. Оно надо сказать и тут проверялось, но только на frontend'е с помощью js, что легко обходится с использование BurpSuit). Но на сайте не было ни комментариев, ни чего либо подобного, поэтому хоть я и нашел stored xss - это почти ничего не давало.
Ищем дальше. Поиски на долго не затянулись и в скором времени, с использованием того же BurpSuit'а, была найдена уязвимость IDOR в редактировании личных данных. При подмене id пользователи в запросе, мы получаем возможность редактировать чужие данные. Но это опять же почти не приносит пользы, т.к. авторизация на сайте происходит по email, а его можно изменить только звонком в тех. поддержку. Остается возможность только нагадить, поменяв всем пароли )
Тогда я был только в начале своего пути пентестера и не заметил очевидного. И когда писал отчет о найденных уязвимостях сообщил просто, что есть xss там-то там-то и idor там-то там-то. Проверяющие это не оценили, видимо думали, что невозможность менять email их спасает и проигнорировали сообщение. Исправлений не выпустили.
Вектор атаки, который я не заметил был такой: у нас есть xss, у нас есть idor, это отличная связка. С помощью idor встраиваем скрипты в личные кабинеты пользователей, js исполняется и отправляет мне email и id пользователя, после чего можно смело менять ему пароль и удалять наш скрипт. Таким образом собираются все необходимые данные для входа в учетную запись.
Продолжаем поиски. Если в личном кабинете нет валидации пользовательских данных, вряд ли она будет где-то еще на сайте. Обращаю внимание на форму для оформления заказа. Если она уязвима, то это будет слепая xss. Вот тут мне пришлось на денек притормозить. У меня не было ни подходящего js, который отправлял бы мне данные, ни снифера на php для их приема. Более того, я не знал ни один из этих языков, в мой арсенал на тот момент входил только python. После пары дней базового изучения языков и выяснения, что я в общем то должен написать, я таки сделал два скриптика. Впоследствии они много раз мне пригоились, незаменимые вещи. Js присылал мне куки, html код страницы, url страницы и user-agent браузера.
Итак, все готово, добавляем скрипт в одно из полей оформления заказа, отправляем и ждем. А ждать предстояло долго, время больше 2-х ночи и наша суши-лавочка уже закрылась. На утро проверив сниффер я с удовлетворением увидел, что файл логов имеет размер не 0 байт, как ночью. Смотрю содержимое. На авторизационных куках у них стоял флаг http-only, их я к сожалению не получил. Из user-agenta видно, что работают у них в chrome на устройствах производства apple... Из url узнал путь к crm системе их сайта. При изучении html кода были найдены логины двух сотрудников. Руками немного поперебирал простые пароли, конечно безуспешно. Брутить не хотелось, не люблю такие методы. При рассмотрении html было видно, что crm у них одностраничная, видимо самописная. В коде была найдена только одна ссылка, для печати заказа, вида domane.com/crm/print.php?id=xxxx. Перехожу по ней... и меня пускают! Нет проверки прав доступа! Уязвимость broken authentication - когда я читал о ней, думал, что таких уже нет природе. И вот она. На странице можно найти ФИО, номер телефона и домашний адрес, если заказывали на дом.
Пишу мини-скрипт на python-e, чтобы все это скачать и приложить к отчету. Заказов у них было почти 20000. Запускаю, ухожу. После окончания проверяю полученные данные, вместо многих заказов - сообщение об ошибке. Упссс, кажется я им сервер положил, хотя скрипт был однопоточным, вот к чему приводит экономия ) Хорошо, что это опять была ночь, и никто наверное даже не заметил.
Обычно уязвимости типа broken autentification находят посредством дирбастинга, мне повезло найти её более легким путем.
Итог: xss + broken_autentification = disclose_information.
Пишу отчет, тут они уже зашевилились, уязвимости исправили, и по первому сообщению, и по второму. Только исправления им видимо делал низкокваливицированный фрилансер - если раньше у них страница входа в crm была весьма красиво оформлена, то после исправлений она стала иметь более чем унылый вид - фон изменили на стандартный, как на всем сайте, но главное, фома логина сдвинута по левому краю экрана, неужели трудно было по центру разместить, одна строка в css...
И мне они даже написали. Открываю довольный сообщение, а там - "спс". Нда, лучше бы вообще не отвечали.
Как говорится: "Нужно не зависеть от результатов своего труда и не ждать вознаграждения". И поиск уязвимостей на сайтах отличная тренировка. Спустя пару месяцев, после деятков репортов без ответов, тебе уже все-равно ответят тебе или нет, заплатят за находки или нет. И обыкновенным "спасибо" более чем доволен. Главное, что ты получил удовольствие занимаясь этим.
А если хочешь вознаграждение, надо участвовать в bug bounty, но там конкуренция, я пока еще не готов.
Спасибо дочитавшим до конца!
Произошло это спустя пару недель после начала моих "занятий". Тестировал я в те дни по порядку сайты, которые мне выдал гугл по запросу "купить суши воронеж". И с одним из них мне таки повезло. По домену можно было подумать, что на нем будут агитировать против суши и рассказывать о прелестях нашей национальной кухни, но нет, так оказались все теже суши, роллы, пиццы и подобные вещи.
После прохождения регистрации, с использование временного email'а, я стал тестировать пользовательские данные на наличие xxs. И xss тут нашлась, уязвимыми оказались поля логина, адреса доставки заказа и телефона (что встречается довольно редко, ибо это поле обычно отдельно проверяется по регулярному выражению. Оно надо сказать и тут проверялось, но только на frontend'е с помощью js, что легко обходится с использование BurpSuit). Но на сайте не было ни комментариев, ни чего либо подобного, поэтому хоть я и нашел stored xss - это почти ничего не давало.
Ищем дальше. Поиски на долго не затянулись и в скором времени, с использованием того же BurpSuit'а, была найдена уязвимость IDOR в редактировании личных данных. При подмене id пользователи в запросе, мы получаем возможность редактировать чужие данные. Но это опять же почти не приносит пользы, т.к. авторизация на сайте происходит по email, а его можно изменить только звонком в тех. поддержку. Остается возможность только нагадить, поменяв всем пароли )
Тогда я был только в начале своего пути пентестера и не заметил очевидного. И когда писал отчет о найденных уязвимостях сообщил просто, что есть xss там-то там-то и idor там-то там-то. Проверяющие это не оценили, видимо думали, что невозможность менять email их спасает и проигнорировали сообщение. Исправлений не выпустили.
Вектор атаки, который я не заметил был такой: у нас есть xss, у нас есть idor, это отличная связка. С помощью idor встраиваем скрипты в личные кабинеты пользователей, js исполняется и отправляет мне email и id пользователя, после чего можно смело менять ему пароль и удалять наш скрипт. Таким образом собираются все необходимые данные для входа в учетную запись.
Продолжаем поиски. Если в личном кабинете нет валидации пользовательских данных, вряд ли она будет где-то еще на сайте. Обращаю внимание на форму для оформления заказа. Если она уязвима, то это будет слепая xss. Вот тут мне пришлось на денек притормозить. У меня не было ни подходящего js, который отправлял бы мне данные, ни снифера на php для их приема. Более того, я не знал ни один из этих языков, в мой арсенал на тот момент входил только python. После пары дней базового изучения языков и выяснения, что я в общем то должен написать, я таки сделал два скриптика. Впоследствии они много раз мне пригоились, незаменимые вещи. Js присылал мне куки, html код страницы, url страницы и user-agent браузера.
Итак, все готово, добавляем скрипт в одно из полей оформления заказа, отправляем и ждем. А ждать предстояло долго, время больше 2-х ночи и наша суши-лавочка уже закрылась. На утро проверив сниффер я с удовлетворением увидел, что файл логов имеет размер не 0 байт, как ночью. Смотрю содержимое. На авторизационных куках у них стоял флаг http-only, их я к сожалению не получил. Из user-agenta видно, что работают у них в chrome на устройствах производства apple... Из url узнал путь к crm системе их сайта. При изучении html кода были найдены логины двух сотрудников. Руками немного поперебирал простые пароли, конечно безуспешно. Брутить не хотелось, не люблю такие методы. При рассмотрении html было видно, что crm у них одностраничная, видимо самописная. В коде была найдена только одна ссылка, для печати заказа, вида domane.com/crm/print.php?id=xxxx. Перехожу по ней... и меня пускают! Нет проверки прав доступа! Уязвимость broken authentication - когда я читал о ней, думал, что таких уже нет природе. И вот она. На странице можно найти ФИО, номер телефона и домашний адрес, если заказывали на дом.
Пишу мини-скрипт на python-e, чтобы все это скачать и приложить к отчету. Заказов у них было почти 20000. Запускаю, ухожу. После окончания проверяю полученные данные, вместо многих заказов - сообщение об ошибке. Упссс, кажется я им сервер положил, хотя скрипт был однопоточным, вот к чему приводит экономия ) Хорошо, что это опять была ночь, и никто наверное даже не заметил.
Обычно уязвимости типа broken autentification находят посредством дирбастинга, мне повезло найти её более легким путем.
Итог: xss + broken_autentification = disclose_information.
Пишу отчет, тут они уже зашевилились, уязвимости исправили, и по первому сообщению, и по второму. Только исправления им видимо делал низкокваливицированный фрилансер - если раньше у них страница входа в crm была весьма красиво оформлена, то после исправлений она стала иметь более чем унылый вид - фон изменили на стандартный, как на всем сайте, но главное, фома логина сдвинута по левому краю экрана, неужели трудно было по центру разместить, одна строка в css...
И мне они даже написали. Открываю довольный сообщение, а там - "спс". Нда, лучше бы вообще не отвечали.
Как говорится: "Нужно не зависеть от результатов своего труда и не ждать вознаграждения". И поиск уязвимостей на сайтах отличная тренировка. Спустя пару месяцев, после деятков репортов без ответов, тебе уже все-равно ответят тебе или нет, заплатят за находки или нет. И обыкновенным "спасибо" более чем доволен. Главное, что ты получил удовольствие занимаясь этим.
А если хочешь вознаграждение, надо участвовать в bug bounty, но там конкуренция, я пока еще не готов.
Спасибо дочитавшим до конца!