С тех пор они исправили многие из них, но на самом деле весь проект был путаницей почти всех веб-уязвимостей в книге.Вот краткое изложение проблем с первого дня выпуска альфа-кода:
- Они никогда не проверяли, что данный пользователь когда-либо имел разрешение что-либо делать.Таким образом, хотя пользователь может перейти к
/image/123/delete/
, чтобы удалить собственное изображение (чей ID оказался 123), он может просто вручную ввести URL-адрес /image/1/delete/
, чтобы удалить изображение с идентификатором 1, даже если этоизображение не принадлежало им. - Они использовали функцию ярлыка в Ruby on Rails, которая позволяет вам просто массово назначать POST-свойства для таблицы базы данных, не проверяя, что эти свойства действительно были в форме.Таким образом, хотя на странице обновления профиля могут быть только поля для изменения изображения аватара и описания биографии, любой, у кого есть небольшой опыт, может поиграться с данными POST до того, как они будут отправлены на сервер, а также отправлять пары столбец / значение, такие как имя пользователя,пароль, идентификатор сеанса и т. д. Объедините это с пунктом # 1, где вы можете просто изменить чьи-либо данные, если вы знаете URL-адрес, и вы можете установить личную информацию любого пользователя на любой, какой вы захотите.
- Они использовали MongoDB для своей серверной части,Для неинформированных Mongo использует Javascript для некоторых своих возможностей запросов.Они брали необработанные строки поискового запроса и просто выполняли их в своем бэкэнде Mongo, что позволяло любому, кто отправляет правильно сформированный Javascript в качестве запроса, действительно делать с базой данных все, что им нужно.
Если выЛюбопытно о технических деталях, не стесняйтесь обучать себя.