LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
compress.zlib://
και PHP_STREAM_PREFER_STDIO
Ένα αρχείο που ανοίγεται χρησιμοποιώντας το πρωτόκολλο compress.zlib://
με την σημαία PHP_STREAM_PREFER_STDIO
μπορεί να συνεχίσει να γράφει δεδομένα που φτάνουν στη σύνδεση αργότερα στο ίδιο αρχείο.
Αυτό σημαίνει ότι μια κλήση όπως:
Θα στείλει ένα αίτημα ζητώντας το http://attacker.com/file, τότε ο διακομιστής μπορεί να απαντήσει στο αίτημα με μια έγκυρη HTTP απάντηση, να κρατήσει τη σύνδεση ανοιχτή και να στείλει επιπλέον δεδομένα κάποια στιγμή αργότερα που θα γραφούν επίσης στο αρχείο.
Μπορείτε να δείτε αυτές τις πληροφορίες σε αυτό το μέρος του κώδικα php-src στο main/streams/cast.c:
Αυτό το CTF λύθηκε χρησιμοποιώντας το προηγούμενο κόλπο.
Ο επιτιθέμενος θα κάνει τον διακομιστή-στόχο να ανοίξει μια σύνδεση διαβάζοντας ένα αρχείο από τον διακομιστή του επιτιθέμενου χρησιμοποιώντας το compress.zlib
πρωτόκολλο.
Ενώ αυτή η σύνδεση υπάρχει, ο επιτιθέμενος θα εξάγει τη διαδρομή στο προσωρινό αρχείο που δημιουργήθηκε (είναι διαρροή από τον διακομιστή).
Ενώ η σύνδεση είναι ακόμα ανοιχτή, ο επιτιθέμενος θα εκμεταλλευτεί μια LFI φορτώνοντας το προσωρινό αρχείο που ελέγχει.
Ωστόσο, υπάρχει ένας έλεγχος στον διακομιστή ιστού που αποτρέπει τη φόρτωση αρχείων που περιέχουν <?
. Επομένως, ο επιτιθέμενος θα εκμεταλλευτεί μια Race Condition. Στη σύνδεση που είναι ακόμα ανοιχτή, ο επιτιθέμενος θα στείλει το PHP payload ΜΕΤΑ τον έλεγχο του διακομιστή ιστού αν το αρχείο περιέχει τους απαγορευμένους χαρακτήρες αλλά ΠΡΙΝ φορτώσει το περιεχόμενό του.
Για περισσότερες πληροφορίες, ελέγξτε την περιγραφή της Race Condition και του CTF στο https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)