Κοινή χρήση τεχνολογίας

Δευτερεύουσα ένεση sql injection

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

δευτερογενής ένεση

Οι δευτερεύουσες ευπάθειες έγχυσης είναι μια μορφή ευπάθειας ασφαλείας που είναι ευρέως διαδεδομένη σε εφαρμογές web. Σε σύγκριση με την ευπάθεια κύριας έγχυσης, η ευπάθεια δευτερεύουσας έγχυσης είναι πιο δύσκολο να εντοπιστεί, αλλά έχει την ίδια ισχύ επίθεσης με την ευπάθεια της κύριας έγχυσης.

Οι χάκερ κατασκευάζουν δεδομένα με τη μορφή υποβολής αιτημάτων πακέτων δεδομένων HTTP στον διακομιστή για επεξεργασία σε πρόγραμμα περιήγησης ή άλλο λογισμικό Το υποβληθέν αίτημα πακέτου δεδομένων μπορεί να περιέχει δηλώσεις SQL ή εντολές που κατασκευάστηκαν από τον χάκερ.
Η εφαρμογή από την πλευρά του διακομιστή θα αποθηκεύσει τις πληροφορίες δεδομένων που υποβάλλονται από τον χάκερ, συνήθως σε μια βάση δεδομένων.
Ο χάκερ στέλνει ένα δεύτερο μήνυμα δεδομένων αιτήματος στον διακομιστή που είναι διαφορετικό από το πρώτο.
Αφού ο διακομιστής λάβει τις πληροφορίες του δεύτερου αιτήματος που υποβλήθηκαν από τον χάκερ, για να επεξεργαστεί το αίτημα, ο διακομιστής θα ζητήσει τις πληροφορίες δεδομένων που είναι ήδη αποθηκευμένες στη βάση δεδομένων και θα τις επεξεργαστεί, προκαλώντας τη δήλωση ή την εντολή SQL που κατασκευάστηκε από τον χάκερ στο πρώτο αίτημα να είναι στην υπηρεσία που εκτελείται στο περιβάλλον του τερματικού.
Ο διακομιστής επιστρέφει πληροφορίες δεδομένων αποτελεσμάτων εκτέλεσης Οι χάκερ μπορούν να χρησιμοποιήσουν τις πληροφορίες δεδομένων αποτελεσμάτων που επιστράφηκαν για να προσδιορίσουν εάν η δευτερεύουσα ευπάθεια έγχυσης έχει εκμεταλλευτεί με επιτυχία.

Συνοπτικά, η δευτερεύουσα ένεση οφείλεται στην αποτυχία φιλτραρίσματος των δεδομένων κατά την αποθήκευσή τους στη βάση δεδομένων Πρώτα, το κατασκευασμένο αίτημα ειδικών χαρακτήρων υποβάλλεται για αποθήκευση στη βάση δεδομένων και, στη συνέχεια, όταν υποβάλλεται το δεύτερο αίτημα, οι χαρακτήρες. υποβλήθηκαν στη βάση δεδομένων για πρώτη φορά η συνάρτηση, σχηματίζοντας μια νέα δήλωση sql που θα εκτελεστεί.Πάρτε για παράδειγμα sqli-labs επίπεδο 24

sqli-labs less-24

1. Κάντε κλικ παρακάτω για να εγγράψετε έναν χρήστη


Το εγγεγραμμένο όνομα χρήστη εδώ είναι admin'#

         

Σε αυτό το σημείο ελέγχουμε τη βάση δεδομένων, οι εγγεγραμμένοι χρήστες έχουν αποθηκευτεί και ο κωδικός πρόσβασης του διαχειριστή είναι DDD

2. Συνδεθείτε με τον καταχωρημένο λογαριασμό και αλλάξτε τον κωδικό πρόσβασης σε ccccc

Αυτή τη στιγμή, θα σας ζητηθεί ότι ο κωδικός πρόσβασης έχει αλλάξει με επιτυχία.

Αυτή τη στιγμή, διαπιστώσαμε ότι ο κωδικός πρόσβασης του διαχειριστή άλλαξε σε ccccc, αλλά ο κωδικός πρόσβασης του εγγεγραμμένου χρήστη admin'# δεν άλλαξε.

Αιτία της ευπάθειας

1. Ειδικοί χαρακτήρες όπως ' και # επιτρέπονται κατά την εγγραφή χρήστη.

2. Στον πηγαίο κώδικα της σελίδας αλλαγής κωδικού πρόσβασης, διαπιστώθηκε ότι υπάρχει μια προφανής ευπάθεια injection.

$sql = "UPDATE users SET PASSWORD='$pass' όπου username='$username' and password='$curr_pass' ";

Όταν συνδεόμαστε στο λογαριασμό admin'# και αλλάξουμε τον κωδικό πρόσβασης, η δήλωση sql γίνεται ως εξής, #Σχολιάστε τον παρακάτω κώδικα, οπότε ο κωδικός πρόσβασης του διαχειριστή χρήστη αλλάζει σε ccccc

$sql = "UPDATE users SET PASSWORD='$pass' όπου username='admin'#' and password='$curr_pass' ";

Αρχικός σύνδεσμος: https://blog.csdn.net/qq_44159028/article/details/114325805