Добро пожаловать, Гость
Уязвимость форм - скрытые поля
vik.borisov Offline
#1 Оставлено : 21 сентября 2012 г. 16:28:59(UTC)

Ранг: Newbie

Группы: Registered, Тестеры
Зарегистрирован: 19.09.2012(UTC)
Сообщений: 7
Мужчина
Откуда: Новосибирcк

Поблагодарили: 5 раз в 4 постах
Мной была найдена уязвимость:
Она заключается в изменении скрытых полей при отправке формы.
Так как они ни как не защищаются, любой пользователь может из изменить и добавить любой контент в любую папку.


К примеру: Я создал новую статью на этом сайте без необходимых на это прав.


Решение:
1) Разработать html-helper, который будет генерировать зашифрованное алгоритмом RSA поле hidden
2) В службе редактирования контента запретить обрабатывать не защищенные поля hidden
2 пользователей поблагодарили vik.borisov за этот пост.
superviser оставлено 22.09.2012(UTC), Ella оставлено 22.09.2012(UTC)
superviser Offline
#2 Оставлено : 22 сентября 2012 г. 19:26:23(UTC)
Ранг: Administration

Группы: Administrators
Зарегистрирован: 12.07.2011(UTC)
Сообщений: 10

Сказал(а) «Спасибо»: 1 раз
Спасибо. Пожалуй уберу форму комментариев, пока не придумаем решение.
Получается, что любая форма, работающая с контентом сайта подвержена данной атаке.

Цитата:
1) Разработать html-helper

Хорошее предложение. Надо передать разработчикам.
Ella Offline
#3 Оставлено : 22 сентября 2012 г. 19:31:59(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Как быстрый вариант можно убрать поле Published (которое по умолчанию false), чтобы сделать подобие предмодерации любого публикуемого контента.
Пользователь Ella прикрепил следующие файлы:
fc8dce67d897.png (44kb) загружен 1 раз(а).
abdd472649e3.png (92kb) загружен 1 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
vik.borisov Offline
#4 Оставлено : 22 сентября 2012 г. 19:37:20(UTC)

Ранг: Newbie

Группы: Registered, Тестеры
Зарегистрирован: 19.09.2012(UTC)
Сообщений: 7
Мужчина
Откуда: Новосибирcк

Поблагодарили: 5 раз в 4 постах
Ella написал:
Как быстрый вариант можно убрать поле Published (которое по умолчанию false), чтобы сделать подобие предмодерации любого публикуемого контента.

Это поле так же может быть изменено пользователем
superviser Offline
#5 Оставлено : 22 сентября 2012 г. 19:57:09(UTC)
Ранг: Administration

Группы: Administrators
Зарегистрирован: 12.07.2011(UTC)
Сообщений: 10

Сказал(а) «Спасибо»: 1 раз
Скрою временно тему до устранения (разработчикам передам описание), чтобы защитить других пользователей CMS от атаки.
Ella Offline
#6 Оставлено : 22 сентября 2012 г. 20:52:15(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Наверно нужно вообще запрещать анонимным пользователям работать с контетом. Если разработчики ничего не сделают - как вариант можно сделать триггер, который будет отлавливать подобные обращения к контенту и отсеивать анонимов (а в типе контента можно сделать параметр, разрешающий добавление анонимных записей и триггер будет зачитывать его)... Пожалуй начну писать этот триггер...
vik.borisov Offline
#7 Оставлено : 23 сентября 2012 г. 6:49:04(UTC)

Ранг: Newbie

Группы: Registered, Тестеры
Зарегистрирован: 19.09.2012(UTC)
Сообщений: 7
Мужчина
Откуда: Новосибирcк

Поблагодарили: 5 раз в 4 постах
superviser написал:
Спасибо. Пожалуй уберу форму комментариев, пока не придумаем решение.
Получается, что любая форма, работающая с контентом сайта подвержена данной атаке.

Цитата:
1) Разработать html-helper

Хорошее предложение. Надо передать разработчикам.


Вот примерная реализация решения.
1 пользователь поблагодарил vik.borisov за этот пост.
Ella оставлено 23.09.2012(UTC)
Ella Offline
#8 Оставлено : 23 сентября 2012 г. 11:04:46(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Получается, что URL - "/Contents/ContentService/Create" (который используется в Kooboo по умолчанию в формах) - потенциально опасен. Не ожидала от них такой дыры в безопасности Sad
Если на сайте будет хоть одна не важно какая форма с валидационным токеном, то, используя этот URL в action'е, можно сайт поломать - непорядок!
Отправила письмо разработчику, с которым общаюсь, пусть думают. Они сейчас активно над 4ой версией работают, надеюсь там такой уязвимости не будет. Не знаю, будут ли они делать заплатки для версии 3.2.2, они в последнее время мало появляются в сообществе, видимо совсем ушли в работу.
Но пока надо что-то делать. У меня есть коммерческий сайт, где нужна форма обратной связи (а хакеру ничего не будет стоить использовать эту уязвимость на ней), так что первое - я через URL Rewriter в IIS запрещу обращения по этому URL (Contents/ContentService), т.к. я работаю с ним не напрямую, а через свой плагин. Таким образом подсунуть этот адрес мне в форму уже не получится. И второе - перепишу свой плагин (CustomCaptchaPlugin), вернее разделю его функциональность - работа с контентом отдельно, с формой обратной связи отдельно, по крайней мере эту дырку точно заткну.

vik.borisov - спасибо ThumpUp Я если честно понадеялась на опыт разработчиков, не подозревая о таком подвохе...
vik.borisov Offline
#9 Оставлено : 23 сентября 2012 г. 11:30:56(UTC)

Ранг: Newbie

Группы: Registered, Тестеры
Зарегистрирован: 19.09.2012(UTC)
Сообщений: 7
Мужчина
Откуда: Новосибирcк

Поблагодарили: 5 раз в 4 постах
Ella написал:
Получается, что URL - "/Contents/ContentService/Create" (который используется в Kooboo по умолчанию в формах) - потенциально опасен. Не ожидала от них такой дыры в безопасности Sad
Если на сайте будет хоть одна не важно какая форма с валидационным токеном, то, используя этот URL в action'е, можно сайт поломать - непорядок!

Не совсем верно. Для использования этой уязвимости, даже не надо ни какой формы - можно подменить html, Добавив теги form, submit и input. Главное знать структуру БД
Ella Offline
#10 Оставлено : 23 сентября 2012 г. 11:33:46(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
vik.borisov написал:
Не совсем верно. Для использования этой уязвимости, даже не надо ни какой формы - можно подменить html, Добавив теги form, submit и input. Главное знать структуру БД

Если нет токена валидациии - вылетает исключение на этапе записи в базу.
Ella Offline
#11 Оставлено : 10 октября 2012 г. 13:20:14(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Разработчик подтвердил уязвимость и ответил, что скорее всего напишет плагин для анонимных пользователей по работе с контентом, и где-то защиту подтянет. Подождем...
Ella Offline
#12 Оставлено : 29 ноября 2012 г. 10:57:56(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Вышла версия 3.3.0. Уязвимость с сожалению не устранили Sad
Ella Offline
#13 Оставлено : 4 марта 2013 г. 18:16:34(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Вновь напомнила разработчикам об этой уязвимости. Обещали исправить в следующем релизе - http://forum.kooboo.com/...y-in-front-end-site.aspx
Ella Offline
#14 Оставлено : 18 марта 2013 г. 11:51:20(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Вышел релиз 4.0.2. Разработчики добавили симметричное шифрование некоторых полей, типа FolderName и т.п., но уязвимость от этого не исчезла.
Например хакер все еще может просто поменять местами поля "FolderName" и "ParentFolder".
А зная значения полей "ParentFolder" и "ParentUUID", можно изменить action формы на update или delete (и вообще удалить контент, не имея никаких прав на это).
Симметричное шифрование не надежно, т.е. можно восстановить ключ, зная исходную и зашифрованную строку.
ContentService API готов принимать от клиента любые поля (хакер может добавить в форму нежелательные поля).
Поделилась этими мыслями с разработчиками - они согласились, что API все еще уязвим.

Единственное, что хорошего добавили по этому вопросу в новом релизе (4.0.2) - это возможность отключить ContentService API (через настройки сайта). Что я собственно сразу и сделала.

Пока остановились с разработчиками на варианте - задавать критические значения полей и список передаваемых полей от формы на стороне сервера, чтобы API точно знало, какие параметры и значения ему принимать. При таком механизме шифрование вообще не требуется. Будем надеяться, что они скоро это реализуют.
Ella Offline
#15 Оставлено : 13 октября 2014 г. 9:41:48(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Начиная с версии 4.1, уязвимоть устранена, путем введения промежуточного этапа в виде submission-плагинов.
superviser Offline
#16 Оставлено : 3 ноября 2014 г. 13:33:56(UTC)
Ранг: Administration

Группы: Administrators
Зарегистрирован: 12.07.2011(UTC)
Сообщений: 10

Сказал(а) «Спасибо»: 1 раз
В связи с устранением уязвимости тема перенесена в открытый форум.
Лента RSS  Лента Atom
Пользователи, просматривающие эту тему
Guest (6)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.