[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Kohana Captcha
T1grOK
Нашел, как по мне уязвимость в Kohana Captcha.
Как эта каптча работает:
1) Сформировали ссылку
Captcha::instance()->render(); 

2) По ссылке браузер забрал изображение, а на сервере в сессию занеслась строка изображенная на картинке каптчи(например "7777");
3) Мы отправили пост запрос с введенной каптчей и проверили ее на сервере
Captcha::valid($_POST['captcha']);

Логично предположить, что после проверки нужно уничтожить информацию о каптче в сессии. Но здесь видим иную картину "7777" так и висит в сессии, а сессия обновляется в момент генерации изображения.
Чем это грозит:
1) Один раз увидев каптчу, можем использовать cURL чтобы бомбить сайт;
2) Более банальный вариант(и более бесполезный так как выполнять придется все действия), как известно браузер за нас делает многие вещи, в том числе и подгружает картинки, если ссылки на них есть в верстке страницы. Можно это использовать - попадаем на страницу формы с каптчей выписываем каптчу, отключаем картинки и используя одно значение каптчи отправляем формы с положительным результатом.
В первом и втором вариантах Captcha::valid($_POST['captcha']) будет возвращать все время TRUE.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Invis1ble
T1grOK
да, есть такое
Поэтому после каждого запроса надо сбрасывать каптчу.
Я добавил в модуль такой метод для этого:
    /**
*
*
*
@access public
*
@return Captcha
*/

public function invalidate()
{
Session::instance()->set('captcha_response', null);
return $this;
}

Вообще говоря, модуль не включен в официальное ядро, так что, как говорится, пользуйтесь на свой страх и риск! :)

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

T1grOK
Цитата (Invis1ble @ 6.07.2013 - 13:13)
Поэтому после каждого запроса надо сбрасывать каптчу.

Эт. понятно. Я так и делаю. Прописал в valid - Session::instance()->delete('captcha_response'). Просто печально, что довольно популярная библиотека в сообществах kohana обладает таким недостатком, о котором не распространяются, или не подозревают о существовании такового.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
andrey888
Просто интересуюсь, так как с kohana не работал и не знаком.
Там после отправки формы (по капче) не происходит редайректа, чтобы сменить и капчу и сессию ?

иль тут не в этом дело вообще ?

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Invis1ble
andrey888
редиректы относятся к уровню приложения, а не фреймворка или модуля, и к тому же никак не влияют на сессию smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

andrey888
Цитата
Поэтому после каждого запроса надо сбрасывать каптчу.

Каждый раз после отправки формы - мы сбрасываем капчу (старую) либо меняем ее на новую .. Правильно ??
Не до конца понял в чем именно проблема в kohana .. То есть после отправки формы и перед генерацией нового изображения (и капчи соответсвенно тоже) мы имеем дырку ?

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
andrey888
То есть после отправки формы И перед загрузкой новой страницы (для пользователя) с новым сгенерированным изображением нам нужно делать unset на прошлую сессию с капчей , а в kohana это подзабыли , так ? ...

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Invis1ble
Цитата (andrey888 @ 7.07.2013 - 17:03)
То есть после отправки формы И перед загрузкой новой страницы (для пользователя) с новым сгенерированным изображением нам нужно делать unset на прошлую сессию с капчей , а в kohana  это подзабыли , так ?  ...

типа того, подзабыли предоставить API для ансета
То есть уязвимостью это назвать нельзя, строго говоря smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Invis1ble
Цитата (MiksIr @ 8.07.2013 - 02:03)
Т.е. разгадываем один раз капчу, отдаем эту сессию боту и делаем что хотим - спамим, подбираем пароли т.п.? Нефига себе "не уязвимость" wink.gif

т.е. моСк нужно включать при разработке, вот и все. Не уязвимость, да.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Invis1ble
Цитата (MiksIr @ 8.07.2013 - 02:39)
Цитата (Invis1ble @ 8.07.2013 - 03:17)
т.е. моСк нужно включать при разработке, вот и все. Не уязвимость, да.

Нет. Если используется готовый компонент - он должен работать правильно. Если использование компонента дает потенциальную проблему - это проблема компонента. А "включать моСк и т.п." - это детский сад с вашей стороны... или это вы так самоутверждаетесь? Ну тогда ладно, сами дураки, согласен.

типичный прием демагогии.
Ну раз ты (ничего, что я буду называть Вас на ты?) такой взрослый, а я тут из детсада, то расскажи, будь добр, в чем конкретно заключается уязвимость модуля?

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

T1grOK
Уязвимость/недоработка в том, что модуль не может выполнять свои прямые обязанности...Вместо этого дает волю разгуляться злостным спамерам.))

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Invis1ble
T1grOK
недоработка да, но не уязвимость же

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.