OWASP Top 10 — Πρακτικό εργαστήριο
Παίρνετε το DVWA, το Juice Shop και το WebGoat, και τα
τρία εκκινημένα με ένα μόνο docker compose. Ρίχνετε τρεις
ευπάθειες τριών διαφορετικών κατηγοριών του Top 10. Για την καθεμία:
αίτημα, απάντηση, απόδειξη αντικτύπου. Bonus: μια αλυσίδα που
συνδέει τουλάχιστον δύο από αυτές.
Υπολογίστε: 3 ώ.
Παραδοτέο: ~/labs/rapport/owasp.md με τρεις πλήρεις καρτέλες +
~/labs/preuves/ με όλα τα τεχνουργήματα.
Αυτές οι επιθέσεις εκτελούνται αποκλειστικά εναντίον του DVWA, του Juice Shop, του WebGoat ή ενός στόχου υπό ρητό rules of engagement. Καμία βολή προς τα έξω. Αυτό δεν είναι διαπραγματεύσιμο.
Προαπαιτούμενα
Το Docker Desktop λειτουργικό (βλ. ενότητα 01). Καμία άλλη λήψη: το compose αναλαμβάνει τα πάντα.
Το Burp Suite Community εγκατεστημένο στον host σας (ελεύθερη λήψη: portswigger.net). Ο proxy του host αναχαιτίζει τα αιτήματα του browser σας προς τα containers, ακριβώς όπως στην πραγματική ζωή.
Το Firefox συνιστάται: πιο ανεκτικό με προσαρμοσμένο CA από το Chrome/Edge.
Βήμα 1 — Εκκίνηση του lab (3 λεπτά)
cd labs/docker/module-07-owasp
docker compose up -d
Τέσσερα containers ξεκινούν. Υπολογίστε περίπου 60 δευτερόλεπτα για να είναι έτοιμο το WebGoat (Spring, βαρύ).
Ελέγξτε την υγεία:
cd ..
./verifier-lab.sh module-07-owasp # bash / macOS / Linux / WSL
.\verifier-lab.ps1 module-07-owasp # PowerShell
Ανοίξτε τους τρεις στόχους στον browser σας (μέσω του host, δημοσιευμένες θύρες):
- DVWA — http://localhost:4280 —
admin/password, μετά Create / Reset Database - Juice Shop — http://localhost:3000 — δεν απαιτείται λογαριασμός, εγγραφείτε για τις αυθεντικοποιημένες προκλήσεις
- WebGoat — http://localhost:8888/WebGoat — εγγραφείτε, συνδεθείτε
Ένας φάκελος αποδείξεων στην πλευρά του επιτιθέμενου:
docker compose exec attaquant bash
mkdir -p ~/labs/{preuves,rapport}
cd ~/labs
Ορισμός — γιατί τρεις στόχοι και όχι απλώς Juice Shop ή DVWA
Κάθε στόχος αντιπροσωπεύει μια εποχή και ένα διαφορετικό stack της ανάπτυξης web, και ο καθένας εκθέτει μια οικογένεια ελαττωμάτων που οι άλλοι δύο δεν δείχνουν το ίδιο καλά.
Το DVWA (Damn Vulnerable Web Application) είναι γραμμένο σε PHP στο στυλ του 2005-2010: mysql_query, απλά cookies, κανένα framework. Είναι το καλύτερο έδαφος για να κατανοήσετε τα θεμελιώδη ελαττώματα — κλασική SQL injection, αντανακλαστικό XSS, file inclusion, upload χωρίς φιλτράρισμα. Βλέπετε τον πηγαίο κώδικα, βλέπετε το patch. Η δυσκολία ρυθμίζεται (Low/Medium/High/Impossible), κάτι που καθιστά τη μάθηση βαθμιαία.
Το Juice Shop είναι γραμμένο σε Node.js/Angular, το αρχέτυπο της
σύγχρονης εφαρμογής web: REST API, JWT, SPA, backend Express, βάση
SQLite. Τα ελαττώματα είναι αυτά που βρίσκουμε το 2026 σε startups —
IDOR στο /api/basket, αποθηκευμένα XSS μέσω του API, κακώς
υπογεγραμμένο JWT, NoSQL injection, σπασμένος οριζόντιος έλεγχος
πρόσβασης. Είναι επίσης παιχνιδιάρικο: ο πίνακας βαθμολογίας κρατά
ενημερωμένες τις προκλήσεις που λύσατε.
Το WebGoat είναι γραμμένο σε Java/Spring, το πιο κοινό stack στις μεγάλες επιχειρήσεις. Προσφέρει καθοδηγούμενα παιδαγωγικά σενάρια: κάθε μάθημα περιγράφει το πρόβλημα, παρέχει το πλαίσιο κώδικα, και επικυρώνει την εκμετάλλευσή σας. Εκεί εμβαθύνουμε στις λιγότερο ορατές κατηγορίες — κακώς φτιαγμένη κρυπτογράφηση (A02), σπασμένη αυθεντικοποίηση (A07), επικίνδυνη αποσειριοποίηση, έλεγχος πρόσβασης σε API JSON.
Μαζί, οι τρεις στόχοι καλύπτουν το σύνολο των δέκα κατηγοριών του OWASP Top 10 2021. Γι' αυτό τους εκκινούμε όλους ταυτόχρονα: επιλέγετε την καλύτερη εφαρμογή για κάθε άσκηση, αντί να στρεβλώνετε ένα lab για να το αναγκάσετε να εκθέσει ένα ελάττωμα που δεν γνωρίζει.
Βήμα 2 — Ρύθμιση του Burp (5 λεπτά)
Στον host σας:
- Εκτελέστε το Burp Suite Community, επιλέξτε Temporary project, Use Burp defaults.
- Καρτέλα Proxy → Options, ελέγξτε ότι το Burp ακούει στο
127.0.0.1:8080. - Στο Firefox: Preferences → Network Settings → Manual proxy
configuration:
- HTTP Proxy:
127.0.0.1, Port:8080 - Επιλέξτε Also use this proxy for HTTPS
- HTTP Proxy:
- Ανοίξτε το http://burpsuite στο Firefox, κατεβάστε και εισάγετε το πιστοποιητικό CA (μέσω Settings → Certificates → View certificates → Import).
Γρήγορη δοκιμή: στο Proxy → Intercept, ενεργοποιήστε την αναχαίτιση. Ανανεώστε το http://localhost:4280 στο Firefox. Το Burp αναχαιτίζει, κάνετε κλικ στο Forward, η σελίδα εμφανίζεται.
Ορισμός — ο ρόλος του proxy και γιατί το Burp είναι απαραίτητο
Ένας proxy HTTP τοποθετείται ανάμεσα στον browser σας και τον διακομιστή. Κάθε αίτημα που εκπέμπει το Firefox περνά πρώτα από το Burp, που σας το δείχνει, σας αφήνει να το τροποποιήσετε, και μετά το προωθεί. Κάθε απάντηση κάνει την αντίστροφη διαδρομή. Έχετε πλήρη πρόσβαση σε ό,τι συμβαίνει στο καλώδιο, συμπεριλαμβανομένων των κεφαλίδων HTTP, των cookies, των σωμάτων αιτήματος/απάντησης.
Χωρίς αυτό το επίπεδο ελέγχου, τα μισά ελαττώματα web είναι αόρατα. Το
IDOR στο /api/basket/2 απαιτεί την επανάληψη ενός αιτήματος
αλλάζοντας έναν αριθμό. Η SQL injection απαιτεί την παρατήρηση του
ακριβούς μηνύματος σφάλματος που επιστρέφει ο διακομιστής. Ο έλεγχος
πρόσβασης απαιτεί την παραποίηση ενός cookie. Καμία από αυτές τις
ενέργειες δεν είναι εφικτή από κανονικό browser — αλλά όλες είναι
τετριμμένες από το Burp.
Το Burp Suite Community είναι δωρεάν και αρκεί για αυτό το εργαστήριο. Η έκδοση Pro προσθέτει αυτόματο scanner (Active Scan) και Intruder χωρίς περιορισμό ρυθμού, απαραίτητα σε επαγγελματική αποστολή. Η συλλογιστική, όμως, είναι ίδια και στις δύο εκδόσεις. Αποκτήστε τη συνήθεια στο Community: θα νιώσετε άνετα στο Pro από την πρώτη μέρα.
Βήμα 3 — Επιλογή 3 κατηγοριών (10 λεπτά)
Πρέπει να καλύψετε 3 διαφορετικές κατηγορίες από αυτές τις έξι (τις πιο διαμορφωτικές):
| Κατηγορία | Συνιστώμενο έδαφος | Σημειώσεις |
|---|---|---|
| A01 — Έλεγχος πρόσβασης (IDOR ή κάθετος) | Juice Shop /api/basket/* | Καθαρό IDOR, πολύ ορατό στο Burp. |
| A03 — SQL injection | DVWA SQL Injection | Κλασικό με sqlmap, βαθμιαία δυσκολία. |
| A03 — Αποθηκευμένο XSS | Juice Shop Customer Feedback | Απόδειξη αντικτύπου μέσω redirect ή keylogger. |
| A05 — Κακή ρύθμιση | DVWA (κεφαλίδες, dir listing) | Βρείτε το /config/config.inc.php. |
| A07 — Ταυτοποίηση/αυθεντικοποίηση | Juice Shop /rest/user/login JWT | JWT alg=none ή αδύναμο κλειδί. |
| A10 — SSRF / LFI | WebGoat Server-Side Request Forgery | Καθοδηγούμενο σενάριο, callback μέσω WebWolf. |
Σημειώστε την επιλογή σας στην αρχή του rapport/owasp.md, με μία
φράση αιτιολόγησης ανά κατηγορία. Η αιτιολόγηση είναι αυτό που δείχνει
ότι σκέφτεστε την επίθεσή σας, όχι απλώς ότι πέφτετε πάνω σε ό,τι
βρείτε.
Βήμα 4 — Επίθεση, κατηγορία 1 (60 λεπτά)
Ας πάρουμε ένα συγκεκριμένο παράδειγμα: A03 — SQL injection στο DVWA.
- Ανοίξτε το http://localhost:4280, συνδεθείτε, ρυθμίστε Security = Low.
- Ανοίξτε το SQL Injection στο μενού.
- Στο πεδίο
User ID:, στείλτε1. Παρατηρήστε την απάντηση: όνομα- παρατσούκλι.
- Στείλτε
1' OR '1'='1. Όλος ο πίνακας εμφανίζεται — υπογραφή SQLi.
Στο Burp, στείλτε το αίτημα στο Repeater (Ctrl+R), μετά στο
Intruder για να δοκιμάσετε πολλά payloads. Παράλληλα, από τον
επιτιθέμενο Kali:
docker compose exec attaquant bash
sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="security=low; PHPSESSID=$COOKIE_DVWA" \
--batch --dump -D dvwa -T users
Ανακτήστε το cookie PHPSESSID από τα DevTools του Firefox. Το
sqlmap εντοπίζει αυτόματα την injection, κάνει dump τον πίνακα
dvwa.users, σπάει τα hashes MD5 των κωδικών.
Απόδειξη αντικτύπου: το περιεχόμενο του dvwa.users (5
λογαριασμοί), ο κωδικός admin σε απλό κείμενο («password»), και ένα
screenshot της εντολής sqlmap που τελειώνει με [INFO] the back-end
DBMS is MySQL.
Αποθηκεύστε το ίχνος:
sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="security=low; PHPSESSID=$COOKIE_DVWA" \
--batch --dump -D dvwa -T users --output-dir=preuves/sqli
Μετά, στο rapport/owasp.md, συμπληρώστε την καρτέλα:
## Ευπάθεια — A03: SQL injection στο DVWA /vulnerabilities/sqli
### Πλαίσιο
- URL: http://dvwa/vulnerabilities/sqli/?id=1
- Ρόλος: συνδεδεμένος χρήστης (οποιοσδήποτε)
- Δυσκολία DVWA: Low
### POC (τεχνική απόδειξη)
- Αίτημα που στάλθηκε:
```http
GET /vulnerabilities/sqli/?id=1' OR '1'='1&Submit=Submit HTTP/1.1
Host: dvwa
Cookie: security=low; PHPSESSID=xxxx
```
- Απάντηση (απόσπασμα): πέντε γραμμές επιστράφηκαν αντί για μία,
αποδεικνύοντας ότι η παράμετρος `id` συνενώνεται σε μια ρήτρα
`WHERE` χωρίς διαφυγή.
### Απόδειξη αντικτύπου
- Payload sqlmap: πλήρες dump του `dvwa.users`
- Αποτέλεσμα: 5 λογαριασμοί ανακτήθηκαν, μεταξύ των οποίων ο `admin`
σε απλό κείμενο (`password`), ο `gordonb` (`abc123`), ο `1337`
(`charley`).
- Τεχνουργήματα: `preuves/sqli/dump/dvwa/users.csv`, `preuves/sqli/log`
### Σύσταση
- Άμεσα: περάστε τις παραμέτρους μέσω προετοιμασμένων ερωτημάτων
(`mysqli::prepare`).
- Βάθος: στατικός έλεγχος του κώδικα PHP, προσθήκη WAF εφαρμογής,
εκπαίδευση των προγραμματιστών.
Κάθε ενότητα είναι υποχρεωτική. Χωρίς απόδειξη αντικτύπου, η καρτέλα δεν αξίζει τίποτα.
Βήμα 5 — Κατηγορία 2 (60 λεπτά)
Ίδια απαίτηση, διαφορετική κατηγορία. Παράδειγμα: A01 — IDOR στο Juice Shop.
- Εγγραφείτε στο http://localhost:3000/#/register
(
user1@juice.local/Pentest1!). - Συνδεθείτε, προσθέστε ένα προϊόν στο καλάθι.
- Ανοίξτε το Burp HTTP history, βρείτε το αίτημα
GET /rest/basket/6(το ID διαφέρει ανάλογα με τον χρήστη σας). - Ξαναπαίξτε μέσω του Repeater αλλάζοντας
/rest/basket/6→/rest/basket/1. Αποκτάτε το καλάθι του admin.
Απόδειξη αντικτύπου: το περιεχόμενο JSON του καλαθιού 1 (πιθανώς
πολλά ακριβά προϊόντα), και κυρίως το γεγονός ότι δεν γίνεται καμία
επαλήθευση ανάμεσα στο token JWT του user1 και τον κάτοχο του καλαθιού
1.
Αυτοματοποιήστε από την πλευρά του επιτιθέμενου:
for i in 1 2 3 4 5 6 7 8 9 10; do
curl -s "http://juice-shop:3000/rest/basket/$i" \
-H "Authorization: Bearer $JWT" \
| jq . > preuves/idor/basket-$i.json
done
Ανακτάτε δέκα καλάθια δέκα διαφορετικών χρηστών σε τρία δευτερόλεπτα. Είναι ο ορισμός ενός αλυσιδώσιμου IDOR.
Βήμα 6 — Κατηγορία 3 (60 λεπτά)
Ακόμη διαφορετική. Παράδειγμα: A07 — JWT alg=none στο Juice
Shop.
- Ανακτήστε το τρέχον JWT σας μέσω του Burp (στην κεφαλίδα
Authorization). - Αποκωδικοποιήστε το στο https://jwt.io/#debugger-io. Header
{"alg":"HS256"}, payload με το email σας. - Τροποποιήστε το header σε
{"alg":"none"}, αντικαταστήστε το email του payload μεadmin@juice-sh.op, αφαιρέστε την υπογραφή (απλώςheader.payload.). - Ξαναπαίξτε μέσω του Burp εισάγοντας αυτό το τροποποιημένο token.
Στις ευάλωτες εκδόσεις του Juice Shop, λειτουργεί: είστε admin. Στις διορθωμένες εκδόσεις, αποτυγχάνει — η τεκμηρίωση της αποτυχίας είναι επίσης απόδειξη.
Απόδειξη αντικτύπου: screenshot της διεπαφής admin
(/#/administration), ή της ρητής άρνησης με το πλήρες ίχνος για την
αναφορά σας.
Ορισμός — JWT και η παγίδα του alg=none
Ένα JSON Web Token (JWT) είναι μια συμπαγής συμβολοσειρά τριών μερών χωρισμένων με τελείες: ένα header JSON, ένα payload JSON, και μια υπογραφή. Η υπογραφή εγγυάται ότι κανείς δεν τροποποίησε το περιεχόμενο — υπολογίζεται από τον διακομιστή με ένα μυστικό κλειδί, και επαληθεύεται σε κάθε αίτημα.
Το header περιέχει ένα πεδίο alg που δηλώνει τον αναμενόμενο
αλγόριθμο υπογραφής: HS256, RS256, ES384… Η αρχική προδιαγραφή
προέβλεπε επίσης την τιμή none, που προοριζόταν να χρησιμοποιείται
μόνο σε πλαίσια όπου η υπογραφή είναι περιττή (ήδη κρυπτογραφημένη από
ανώτερο κανάλι). Στην πράξη, πολλές βιβλιοθήκες υλοποίησαν τον έλεγχο
υπογραφής εμπιστευόμενες το πεδίο alg του header — αν ο πελάτης
λέει alg=none, η βιβλιοθήκη δεν ελέγχει τίποτα.
Αποτέλεσμα: οποιοσδήποτε μπορεί να πλαστογραφήσει ένα token
τροποποιώντας το payload, γράφοντας alg=none στο header, και
αφαιρώντας την υπογραφή. Ο διακομιστής δέχεται το token ως έγκυρο και
σας αυθεντικοποιεί με οποιαδήποτε ταυτότητα.
Το ελάττωμα είναι γνωστό από το 2015 και διορθωμένο σε όλες τις
σύγχρονες βιβλιοθήκες, αλλά επιμένει ακόμη σε παλαιότερες εφαρμογές ή
προσαρμοσμένες ρυθμίσεις. Είναι επίσης το καλύτερο παράδειγμα για να
απεικονίσουμε την αρχή «ποτέ μην εμπιστεύεστε την πλευρά του πελάτη
για να πει τι είναι». Ο διακομιστής πρέπει να επιβάλλει τον
αλγόριθμο, να αγνοεί εντελώς το πεδίο alg του εισερχόμενου token, και
να χρησιμοποιεί μόνο την εσωτερική του ρύθμιση για τον έλεγχο.
Βήμα 7 — Η αλυσίδα (30 λεπτά)
Μία ελάχιστη αλυσίδα, που συνδυάζει δύο ευπάθειες που βρήκατε, παράγοντας αντίκτυπο μεγαλύτερο από το άθροισμα των μερών.
Παραδείγματα στέρεων αλυσίδων:
- Αποθηκευμένο XSS → κλοπή cookie συνεδρίας admin → κατάληψη ελέγχου admin (Juice Shop Customer Feedback + πάνελ admin Juice Shop)
- IDOR → απαρίθμηση όλων των email → password spraying →
παραβίαση 10 λογαριασμών (Juice Shop
/api/users+/rest/user/login) - SQLi → dump του αρχείου ρύθμισης → κλειδί JWT → πλαστογράφηση token admin (DVWA + Juice Shop, επαναχρησιμοποιώντας το κλειδί αν το ανακτήσετε)
- LFI → ανάγνωση του
/etc/passwdμετά του/proc/self/environ→ ανάκτηση μυστικού εφαρμογής → πλαστογράφηση JWT - SSRF → ανάγνωση διαπιστευτηρίων AWS μέσω metadata → κατάληψη cloud (σενάριο WebGoat + υπενθυμίσεις ενότητας 11)
Τεκμηριώστε την αλυσίδα στο rapport/chaine.md:
# Αλυσίδα επίθεσης — <σύντομος τίτλος>
## Βήμα 1 — <ελάττωμα A>
Σύντομη περιγραφή, αναφέρετε το τεχνούργημα που χρησιμοποιήθηκε.
## Βήμα 2 — <ελάττωμα B>
Ομοίως.
## Βήμα 3 — <συνδυασμένη εκμετάλλευση>
Πώς η έξοδος του A χρησίμευσε ως είσοδος στο B.
## Συνδυασμένος αντίκτυπος
Μια δυνατή φράση, ποσοτικοποιημένη αν είναι δυνατόν ("παραβίαση 10 λογαριασμών χρηστών σε 3 λεπτά").
## Γιατί είναι πιο σοβαρό από το άθροισμα των μερών
Μια φράση: τι δεν θα επέτρεπε το καθένα μεμονωμένα.
Είναι το πιο πολύτιμο κομμάτι σε τεχνική συνέντευξη: να δείξετε ότι ξέρετε να αλυσιδώνετε.
Βήμα 8 — Πίνακας σύνθεσης (15 λεπτά)
Προσθέστε στην αναφορά έναν συνοπτικό πίνακα:
| Κατηγορία | Τίτλος | Σοβαρότητα | Απόδειξη | Αλυσιδώσιμο |
| --- | --- | --- | --- | --- |
| A03 | SQLi στο DVWA /vulnerabilities/sqli | Κρίσιμη | preuves/sqli/ | Ναι, με A07 |
| A01 | IDOR στο /rest/basket (Juice Shop) | Υψηλή | preuves/idor/ | Ναι, με A03 |
| A07 | JWT alg=none (Juice Shop) | Κρίσιμη | preuves/jwt/ | Ναι, με A01 |
Πλέγμα αυτοαξιολόγησης
- Τρεις διαφορετικές κατηγορίες καλυμμένες.
- Κάθε καρτέλα: πλαίσιο + POC + απόδειξη αντικτύπου + σύσταση.
- Όλα τα αιτήματα/απαντήσεις εξαγόμενα από το Burp στο
preuves/. - Καμία καρτέλα δεν περιορίζεται σε ένα
alert(1)ή σε έναid=1'--. - Μια αλυσίδα τεκμηριωμένη στο
chaine.mdμε τουλάχιστον δύο ελαττώματα. - Πλήρης πίνακας σύνθεσης.
- Καμία μαζική εξαγωγή δεδομένων (τήρηση του RoE του εργαστηρίου).
- Όλες οι επιθέσεις σε εξουσιοδοτημένους στόχους — μόνο DVWA, Juice Shop, WebGoat.
Προαιρετική επέκταση — Γράψτε ένα template Nuclei
Πάρτε την πιο απλή ευπάθεια που βρήκατε. Γράψτε ένα template Nuclei YAML που την εντοπίζει:
id: juice-shop-idor-basket
info:
name: Juice Shop - IDOR on /rest/basket
author: <εσείς>
severity: high
http:
- method: GET
path:
- '{{BaseURL}}/rest/basket/1'
headers:
Authorization: "Bearer {{token}}"
matchers:
- type: word
words:
- '"UserId":1'
Δοκιμάστε από το container επιτιθέμενου:
nuclei -u http://juice-shop:3000 -t votre-template.yaml
Ένα λειτουργικό template Nuclei είναι το ισοδύναμο ενός άρθρου blog — είναι αυτό που βάζουμε σε ένα portfolio.
Τι μπλοκάρει γενικά
| Σύμπτωμα | Αιτία | Διόρθωση |
|---|---|---|
| Το Burp δεν βλέπει τίποτα | Proxy μη ρυθμισμένο ή HTTPS μη αναχαιτισμένο | Ελέγξτε 127.0.0.1:8080, εισάγετε το CA μέσω http://burpsuite. |
| Το sqlmap λέει not injectable | Λάθος σημείο injection | Διευκρινίστε -p id, προσαρμόστε --level=3 --risk=2. |
| Το payload XSS φιλτράρεται | Πολύ υψηλή δυσκολία | Επιστρέψτε σε Low στο DVWA για να καταλάβετε, μετά ανεβάστε. |
Το JWT alg=none απορρίπτεται | Διορθωμένη έκδοση | Τεκμηριώστε ως παιδαγωγική αποτυχία — είναι επίσης απόδειξη. |
| Το SSRF δεν επιστρέφει τίποτα | Η εφαρμογή φιλτράρει τις ιδιωτικές IP | Δοκιμάστε 127.0.0.1, μετά localhost, μετά [::1], μετά 2130706433 (δεκαδικό). |
| Το WebGoat χάνει την πρόοδο | Ληγμένη συνεδρία | Ξανασυνδεθείτε, ξαναπαίξτε. |
| DVWA "Database error" | Βάση μη αρχικοποιημένη | setup.php → Create/Reset Database. |
Το docker compose exec attaquant αποτυγχάνει | Container δεν έχει ξεκινήσει | docker compose ps, docker compose up -d attaquant. |
Τι κερδίζετε από αυτό το εργαστήριο
- Τρεις ευπάθειες πράγματι εκμεταλλευμένες, με αποδείξεις.
- Μια αλυσίδα που δείχνει τον τρόπο σκέψης σας.
- Μια αναφορά δομημένη όπως αυτή ενός pentest πελάτη.
- Την ικανότητα να αναπαράγετε αυτές τις επιθέσεις σε τεχνική συνέντευξη, με το Docker Desktop ως μοναδική εξάρτηση.
- Μια έκθεση σε τρία διαφορετικά stacks web (PHP legacy, Node σύγχρονο, Java Spring) — τους τρεις κόσμους που θα συναντήσετε στην καριέρα σας.
Επόμενο βήμα: το κουίζ της ενότητας. Μετά μπαίνουμε στην ενότητα 8 — Metasploit — όπου αυτοματοποιούμε και αλυσιδώνουμε σε μεγάλη κλίμακα.