日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PowerShell尝试登录SQL Server

發布時間:2024/4/11 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PowerShell尝试登录SQL Server 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 前三篇文章中創建了PSNet程序集,其中包含了對指定IP進行端口掃描,收發TCP消息包和收發UDP消息包的相關功能,作為這是最基本的對網絡情況的最基本檢測,后續的文章將會對此程序集進行不斷的擴充使其包含更全面的功能。但是光有這些簡單網絡探測的功能還遠遠不夠,為了能更全面的使用PowerShell針對網絡安全進行檢測,在本文中將會創建PSSecurity程序集用于存放相關通過PowerShell的腳本。參照前幾篇文章中創建PSNet程序集的方法和目錄結構創建PSSecurity程序集目錄,便于后續對程序集的擴展。

具體詳細的步驟請參見前幾篇文章,創建PSSecurity程序集之后的目錄結構和文件如下所示:

+D:\MY DOCUMENTS\WINDOWSPOWERSHELL\MODULES
└─PSSecurity
??? │? PSSecurity.psm1
??? │?
??? └─SQLServer
??????????? Get-SqlSysLogin.ps1

在$Profile中添加:

Import-Module $env:PSSpace\PSSecurity? #用于在PowerShell啟動時自動加載PSSecurity程序集

其中PSSecurity.psm1中的內容如下:

. $env:PSSpace/PSSecurity/SQLServer/Get-SqlSysLogin.ps1 #導入Get-SqlSysLogin函數

Write-Host "PSSecurity Module Added" -BackgroundColor green -ForegroundColor blue #用于提示此模塊已加載
Export-ModuleMember -Function *? #用于將函數導出為模塊成員

接下來就是Get-SqlSysLogin.ps1的內容了

=====文件名:Get-SqlSysLogin.ps1=====function?Get-SqlSysLogin?{

??Param(
????[Parameter(Mandatory?=?$true,
??????Position?=?0,
??????ValueFromPipeLine=?$true)]
????[Alias("PSComputerName","CN","MachineName","IP","IPAddress")]
????[string]$ComputerName,
????[parameter(Position?=?1)]
????[string]$UserName,
????[parameter(Position?=?2)]
????[string]$Password
??)
??Process?{
????$Connection?=?New-Object?System.Data.SQLClient.SQLConnection
????if($userName)?{
??????$Connection.ConnectionString?=?"Data?Source=$ComputerName;Initial?Catalog=Master;User?Id=$userName;Password=$password;"
????}?else?{
??????$Connection.ConnectionString?=?"server=$computerName;Initial?Catalog=Master;trusted_connection=true;"
????}
????Try?{
??????$Connection.Open()
??????$Command?=?New-Object?System.Data.SQLClient.SQLCommand?#創建SQLClient對象
??????$Command.Connection?=?$Connection
??????$Command.CommandText?=?"SELECT?*?FROM?master.SYS.syslogins"??#從syslogin表讀取SQLServer登錄賬戶
??????$Reader?=?$Command.ExecuteReader()
??????$Counter?=?$Reader.FieldCount
??????while?($Reader.Read())?{
????????$SQLObject?=?@{}
????????for?($i?=?0;?$i?-lt?$Counter;?$i++)?{
??????????$SQLObject.Add(
????????????$Reader.GetName($i),
????????????$Reader.GetValue($i)
??????????);
????????}
????????#?獲取登錄類型
????????$type?=?
??????????if($sqlObject.isntname?-eq?1)?{
????????????if($sqlObject.isntgroup?-eq?1)?{
??????????????"NT?Group"
????????????}?else?{
??????????????"NT?User"
????????????}
????????????}?else?{?
??????????????"SQL?Server"
????????????}

????????New-Object?PSObject?-Property?@{
??????????Name?=?$sqlObject.loginname;
??????????Created?=?$sqlObject.createdate;
??????????DenyLogin?=?[bool]$sqlObject.denylogin;
??????????HasAccess?=??[bool]$sqlObject.hasaccess;
??????????Type?=?$type;
??????????SysAdmin?=?[bool]$sqlObject.sysadmin;
??????????SecurityAdmin?=?[bool]$sqlObject.securityadmin;
??????????ServerAdmin?=?[bool][bool]$sqlObject.serveradmin;
??????????SetupAdmin?=?[bool]$sqlObject.setupadmin;
??????????ProcessAdmin?=?[bool]$sqlObject.processadmin;
??????????DiskAdmin?=?[bool]$sqlObject.diskadmin;
??????????DBCreator?=?[bool]$sqlObject.dbcreator;
??????????NTUser?=?[bool]$sqlObject.isNTUser;
??????????ComputerName?=?$ComputerName
????????}?|?Select-Object?Name,?Created,?Type,?DenyLogin,?HasAccess,?SysAdmin,?SecurityAdmin,?ServerAdmin,?SetupAdmin,?ProcessAdmin,?DiskAdmin,?DBCreator,?NTUser,?ComputerName
??????}
??????$Connection.Close()
????}
????Catch?{
??????$error[0]
????}
??}
}啟動PowerShell進程,可以用下面的兩種方式調用

Get-SqlSysLogin -ComputerName SRV01 -UserName sa -Password sa #單臺主機登錄嘗試
"SQL01","SQL02","SQL03" | Get-SqlSysLogin -UserName sa -Password sa #多臺主機登錄嘗試

其中ComputerName代表sqlserver的主機名或者IP;UserName是用戶名,如果不填,則使用默認的windows身份認證,如果使用windows身份認證則需要確保當前登錄允許可以通過windows身份認證登錄;Password不用說就是密碼了。

PS C:\Users\fuhj> Get-SqlSysLogin -ComputerName **.**.**.** -UserName sa -Password ***********

Name????????? : sa
Created?????? : 2003/4/8 9:10:35
Type????????? : SQL Server
DenyLogin???? : False
HasAccess???? : True
SysAdmin????? : True
SecurityAdmin : False
ServerAdmin?? : False
SetupAdmin??? : False
ProcessAdmin? : False
DiskAdmin???? : False
DBCreator???? : False
NTUser??????? : False
ComputerName? : **.**.**.**

Name????????? : *****
Created?????? : 2011/3/14 8:31:44
Type????????? : SQL Server
DenyLogin???? : False
HasAccess???? : True
SysAdmin????? : False
SecurityAdmin : False
ServerAdmin?? : False
SetupAdmin??? : False
ProcessAdmin? : False
DiskAdmin???? : False
DBCreator???? : False
NTUser??????? : False
ComputerName? : **.**.**.**

?

后續思路:這里是對單臺SQLServer服務器的登錄嘗試,如果通過對指定范圍的IP進行端口的掃描發現相關的SQLServer服務器,而且能夠有比較齊全的字典,對這個函數進行改造就可以字典模式暴力破解SQLServer的用戶名、密碼(注意:本文只提供安全攻防的思路,請勿對他人系統進行暴力嘗試,否則后果由攻擊者個人自行承擔)。

本文創建了PSSecurity工具集,介紹了通過PowerShell嘗試登錄SQLServer的方法,此種方法可以用于暴力破解和窮舉賬戶密碼,窮舉就需要依靠比較全面的字典的支持了。后續的文章中將會分別對PSNet和PSSecurity兩個工具集進行擴充和升級,使其能適應真實環境的需求。

?

作者: 付海軍
出處:http://blog.csdn.net/fuhj02
版權:本文版權歸作者和csdn共有
轉載:歡迎轉載,為了保存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文連接且保證內容完整!否則必究法律責任!
個人網站: http://txj.shell.tor.hu/

轉載于:https://www.cnblogs.com/fuhj02/archive/2012/10/17/2728742.html

總結

以上是生活随笔為你收集整理的PowerShell尝试登录SQL Server的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。