Προς το περιεχόμενο

Ασφάλεια - SQL Injection


georgebathens

Προτεινόμενες αναρτήσεις

Δημοσ.

Θα ήθελα να κάνω 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 λάθος ? Αν ξέρει κάποιος ας μου πει.

 

Ευχαριστώ.

Δημοσ.

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');--

Δημοσ.
Προφανώς δε χρειάζεται να ξέρει ο κόσμος που κάνουν login οι admins, αλλά με το να κρύψεις το link είναι σαν να βάζεις το κλειδί όχι κάτω από το χαλάκι αλλά μέσα στη γλάστρα.

 

Καταρχήν σε ευχαριστώ πολύ για την απάντηση.

Πάνω στο "κρύψιμο" του Login :

Αν εγώ πχ το έχω στο http://www.mysite.gr/dsaodusaipdsapdisapo πως το βρίσκει ο άλλος ? Υπάρχουν μηχανισμοί που σου δείχνουν το directory structure ?

 

Επίσης αν ξέρει κάποιος : Πόσο δύσκολο είναι να βάλεις ssl Και τι κόστος έχει ?

 

Ευχαριστώ για το χρόνο σας.

Δημοσ.

Έμμεσα μόνο μπορεί ίσως να το βρεί, εκτός αν κάτι πάει στραβά σε όλο το site :P

Γενικά αν δεν είναι ασφαλής ο κώδικας του login να περιμένεις ακόμα χειρότερα λάθη που μπορεί κάποιος να εκμεταλλευτεί.

 

Καταρχήν σε ευχαριστώ πολύ για την απάντηση.

Πάνω στο "κρύψιμο" του Login :

Αν εγώ πχ το έχω στο http://www.mysite.gr/dsaodusaipdsapdisapo πως το βρίσκει ο άλλος ? Υπάρχουν μηχανισμοί που σου δείχνουν το directory structure ?

 

Επίσης αν ξέρει κάποιος : Πόσο δύσκολο είναι να βάλεις ssl Και τι κόστος έχει ?

 

Ευχαριστώ για το χρόνο σας.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...