80,443 - Pentesting Web Methodology
यदि आप हैकिंग करियर में रुचि रखते हैं और अजेय को हैक करना चाहते हैं - हम भर्ती कर रहे हैं! (फ्लूएंट पोलिश लिखित और मौखिक आवश्यक).
Basic Info
वेब सेवा सबसे सामान्य और व्यापक सेवा है और कई विभिन्न प्रकार की कमजोरियाँ मौजूद हैं।
डिफ़ॉल्ट पोर्ट: 80 (HTTP), 443(HTTPS)
Web API Guidance
Web API PentestingMethodology summary
इस पद्धति में हम मानेंगे कि आप एक डोमेन (या उपडोमेन) पर हमला करने जा रहे हैं और केवल उसी पर। इसलिए, आपको इस पद्धति को प्रत्येक खोजे गए डोमेन, उपडोमेन या IP पर लागू करना चाहिए जिसमें अनिश्चित वेब सर्वर हो।
Server Version (Vulnerable?)
Identify
जांचें कि क्या सर्वर संस्करण के लिए कोई ज्ञात भेद्यताएँ हैं जो चल रही हैं। HTTP हेडर और प्रतिक्रिया के कुकीज़ तकनीकों और/या संस्करण की पहचान करने के लिए बहुत उपयोगी हो सकते हैं। Nmap स्कैन सर्वर संस्करण की पहचान कर सकता है, लेकिन यह उपकरण भी उपयोगी हो सकते हैं whatweb, webtech या https://builtwith.com/:
Search for वेब एप्लिकेशन संस्करण की कमजोरियों
जांचें कि कोई WAF है या नहीं
वेब तकनीक के ट्रिक्स
कुछ ट्रिक्स विभिन्न प्रसिद्ध तकनीकों में कमजोरियों को खोजने के लिए:
ध्यान में रखें कि एक ही डोमेन विभिन्न पोर्ट्स, फोल्डर्स और सबडोमेन में विभिन्न तकनीकों का उपयोग कर सकता है। यदि वेब एप्लिकेशन किसी प्रसिद्ध तकनीक/प्लेटफ़ॉर्म का उपयोग कर रहा है या कोई अन्य, तो इंटरनेट पर नए ट्रिक्स खोजना न भूलें (और मुझे बताएं!)।
स्रोत कोड समीक्षा
यदि एप्लिकेशन का स्रोत कोड github पर उपलब्ध है, तो एप्लिकेशन का अपना खुद का व्हाइट बॉक्स परीक्षण करने के अलावा, वर्तमान ब्लैक-बॉक्स परीक्षण के लिए कुछ जानकारी जो उपयोगी हो सकती है:
क्या कोई चेंज-लॉग या रीडमी या संस्करण फ़ाइल है या कुछ भी जिसमें संस्करण जानकारी वेब के माध्यम से उपलब्ध है?
क्रेडेंशियल्स कैसे और कहाँ सहेजे जाते हैं? क्या कोई (उपलब्ध?) फ़ाइल है जिसमें क्रेडेंशियल्स (उपयोगकर्ता नाम या पासवर्ड) हैं?
क्या पासवर्ड सादा पाठ में हैं, एन्क्रिप्टेड हैं या कौन सा हैशिंग एल्गोरिदम उपयोग किया गया है?
क्या यह कुछ एन्क्रिप्ट करने के लिए कोई मास्टर की का उपयोग कर रहा है? कौन सा एल्गोरिदम उपयोग किया गया है?
क्या आप किसी कमजोरी का शोषण करके इन फ़ाइलों में से किसी तक पहुँच सकते हैं?
क्या github में कोई दिलचस्प जानकारी है (हल की गई और न हल की गई) समस्याएँ? या कमिट इतिहास में (शायद कुछ पासवर्ड जो एक पुराने कमिट में डाला गया)?
स्वचालित स्कैनर
सामान्य उद्देश्य स्वचालित स्कैनर
CMS स्कैनर
यदि CMS का उपयोग किया गया है तो स्कैनर चलाना न भूलें, शायद कुछ रोचक पाया जाए:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin वेबसाइटों के लिए सुरक्षा मुद्दे। (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal या (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
इस बिंदु पर आपके पास क्लाइंट द्वारा उपयोग किए जा रहे वेब सर्वर की कुछ जानकारी होनी चाहिए (यदि कोई डेटा दिया गया है) और परीक्षण के दौरान ध्यान में रखने के लिए कुछ तरकीबें होनी चाहिए। यदि आप भाग्यशाली हैं, तो आपने एक CMS भी पाया है और कुछ स्कैनर चलाए हैं।
चरण-दर-चरण वेब एप्लिकेशन खोज
इस बिंदु से हम वेब एप्लिकेशन के साथ इंटरैक्ट करना शुरू करने जा रहे हैं।
प्रारंभिक जांच
दिलचस्प जानकारी के साथ डिफ़ॉल्ट पृष्ठ:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
मुख्य और द्वितीयक पृष्ठों में टिप्पणियों की भी जांच करें।
त्रुटियों को मजबूर करना
वेब सर्वर अजीब डेटा भेजे जाने पर अप्रत्याशित रूप से व्यवहार कर सकते हैं। इससे कमजोरियों या संवेदनशील जानकारी का खुलासा हो सकता है।
नकली पृष्ठों तक पहुँचें जैसे /whatever_fake.php (.aspx,.html,.etc)
त्रुटियाँ उत्पन्न करने के लिए "[]", "]]", और "[[" को कुकी मान और पैरामीटर मानों में जोड़ें
URL के अंत में
/~randomthing/%s
के रूप में इनपुट देकर त्रुटि उत्पन्न करेंPATCH, DEBUG या गलत जैसे FAKE जैसे विभिन्न HTTP क्रियाएँ आज़माएँ
जांचें कि क्या आप फ़ाइलें अपलोड कर सकते हैं (PUT क्रिया, WebDav)
यदि आप पाते हैं कि WebDav सक्षम है लेकिन आपके पास रूट फ़ोल्डर में फ़ाइलें अपलोड करने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो प्रयास करें:
ब्रूट फ़ोर्स क्रेडेंशियल्स
वेब पृष्ठ के अंदर पाई गई फ़ोल्डरों के बाकी में WebDav के माध्यम से फ़ाइलें अपलोड करें। आपको अन्य फ़ोल्डरों में फ़ाइलें अपलोड करने की अनुमति हो सकती है।
SSL/TLS कमजोरियाँ
यदि एप्लिकेशन HTTPS के उपयोगकर्ता को किसी भी भाग में मजबूर नहीं कर रहा है, तो यह MitM के लिए कमजोर है
यदि एप्लिकेशन HTTP का उपयोग करके संवेदनशील डेटा (पासवर्ड) भेज रहा है। तो यह एक उच्च कमजोरी है।
कमजोरियों के लिए testssl.sh का उपयोग करें (बग बाउंटी कार्यक्रमों में शायद इस प्रकार की कमजोरियों को स्वीकार नहीं किया जाएगा) और कमजोरियों को फिर से जांचने के लिए a2sv का उपयोग करें:
Information about SSL/TLS vulnerabilities:
Spidering
वेब के अंदर किसी प्रकार का स्पाइडर लॉन्च करें। स्पाइडर का लक्ष्य है जितने संभव हो सके रास्ते ढूंढना परीक्षण किए गए एप्लिकेशन से। इसलिए, वेब क्रॉलिंग और बाहरी स्रोतों का उपयोग करके जितने संभव हो सके वैध रास्ते खोजे जाने चाहिए।
gospider (go): HTML स्पाइडर, JS फ़ाइलों में LinkFinder और बाहरी स्रोत (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)।
hakrawler (go): HML स्पाइडर, JS फ़ाइलों के लिए LinkFider और बाहरी स्रोत के रूप में Archive.org के साथ।
dirhunt (python): HTML स्पाइडर, "जूसि फ़ाइलों" को भी इंगित करता है।
evine (go): इंटरैक्टिव CLI HTML स्पाइडर। यह Archive.org में भी खोजता है।
meg (go): यह उपकरण स्पाइडर नहीं है लेकिन यह उपयोगी हो सकता है। आप बस एक फ़ाइल निर्दिष्ट कर सकते हैं जिसमें होस्ट और एक फ़ाइल जिसमें रास्ते हैं और मेग प्रत्येक होस्ट पर प्रत्येक रास्ता लाएगा और प्रतिक्रिया को सहेजेगा।
urlgrab (go): JS रेंडरिंग क्षमताओं के साथ HTML स्पाइडर। हालाँकि, ऐसा लगता है कि यह अप्रबंधित है, पूर्व-संकलित संस्करण पुराना है और वर्तमान कोड संकलित नहीं होता है।
gau (go): HTML स्पाइडर जो बाहरी प्रदाताओं (wayback, otx, commoncrawl) का उपयोग करता है।
ParamSpider: यह स्क्रिप्ट URL खोजेगी जिसमें पैरामीटर होंगे और उन्हें सूचीबद्ध करेगी।
galer (go): JS रेंडरिंग क्षमताओं के साथ HTML स्पाइडर।
LinkFinder (python): HTML स्पाइडर, JS फ़ाइलों में नए रास्तों की खोज करने में सक्षम JS ब्यूटीफाई क्षमताओं के साथ। JSScanner पर भी नज़र डालना फायदेमंद हो सकता है, जो LinkFinder का एक रैपर है।
goLinkFinder (go): HTML स्रोत और एम्बेडेड जावास्क्रिप्ट फ़ाइलों में एंडपॉइंट्स निकालने के लिए। बग हंटर्स, रेड टीमर्स, इन्फोसेक निन्जाओं के लिए उपयोगी।
JSParser (python2.7): एक पायथन 2.7 स्क्रिप्ट जो टॉर्नेडो और JSBeautifier का उपयोग करके जावास्क्रिप्ट फ़ाइलों से सापेक्ष URL को पार्स करती है। AJAX अनुरोधों को आसानी से खोजने के लिए उपयोगी। ऐसा लगता है कि यह अप्रबंधित है।
relative-url-extractor (ruby): एक फ़ाइल (HTML) दी गई है, यह निफ्टी नियमित अभिव्यक्ति का उपयोग करके URL को निकालता है और बदसूरत (मिनिफाई) फ़ाइलों से सापेक्ष URL को खोजता है और निकालता है।
JSFScan (bash, कई उपकरण): कई उपकरणों का उपयोग करके JS फ़ाइलों से दिलचस्प जानकारी इकट्ठा करें।
subjs (go): JS फ़ाइलें खोजें।
page-fetch (go): एक हेडलेस ब्राउज़र में एक पृष्ठ लोड करें और सभी URL प्रिंट करें जो पृष्ठ को लोड करने के लिए लोड किए गए हैं।
Feroxbuster (rust): कई पिछले उपकरणों के विकल्पों को मिलाकर सामग्री खोजने का उपकरण।
Javascript Parsing: JS फ़ाइलों में पथ और पैरामीटर खोजने के लिए एक बर्प एक्सटेंशन।
Sourcemapper: एक उपकरण जो .js.map URL दिए जाने पर आपको ब्यूटीफाइड JS कोड प्राप्त करेगा।
xnLinkFinder: यह एक उपकरण है जिसका उपयोग किसी दिए गए लक्ष्य के लिए एंडपॉइंट्स खोजने के लिए किया जाता है।
waymore: वेबैक मशीन से लिंक खोजें (जवाबों को वेबैक में डाउनलोड करना और अधिक लिंक की तलाश करना)।
HTTPLoot (go): क्रॉल करें (यहां तक कि फ़ॉर्म भरकर) और विशिष्ट regexes का उपयोग करके संवेदनशील जानकारी खोजें।
SpiderSuite: स्पाइडर सूट एक उन्नत मल्टी-फीचर GUI वेब सुरक्षा क्रॉलर/स्पाइडर है जिसे साइबर सुरक्षा पेशेवरों के लिए डिज़ाइन किया गया है।
jsluice (go): यह एक Go पैकेज और कमांड-लाइन उपकरण है जो जावास्क्रिप्ट स्रोत कोड से URL, पथ, रहस्य और अन्य दिलचस्प डेटा निकालने के लिए है।
ParaForge: ParaForge एक सरल बर्प सूट एक्सटेंशन है जो फज़िंग और एन्यूमरेशन के लिए कस्टम वर्डलिस्ट बनाने के लिए अनुरोध से पैरामीटर और एंडपॉइंट्स निकालता है।
katana (go): इसके लिए शानदार उपकरण।
Crawley (go): यह प्रिंट करता है हर लिंक जिसे यह खोजने में सक्षम है।
Brute Force directories and files
रूट फ़ोल्डर से ब्रूट-फोर्सिंग शुरू करें और सुनिश्चित करें कि इस विधि का उपयोग करके पाई गई सभी डायरेक्टरीज़ को ब्रूट-फोर्स करें और स्पाइडरिंग द्वारा खोजी गई सभी डायरेक्टरीज़ को। उपकरण:
Dirb / Dirbuster - काली में शामिल, पुराना (और धीमा) लेकिन कार्यात्मक। स्वचालित-हस्ताक्षरित प्रमाणपत्रों और पुनरावृत्त खोज की अनुमति देता है। अन्य विकल्पों की तुलना में बहुत धीमा।
Dirsearch (python): यह स्वचालित-हस्ताक्षरित प्रमाणपत्रों की अनुमति नहीं देता लेकिन पुनरावृत्त खोज की अनुमति देता है।
Gobuster (go): यह स्वचालित-हस्ताक्षरित प्रमाणपत्रों की अनुमति देता है, इसमें पुनरावृत्त खोज नहीं है।
Feroxbuster - तेज, पुनरावृत्त खोज का समर्थन करता है।
wfuzz
wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - तेज:
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): यह एक स्पाइडर नहीं है बल्कि एक उपकरण है जो पाई गई URL की सूची दी गई है, "डुप्लिकेट" URL को हटाने के लिए।
Scavenger: बर्प एक्सटेंशन जो विभिन्न पृष्ठों के बर्प इतिहास से डायरेक्टरीज़ की एक सूची बनाने के लिए।
TrashCompactor: कार्यक्षमता के साथ डुप्लिकेट URL को हटाएं (JS आयात के आधार पर)।
Chamaleon: यह उपयोग की गई तकनीकों का पता लगाने के लिए wapalyzer का उपयोग करता है और उपयोग करने के लिए वर्डलिस्ट का चयन करता है।
Recommended dictionaries:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नया डायरेक्टरी खोजा जाता है, तो इसे ब्रूट-फोर्स किया जाना चाहिए।
What to check on each file found
Broken link checker: HTMLs के अंदर टूटे हुए लिंक खोजें जो अधिग्रहण के लिए प्रवण हो सकते हैं।
File Backups: एक बार जब आप सभी फ़ाइलें खोज लेते हैं, तो सभी निष्पादन योग्य फ़ाइलों के बैकअप की तलाश करें (".php", ".aspx"...)। बैकअप का नामकरण करने के लिए सामान्य भिन्नताएँ हैं: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp और file.old. आप उपकरण bfac या backup-gen** का उपयोग कर सकते हैं।**
Discover new parameters: आप Arjun, parameth, x8 और Param Miner जैसे उपकरणों का उपयोग करके छिपे हुए पैरामीटर खोज सकते हैं। यदि आप कर सकते हैं, तो आप प्रत्येक निष्पादन योग्य वेब फ़ाइल पर छिपे हुए पैरामीटर खोजने का प्रयास कर सकते हैं।
Arjun सभी डिफ़ॉल्ट वर्डलिस्ट: https://github.com/s0md3v/Arjun/tree/master/arjun/db
Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
Comments: सभी फ़ाइलों की टिप्पणियों की जांच करें, आप क्रेडेंशियल्स या छिपी हुई कार्यक्षमता पा सकते हैं।
यदि आप CTF खेल रहे हैं, तो एक "सामान्य" चाल है जानकारी को छिपाना टिप्पणियों के अंदर पृष्ठ के दाईं ओर (स्रोत कोड को ब्राउज़र के साथ खोलने पर डेटा नहीं देखने के लिए सैकड़ों स्पेस का उपयोग करके)। दूसरी संभावना यह है कि कई नए लाइनों का उपयोग करें और वेब पृष्ठ के नीचे एक टिप्पणी में जानकारी छिपाएं।
API keys: यदि आप कोई API कुंजी पाते हैं, तो विभिन्न प्लेटफार्मों के API कुंजी का उपयोग करने के लिए एक गाइड है: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird
Google API keys: यदि आप कोई API कुंजी पाते हैं जो AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik की तरह दिखती है, तो आप यह जांचने के लिए प्रोजेक्ट gmapapiscanner का उपयोग कर सकते हैं कि कुंजी किस एपीआई तक पहुँच सकती है।
S3 Buckets: स्पाइडरिंग करते समय देखें कि क्या कोई सबडोमेन या कोई लिंक किसी S3 बकेट से संबंधित है। इस मामले में, **बकेट के अनुमतियों की जांच करें।
Special findings
जब आप स्पाइडरिंग और ब्रूट-फोर्सिंग कर रहे होते हैं, तो आप दिलचस्प चीजें पा सकते हैं जिनका आपको ध्यान रखना चाहिए।
Interesting files
CSS फ़ाइलों के अंदर अन्य फ़ाइलों के लिए लिंक की तलाश करें।
यदि आप एक .env पाते हैं तो API कुंजी, DB पासवर्ड और अन्य जानकारी मिल सकती है।
यदि आप API एंडपॉइंट्स पाते हैं तो आपको उन्हें भी परीक्षण करना चाहिए। ये फ़ाइलें नहीं हैं, लेकिन शायद "उनकी तरह" दिखेंगी।
JS फ़ाइलें: स्पाइडरिंग अनुभाग में कई उपकरणों का उल्लेख किया गया था जो JS फ़ाइलों से पथ निकाल सकते हैं। इसके अलावा, यह हर JS फ़ाइल की निगरानी करना दिलचस्प होगा, क्योंकि कुछ अवसरों पर, एक परिवर्तन यह संकेत दे सकता है कि कोड में एक संभावित भेद्यता पेश की गई थी। आप उदाहरण के लिए JSMon** का उपयोग कर सकते हैं।**
Javascript Deobfuscator and Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/
JsFuck deobfuscation (जावास्क्रिप्ट के साथ वर्ण:"[]!+" https://ooze.ninja/javascript/poisonjs/)
TrainFuck:
+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
कई अवसरों पर आपको उपयोग की गई नियमित अभिव्यक्तियों को समझने की आवश्यकता होगी, यह उपयोगी होगा: https://regex101.com/
आप उन फ़ाइलों की भी निगरानी कर सकते हैं जहां फ़ॉर्म का पता लगाया गया था, क्योंकि पैरामीटर में परिवर्तन या नए फ़ॉर्म का प्रकट होना एक संभावित नए संवेदनशील कार्यक्षमता का संकेत दे सकता है।
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
403 & 401 Bypasses502 Proxy Error
यदि कोई पृष्ठ कोड के साथ प्रतिक्रिया करता है, तो यह शायद एक खराब कॉन्फ़िगर किया गया प्रॉक्सी है। यदि आप एक HTTP अनुरोध भेजते हैं जैसे: GET https://google.com HTTP/1.1
(होस्ट हेडर और अन्य सामान्य हेडर के साथ), तो प्रॉक्सी google.com तक पहुँचने की कोशिश करेगा और आप एक SSRF पाएंगे।
NTLM Authentication - Info disclosure
यदि चल रहा सर्वर प्रमाणीकरण के लिए Windows है या आप अपने क्रेडेंशियल्स के लिए एक लॉगिन पाते हैं (और डोमेन नाम के लिए पूछते हैं), तो आप जानकारी का खुलासा कर सकते हैं।
हेडर भेजें: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
और जिस तरह से NTLM प्रमाणीकरण काम करता है, सर्वर "WWW-Authenticate" हेडर के अंदर आंतरिक जानकारी (IIS संस्करण, Windows संस्करण...) के साथ प्रतिक्रिया देगा।
आप nmap प्लगइन "http-ntlm-info.nse" का उपयोग करके इसे स्वचालित कर सकते हैं।
HTTP Redirect (CTF)
यह संभव है कि रेडायरेक्शन के अंदर सामग्री डाली जाए। यह सामग्री उपयोगकर्ता को नहीं दिखाई देगी (क्योंकि ब्राउज़र रेडायरेक्शन को निष्पादित करेगा) लेकिन वहाँ कुछ छिपा हो सकता है।
Web Vulnerabilities Checking
अब जब वेब एप्लिकेशन की एक व्यापक सूची बनाई गई है, तो संभावित भेद्यताओं की जांच करने का समय है। आप चेकलिस्ट यहाँ पा सकते हैं:
Web Vulnerabilities Methodologyवेब वल्न्स के बारे में अधिक जानकारी प्राप्त करें:
Monitor Pages for changes
आप https://github.com/dgtlmoon/changedetection.io जैसे उपकरणों का उपयोग करके पृष्ठों में संशोधनों की निगरानी कर सकते हैं जो संभावित भेद्यताओं को डाल सकते हैं।
यदि आप हैकिंग करियर में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - हम भर्ती कर रहे हैं! (फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है)।
HackTricks Automatic Commands
Last updated