Вопрос по xss, javascript, firefox – Как отключить защиту межсайтовых сценариев в своем браузере?

2

Я хочу загрузить страницу из домена внутри iframe на странице другого домена, а затем получить доступ к ее содержимому с помощью JS. Конечно, это будет XSS, поэтому я получаю сообщение об ошибке «Отказано в доступе к свойству HTMLDocument ...». Дело в том, что я хочу сделать это в своем собственном браузере, а не на общедоступном сайте (т. Е. Мне это не нужно, чтобы защитить меня от самого себя), поэтому я с радостью отключил бы этот вид безопасности на некоторое время. Я использую Firefox 3.5 и хотел бы знать, если это можно сделать, с этим или другими браузерами.

Любопытно, почему вы хотите это сделать? mauris
Я хочу получить много данных с разных сайтов, и для меня было бы проще всего создать несколько фреймов на странице в моем локальном диске. Я всегда могу найти другие способы для этого, но тот факт, что я не могу выключить охрану, особенно неприятен. maltalef

Ваш Ответ

3   ответа
3

Обновление ноябрь 2016 Более простой способ отключить политику одного и того же происхождения в Chrome - запустить ее со следующими флагами:

Обновить: Помните о том, в какой области вы запрашиваете повышенные привилегии. Первый метод работает, как и ожидалось, главное - запросить повышенные привилегии в той же области, где вы будете его использовать (в той же функции, в глобальной области ...), в другой области он не будет работать.
Я обновил пример с рабочим кодом.

Это в документации:
Привилегии предоставляются только в рамках запрашивающей функции. В эту область входят все функции, вызываемые запрашивающей функцией. Когда скрипт покидает запрашивающую функцию, привилегии больше не применяются. http://www.mozilla.org/projects/security/components/signed-scripts.html

Я пытаюсь сделать то же самое для сайтов внутренней сети моей компании (у нас есть 47 различных доменов, основанных на расположении сервера, и будет легко отключить «одинаковую политику происхождения» для этих сайтов только у сотрудников Firefox).

В соответствии с документацией с сайта Mozilla, эти методы должны работать ... Я обнаружил, что в Google это верно для Firefox 2, я тестировал в FF3 и FF4 и, похоже, не работает. Вы должны попробовать это, Maibe il будет работать для вас, я все еще ищу решение

Способ 1

редактироватьabout:config и установитьsigned.applets.codebase_principal_support вtrue (это позволит неподписанным скриптам запрашивать повышенные привилегии)

В вашем родительском скрипте запрос повышенных привилегий:

<HTML> <HEAD> <скрипт
тип = "текст / JavaScript">
функция xss ()
{
пытаться {
netscape.security.PrivilegeManager.enablePrivilege ( "UniversalBrowserRead");
} catch (e)
{
оповещение (е); // console.log (e), если у вас есть firebug
}
Оповещение (document.getElementById ( 'кадр') contentWindow.document.); // console.log ()
}
</ Скрипт> </ HEAD>
<body onLoad = "xss ();"> <iframe id = "frame"
SRC = "http://example_1.com"> </ IFRAME>
</ Body> </ html>

3 Теперь, когда вы загрузите страницу, FF попросит у вас разрешения на использование скрипта:

Разрешите, и вы должны получить предупреждение с текстом:[object HTMLDocument]

Прежде чем делать какие-либо изменения, если я пытаюсь получить доступ....contentWindow.document я получаю эту ошибку:

Error: A script from "http://example.com" was denied UniversalBrowserRead privileges.

После того, как я получил это:

Permission denied for <http://example.com> to get property Window.document from <http://example_1.com>.

Если вам нравится работать в командной строке, вы можете пропустить шаги 1 и 3 и отредактировать файл presf.js (в Linux: /home/$yourUser/.mozilla/firefox/$yourProfile/prefs.js) и добавить 4 строки

user_pref("signed.applets.codebase_principal_support", true);
user_pref("capability.principal.codebase.p0.granted", "UniversalBrowserRead");
user_pref("capability.principal.codebase.p0.id", "http://example.com");
user_pref("capability.principal.codebase.p0.subjectName", "");

Способ 2

Попробуйте добавить политику, позволяющую сайтам обходить SOP для этого редактирования prefs.js, и добавьте следующие строки:

user_pref("capability.policy.policynames", "example");
user_pref("capability.policy.example.HTMLDocument", "allAccess");
user_pref("capability.policy.example.sites", "http://example.com http://example_1.com");

К сожалению, даже метод 2 не справляется с этой задачей.

Я все еще ищу решение. Если я найду что-то новое, я обновлю ответ.

Не могу понять, почему метод 1.pct.2 не отображает код в блоке кода :(, если кто-то сработает, это было бы здорово. TKS Radu Maris
0

Версия XMLHttpRequest от Greasemonkey позволяет запросам пересекать границы политики одного и того же происхождения. Это может помочь, так как это только для вашего местного развития.

Кроме того, ранние версии Greasemonkey непреднамеренно подвергали эту функцию сценариям содержимого, что, конечно, было большой ошибкой безопасности. Можно было бы разработать расширение, которое делало бы то же самое или открывало пользовательскую функцию только в определенных ситуациях.

0

что это будет звучать очень умно, но я действительно не имею в виду это так. Это честное предложение, если оно будет работать для вас, потому что я сомневаюсь, что любой браузер позволит вам редактировать настройки, чтобы сделать его таким уязвимым.

Используйте старый браузер. При необходимости установите более старую ОС на виртуальную машину, чтобы браузер стал достаточно старым, чтобы не иметь такой защиты.

@ Дэвид: Даже если он последует вашему совету (хотя, как наблюдатель этого вопроса, я искренне надеюсь, что найдется более легкий вариант), реализация будет менее сложной, чем вы предполагаете - существует множество веб-сайтов, на которых хранятся скомпилированные версии более старого программного обеспечения, включая Netscape, Firefox и, возможно, даже более старый IE. Надеюсь, виртуальная ОС не нужна. DVK

Похожие вопросы