georgebathens Δημοσ. 9 Οκτωβρίου 2010 Δημοσ. 9 Οκτωβρίου 2010 Θα ήθελα να κάνω 2 ερωτήσεις σχετικά με την ασφάλεια απο επιθέσεις τύπου sql injection. Ισως να σας φανούν λίγο αστεία μερικά πράγματα που ρωτάω αλλα είμαι σχετικά νέος στο χώρο. 1) Μήπως όλο το κακό ξεκινάει απο το να δίνεται η δυνατότητα στον οποιοδήποτε χρήστη να βλέπει το admin login panel ? Θέλω να πω οτι σχεδόν σε κάθε site το admin login βρίσκεται πολύ ευκολα μέσω του Url πχ http://www.site.gr/admin ή http://www.site.gr/administrator Εαν βάζαμε το admin login σε κάποια άλλη τοποθεσία πχ http://www.site.gr/otinanai θα μπορούσε κάποιος να το βρει χωρίς να το μαντέψει ? 2) Προσπαθώ να κάνω ένα απλό sql injection στη βάση μου και κάνω κάποιες δοκιμές. ( MySQL Server version 5.0.26 ) H βάση μου είναι ετσι : > CREATE TABLE `admin` ( `id` int(11) NOT NULL auto_increment, `user` text NOT NULL, `pass` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; INSERT INTO `admin` VALUES (1,'admin','123321'); Γράφοντας στο login form admin' -- καταφέρνω να περάσω σαν admin. Στη συνέχεια προσπαθώ να περάσω στοιχεία στη βάση μέσω του sql injection αλλα αυτό δεν το καταφέρνω. γράφω : admin' AND ( INSERT INTO admin VALUES(2,'test','test') ) -- ή tipota' OR ( INSERT INTO admin VALUES(2,'test','test') ) -- το error που παίρνω είναι το εξής : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO admin VALUES(2,'test','test') ) --' and `pass`=''' at line 1 φαίνεται δηλαδη σα να μη δουλεύουν τα comments στο τέλος αφού βλέπει το pass="" στη συνέχεια. Κανω κάποιο συντακτικό sql λάθος ? Αν ξέρει κάποιος ας μου πει. Ευχαριστώ.
Leibniz Δημοσ. 11 Οκτωβρίου 2010 Δημοσ. 11 Οκτωβρίου 2010 1) Filter Input, Escape output. Προφανώς δε χρειάζεται να ξέρει ο κόσμος που κάνουν login οι admins, αλλά με το να κρύψεις το link είναι σαν να βάζεις το κλειδί όχι κάτω από το χαλάκι αλλά μέσα στη γλάστρα. Αν ο κώδικας είναι ασφαλής τότε μπορείς να την πάθεις και από bruteforce αλλά αυτό δεν είναι δικό σου θέμα είναι πρόβλημα του χρήστη που διάλεξε το password. 2) Δε νομίζω ότι μπορείς να συνδιάσεις INSERT/UPDATE/DELETE queries και SELECT στο ίδιο query. Όταν βάζεις SELECT μέσα σε SELECT είναι τα λεγόμενα nested selects δεν είναι κάτι τυχαίο. Δοκίμασε να κλείσεις το query με ' ; ' >admin'; INSERT INTO admin VALUES(2,'test','test');--
georgebathens Δημοσ. 12 Οκτωβρίου 2010 Μέλος Δημοσ. 12 Οκτωβρίου 2010 Προφανώς δε χρειάζεται να ξέρει ο κόσμος που κάνουν login οι admins, αλλά με το να κρύψεις το link είναι σαν να βάζεις το κλειδί όχι κάτω από το χαλάκι αλλά μέσα στη γλάστρα. Καταρχήν σε ευχαριστώ πολύ για την απάντηση. Πάνω στο "κρύψιμο" του Login : Αν εγώ πχ το έχω στο http://www.mysite.gr/dsaodusaipdsapdisapo πως το βρίσκει ο άλλος ? Υπάρχουν μηχανισμοί που σου δείχνουν το directory structure ? Επίσης αν ξέρει κάποιος : Πόσο δύσκολο είναι να βάλεις ssl Και τι κόστος έχει ? Ευχαριστώ για το χρόνο σας.
Leibniz Δημοσ. 12 Οκτωβρίου 2010 Δημοσ. 12 Οκτωβρίου 2010 Έμμεσα μόνο μπορεί ίσως να το βρεί, εκτός αν κάτι πάει στραβά σε όλο το site Γενικά αν δεν είναι ασφαλής ο κώδικας του login να περιμένεις ακόμα χειρότερα λάθη που μπορεί κάποιος να εκμεταλλευτεί. Καταρχήν σε ευχαριστώ πολύ για την απάντηση. Πάνω στο "κρύψιμο" του Login : Αν εγώ πχ το έχω στο http://www.mysite.gr/dsaodusaipdsapdisapo πως το βρίσκει ο άλλος ? Υπάρχουν μηχανισμοί που σου δείχνουν το directory structure ? Επίσης αν ξέρει κάποιος : Πόσο δύσκολο είναι να βάλεις ssl Και τι κόστος έχει ? Ευχαριστώ για το χρόνο σας.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.