Ядовитый ответ Кислицин Никита Хакер, номер #071, стр. 071-070-1 (nikitoz@real.xakep.ru) Response splitting: новый вид атак на web-приложения На первый взгляд может показаться, что все сетевые атаки уже давным-давно классифицированы, разложены по полочкам и ничего нового тут придумать невозможно. Но время от времени происходит прорыв, и на наших с тобой глазах формируется принципиально новый вид атак, к которому обычно все оказываются не готовы. Сегодня я расскажу тебе как раз о такой напасти, которая позволяет лихо подменять web-страницы, красть пользовательские данные, отравлять кэши прокси-серверов и проводить CSS-атаки. Вливайся! ;) Неужели забыли? Знаешь, умные люди говорят, что все новое – это хорошо забытое старое. Действительно, порой этот фразеологизм выполняется в нашей жизни. Бывает так, что какой-либо занимательный факт долгое время не обсуждается широким сообществом, его как бы не замечают, даже если он очевиден некоторой группе людей. В силу собственной лени человек плохо воспринимает все новое, и если это его не напрягает, он может придумать тысячу причин, чтобы избежать невиданных ранее проблем. Но это происходит до поры до времени. Стоит кому-то копнуть поглубже, как он сразу замечает массу вещей, таящих в себе большую потенциальную опасность. Он изучает эту тему, проводит ряд экспериментов, пишет большущую кичовую статью и публикует ее на популярном сетевом проекте. И вот уже все аналитики трубят в медные трубы: как же так, не замечали, как это ужасно, куда только милиция смотрит. А в это время на шести из семи континентов наверняка найдется хотя бы по одному человеку, который сидит и улыбается на все происходящее: ему-то это давно уже было очевидно и ничего удивительного в происходящем для него нет. Так случилось и в начале этого года, когда на Sanctum.com был выложен технический документ, описывающий новый для автора-составителя вид атак, который был назван «HTTP response splitting» – «Разделение HTTP-ответов». Сегодня я расскажу тебе как раз об этой атаке. Надо сказать, что это очень занимательная и объемная тема. Что говорить: только официальный whitepaper по этому вопросу занимает 30 листов А4 убористого текста. Я, конечно, не буду тебя грузить сухими теоретическими выкладками, а лишь приведу собственные соображения по этой теме, кратко описав суть проблемы и возможные последствия. Если вопросов нет, пристегивай ремни, представление начинается! В места в карьер Я начну с одного несложного примера. Предположим, у нас есть элементарная программа на PHP, которая вешает пользователю cookie, причем содержимое этого параметра определяется самим пользователем: Подопытный скрипт cook.php <?php SetCookie("val", "$_GET[set]"); echo "<h1> Такой вот смешной скрипт</h1> "; ?> Пример, конечно, дурацкий, но смеяться не стоит. Такого рода программы встречаются на каждом углу, в том числе на больших и серьезных проектах. По замыслу программиста, если выполнить этот сценарий, посетителю станицы будет установлена плюшка с именем val и содержимым, указанным в параметре set. А теперь давай попробуем в качестве этой переменной указать не совсем стандартную строку. Например, вот так: |