Μετάβαση στο περιεχόμενο
  • ChatBox

    ChatBox

    Chatroom Rules

    • Το GreekHacking.Gr είναι ένα ελληνικό forum και επιτρέπεται μόνο η χρήση της Ελληνική Γλώσσας (ούτε greeklish).
    • Δεν επιτρέπονται οι βρισιές και γενικά η χρήση χυδαίας γλώσσας.
    • Απαγορεύεται αυστηρά το πορνογραφικό, προσβλητικό και βίαιο περιεχόμενο.
    • Μην χρησιμοποιείτε κεφαλαία γράμματα η σύμβολα.
Mata

Πως να προστατευτούμε από επίθεση SQL INJECTION [POST METHOD]

Recommended Posts

Mata
Διαχειριστής

Καλησπέρα. Ένα διαφορετικό θέμα για σήμερα με σχέση το Cyber Security και την ασφάλεια συστημάτων διότι είναι πολύ σημαντικό να γνωρίζουμε και την ασφάλεια, παρά να ξέρουμε μόνο να κάνουμε επιθέσεις. Σήμερα σε αυτόν τον οδηγό θα πούμε πως μπορούμε να προστατέψουμε την Βάση δεδομένων μας και τα απόρρητα αρχεία από κάποιον κακόβουλο χάκερ με επίθεση SQL INJECTION σε POST method. Όσοι θέλετε να μάθετε και πως γίνεται μία τέτοιου είδους επίθεση, υπάρχουν κάποιοι οδηγοί στο φόρουμ. Ας μπούμε όμως στο θέμα μας.

Το παράδειγμα θα σας το δείξω σε μία δική μου manual ιστοσελίδα η οποία τρέχει local με την βοήθεια του xampp. Να πω λοιπόν πως άνοιξα έναν apache server και ένα phpmyadmin από πίσω για database. (db = egasiasxol, host = localhost, table = users, columns = username-password). Μπορείτε να δείτε τους κώδικες html και php παρακάτω.

code.thumb.PNG.984c828b9f17c0f762f06f936d60bded.PNG

 

Τι έχουμε στον κώδικα;

Στον κώδικα έχουμε απλά input στην html τα οποία είναι textboxes για τον χρήστη έτσι ώστε να εισχωρίσει το username και το password και άλλο ένα input το οποίο είναι type=submit δηλαδή button έτσι ώστε να γίνει η σύνδεση σε περίπτωση που είναι σωστά τα στοιχεία (Όλα αυτά βρίσκονται σε ένα form στο οποίο χρησιμοποιούμε method=post. 

index.PNG.777a58eb48e15fe974fe51fb020764a6.PNG

Στον php κώδικα επιτρέπουμε στην βάση να επικοινωνήσει μαζί του. Τι σημαίνει αυτό; να διαβάζει μέσα από την βάση το username και το password έτσι ώστε ελέγξει αν είναι σωστά τα στοιχεία για να πάρει πρόσβαση ο χρήστης στο λεγόμενο Dashboard, ή να μην πάρει. 

 $sql = "select * from users where username='$user' and password='$passwd'";

Πάμε λοιπόν να δούμε που είναι το λάθος σε αυτόν τον κώδικα. Η απάντηση είναι πως δεν υπάρχει κάποιο λάθος, απλώς δεν υπάρχουν φίλτρα και έτσι ο χάκερ μπορεί να πάρει πρόσβαση στο σύστημα επειδή ο κώδικας μας δεν έχει φιλτράρει τα Symbols τα οποία μπορεί να χρησιμοποιηθούν ( '  κ.τ.λ). 

Πάμε λοιπόν να δούμε Live την επίθεση αλλά και την ασφάλεια. Πρώτα θα ξεκινήσουμε από την επίθεση.

 

Ανοίγουμε το Burpsuite στο Linux μας, ανοίγουμε και έναν browser στον οποίο έχουμε βάλει σωστά τα proxies για να επικοινωνούν με το burp. proxy -> intercept

 

 burpgoogle.thumb.PNG.dcbc16a345b859ef294bf5b4c081bac7.PNG

 

Να προσέξετε το intercept να είναι στο "ON". Βάζουμε λοιπόν κάποια τυχαία cedentials με ένα "αυτάκι" στο τέλος και στο username και στο password. (π.χ username' , password'). Αφού πατήσουμε το κουμπί σύνδεση το burpsuite θα μας εμφανίσει κάποια αποτελέσματα με POST method.

copytofile.thumb.PNG.74e20c3890bda2f8f15589fe3cddab02.PNG 

 

Πατάμε δεξί κλικ στα αποτελέσματα και επιλέγουμε copy to file έτσι ώστε να τα αποθηκεύσουμε σε αρχείο.

 

save.thumb.PNG.160d866d403141311d47cd42ec5d6089.PNG

 

Αφού πατήσουμε ονομάσουμε το αρχείο (στην περίπτωσή μας grhacking) και πατήσουμε save έτσι ώστε να αποθηκεύσει το αρχείο στο path το οποίο έχουμε επιλέξει, ανοίγουμε το sqlmap το οποίο είναι ένα απίστευτο κατά την γνώμη μου tool  το οποίο θα μας βοηθήσει να κάνουμε αυτοματοποιημένα την επίθεση sql injection. Ανοίγουμε sqlmap και γράφουμε "sqlmap -r (για το αρχείο) grhacking --dbs (για να βρει το database)

sqlmap -r grhacking --dbs

found.thumb.PNG.ed7f1477ea7926ca2d38d26418149e17.PNG

 

POST parameter 'username' might be injectable (Πιθανή Βάση mysql). Για όσους δεν καταλάβατε βρήκε ευάλωτη την βάση μας κάτι το οποίο είναι πάρα πολύ σημαντικό. Γιατί; πάμε να δούμε παρακάτω.

dump.thumb.PNG.662b1c7990b487103119e957d57e2c7c.PNG

 

Αφού λοιπόν γράψουμε κάποιες εντολές για να βρούμε τα κατάλληλα tables και columns έτσι ώστε να τα κάνει dump, βλέπουμε τα αποτελέσματα... Με τα οποία ο χάκερ θα χαρεί αλλά εμείς θα κλαίμε... διότι με αυτά τα στοιχεία παίρνει πρόσβαση στο dashboard. username: mata , password = greekhacking

Πάμε λοιπόν να δούμε πως μπορούμε να προστατέψουμε τα προσωπικά μας δεδομένα από αυτήν την επίθεση. Ξαναπάμε στον κώδικα τον οποίο έδειξα σε προηγούμενο screenshot, και βάζουμε τα φίλτρα. Θα σας εξηγήσω αφού δείτε την εικόνα.

 

prevent.thumb.PNG.65d76cbc70ca4dc96455423b16e0d3ba.PNG

 

Εκεί που έχω βάλει τα slashes είναι το λεγόμενο comment το οποίο ο κώδικας δεν το βλέπει. Οπότε το προσπερνάμε. Δημιουργούμε ένα νέο variable το οποίο είναι το $userprevent και μέσα σε αυτό βάζουμε το φίλτρο mysqli_real_escape_string. Στις παρενθέσεις είναι το connection που το έχω ορίσει ως $conn και το $usr το οποίο έχω ορίσει για το POST του username πιο πάνω "$usr = $_POST['username'];"

Κάνουμε το ίδιο και για το password.

Αφού λοιπόν γίνει αυτό, το αμέσως επόμενο βήμα είναι να εφαρμοστούν τα variables για να δουλέψουν τα φίλτρα για να προστατευτεί η βάση μας. τα εφαρμόζουμε πηγαίνοντας στο $sql variable που έχουμε ορίσει για την επικοινωνία των στοιχείων με το POST method στα textbox τα οποία θα πληρκτρολογήσει ο χρήστης. Σας το έχω δείξει και με βελάκια. (Μπορείτε να δείτε τις διαφορές στο πάνω σκριν που έδειξα με κώδικα και σε αυτό το σκριν).

Πάμε λοιπόν να ξανακάνουμε επίθεση για να δούμε τι θα γίνει πάλι.

 

not_inject.thumb.PNG.1d775d02a3a75a622a0168ef16da16c4.PNG

 

Όπως βλέπουμε το sqlmap δεν μπορεί να ανταποκριθεί διότι έχουμε πλέον βάλει φίλτρα και μας πετάει POST parameter does not seem to be injectable. [WARNING].

Και εννοείτα παρακάτω μας πετάει CRITICAL error και μας απορρίπτει.

 

result.thumb.PNG.a15323b4983c8658f5e600bd9de26193.PNG

 

Αυτός ήταν ο οδηγός για το πως μπορείτε να προστατευτείτε από μία επίθεση SQL INJECTION σε POST method. Κάποια στιγμή θα βγάλω και για το πως να προστατευτείτε από SQL INJECTION επίθεση σε GET method. Ευχαριστώ όσους διαβάσατε μέχρι το τέλος, ελπίζω να μάθατε κάτι από εμένα και ελπίζω να το έγραψα και να το έδειξα όσο πιο αναλυτικά μπορούσα. Καλό Hacking (ηθικό φυσικά). 🙂

 
 
 
dfIK0AV.png.e234aa2149c2b74e2ca0b56e57705d64.png

 

Μοιράσου αυτή την δημοσίευση


Link to post
Share on other sites

Mata
Διαχειριστής
47 λεπτά πριν, L393nd said:

Πολύ καλό @Mata !!!!

🙏🙏🙏

 
 
 
dfIK0AV.png.e234aa2149c2b74e2ca0b56e57705d64.png

 

Μοιράσου αυτή την δημοσίευση


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Απάντηση στο θέμα...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



ChatBox

ChatBox

Chatroom Rules

  • Το GreekHacking.Gr είναι ένα ελληνικό forum και επιτρέπεται μόνο η χρήση της Ελληνική Γλώσσας (ούτε greeklish).
  • Δεν επιτρέπονται οι βρισιές και γενικά η χρήση χυδαίας γλώσσας.
  • Απαγορεύεται αυστηρά το πορνογραφικό, προσβλητικό και βίαιο περιεχόμενο.
  • Μην χρησιμοποιείτε κεφαλαία γράμματα η σύμβολα.
×
×
  • Create New...