mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 09:27:32 +00:00
Translated ['pentesting-web/deserialization/nodejs-proto-prototype-pollu
This commit is contained in:
parent
dac6ff98ca
commit
edc8f724ab
1 changed files with 62 additions and 52 deletions
|
@ -2,21 +2,19 @@
|
|||
|
||||
<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>
|
||||
<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 में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* अगर आप अपनी **कंपनी का विज्ञापन 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 समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
|
||||
* **अपने हैकिंग ट्रिक्स साझा करें, HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके।
|
||||
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** पर **फॉलो** करें।
|
||||
* **हैकिंग ट्रिक्स साझा करें, PRs सबमिट करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में।
|
||||
|
||||
</details>
|
||||
|
||||
## JavaScript में ऑब्जेक्ट <a href="#053a" id="053a"></a>
|
||||
|
||||
JavaScript में ऑब्ज
|
||||
## JavaScript में ऑब्ज
|
||||
```javascript
|
||||
// Run this in the developers tools console
|
||||
console.log(Object.create(null)); // This will output an empty object.
|
||||
|
@ -25,7 +23,7 @@ console.log(Object.create(null)); // This will output an empty object.
|
|||
|
||||
### जावास्क्रिप्ट में फंक्शन और क्लासेस
|
||||
|
||||
जावास्क्रिप्ट में, क्लासेस और फंक्शन गहरे रूप से जुड़े होते हैं, जहां फंक्शन अक्सर क्लासेस के लिए निर्माता के रूप में कार्य करते हैं। जावास्क्रिप्ट की प्राकृतिक क्लास समर्थन के बावजूद, निर्माताओं का व्यवहार क्लास की भूमिका का अनुकरण कर सकते हैं।
|
||||
जावास्क्रिप्ट में, क्लासेस और फंक्शन गहरे रूप से जुड़े होते हैं, जहां फंक्शन अक्सर क्लास के लिए निर्माता के रूप में कार्य करते हैं। जावास्क्रिप्ट की प्राकृतिक क्लास समर्थन के बावजूद, निर्माताओं के द्वारा क्लास व्यवहार का अनुकरण कर सकते हैं।
|
||||
```javascript
|
||||
// Run this in the developers tools console
|
||||
|
||||
|
@ -45,20 +43,20 @@ employee1.__proto__
|
|||
```
|
||||
### JavaScript में प्रोटोटाइप
|
||||
|
||||
JavaScript अनुरूपित, जोड़ने या हटाने की अनुमति देता है या प्रोटोटाइप गुणों को रनटाइम पर संशोधित करने की. यह लचीलाता वर्ग की कार्यक्षमताओं का गतिशील विस्तार संभव बनाता है.
|
||||
JavaScript द्वारा रनटाइम में प्रोटोटाइप विशेषताओं का संशोधन, जोड़ना या हटाना संभव है। यह लचीलाता वर्ग की कार्यक्षमताओं का गतिशील विस्तार संभावित बनाता है।
|
||||
|
||||
`toString` और `valueOf` जैसे फ़ंक्शन का व्यवहार बदलने के लिए संशोधित किया जा सकता है, जो JavaScript के प्रोटोटाइप प्रणाली की लचीलाता को प्रदर्शित करता है.
|
||||
`toString` और `valueOf` जैसे फ़ंक्शन का व्यवहार बदलने के लिए संशोधित किया जा सकता है, जो JavaScript के प्रोटोटाइप प्रणाली की लचीलता को प्रदर्शित करता है।
|
||||
|
||||
## विरासत
|
||||
|
||||
प्रोटोटाइप-आधारित प्रोग्रामिंग में, गुण/विधियाँ वर्गों से ऑब्जेक्ट्स द्वारा विरासत में ली जाती हैं. ये वर्ग एक अन्य वर्ग के एक उदाहरण या एक खाली ऑब्ज
|
||||
प्रोटोटाइप-आधारित प्रोग्रामिंग में, गुण/विधियाँ वर्गों से ऑब्जेक्ट्स द्वारा विरासत में ली जाती हैं। ये वर्ग उस वर्ग के एक उदाहरण या एक खाली ऑब्ज
|
||||
```javascript
|
||||
function Vehicle(model) {
|
||||
this.model = model;
|
||||
}
|
||||
var car1 = new Vehicle("Tesla Model S");
|
||||
```
|
||||
ऑब्जेक्ट प्रोटोटाइप तक पहुंच संभव है:
|
||||
ऑब्जेक्ट प्रोटोटाइप तक पहुंच इसके जरिए संभव है:
|
||||
```javascript
|
||||
car1.__proto__.__proto__;
|
||||
Vehicle.__proto__.__proto__;
|
||||
|
@ -76,9 +74,9 @@ car1.announce(); // Outputs "Beep beep!"
|
|||
car1.__proto__.__proto__.isVehicle = true;
|
||||
console.log(car1.isVehicle); // Outputs true
|
||||
```
|
||||
## प्रोटोटाइप पोल्लूशन
|
||||
## प्रोटोटाइप पोल्लुशन
|
||||
|
||||
जहां `__proto__` उपयोग पर प्रतिबंध लगाया गया है, एक फ़ंक्शन के प्रोटोटाइप को संशोधित करना एक विकल्प है:
|
||||
जहां `__proto__` उपयोग पर प्रतिबंध लगाया गया है, फ़ंक्शन के प्रोटोटाइप को संशोधित करना एक विकल्प है:
|
||||
```javascript
|
||||
function Vehicle(model) {
|
||||
this.model = model;
|
||||
|
@ -94,20 +92,26 @@ console.log(car1.hasWheels); // Outputs true
|
|||
car1.constructor.prototype.honk = function() { console.log("Honk!"); };
|
||||
car1.constructor.prototype.isElectric = true;
|
||||
```
|
||||
यह केवल `Vehicle` कंस्ट्रक्टर से बनाए गए ऑब्ज
|
||||
यह केवल `Vehicle` कंस्ट्रक्टर से बनाए गए ऑब्जेक्ट्स पर प्रभाव डालता है, जिन्हें `beep`, `hasWheels`, `honk`, और `isElectric` प्रॉपर्टीज़ देता है।
|
||||
|
||||
जावास्क्रिप्ट ऑब्जेक्ट्स को वैश्विक रूप से प्रभावित करने के लिए दो तरीके शामिल हैं:
|
||||
|
||||
1. `Object.prototype` को सीधे प्रदूषणित करना:
|
||||
```javascript
|
||||
Object.prototype.goodbye = function() { console.log("Goodbye!"); };
|
||||
```
|
||||
2. एक व्यापक रूप से उपयोग किए जाने वाले संरचना के constructor का prototype प्रदूषित करना:
|
||||
2. एक बहुत ही आम संरचना के constructor का prototype प्रदूषण करना:
|
||||
```javascript
|
||||
var example = {"key": "value"};
|
||||
example.constructor.prototype.greet = function() { console.log("Hello!"); };
|
||||
```
|
||||
## अन्य ऑब्जेक्ट को प्रदूषित करना
|
||||
After these operations, हर JavaScript object `goodbye` और `greet` methods को execute कर सकता है।
|
||||
|
||||
### क्लास से Object.prototype तक
|
||||
## अन्य objects को प्रदूषित करना
|
||||
|
||||
एक स्थिति में जहाँ आप **एक विशिष्ट ऑब्जेक्ट को प्रदूषित कर सकते हैं** और आपको **`Object.prototype` तक पहुंचने की आवश्यकता है**, तो आप निम्नलिखित कोड के साथ इसे खोज सकते हैं:
|
||||
### एक class से Object.prototype तक
|
||||
|
||||
एक scenario में जहाँ आप **एक विशिष्ट object को प्रदूषित कर सकते हैं** और आपको **`Object.prototype` तक पहुंचने की आवश्यकता है** तो आप इसे निम्नलिखित कोड के साथ खोज सकते हैं:
|
||||
```javascript
|
||||
// From https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/
|
||||
|
||||
|
@ -128,9 +132,9 @@ console.log(key1 + "." + key2)
|
|||
}
|
||||
}
|
||||
```
|
||||
### Array elements pollution
|
||||
### एरे तत्व प्रदूषण
|
||||
|
||||
ध्यान दें कि आप JS में ऑब्ज
|
||||
ध्यान दें कि आप जेएस में ऑब्जेक्ट के गुणों को प्रदूषित कर सकते हैं, अगर आपके पास एक एरे को प्रदूषित करने का एक्सेस है तो आप **एरे के मानों को भी प्रदूषित कर सकते हैं** जिनका एक्सेस **इंडेक्स के द्वारा** होता है (ध्यान दें कि आप मानों को अधिलेखित नहीं कर सकते, इसलिए आपको उन इंडेक्स को प्रदूषित करने की आवश्यकता है जो किसी प्रकार से उपयोग किए जाते हैं लेकिन लिखे नहीं जाते हैं)।
|
||||
```javascript
|
||||
c = [1,2]
|
||||
a = []
|
||||
|
@ -142,7 +146,7 @@ c[1] // 2 -- not
|
|||
```
|
||||
### Html elements pollution
|
||||
|
||||
JS के माध्यम से HTML element उत्पन्न करते समय **`innerHTML`** विशेषता को **अधिलेखित** करके **विचारशील HTML कोड लिखना संभव है।** [इस लेख से विचार और उदाहरण](https://blog.huli.tw/2022/04/25/en/intigriti-0422-xss-challenge-author-writeup/)।
|
||||
JS के माध्यम से HTML element उत्पन्न करते समय **`innerHTML`** विशेषता को **अधिकारिक HTML कोड लिखने** के लिए **अधिलेखित** किया जा सकता है। [इस लेख से विचार और उदाहरण](https://blog.huli.tw/2022/04/25/en/intigriti-0422-xss-challenge-author-writeup/)।
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```javascript
|
||||
|
@ -161,17 +165,17 @@ settings[root][ownerDocument][body][innerHTML]="<svg onload=alert(document.domai
|
|||
|
||||
### मूल उदाहरण
|
||||
|
||||
प्रोटोटाइप प्रदूषण एक दोष के कारण होता है जो एप्लिकेशन में `Object.prototype` पर गुणों को अधिलेखित करने की अनुमति देता है। इसका मतलब है कि क्योंकि अधिकांश ऑब्ज
|
||||
प्रोटोटाइप प्रदूषण एक दोष के कारण होता है जो एप्लिकेशन में विशेषता को `Object.prototype` पर लिखने की अनुमति देता है। इसका मतलब है कि क्योंकि अधिकांश ऑब्ज
|
||||
```javascript
|
||||
if (user.admin) {
|
||||
```
|
||||
यदि गुणवत्ता **`admin` निर्धारित नहीं** है तो PP का दुरुपयोग करके इसे सत्य रूप में सेट करना संभव है:
|
||||
यदि गुणवत्ता **`admin` अपरिभाषित** है तो एक PP का दुरुपयोग करके इसे सत्य में सेट करना संभव है:
|
||||
```javascript
|
||||
Object.prototype.isAdmin = true
|
||||
let user = {}
|
||||
user.isAdmin // true
|
||||
```
|
||||
इसके मेकेनिज़्म का पीछा करना इसे शामिल करता है कि गुणों को मनिपुरित करना जिससे अगर किसी हमलावर के पास कुछ निशाने पर नियंत्रण होता है, तो वे एप्लिकेशन में सभी ऑब्ज
|
||||
इसके मेकेनिज़्म का पीछा करने में शामिल है कि गुणों को मनिपुलेट करना जिससे अगर किसी हमलावर के पास कुछ निर्दिष्ट इनपुट के उपर नियंत्रण हो, तो वे एप्लिकेशन में सभी ऑब्ज
|
||||
```python
|
||||
customer.__proto__.toString = ()=>{alert("polluted")}
|
||||
```
|
||||
|
@ -189,41 +193,45 @@ customer.__proto__.toString = ()=>{alert("polluted")}
|
|||
|
||||
### CVE-2019–11358: jQuery $ .extend के माध्यम से प्रोटोटाइप प्रदूषण हमला
|
||||
|
||||
[अधिक विवरण के लिए इस लेख की जाँच करें](https://itnext.io/prototype-pollution-attack-on-nodejs-applications-94a8582373e7)
|
||||
jQuery में, `$ .extend` फ़ंक्शन गहरी कॉपी सुविधा का गलत तरीके से उपयोग किया जाए तो प्रोटोटाइप प्रदूषण का कारण बन सकता है। यह फ़ंक्शन आम तौर पर ऑब्जेक्ट क्लोनिंग या डिफ़ॉल्ट ऑब्जेक्ट से गुणों को मर्ज करने के लिए उपयोग किया जाता है। हालांकि, गलत रूप से कॉन्फ़िगर किया जाए, नए ऑब्ज
|
||||
[अधिक विवरण के लिए इस लेख की जाँच करें](https://itnext.io/prototype-pollution-attack-on-nodejs-applications-94a8582373e7) jQuery में, `$ .extend` फ़ंक्शन गहरी कॉपी सुविधा का गलत तरीके से उपयोग किया जाए तो प्रोटोटाइप प्रदूषण का कारण बन सकता है। यह फ़ंक्शन आम तौर पर ऑब्जेक्ट क्लोनिंग या डिफ़ॉल्ट ऑब्जेक्ट से गुणों को मर्ज करने के लिए उपयोग किया जाता है। हालांकि, गलत रूप से कॉन्फ़िगर किया जाए, नए ऑब्ज
|
||||
```javascript
|
||||
$.extend(true, {}, JSON.parse('{"__proto__": {"devMode": true}}'));
|
||||
console.log({}.devMode); // Outputs: true
|
||||
```
|
||||
यह वंर्णन, CVE-2019–11358 के रूप में पहचानी गई एक दुर्भाग्यपूर्णता, दिखाती है कि एक गहरी कॉपी अनजाने में प्रोटोटाइप को संशोधित कर सकती है, जिससे सुरक्षा जोखिमों की संभावना होती है, जैसे कि अनधिकृत व्यवस्थापक एक्सेस अगर `isAdmin` जैसी गुणवत्ताएं सही रूप से मौजूदगी सत्यापन के बिना जांची जाती हैं।
|
||||
यह वंरुल्नरबिलिटी, जिसे CVE-2019–11358 के रूप में पहचाना गया है, दिखाती है कि एक गहरी कॉपी अनजाने में प्रोटोटाइप को संशोधित कर सकती है, जिससे सुरक्षा जोखिमों का सामना करना पड़ सकता है, जैसे अनधिकृत एडमिन एक्सेस अगर `isAdmin` जैसी गुणवत्ताएँ सही अस्तित्व सत्यापन के बिना जांची जाती हैं।
|
||||
|
||||
### CVE-2018–3721, CVE-2019–10744: लोडाश के माध्यम से प्रोटोटाइप पोल्यूशन हमला
|
||||
### CVE-2018–3721, CVE-2019–10744: लोडाश के माध्यम से प्रोटोटाइप पोल्लुशन हमला
|
||||
|
||||
[अधिक विवरण के लिए इस लेख की जाँच करें](https://itnext.io/prototype-pollution-attack-on-nodejs-applications-94a8582373e7)
|
||||
|
||||
[Lodash](https://www.npmjs.com/package/lodash) ने समान प्रोटोटाइप पोल्यूशन जोखिमों (CVE-2018–3721, CVE-2019–10744) का सामना किया। इन मुद्दों को संस्करण 4.17.11 में संबोधित किया गया था।
|
||||
[Lodash](https://www.npmjs.com/package/lodash) ने समान प्रोटोटाइप पोल्लुशन वंरुल्नरबिलिटीज़ (CVE-2018–3721, CVE-2019–10744) का सामना किया। इन मुद्दों को संस्करण 4.17.11 में संशोधित किया गया था।
|
||||
|
||||
### एक और ट्यूटोरियल सीवीई के साथ
|
||||
### एक और ट्यूटोरियल जिसमें CVEs हैं
|
||||
|
||||
{% embed url="https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-and-exploitation-f97284333b2" %}
|
||||
|
||||
### नोडजेएस में AST प्रोटोटाइप पोल्यूशन
|
||||
### प्रोटोटाइप पोल्लुशन का पता लगाने के लिए उपकरण
|
||||
|
||||
नोडजेएस जावास्क्रिप्ट में टेम्पलेट इंजन्स और टाइपस्क्रिप्ट जैसी कार्यान्वयनों के लिए अबस्ट्रैक्ट सिंटैक्स ट्रीज (AST) का व्यापक उपयोग करता है। यह खंड टेम्पलेट इंजन्स में प्रोटोटाइप पोल्यूशन से संबंधित जोखिमों का अन्वेषण करता है, विशेष रूप से हैंडलबार्स और पग।
|
||||
* [**Server-Side-Prototype-Pollution-Gadgets-Scanner**](https://github.com/doyensec/Server-Side-Prototype-Pollution-Gadgets-Scanner): वेब एप्लिकेशन में सर्वर-साइड प्रोटोटाइप पोल्लुशन वंरुल्नरबिलिटीज़ का पता लगाने और विश्लेषण करने के लिए बनाया गया बर्प स्यूट एक्सटेंशन। यह उपकरण स्कैनिंग अनुरोधों की प्रोटोटाइप पोल्लुशन समस्याओं की पहचान की प्रक्रिया को स्वचालित करता है। यह ज्ञात गैजेट्स का उपयोग करता है - प्रोटोटाइप पोल्लुशन को हानिकारक क्रियाएँ करने के लिए उपयोग करने के तरीके। विशेष रूप से नोड.जेएस पुस्तकालयों पर ध्यान केंद्रित करता है।
|
||||
* [**server-side-prototype-pollution**](https://github.com/portswigger/server-side-prototype-pollution): यह एक्सटेंशन सर्वर साइड प्रोटोटाइप पोल्लुशन वंरुल्नरबिलिटीज़ की पहचान करता है। यह [सर्वर साइड प्रोटोटाइप पोल्लुशन](https://portswigger.net/research/server-side-prototype-pollution) में वर्णित तकनीकों का उपयोग करता है।
|
||||
|
||||
#### हैंडलबार्स जोखिम विश्लेषण
|
||||
### नोडजेएस में AST प्रोटोटाइप पोल्लुशन
|
||||
|
||||
हैंडलबार्स टेम्पलेट इंजन एक प्रोटोटाइप पोल्यूशन हमले के लिए संवेदनशील है। यह दुर्भाग्यपूर्णता `javascript-compiler.js` फ़ाइल के भीतर विशिष्ट कार्यों से उत्पन्न होती है। उदाहरण के लिए, `appendContent` फ़ंक्शन, यदि यह मौजूद है, तो `pendingContent` को जोड़ता है, जबकि `pushSource` फ़ंक्शन स्रोत को जोड़ने के बाद `pendingContent` को `undefined` पर रीसेट करता है।
|
||||
नोडजेएस जावास्क्रिप्ट में टेम्पलेट इंजन्स और टाइपस्क्रिप्ट जैसी फ़ंक्शनलिटीज़ के लिए एब्स्ट्रैक्ट सिंटैक्स ट्रीज़ (AST) का व्यापक उपयोग करता है। यह खंड टेम्पलेट इंजन्स, विशेष रूप से हैंडलबार्स और पग में प्रोटोटाइप पोल्लुशन से संबंधित वंरुल्नरबिलिटीज़ की जांच करता है।
|
||||
|
||||
##### शोषण प्रक्रिया
|
||||
#### हैंडलबार्स वंरुल्नरबिलिटी विश्लेषण
|
||||
|
||||
शोषण AST (अबस्ट्रैक्ट सिंटैक्स ट्री) का उपयोग हैंडलबार्स द्वारा उत्पन्न करता है, निम्नलिखित चरणों का पालन करते हुए:
|
||||
हैंडलबार्स टेम्पलेट इंजन एक प्रोटोटाइप पोल्लुशन हमले के लिए संवेदनशील है। यह वंरुल्नरबिलिटी `javascript-compiler.js` फ़ाइल के भीतर विशिष्ट फ़ंक्शनों से उत्पन्न होती है। उदाहरण के लिए, `appendContent` फ़ंक्शन, यदि यह मौजूद है, तो `pendingContent` को जोड़ता है, जबकि `pushSource` फ़ंक्शन स्रोत को जोड़ने के बाद `pendingContent` को `undefined` पर रीसेट करता है।
|
||||
|
||||
1. **पार्सर का उपयोग**: पहले, पार्सर, `NumberLiteral` नोड के माध्यम से, मानों को संख्यात्मक बनाने की बाध्यता लगाता है। प्रोटोटाइप पोल्यूशन इसे चक्कर में डाल सकती है, जिससे गैर-संख्यात्मक स्ट्रिंग को डाला जा सके।
|
||||
**शोषण प्रक्रिया**
|
||||
|
||||
शोषण AST (एब्स्ट्रैक्ट सिंटैक्स ट्री) का उपयोग करता है, हैंडलबार्स द्वारा उत्पन्न, निम्नलिखित चरणों का पालन करता है:
|
||||
|
||||
1. **पार्सर का उपयोग**: पहले, पार्सर, `NumberLiteral` नोड के माध्यम से मानों को संख्यात्मक बनाता है। प्रोटोटाइप पोल्लुशन इसे चक्कर में डाल सकता है, जिससे गैर-संख्यात्मक स्ट्रिंग्स को डाला जा सके।
|
||||
2. **कंपाइलर द्वारा हैंडलिंग**: कंपाइलर एक AST ऑब्जेक्ट या एक स्ट्रिंग टेम्पलेट को प्रोसेस कर सकता है। यदि `input.type` `Program` के बराबर है, तो इनपुट को पूर्व-पार्स किया जाता है, जिसे शोषित किया जा सकता है।
|
||||
3. **कोड का डालन**: `Object.prototype` के द्वारा शोषण के माध्यम से, कोई भी विचारहीन कोड टेम्पलेट फ़ंक्शन में डाला जा सकता है, जिससे दूरस्थ कोड क्रियान्वयन हो सकता है।
|
||||
3. **कोड का डालना**: `Object.prototype` के द्वारा शोषण के माध्यम से कोड डाला जा सकता है, जिससे टेम्पलेट फ़ंक्शन में दूरस्थ कोड निष्पादित हो सकता है।
|
||||
|
||||
हैंडलबार्स दुर्भाग्यपूर्णता का शोषण का उदाहरण:
|
||||
हैंडलबार्स वंरुल्नरबिलिटी के शोषण का उदाहरण:
|
||||
```javascript
|
||||
const Handlebars = require('handlebars');
|
||||
|
||||
|
@ -246,11 +254,13 @@ const template = Handlebars.precompile(source);
|
|||
|
||||
console.log(eval('(' + template + ')')['main'].toString());
|
||||
```
|
||||
यह कोड दिखाता है कि एक हमलावार कैसे Handlebars टेम्पलेट में विचित्र कोड इंजेक्ट कर सकता है।
|
||||
यह कोड दिखाता है कि एक हमलावर कैसे Handlebars टेम्पलेट में विचित्र कोड इंजेक्ट कर सकता है।
|
||||
|
||||
**बाहरी संदर्भ**: 'flat' पुस्तकालय में प्रोटोटाइप पोल्यूशन से संबंधित एक मुद्दा पाया गया था, जिसका विवरण यहाँ दिया गया है: [गिथब पर मुद्दा](https://github.com/hughsk/flat/issues/105)।
|
||||
**बाहरी संदर्भ**: 'flat' पुस्तकालय में प्रोटोटाइप प्रदूषण से संबंधित एक मुद्दा मिला था, जिसका विवरण यहाँ दिया गया है: [गिटहब पर मुद्दा](https://github.com/hughsk/flat/issues/105)।
|
||||
|
||||
**बाहरी संदर्भ**: [Python में प्रोटोटाइप पोल्यूशन उत्पीड़न का उदाहरण](https://github.com/hughsk/flat/issues/105)
|
||||
**बाहरी संदर्भ**: [प्रोटोटाइप प्रदूषण से संबंधित मुद्दा 'flat' पुस्तकालय में](https://github.com/hughsk/flat/issues/105)
|
||||
|
||||
पायथन में प्रोटोटाइप प्रदूषण उत्पीड़न का उदाहरण:
|
||||
```python
|
||||
import requests
|
||||
|
||||
|
@ -299,17 +309,17 @@ requests.get(TARGET_URL)
|
|||
```
|
||||
### प्रतिबंधात्मक उपाय
|
||||
|
||||
प्रोटोटाइप प्रदूषण के जोखिम को कम करने के लिए, नीचे सूचीबद्ध रणनीतियों का उपयोग किया जा सकता है:
|
||||
प्रोटोटाइप प्रदूषण के जोखिम को कम करने के लिए, नीचे दी गई रणनीतियों का उपयोग किया जा सकता है:
|
||||
|
||||
1. **ऑब्जेक्ट अपरिवर्तनीयता**: `Object.freeze` लागू करके `Object.prototype` को अपरिवर्तनीय बनाया जा सकता है।
|
||||
2. **इनपुट मान्यता**: JSON इनपुट को अनुप्रयोग के स्कीमा के खिलाफ सख्ती से मान्यता देनी चाहिए।
|
||||
2. **इनपुट मान्यता**: JSON इनपुट को अनुपालन करना चाहिए एप्लिकेशन के स्कीमा के साथ।
|
||||
3. **सुरक्षित मर्ज फ़ंक्शन**: असुरक्षित रूप से रिकर्सिव मर्ज फ़ंक्शन का उपयोग नहीं किया जाना चाहिए।
|
||||
4. **प्रोटोटाइप-रहित ऑब्जेक्ट्स**: `Object.create(null)` का उपयोग करके प्रोटोटाइप गुणों के बिना ऑब्जेक्ट्स बनाए जा सकते हैं।
|
||||
5. **मैप का उपयोग**: `Object` की बजाय, कुंजी-मान-जोड़े संग्रहण के लिए `Map` का उपयोग किया जाना चाहिए।
|
||||
6. **लाइब्रेरी अपडेट्स**: सुरक्षा पैच को नियमित रूप से अपडेट करके शामिल किया जा सकता है।
|
||||
7. **लिंटर और स्थिर विश्लेषण उपकरण**: प्रोटोटाइप प्रदूषण की जोखिमों का पता लगाने और रोकने के लिए ESLint जैसे उपकरणों का उपयोग करें।
|
||||
8. **कोड समीक्षा**: प्रोटोटाइप प्रदूषण से संबंधित संभावित जोखिमों की पहचान और सुधार के लिए व्यापक कोड समीक्षा को लागू करें।
|
||||
9. **सुरक्षा प्रशिक्षण**: डेवलपर्स को प्रोटोटाइप प्रदूषण के जोखिमों और सुरक्षित कोड लिखने के लिए श्रेष्ठ प्रथाओं के बारे में शिक्षित करें।
|
||||
9. **सुरक्षा प्रशिक्षण**: डेवलपर्स को प्रोटोटाइप प्रदूषण के जोखिमों और सुरक्षित कोड लिखने के लिए उत्तम प्रथाओं के बारे में शिक्षित करें।
|
||||
10. **सतर्कता के साथ पुस्तकालयों का उपयोग**: तीसरे पक्ष की पुस्तकालयों का उपयोग करते समय सतर्क रहें। उनकी सुरक्षा स्थिति का मूल्यांकन करें और उनके कोड की समीक्षा करें, विशेष रूप से वे जो ऑब्जेक्ट्स को संशोधित कर रहे हों।
|
||||
11. **रनटाइम सुरक्षा**: सुरक्षा-केंद्रित npm पैकेज का उपयोग करके प्रोटोटाइप प्रदूषण हमलों को पहचानने और रोकने के लिए रनटाइम सुरक्षा तंत्र का उपयोग करें।
|
||||
|
||||
|
@ -322,14 +332,14 @@ requests.get(TARGET_URL)
|
|||
|
||||
<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>
|
||||
<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** में देखना चाहते हैं या **PDF में HackTricks डाउनलोड** करना चाहते हैं तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* यदि आप अपनी कंपनी का विज्ञापन **HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड** करना चाहते हैं तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) की जांच करें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
|
||||
* **जुड़ें** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
|
||||
* **अपने हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपो में PR जमा करके।
|
||||
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** पर फॉलो** करें।
|
||||
* **अपने हैकिंग ट्रिक्स साझा करें** हैकट्रिक्स और हैकट्रिक्स क्लाउड github रेपो में PR जमा करके।
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue