濮阳杆衣贸易有限公司

主頁 > 知識庫 > PowerShell腳本開發(fā)嘗試登錄SQL Server

PowerShell腳本開發(fā)嘗試登錄SQL Server

熱門標(biāo)簽:印臺區(qū)呼叫中心外呼系統(tǒng) 六寸地圖標(biāo)注點(diǎn)怎么刪除 新鄭電銷機(jī)器人一個月多少錢 莫拉克電梯系統(tǒng)外呼怎么設(shè)置 萬全縣地圖標(biāo)注app 地圖標(biāo)注的圖案 電話機(jī)器人公司招聘 騰訊地圖標(biāo)注中心怎么標(biāo)注 如何根據(jù)經(jīng)緯度百度地圖標(biāo)注

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

具體詳細(xì)的步驟請參見前幾篇文章,創(chuàng)建PSSecurity程序集之后的目錄結(jié)構(gòu)和文件如下所示:

復(fù)制代碼 代碼如下:

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

在$Profile中添加:

復(fù)制代碼 代碼如下:

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

其中PSSecurity.psm1中的內(nèi)容如下:

復(fù)制代碼 代碼如下:

. $env:PSSpace/PSSecurity/SQLServer/Get-SqlSysLogin.ps1 #導(dǎo)入Get-SqlSysLogin函數(shù)
Write-Host "PSSecurity Module Added" -BackgroundColor green -ForegroundColor blue #用于提示此模塊已加載
Export-ModuleMember -Function *  #用于將函數(shù)導(dǎo)出為模塊成員

接下來就是Get-SqlSysLogin.ps1的內(nèi)容了

復(fù)制代碼 代碼如下:

 =====文件名: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 #創(chuàng)建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進(jìn)程,可以用下面的兩種方式調(diào)用

復(fù)制代碼 代碼如下:

Get-SqlSysLogin -ComputerName SRV01 -UserName sa -Password sa #單臺主機(jī)登錄嘗試

"SQL01","SQL02","SQL03" | Get-SqlSysLogin -UserName sa -Password sa #多臺主機(jī)登錄嘗試

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

復(fù)制代碼 代碼如下:

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  : **.**.**.**


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

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

您可能感興趣的文章:
  • PowerShell連接SQL SERVER數(shù)據(jù)庫進(jìn)行操作的實(shí)現(xiàn)代碼
  • Powershell訪問SQL Server數(shù)據(jù)庫代碼實(shí)例
  • powershell玩轉(zhuǎn)SQL SERVER所有版本的方法

標(biāo)簽:汕頭 南昌 襄陽 喀什 湘潭 疫苗接種 臨汾 天水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PowerShell腳本開發(fā)嘗試登錄SQL Server》,本文關(guān)鍵詞  PowerShell,腳本,開發(fā),嘗試,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PowerShell腳本開發(fā)嘗試登錄SQL Server》相關(guān)的同類信息!
  • 本頁收集關(guān)于PowerShell腳本開發(fā)嘗試登錄SQL Server的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    肇庆市| 胶州市| 调兵山市| 福海县| 鸡泽县| 巴林左旗| 南投县| 司法| 富宁县| 慈利县| 樟树市| 大洼县| 区。| 深圳市| 通道| 昌乐县| 门源| 恩平市| 繁峙县| 民乐县| 海门市| 台中市| 江西省| 邵阳县| 镇坪县| 米泉市| 米易县| 麦盖提县| 桃园县| 娱乐| 临海市| 溧阳市| 霍城县| 资阳市| 潢川县| 应城市| 巴里| 济宁市| 迭部县| 江源县| 百色市|