Есть небольшая уязвимость в форумном движке IPB. Можно потроллить админа и заодно убить его форум на несколько дней (проверено лично на двух форумах).
Разберемся по шагам, как это работает.
Вот такой интересный способ заставить владельца форума IPB задуматься о переезде на другой движок.
Разберемся по шагам, как это работает.
- Сначала нужно зарегистрироваться на форуме, чтобы иметь возможность постить.
- После регистрации создать «мусорную» тему там, куда модераторы почти не заглядывают, либо оставить пост в одной из таких тем. Содержание поста или темы должно быть огромного размера. Некоторые админы допускают ошибки при конфигурировании сервера, позволяя пользователям отправлять посты с нелимитированной длиной текста. Лично я хешировал слово DDoS в SHA-512 и копировал хеш в форму отправки поста до тех пор, пока браузер не повисал на несколько секунд от количества вставляемого на страницу текста.
- Отправляем новую тему или пост. Движок реализован наплевательски, и длинные посты не сокращаются с возможностью их расширить по клику на кнопку. А выводом таких постов занимается PHP, а не клиентский JS. Как итог — получаем огроменную страницу с несколькими миллионами символов, которые грузятся синхронно с сервера.
- Начинаем DDoS-атаку на тему с огромным постом. Поскольку все запросы идут напрямую к PHP, а от него к БД, сайт очень быстро сляжет с ошибкой 500 Internal Server Error, а потом и с 504 Gateway Timeout (поскольку база данных даже на VPS не сможет так быстро отдавать такой огромный пост, что уж говорить о Shared-хостинге) и встать сможет еще не скоро, ведь запросы к БД будут висеть и ждать ответа от сервера и базы данных.
- Скрыть атаку от особо глупых модераторов можно, учудив финт ушами. В IPB есть модуль «Активность» (Discover в английской версии движка). Это такая лента, которая хранит историю последних постов. Так вот, чтобы отвлечь внимание модераторов (которые могут задетектить тему, стереть ее и забанить аккаунт), нужно сразу же после отправки мусорного поста начать флуд на страницу с активностью. Увидев логи, сисадмин будет думать, что атака идет на ленту сообщений и не сможет обнаружить корень проблемы — созданную нами тему, которая, кстати, тоже целиком в несвернутом виде будет висеть на странице. Единственное, что он сможет сделать, — закрыть ленту от незарегистрированных пользователей. Да и то это сомнительное решение, от которого страдает юзабилити.
- Несколько часов интенсивной DDoS-атаки на мусорную страницу, и буквально через пару суток (максимум — недель) БД форума упадет навсегда. Нет, не просто упадет, а будет сломана без возможности восстановления. Не уверен, с чем это связано и почему это происходит, но это происходит. Таким образом, можно не только легко в пару кликов положить форум даже на Dedicated-сервере, но и уничтожить его базу данных, которую без бэкапа восстановить будет крайне затруднительно.
Вот такой интересный способ заставить владельца форума IPB задуматься о переезде на другой движок.