17 KiB

विशेष HTTP हेडर

{{#include ../../banners/hacktricks-training.md}}

वर्डलिस्ट और उपकरण

स्थान बदलने के लिए हेडर

IP स्रोत को फिर से लिखें:

  • X-Originating-IP: 127.0.0.1
  • X-Forwarded-For: 127.0.0.1
  • X-Forwarded: 127.0.0.1
  • Forwarded-For: 127.0.0.1
  • X-Forwarded-Host: 127.0.0.1
  • X-Remote-IP: 127.0.0.1
  • X-Remote-Addr: 127.0.0.1
  • X-ProxyUser-Ip: 127.0.0.1
  • X-Original-URL: 127.0.0.1
  • Client-IP: 127.0.0.1
  • X-Client-IP: 127.0.0.1
  • X-Host: 127.0.0.1
  • True-Client-IP: 127.0.0.1
  • Cluster-Client-IP: 127.0.0.1
  • Via: 1.0 fred, 1.1 127.0.0.1
  • Connection: close, X-Forwarded-For (हॉप-बाय-हॉप हेडर की जांच करें)

स्थान को फिर से लिखें:

  • X-Original-URL: /admin/console
  • X-Rewrite-URL: /admin/console

हॉप-बाय-हॉप हेडर

एक हॉप-बाय-हॉप हेडर एक हेडर है जिसे वर्तमान में अनुरोध को संभालने वाले प्रॉक्सी द्वारा संसाधित और उपभोग करने के लिए डिज़ाइन किया गया है, न कि एक एंड-टू-एंड हेडर।

  • Connection: close, X-Forwarded-For

{{#ref}} ../../pentesting-web/abusing-hop-by-hop-headers.md {{#endref}}

HTTP अनुरोध स्मगलिंग

  • Content-Length: 30
  • Transfer-Encoding: chunked

{{#ref}} ../../pentesting-web/http-request-smuggling/ {{#endref}}

कैश हेडर

सर्वर कैश हेडर:

  • X-Cache में प्रतिक्रिया में मान हो सकता है miss जब अनुरोध कैश नहीं किया गया था और मान hit जब इसे कैश किया गया है
  • हेडर Cf-Cache-Status में समान व्यवहार
  • Cache-Control यह संकेत करता है कि क्या एक संसाधन कैश किया जा रहा है और अगली बार कब संसाधन फिर से कैश किया जाएगा: Cache-Control: public, max-age=1800
  • Vary अक्सर प्रतिक्रिया में अतिरिक्त हेडर को कैश कुंजी का हिस्सा के रूप में इंगित करने के लिए उपयोग किया जाता है, भले ही वे सामान्यतः अनकुंजीकृत हों।
  • 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 GMT
  • Pragma: no-cache Cache-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) बदल गया है। Etag HTTP प्रतिक्रिया से लिया जाता है।
  • Etag मान आमतौर पर प्रतिक्रिया की सामग्री के आधार पर गणना की जाती है। उदाहरण के लिए, ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI" इंगित करता है कि Etag 37 बाइट्स का 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, '&lt;').replace(/>/g, '&gt;');
});
}
// 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

संदर्भ

{{#include ../../banners/hacktricks-training.md}}