馃槑
WEB
YouTubeTwitterLinkedIn
  • La Biblia del Hacking en Web
    • ADVERTENCIA
    • Conoce a tu academia
    • Conoce a tu instructor
    • Aprende Hacking Web con los laboratorios de PortSwigger
  • SQL Injection
    • 驴SQL Injection?
    • Lab 1: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
    • Lab 2: SQL injection vulnerability allowing login bypass
    • Lab 3: SQL injection attack, querying the database type and version on Oracle
    • Lab 4: SQL injection attack, querying the database type and version on MySQL and Microsoft
    • Lab 5: SQL injection attack, listing the database contents on non-Oracle databases
    • Lab 6: SQL injection attack, listing the database contents on Oracle
  • Cross Site Scripting
    • 驴XSS?
    • Lab 1: Reflected XSS into HTML context with nothing encoded
    • Lab 2: Stored XSS into HTML context with nothing encoded
    • Lab 3: DOM XSS in document.write sink using source location.search
    • Lab 4: DOM XSS in innerHTML sink using source location.search
    • Lab 5: DOM XSS in jQuery anchor href attribute sink using location.search source
  • ClickJacking
    • 驴Clickjacking?
    • Lab 1: Basic clickjacking with CSRF token protection
  • Access control vulnerabilities
    • 驴Control de Acceso?
    • Lab 1: Unprotected admin functionality
    • Lab 3: User role controlled by request parameter
  • Path traversal
    • 驴Path Traversal?
    • Lab 1: File path traversal, simple case
    • Lab 2: File path traversal, traversal sequences blocked with absolute path bypass
    • Lab 3: File path traversal, traversal sequences stripped non-recursively
  • XML external entity (XXE) injection
    • 驴XML external entity?
    • Lab 1: Exploiting XXE using external entities to retrieve files
    • Lab 2: Exploiting XXE to perform SSRF attacks
    • Lab 3: Blind XXE with out-of-band interaction
  • JWT
    • 驴JWT?
    • Lab 1: JWT authentication bypass via unverified signature
    • Lab 2: JWT authentication bypass via flawed signature verification
    • Lab 3: JWT authentication bypass via weak signing key
    • Lab 4: JWT authentication bypass via jwk header injection
    • Lab 5: JWT authentication bypass via jku header injection
  • Server-side request forgery (SSRF)
    • 驴SSRF?
    • Lab 1: Basic SSRF against the local server
  • OS command injection
    • 驴OS Command Injection?
    • Lab 1: OS command injection, simple case
  • Authentication
    • 驴Authentication?
    • Lab 1: Username enumeration via different responses
  • HTTP request smuggling
    • 驴HTTP request smuggling?
    • Lab 1: HTTP request smuggling, confirming a CL.TE vulnerability via differential responses
  • Server-side template injection
    • 驴Server-side template injection?
    • Lab 1: Basic server-side template injection
  • DOM-based vulnerabilities
    • Lab 1: DOM XSS using web messages
    • Lab 2: DOM XSS using web messages and a JavaScript URL
  • WebSockets
    • Lab #1: Manipulating WebSocket messages to exploit vulnerabilities
  • Prototype pollution
    • 驴Prototype Pollution?
    • Lab 1: Client-side prototype pollution via browser APIs
      • Utilizando DOM Invader
    • Lab 2: DOM XSS via client-side prototype pollution
    • Lab 3: DOM XSS via an alternative prototype pollution vector
      • Utilizando DOM Invader
    • Lab 4: Client-side prototype pollution via flawed sanitization
    • Lab 5: Client-side prototype pollution in third-party libraries
    • Lab 6: Privilege escalation via server-side prototype pollution
    • Lab 7: Detecting server-side prototype pollution without polluted property reflection
    • Lab 8: Bypassing flawed input filters for server-side prototype pollution
    • Lab 9: Remote code execution via server-side prototype pollution
    • Lab 10: Exfiltrating sensitive data via server-side prototype pollution
  • GraphQL
    • Lab 1: Accessing private GraphQL posts
  • Web cache poisoning
    • Lab 1: Web cache poisoning with an unkeyed header
  • CORS
    • Lab #2 - CORS vulnerability with trusted null origin
    • Lab 3: CORS vulnerability with trusted insecure protocols
  • API testing
    • Lab #1: Exploiting an API endpoint using documentation
    • Lab #2: Exploiting server-side parameter pollution in a query string
    • Lab #3: Finding and exploiting an unused API endpoint
    • Lab #4: Exploiting a mass assignment vulnerability
    • Lab #5: Exploiting server-side parameter pollution in a REST URL
Con tecnolog铆a de GitBook
En esta p谩gina
  • 驴Qu茅 es la Inyecci贸n de Plantillas del Lado del Servidor (SSTI)?
  • 驴C贸mo Funciona la SSTI?
  • Ejemplo de C贸digo Vulnerable
  • Ejemplo de Explotaci贸n de SSTI
  • Impacto de la SSTI

驴Te fue 煤til?

  1. Server-side template injection

驴Server-side template injection?

驴Qu茅 es la Inyecci贸n de Plantillas del Lado del Servidor (SSTI)?

La inyecci贸n de plantillas del lado del servidor (Server-Side Template Injection, SSTI) es una vulnerabilidad que permite a un atacante inyectar c贸digo malicioso en una plantilla del servidor que luego es interpretada y ejecutada por el motor de plantillas del servidor. Esto puede llevar a la ejecuci贸n remota de c贸digo, robo de datos, y compromisos del sistema. SSTI es particularmente peligrosa debido a su potencial para convertir una simple vulnerabilidad de inyecci贸n en una completa toma de control del servidor.

驴C贸mo Funciona la SSTI?

La SSTI ocurre cuando una aplicaci贸n web incorpora entradas del usuario sin la debida validaci贸n y sanitizaci贸n en una plantilla del lado del servidor. Los motores de plantillas permiten la inserci贸n din谩mica de contenido en las p谩ginas web, y cuando estos motores no manejan adecuadamente las entradas del usuario, se pueden introducir inyecciones maliciosas.

Ejemplo de C贸digo Vulnerable

Consideremos un ejemplo en Python utilizando el motor de plantillas Jinja2:

from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/hello')
def hello():
    name = request.args.get('name', 'World')
    template = '<h1>Hello %s!</h1>' % name
    return render_template_string(template)

En este ejemplo, la entrada del usuario (name) se inserta directamente en la plantilla HTML sin ninguna validaci贸n, lo que puede permitir a un atacante inyectar c贸digo malicioso.

Ejemplo de Explotaci贸n de SSTI

Si un atacante proporciona la siguiente entrada:

{{ 7*7 }}

La plantilla renderizada ser谩:

<h1>Hello 49!</h1>

Esto demuestra que el c贸digo proporcionado por el usuario es evaluado por el motor de plantillas Jinja2.

Una explotaci贸n m谩s avanzada podr铆a incluir:

{{ config.items() }}

Lo que permitir铆a al atacante acceder a la configuraci贸n de la aplicaci贸n.

Impacto de la SSTI

El impacto de la explotaci贸n de SSTI puede ser severo, incluyendo:

  1. Ejecuci贸n Remota de C贸digo (RCE): Un atacante puede ejecutar comandos arbitrarios en el servidor.

  2. Robo de Datos Sensibles: Acceso a variables de entorno, configuraciones, y datos confidenciales.

  3. Compromiso del Sistema: Escalar privilegios y comprometer el servidor.

  4. Destrucci贸n de Datos: Modificar o eliminar datos en el servidor.

AnteriorLab 1: HTTP request smuggling, confirming a CL.TE vulnerability via differential responsesSiguienteLab 1: Basic server-side template injection

脷ltima actualizaci贸n hace 11 meses

驴Te fue 煤til?