Golang

Support HackTricks

Μέθοδος CONNECT

Στη γλώσσα προγραμματισμού Go, μια κοινή πρακτική κατά την επεξεργασία αιτημάτων HTTP, συγκεκριμένα χρησιμοποιώντας τη βιβλιοθήκη net/http, είναι η αυτόματη μετατροπή της διαδρομής του αιτήματος σε ένα τυποποιημένο μορφότυπο. Αυτή η διαδικασία περιλαμβάνει:

  • Διαδρομές που τελειώνουν με μια κάθετο (/) όπως /flag/ ανακατευθύνονται στην αντίστοιχη χωρίς κάθετο, /flag.

  • Διαδρομές που περιέχουν ακολουθίες διαδρομής καταλόγου όπως /../flag απλοποιούνται και ανακατευθύνονται στο /flag.

  • Διαδρομές με μια τελεία στο τέλος όπως /flag/. ανακατευθύνονται επίσης στη καθαρή διαδρομή /flag.

Ωστόσο, μια εξαίρεση παρατηρείται με τη χρήση της μεθόδου CONNECT. Σε αντίθεση με άλλες μεθόδους HTTP, η CONNECT δεν ενεργοποιεί τη διαδικασία κανονικοποίησης της διαδρομής. Αυτή η συμπεριφορά ανοίγει μια πιθανή οδό για την πρόσβαση σε προστατευμένους πόρους. Χρησιμοποιώντας τη μέθοδο CONNECT μαζί με την επιλογή --path-as-is στο curl, μπορεί κανείς να παρακάμψει την τυπική κανονικοποίηση διαδρομής και ενδεχομένως να φτάσει σε περιορισμένες περιοχές.

Η παρακάτω εντολή δείχνει πώς να εκμεταλλευτεί κανείς αυτή τη συμπεριφορά:

curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag

https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go#L2354-L2364

Υποστήριξη HackTricks

Last updated