Взлом 4pda или история одной ночи
Хабрахадабра!
Буквы, буквы, буквы....а ведь их еще прочесть можно :naughty:
И даже поучиться :naughty:
Всё началось с того, что мы с другом решили пойти съесть пиццы в местной пиццерии. Прихватили с собой ноутбук, и решили поискать баги в каком-нибудь известном проекте. Жертвой стал 4pda. Через 30 минут поедания пиццы поисков он был найден.
Баг был найден в профиле пользователя, а конкретно — SELECT «Устройство». Проанализировав, что код исполняется на всех страницах форума где пользователь оставил своё сообщение мы решили не спешить с письмом в тех. поддержку, а посмотреть, что из этого выйдет.
(Мы не очень хорошо знаем jаvascript, поэтому, возможно, всё можно было сделать довольно проще)
Мы столкнулись с 2-мя проблемами:
1) Скрипт более 30 символов не пропускала система.
2) document.cookie возвращал ересь что-то, что не являлось нужными нам куками.
Решение:
1) Подключали скрипт с удалённого сервера
2) Мы решили показывать всем пользователям фейковую страницу поверх основной(z-index) с сообщением о том, что срок действия сессии истек, надо перелогиниться. При этом, эта страница не показывалась дважды одному и тому же пользователю. После логина делался display:none.
Просидев еще 2 часа в кафе, осуществляя наш план, мы поняли, что здесь нам уже не сильно рады и отправились домой…
Когда скрипт был полностью готов, был зарегистрирован новый пользователь и им наспамленно по всему форуму 30 сообщений. После этого мы подключили нужный скрипт и начали ждать.
Буквально через 20 секунд в базе данных уже было 5 пользователей. Через 10 минут база насчитывала сотни пользователей.
После этого был сделан скрипт для фильтрации админы|модераторы|пользователи.
В базе: 55% «Пользователи», 20% «Друзей 4pda», 20% «Модераторы», 5% «Админы».
После этого мы сделали экспорт БД и написали в тех.поддержку подробное описание уязвимости с прилагающимся файлом БД. Баг прикрыли в течение 1 часа.
Вывод: даже у больших и старых проектов есть «детские» уязвимости и почти 80% из них именно в SELECT-ах.
Често с3,14зжено с просторов рунета.
Автор искренне желает всем добра))
Баг был найден в профиле пользователя, а конкретно — SELECT «Устройство». Проанализировав, что код исполняется на всех страницах форума где пользователь оставил своё сообщение мы решили не спешить с письмом в тех. поддержку, а посмотреть, что из этого выйдет.
(Мы не очень хорошо знаем jаvascript, поэтому, возможно, всё можно было сделать довольно проще)
Мы столкнулись с 2-мя проблемами:
1) Скрипт более 30 символов не пропускала система.
2) document.cookie возвращал ересь что-то, что не являлось нужными нам куками.
Решение:
1) Подключали скрипт с удалённого сервера
2) Мы решили показывать всем пользователям фейковую страницу поверх основной(z-index) с сообщением о том, что срок действия сессии истек, надо перелогиниться. При этом, эта страница не показывалась дважды одному и тому же пользователю. После логина делался display:none.
Просидев еще 2 часа в кафе, осуществляя наш план, мы поняли, что здесь нам уже не сильно рады и отправились домой…
Когда скрипт был полностью готов, был зарегистрирован новый пользователь и им наспамленно по всему форуму 30 сообщений. После этого мы подключили нужный скрипт и начали ждать.
Буквально через 20 секунд в базе данных уже было 5 пользователей. Через 10 минут база насчитывала сотни пользователей.
После этого был сделан скрипт для фильтрации админы|модераторы|пользователи.
В базе: 55% «Пользователи», 20% «Друзей 4pda», 20% «Модераторы», 5% «Админы».
После этого мы сделали экспорт БД и написали в тех.поддержку подробное описание уязвимости с прилагающимся файлом БД. Баг прикрыли в течение 1 часа.
Вывод: даже у больших и старых проектов есть «детские» уязвимости и почти 80% из них именно в SELECT-ах.
Често с3,14зжено с просторов рунета.
Автор искренне желает всем добра))
Комментарии6