Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`**: यदि आप डोमेन का नाम जानते हैं (_DOMAIN_ इस उदाहरण में) तो यह फ़ंक्शन **उपयोगकर्ता Administrator का SID** हेक्स प्रारूप में लौटाएगा। यह इस तरह दिखेगा `0x01050000000[...]0000f401`, ध्यान दें कि **अंतिम 4 बाइट्स** संख्या **500** हैं **बिग एंडियन** प्रारूप में, जो **उपयोगकर्ता व्यवस्थापक का सामान्य ID** है।\
यह फ़ंक्शन आपको **डोमेन का ID जानने** की अनुमति देगा (अंतिम 4 के अलावा सभी बाइट्स)।
* **`SUSER_SNAME(0x01050000000[...]0000e803)`** : यह फ़ंक्शन **संकेतित ID का उपयोगकर्ता नाम** लौटाएगा (यदि कोई हो), इस मामले में **0000e803** बिग एंडियन == **1000** (आमतौर पर यह पहले नियमित उपयोगकर्ता ID का ID होता है)। फिर आप कल्पना कर सकते हैं कि आप 1000 से 2000 तक उपयोगकर्ता IDs को ब्रूट-फोर्स कर सकते हैं और संभवतः डोमेन के सभी उपयोगकर्ताओं के उपयोगकर्ता नाम प्राप्त कर सकते हैं। उदाहरण के लिए, निम्नलिखित फ़ंक्शन का उपयोग करके:
त्रुटि-आधारित SQL इंजेक्शन आमतौर पर ऐसे निर्माणों के समान होते हैं जैसे `+AND+1=@@version--` और «OR» ऑपरेटर पर आधारित विविधताएँ। ऐसे अभिव्यक्तियों वाले प्रश्न आमतौर पर WAFs द्वारा अवरुद्ध होते हैं। एक बायपास के रूप में, %2b चर का उपयोग करके एक स्ट्रिंग को जोड़ें, जो विशिष्ट फ़ंक्शन कॉल के परिणाम के साथ डेटा प्रकार रूपांतरण त्रुटि को ट्रिगर करता है।
`xp_dirtree` जैसी स्टोर की गई प्रक्रियाएँ, हालांकि माइक्रोसॉफ्ट द्वारा आधिकारिक रूप से दस्तावेजित नहीं की गई हैं, लेकिन उनकी उपयोगिता के कारण अन्य लोगों द्वारा ऑनलाइन वर्णित की गई हैं। ये प्रक्रियाएँ अक्सर नेटवर्क संचालन में उपयोग की जाती हैं MSSQL के भीतर। इन प्रक्रियाओं का उपयोग अक्सर आउट ऑफ बैंड डेटा एक्सफिल्ट्रेशन में किया जाता है, जैसा कि विभिन्न [उदाहरणों](https://www.notsosecure.com/oob-exploitation-cheatsheet/) और [पोस्टों](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/) में प्रदर्शित किया गया है।
उदाहरण के लिए, `xp_dirtree` स्टोर की गई प्रक्रिया का उपयोग नेटवर्क अनुरोध करने के लिए किया जाता है, लेकिन यह केवल TCP पोर्ट 445 तक सीमित है। पोर्ट नंबर को संशोधित नहीं किया जा सकता, लेकिन यह नेटवर्क शेयर से पढ़ने की अनुमति देता है। उपयोग को नीचे दिए गए SQL स्क्रिप्ट में प्रदर्शित किया गया है:
यह ध्यान देने योग्य है कि यह विधि सभी सिस्टम कॉन्फ़िगरेशन पर काम नहीं कर सकती, जैसे कि `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` जो `Windows Server 2016 Datacenter` पर डिफ़ॉल्ट सेटिंग्स के साथ चल रहा है।
इसके अतिरिक्त, `master..xp_fileexist` और `xp_subdirs` जैसी वैकल्पिक स्टोर की गई प्रक्रियाएँ हैं जो समान परिणाम प्राप्त कर सकती हैं। `xp_fileexist` पर और विवरण इस [TechNet लेख](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx) में पाया जा सकता है।
स्पष्ट रूप से आप **`xp_cmdshell`** का उपयोग करके **कुछ ऐसा निष्पादित** कर सकते हैं जो **SSRF** को ट्रिगर करता है। अधिक जानकारी के लिए **पृष्ठ में संबंधित अनुभाग पढ़ें**:
CLR UDF (कॉमन लैंग्वेज रनटाइम यूजर डिफाइंड फ़ंक्शन) बनाना, जो किसी भी .NET भाषा में लिखा गया कोड है और DLL में संकलित किया गया है, जिसे कस्टम फ़ंक्शंस को निष्पादित करने के लिए MSSQL के भीतर लोड किया जाना है, एक प्रक्रिया है जो `dbo` एक्सेस की आवश्यकता होती है। इसका मतलब है कि यह आमतौर पर केवल तब संभव है जब डेटाबेस कनेक्शन `sa` के रूप में या एक व्यवस्थापक भूमिका के साथ बनाया गया हो।
इस बाइनरी को MSSQL में CLR असेंबली के रूप में लोड करने की सुविधा के लिए [इस Github रिपॉजिटरी](https://github.com/infiniteloopltd/SQLHttp) में एक Visual Studio प्रोजेक्ट और स्थापना निर्देश प्रदान किए गए हैं, जिससे MSSQL के भीतर HTTP GET अनुरोधों को निष्पादित करना संभव हो जाता है।
इस कार्यक्षमता का मूल `http.cs` फ़ाइल में संकुचित है, जो GET अनुरोध को निष्पादित करने और नीचे दिखाए अनुसार सामग्री प्राप्त करने के लिए `WebClient` वर्ग का उपयोग करती है:
`CREATE ASSEMBLY` SQL कमांड को निष्पादित करने से पहले, सर्वर की विश्वसनीय असेंबली की सूची में असेंबली के SHA512 हैश को जोड़ने के लिए निम्नलिखित SQL स्निपेट चलाने की सलाह दी जाती है (जिसे `select * from sys.trusted_assemblies;` के माध्यम से देखा जा सकता है):
एकल क्वेरी में तालिका की पूरी सामग्री निकालने के लिए एक संक्षिप्त विधि `FOR JSON` क्लॉज का उपयोग करना है। यह दृष्टिकोण `FOR XML` क्लॉज की तुलना में अधिक संक्षिप्त है, जिसे "raw" जैसे विशेष मोड की आवश्यकता होती है। संक्षिप्तता के लिए `FOR JSON` क्लॉज को प्राथमिकता दी जाती है।
In situations where error-based vectors are used, it's crucial to provide an alias or a name. This is because the output of expressions, if not provided with either, cannot be formatted as JSON. Here's an example of how this is done:
For users granted the `VIEW SERVER STATE` permission on the server, it's possible to see all executing sessions on the SQL Server instance. However, without this permission, users can only view their current session. The currently executing SQL query can be retrieved by accessing sys.dm_exec_requests and sys.dm_exec_sql_text:
According to [**this blog post**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/) it's possible to stack queries in MSSQL without using ";":
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.