Вход

Просмотр полной версии : Создать свой объект document


brizing
04.06.2017, 10:56
Доброе утро.

Для конспирации хочу неявно обратиться к document.cookie.
Это можно сделать с помощью JSfuck. Но пока этот способ отложим.

Я посмотрел на document.__proto__, судя по всему, document создан из объекта HTMLDocument, и там есть свойство cookie.
http://i.imgur.com/05mLc5x.png
Можно как-то обратиться к кукам через конструктор HTMLDocument?

j0hnik
04.06.2017, 13:00
вы xss нашли? хотите куки воровать? :blink:

brizing
04.06.2017, 13:14
Rise, точно, конструктора нет.

Посмотрим-ка сюда: http://i.imgur.com/r9GDO4I.png
"TypeError: Illegal invocation" - ошибка возникает когда идёт вызов ф-ии без указания правильного this, например ф-ия из scope без самого scope, log без console, alert без window и т.п. (источник: https://toster.ru/q/268947)

Значит, мы можем позвонить кукам и передать правильный this?
Типа так:
HTMLDocument.prototype.cookie.call(правиль ый_this)
Не?

j0hnik, с сервера в куки прилетает ключ, а в JS этот ключ дешифруется и если все ок - код выполняется дальше. Благо, код большой, и если спрятать место, в котором используются document.cookie, защита будет почти как у дюрекс.

MallSerg
04.06.2017, 13:17
Ну через document.createYYYYY() можно создать ифрейм у которого есть экземпляр HTMLXXXXX(), который можно получить но топикстартер явно гвозди микроскопом забивает. И совсем непонятно зачем ему это нужно.

ruslan_mart
04.06.2017, 17:01
console.log( Object.getOwnPropertyDescriptor(Document.prototype , 'cookie').get.call(document) );

MallSerg
04.06.2017, 17:34
MallSerg, так это разные окна между ними даже идентичные конструкторы не будут равны.
Именно. основная страница и страница в ифрейме будут исполнятся в разных контекстах и ни одна из страниц не сможет отловить манипуляций с куками на другой странице. а строка с куками будет одинаковой на окнах с одного домена. т.е. читать и изменять будет можно а перехватить чтение или запись будет нельзя.

brizing
04.06.2017, 18:12
Всем спасибо.

ruslan_mart
04.06.2017, 19:56
console.log(
(Object.getOwnPropertyDescriptor(Document.prototyp e, 'cookie') || Object.getOwnPropertyDescriptor(HTMLDocument.proto type, 'cookie')).get.call(document)
);


var f = obj => Object.getOwnPropertyDescriptor(obj.prototype, 'cookie');

console.log( (f(Document) || f(HTMLDocument)).get.call(document) );

ruslan_mart
04.06.2017, 20:36
Rise, У хромовых, по всей видимости, наследуется в HTMLDocument от Document, а в FF - сразу в HTMLDocument лежит.