Ein anderer Kunde hat mich gebeten, die Sicherheit seines SQL Servers zu überprüfen.
Bei der Arbeit habe ich das Skript gestrichelt, es nicht beim Kunden überprüft, sondern bei der Arbeit in der Bank (ich gebe den Namen nicht an), es ist auf dem DEV-Server wahr und voila! - 522 SQL Login mit einfachen Passwörtern. Und das ist eine Sicherheitslücke.
Im Allgemeinen schlage ich vor, ähnliche Schwachstellen auf meinem SQL Server zu überprüfen. Die Liste der einfachen Passwörter wird ergänzt, wie Sie sich erinnern, einige einfache Passwörter, die ich von den ersten 2-3 Seiten nach dem Googeln übernommen habe.
Das Skript selbst:
declare @popular_passwords table ( pwd varchar(4000) not null ) insert @popular_passwords VALUES ('!@#$%^&*') ,('000000') ,('1') ,('11') ,('111') ,('1111') ,('11111') ,('111111') ,('121212') ,('123123') ,('12') ,('123') ,('1234') ,('12345') ,('123456') ,('1234567') ,('12345678') ,('123456789') ,('1234567890') ,('131313') ,('1qaz2wsx') ,('55555') ,('654321') ,('666666') ,('696969') ,('7777777') ,('987654') ,('987654321') ,('aa123456') ,('abc123') ,('abcd1234') ,('admin') ,('affair') ,('amanda') ,('andrew') ,('anthony') ,('asdfasdf') ,('asdfg') ,('asdfgh') ,('asdfghjkl') ,('ashley') ,('ashleymadison') ,('asshole') ,('baseball') ,('batman') ,('bigdick') ,('buster') ,('charlie') ,('cheater') ,('computer') ,('corvette') ,('cowboys') ,('dallas') ,('DEFAULT') ,('donald') ,('dragon') ,('football') ,('freedom') ,('fuckme') ,('fuckoff') ,('fuckyou') ,('george') ,('harley') ,('hello') ,('hockey') ,('horny') ,('hosts') ,('hunter') ,('iloveyou') ,('jackson') ,('jennifer') ,('jessica') ,('jordan') ,('jordan23') ,('kazuga') ,('killer') ,('letmein') ,('liverpool') ,('looking') ,('madison') ,('maggie') ,('master') ,('matthew') ,('michael') ,('money') ,('monkey') ,('mustang') ,('P@ssw0rd') ,('P@ssword') ,('Pa$$w0rd') ,('Pa$$word') ,('password') ,('password1') ,('pepper') ,('princess') ,('pussy') ,('qazwsx') ,('qwert') ,('qwerty') ,('qwerty123') ,('qwertyuiop') ,('ranger') ,('robert') ,('secret') ,('shadow') ,('soccer') ,('steelers') ,('summer') ,('sunshine') ,('superman') ,('thomas') ,('tigger') ,('welcome') ,('whatever') ,('william') ,('yankees') ,('zxcvbnm') select l.name, p.pwd, l.type_desc, l.is_disabled, sl.sysadmin, sl.dbcreator, sl.serveradmin from @popular_passwords p join sys.sql_logins l on pwdcompare(p.pwd,l.password_hash)=1 join sys.syslogins sl on sl.name = l.name union all select -- l.name, l.name, l.type_desc, l.is_disabled, sl.sysadmin, sl.dbcreator, sl.serveradmin from sys.sql_logins l join sys.syslogins sl on sl.name = l.name and pwdcompare(l.name,l.password_hash)=1 order by 4, 5 desc, 1 option(recompile)