Сказ о том, как обосрались Спрут и Гарри 1980

Как мы знаем, сегодня Спрут запустил новый эксклюзивный топ с блекджеком и шлюхами, на этот раз на основе Google Adsense.

Как настоящие веб-мастера и манимейкеры, писать код они не умеют, благодаря чему на сайте была обнаружена пачка уязвимостей, позволявших, в частности, выпиливать к херам пользователей, банить их, а также беспрепятственно вкапываться в базу данных и получать некоторые (не любые) данные из неё напрямую.

Пункт первый и самый глупый, просто глупее не придумаешь. Я предварю его маленьким введением, просто чтобы можно было оценить масштаб глупости этой ошибки.

Первое, что я сделал, забредя на сайт, это проверил реакцию на XSS-инъекции. Судя по борде, кто-то уже нашел их до меня и пнул Гарри исправлять, так что мне ничего не досталось. Потом я попробовал пару тонких, как мне показалось, мест на предмет SQL-инъекций. Получив пару 404 и 200, я успокоился и даже немного огорчился. Подумал даже, что все в порядке и я впустую трачу время.

А потом я набрал в адресной строке http://topadsense.ru/admin и попал в админку.

Ну вот просто так, взял и пошел, как вы в гугл заходите. Окей, когда первый шок немного прошел, я осмотрелся: в админке был поиск пользователей, простенькие фильтры вроде сортировки по дате регистрации и список этих самых пользователей. С кнопками "забанить" и "удалить". Клик - одной записью в БД меньше. То есть прямо вот так легко, нажал на ссылку, пользователь удалился. Таким образом мы плавно переходим ко второму пункту:

Простые ссылки на удаление и бан пользователей. Вы помните, как работают поисковики? Я напомню: заходит поисковик в бар... и переходит по каждой встреченной ссылке, осуществляя индексацию контента. Заходим в http://topadsense.ru/robots.txt, и видим, что индексация админки не запрещена. То есть потенциальный сценарий таков: ресурс набирает N пользователей, они начинают общаться там, я не знаю, еще что-то, о сайте узнает поисковик, лезет его индексировать, и первым же заходом на каждую ссылку очищает таблицу users от всех до единой записей. Восхитительной красоты идиотизм :) Я даже не буду объяснять, как это нужно лечить (помимо закрытия админки от каждого любопытного), может это сподвигнет вас на какие-то собственные исследования.

Ну и пункт третий, благодаря которому мне удалось узнать, какие в БД лежат таблички и какие в этих табличках колонки, это SQL-инъекция в админке. Надо сказать, что мои изыскания не позволили мне продвинуться дальше, поскольку пользователь БД у сайта явно не root и не обладает большими привилегиями (ну либо я плохо старался), и я так и не смог раскопать, как же называется база данных сайта. Уверен, что если бы мне удалось узнать хотя бы это, получение непосредственно записей из базы данных было бы простейшей задачей. Если бы это произошло, я смог бы получить список имейлов пользователей и соотнести их с их доходом. А потом уже все ограничено лишь вашей фантазией. Например, можно было бы заморочиться троллированием пользователей на предмет сдачи их налоговой (хоть им и было бы плевать, вероятнее всего). Придумайте сами, в общем.

Тем не менее, я доволен тем, что получил - подтверждение неумелости Гарри (это и так общеизвестно) и Спрута (то же самое, но этот и не кичится своими программерскими умениями).

Урок извлекайте из всего этого сами.

6 Марта 2016, 20:25 | Комментарии |
+2

comments powered by Disqus