Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создать свой объект document (https://javascript.ru/forum/misc/69183-sozdat-svojj-obekt-document.html)

brizing 04.06.2017 10:56

Создать свой объект document
 
Доброе утро.

Для конспирации хочу неявно обратиться к 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

Цитата:

Сообщение от Rise
MallSerg, так это разные окна между ними даже идентичные конструкторы не будут равны.

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

brizing 04.06.2017 18:12

Всем спасибо.

ruslan_mart 04.06.2017 19:56

console.log(
   (Object.getOwnPropertyDescriptor(Document.prototype, 'cookie') || Object.getOwnPropertyDescriptor(HTMLDocument.prototype, '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 лежит.


Часовой пояс GMT +3, время: 17:04.