пятница, 20 февраля 2009 г.

Логическое мышление - полезно для всех

Наличие логического мышления полезно тестировщику, как и любому человеку.
Решите следующие задачки чтобы проверить, как у вас с логикой.

* * *
Есть 12 шариков. Один шарик отличается весом от остальных. Как за три взвешивания определить какой шарик отличается, если не известно тяжелее он или легче.

* * *
Есть 10 мешков с монетами, в одном - все монеты фальшивые. В остальных мешках фальшивых монет нет. Настоящие монеты весят ровно 10 грамм каждая. Фальшивые отличаются по весу. Есть электронные весы, которые показывают точный вес.

За одно взвешивание нужно определить, в каком мешке фальшивые монеты. На весы можно класть сколько угодно монет.

* * *
Марина сказала, что ей позавчера было 13 лет, а в будущем году она отметит 16 лет. Верно ли утверждение Марины?

четверг, 12 февраля 2009 г.

Security testing. XSS атака.

В этой статье пойдет речь о том как найти на тестируемом сайте уязвимое место для XSS атаки. Вначале немного об этой атаке.

XSS атака
- это атака на сайт, использующая уязвимость, когда некорректно работают фильтры входящей информации. Информация не проверяется должным образом или вообще не проверяется :) перед тем как вернуть результат пользователю. Это дает возможность атаки на пользователя.


Как проверить, есть ли на сайте подобные уязвимости?

  1. Ищем на сайте места, где данные отправляются на сервер.Например, стандартная форма регистрации .
  2. По очереди вставляем в поля следующий код
  1. Сабмитим форму.
Если поле не фильтруется, то скрипт успешно отправится и выполнится. В результате вы увидите следующее окошко


Все! Уязвимость найдена :).Репортуем баг программистам.

Кстати,
в пост пришлось скрипт вставлять как картинку, иначе он выпонялся :)
Вот тебе и XSS атака.

Что ж тут такого страшного, спросите Вы. Ну подумаешь, вывели сообщение.
Ну, вообще то, делать страшные вещи и реально ломать сайт – это не наша работа. Для этого есть хакеры :) Наша работа найти уязвимость и мы ее нашли.

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

Итак.
Первое. Для успешной атаки, пользователь должен быть залогинен (чтобы в его куках сохранилась информация о его авторизации в системе).
Второе.
Хакер, должен подготовить XSS код, который будет указывать на уязвимую страницу.

Третье. Хакер должен заманить на данную страницу пользователя.
Для этого он должен каким-то образом дать жертве ссылки на данную страницу (тоесть подготовленный URL) и заставить пользователя зайти на эту страницу.
Не буду вдаватся в подробности как он это сделает. В инете существует множество способов.


После того как жертва пойдет по ссылке, сработает XSS код и хакер получит куки жертвы (с авторизационной информацией). При этом жертва ничего даже не заметит.


После получения данных с куками пользователя системы, хакер может использовать их для входа в систему от имени этого пользователя.
А представьте, если пользователем окажется админ :)....

вторник, 3 февраля 2009 г.

Как защититься от sql injection

Думаю, самые любопытные тестеры (тоесть, настоящие тестеры) после прочтения предыдущего поста об sql injection задали себе вопрос "А как же защититься от sql injection ?"

Хотя над этим вопросом должны ломать голову не тестеры, а программисты, но тестерам, думаю, эта информация тоже будет полезной. Как минимум, ею можно поделиться с программистами. Ведь тестеры и программисты - друзья! Правда ?! :)

Так вот, существуют три простые правила, как защититься от sql injection:
  • Самое главное - фильтровать кавычки.
  • Если используется оператор сравнения строк LIKE фильтровать знаки “%” и “_”
  • Не использовать при сравнении переменных без кавычек типа select …where id=$id а использовать так select ...where id='$id' и обратиться к пункту 1
Вот как, оказывается, все просто.
Но опыт показывает, что именно в тех местах, где программистам все кажется очень простым, как раз и сидят самые жирные, упитанные, веселенькие баги :)