17 KiB
विशेष HTTP हेडर
{{#include ../../banners/hacktricks-training.md}}
वर्डलिस्ट और उपकरण
- https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/Web/http-request-headers
- https://github.com/rfc-st/humble
स्थान बदलने के लिए हेडर
IP स्रोत को फिर से लिखें:
X-Originating-IP: 127.0.0.1X-Forwarded-For: 127.0.0.1X-Forwarded: 127.0.0.1Forwarded-For: 127.0.0.1X-Forwarded-Host: 127.0.0.1X-Remote-IP: 127.0.0.1X-Remote-Addr: 127.0.0.1X-ProxyUser-Ip: 127.0.0.1X-Original-URL: 127.0.0.1Client-IP: 127.0.0.1X-Client-IP: 127.0.0.1X-Host: 127.0.0.1True-Client-IP: 127.0.0.1Cluster-Client-IP: 127.0.0.1Via: 1.0 fred, 1.1 127.0.0.1Connection: close, X-Forwarded-For(हॉप-बाय-हॉप हेडर की जांच करें)
स्थान को फिर से लिखें:
X-Original-URL: /admin/consoleX-Rewrite-URL: /admin/console
हॉप-बाय-हॉप हेडर
एक हॉप-बाय-हॉप हेडर एक हेडर है जिसे वर्तमान में अनुरोध को संभालने वाले प्रॉक्सी द्वारा संसाधित और उपभोग करने के लिए डिज़ाइन किया गया है, न कि एक एंड-टू-एंड हेडर।
Connection: close, X-Forwarded-For
{{#ref}} ../../pentesting-web/abusing-hop-by-hop-headers.md {{#endref}}
HTTP अनुरोध स्मगलिंग
Content-Length: 30Transfer-Encoding: chunked
{{#ref}} ../../pentesting-web/http-request-smuggling/ {{#endref}}
कैश हेडर
सर्वर कैश हेडर:
X-Cacheमें प्रतिक्रिया में मान हो सकता हैmissजब अनुरोध कैश नहीं किया गया था और मानhitजब इसे कैश किया गया है- हेडर
Cf-Cache-Statusमें समान व्यवहार Cache-Controlयह संकेत करता है कि क्या एक संसाधन कैश किया जा रहा है और अगली बार कब संसाधन फिर से कैश किया जाएगा:Cache-Control: public, max-age=1800Varyअक्सर प्रतिक्रिया में अतिरिक्त हेडर को कैश कुंजी का हिस्सा के रूप में इंगित करने के लिए उपयोग किया जाता है, भले ही वे सामान्यतः अनकुंजीकृत हों।Ageउन सेकंड में समय को परिभाषित करता है जब वस्तु प्रॉक्सी कैश में रही है।Server-Timing: cdn-cache; desc=HITयह भी संकेत करता है कि एक संसाधन कैश किया गया था
{{#ref}} ../../pentesting-web/cache-deception/ {{#endref}}
स्थानीय कैश हेडर:
Clear-Site-Data: हेडर यह इंगित करने के लिए कि कैश को हटाया जाना चाहिए:Clear-Site-Data: "cache", "cookies"Expires: उस दिन/समय को शामिल करता है जब प्रतिक्रिया समाप्त होनी चाहिए:Expires: Wed, 21 Oct 2015 07:28:00 GMTPragma: no-cacheCache-Control: no-cacheके समानWarning:Warningसामान्य HTTP हेडर संदेश की स्थिति के साथ संभावित समस्याओं के बारे में जानकारी प्रदान करता है। एक प्रतिक्रिया में एक से अधिकWarningहेडर दिखाई दे सकते हैं।Warning: 110 anderson/1.3.37 "Response is stale"
शर्तें
- इन हेडरों का उपयोग करने वाले अनुरोध:
If-Modified-SinceऔरIf-Unmodified-Sinceकेवल तब डेटा के साथ उत्तर दिया जाएगा जब प्रतिक्रिया हेडर**Last-Modified** में एक अलग समय हो। If-MatchऔरIf-None-Matchका उपयोग करने वाले शर्तीय अनुरोध एक Etag मान का उपयोग करते हैं ताकि वेब सर्वर प्रतिक्रिया की सामग्री भेजे यदि डेटा (Etag) बदल गया है।EtagHTTP प्रतिक्रिया से लिया जाता है।- Etag मान आमतौर पर प्रतिक्रिया की सामग्री के आधार पर गणना की जाती है। उदाहरण के लिए,
ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"इंगित करता है किEtag37 बाइट्स का Sha1 है।
रेंज अनुरोध
Accept-Ranges: संकेत करता है कि क्या सर्वर रेंज अनुरोधों का समर्थन करता है, और यदि हां, तो रेंज को किस इकाई में व्यक्त किया जा सकता है।Accept-Ranges: <range-unit>Range: संकेत करता है कि सर्वर को दस्तावेज़ का कौन सा भाग लौटाना चाहिए।If-Range: एक शर्तीय रेंज अनुरोध बनाता है जो केवल तब पूरा होता है जब दिया गया etag या तिथि दूरस्थ संसाधन से मेल खाता है। असंगत संसाधन के संस्करणों से दो रेंज डाउनलोड करने से रोकने के लिए उपयोग किया जाता है।Content-Range: यह इंगित करता है कि एक पूर्ण संदेश में आंशिक संदेश कहाँ संबंधित है।
संदेश शरीर की जानकारी
Content-Length: संसाधन का आकार, दशमलव संख्या में बाइट्स।Content-Type: संसाधन के मीडिया प्रकार को इंगित करता हैContent-Encoding: संकुचन एल्गोरिदम को निर्दिष्ट करने के लिए उपयोग किया जाता है।Content-Language: दर्शकों के लिए लक्षित मानव भाषा(ओं) का वर्णन करता है, ताकि यह उपयोगकर्ता को उनके अपने पसंदीदा भाषा के अनुसार भेद करने की अनुमति देता है।Content-Location: लौटाए गए डेटा के लिए एक वैकल्पिक स्थान को इंगित करता है।
पेंटेस्ट के दृष्टिकोण से यह जानकारी आमतौर पर "व्यर्थ" होती है, लेकिन यदि संसाधन 401 या 403 द्वारा संरक्षित है और आप इस जानकारी को प्राप्त करने का कोई तरीका ढूंढ सकते हैं, तो यह दिलचस्प हो सकता है।
उदाहरण के लिए, एक HEAD अनुरोध में Range और Etag का संयोजन पृष्ठ की सामग्री को HEAD अनुरोधों के माध्यम से लीक कर सकता है:
Range: bytes=20-20हेडर के साथ एक अनुरोध और एक प्रतिक्रिया जिसमेंETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"शामिल है, यह लीक कर रहा है कि बाइट 20 का SHA1 हैETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y
सर्वर जानकारी
Server: Apache/2.4.1 (Unix)X-Powered-By: PHP/5.3.3
नियंत्रण
Allow: यह हेडर यह संप्रेषित करने के लिए उपयोग किया जाता है कि एक संसाधन कौन से HTTP विधियों को संभाल सकता है। उदाहरण के लिए, इसे इस प्रकार निर्दिष्ट किया जा सकता हैAllow: GET, POST, HEAD, यह इंगित करता है कि संसाधन इन विधियों का समर्थन करता है।Expect: क्लाइंट द्वारा उपयोग किया जाता है ताकि यह संप्रेषित किया जा सके कि सर्वर को अनुरोध को सफलतापूर्वक संसाधित करने के लिए किन अपेक्षाओं को पूरा करना चाहिए। एक सामान्य उपयोग मामलाExpect: 100-continueहेडर से संबंधित है, जो संकेत करता है कि क्लाइंट एक बड़ा डेटा पेलोड भेजने का इरादा रखता है। क्लाइंट ट्रांसमिशन के साथ आगे बढ़ने से पहले100 (Continue)प्रतिक्रिया की तलाश करता है। यह तंत्र नेटवर्क उपयोग को अनुकूलित करने में मदद करता है क्योंकि यह सर्वर की पुष्टि की प्रतीक्षा करता है।
डाउनलोड
- HTTP प्रतिक्रियाओं में
Content-Dispositionहेडर यह निर्देशित करता है कि क्या एक फ़ाइल को inline (वेबपृष्ठ के भीतर) प्रदर्शित किया जाना चाहिए या एक संलग्नक (डाउनलोड किया गया) के रूप में माना जाना चाहिए। उदाहरण के लिए:
Content-Disposition: attachment; filename="filename.jpg"
यह मतलब है कि "filename.jpg" नामक फ़ाइल को डाउनलोड और सहेजने के लिए बनाया गया है।
सुरक्षा हेडर
सामग्री सुरक्षा नीति (CSP)
{{#ref}} ../../pentesting-web/content-security-policy-csp-bypass/ {{#endref}}
विश्वसनीय प्रकार
CSP के माध्यम से विश्वसनीय प्रकारों को लागू करके, अनुप्रयोगों को DOM XSS हमलों से सुरक्षित रखा जा सकता है। विश्वसनीय प्रकार यह सुनिश्चित करते हैं कि केवल विशेष रूप से तैयार किए गए ऑब्जेक्ट्स, जो स्थापित सुरक्षा नीतियों के अनुरूप हैं, खतरनाक वेब API कॉल में उपयोग किए जा सकें, इस प्रकार डिफ़ॉल्ट रूप से JavaScript कोड को सुरक्षित रखते हैं।
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => str.replace(/\</g, '<').replace(/>/g, '>');
});
}
// Assignment of raw strings is blocked, ensuring safety.
el.innerHTML = "some string" // Throws an exception.
const escaped = policy.createHTML("<img src=x onerror=alert(1)>")
el.innerHTML = escaped // Results in safe assignment.
X-Content-Type-Options
यह हेडर MIME प्रकार की स्निफ़िंग को रोकता है, एक प्रथा जो XSS कमजोरियों का कारण बन सकती है। यह सुनिश्चित करता है कि ब्राउज़र सर्वर द्वारा निर्दिष्ट MIME प्रकारों का सम्मान करें।
X-Content-Type-Options: nosniff
X-Frame-Options
क्लिकजैकिंग से लड़ने के लिए, यह हेडर यह सीमित करता है कि दस्तावेज़ों को <frame>, <iframe>, <embed>, या <object> टैग में कैसे एम्बेड किया जा सकता है, सभी दस्तावेज़ों को उनकी एम्बेडिंग अनुमतियों को स्पष्ट रूप से निर्दिष्ट करने की सिफारिश करता है।
X-Frame-Options: DENY
Cross-Origin Resource Policy (CORP) और Cross-Origin Resource Sharing (CORS)
CORP यह निर्दिष्ट करने के लिए महत्वपूर्ण है कि कौन से संसाधन वेबसाइटों द्वारा लोड किए जा सकते हैं, क्रॉस-साइट लीक को कम करते हुए। दूसरी ओर, CORS एक अधिक लचीला क्रॉस-ओरिजिन संसाधन साझा करने का तंत्र प्रदान करता है, कुछ शर्तों के तहत समान-उत्पत्ति नीति को ढीला करते हुए।
Cross-Origin-Resource-Policy: same-origin
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
क्रॉस-ओरिजिन एम्बेडर नीति (COEP) और क्रॉस-ओरिजिन ओपनर नीति (COOP)
COEP और COOP क्रॉस-ओरिजिन अलगाव को सक्षम करने के लिए आवश्यक हैं, जो स्पेक्टर-जैसे हमलों के जोखिम को काफी कम करते हैं। वे क्रमशः क्रॉस-ओरिजिन संसाधनों के लोडिंग और क्रॉस-ओरिजिन विंडोज के साथ इंटरैक्शन को नियंत्रित करते हैं।
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin-allow-popups
HTTP Strict Transport Security (HSTS)
अंत में, HSTS एक सुरक्षा विशेषता है जो ब्राउज़रों को केवल सुरक्षित HTTPS कनेक्शनों के माध्यम से सर्वरों के साथ संवाद करने के लिए मजबूर करती है, इस प्रकार गोपनीयता और सुरक्षा को बढ़ाती है।
Strict-Transport-Security: max-age=3153600
संदर्भ
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
- https://web.dev/security-headers/
- https://web.dev/articles/security-headers
{{#include ../../banners/hacktricks-training.md}}