20 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{#include ../../banners/hacktricks-training.md}}
## Μέθοδος CONNECT
Στη γλώσσα προγραμματισμού Go, μια κοινή πρακτική κατά την επεξεργασία αιτημάτων HTTP, συγκεκριμένα χρησιμοποιώντας τη βιβλιοθήκη `net/http`, είναι η αυτόματη μετατροπή της διαδρομής του αιτήματος σε μια τυποποιημένη μορφή. Αυτή η διαδικασία περιλαμβάνει:
- Διαδρομές που τελειώνουν με μια κάθετο (`/`) όπως `/flag/` ανακατευθύνονται στην αντίστοιχη χωρίς κάθετο, `/flag`.
- Διαδρομές που περιέχουν ακολουθίες διαδρομής καταλόγου όπως `/../flag` απλοποιούνται και ανακατευθύνονται στο `/flag`.
- Διαδρομές με μια τελεία στο τέλος όπως στο `/flag/.` ανακατευθύνονται επίσης στη καθαρή διαδρομή `/flag`.
Ωστόσο, μια εξαίρεση παρατηρείται με τη χρήση της μεθόδου `CONNECT`. Σε αντίθεση με άλλες μεθόδους HTTP, η `CONNECT` δεν ενεργοποιεί τη διαδικασία κανονικοποίησης διαδρομής. Αυτή η συμπεριφορά ανοίγει μια πιθανή οδό για την πρόσβαση σε προστατευμένους πόρους. Χρησιμοποιώντας τη μέθοδο `CONNECT` μαζί με την επιλογή `--path-as-is` στο `curl`, μπορεί κανείς να παρακάμψει την τυπική κανονικοποίηση διαδρομής και ενδεχομένως να φτάσει σε περιορισμένες περιοχές.
Η παρακάτω εντολή δείχνει πώς να εκμεταλλευτεί κανείς αυτή τη συμπεριφορά:
```bash
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](https://github.com/golang/go/blob/9bb97ea047890e900dae04202a231685492c4b18/src/net/http/server.go#L2354-L2364)
{{#include ../../banners/hacktricks-training.md}}