mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
20 lines
2.4 KiB
Markdown
20 lines
2.4 KiB
Markdown
{{#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}}
|