记一次利用SQL调用powershell命令获取管理员密码

1. 前言
这篇文章是把以前写在word文档中的内容搬过来了,主要内容就是记录了一次提权过程,通过MSSQL
权限调用PowerShell
并执行命令,最终获取了管理员的密码。虽然最后总结的流程很简单,但中间踩过的坑、遇到的问题可是不计其数(自己比较菜),所以将此过程做了一个记录。
2. 初试提权
首先,已经得到了某个服务器的
IP
和MSSQL
的SA
账户和密码,很高兴的连上去,心想SA
账户都有了,提个权还不是分分钟的事虽然报了一个错误(不清楚是什么错误),但是还好没有被禁用,而且还是
system权限
,看来提权触手可得,马上使用net user
创建用户what xxxx! 什么情况,居然没执行成功,怀疑管理员把
xp_cmdshell
做了什么手脚,于是去百度了许多不利用xp_cmdshell
来执行命令的sql
语句Nmap
扫描了一下端口,445
是开启的,刚好这几天学会了ms17-010
的漏洞,就打算用msf
直接获取到shell
,但是想象都是美好的,这服务器好像打了补丁,而且自己没有公网地址,导致反弹不回来shell
3. 山穷水尽疑无路
经过上面的测试,我意识到事情并没有那么简单。这台服务器不知道做了啥手脚,CMD命令
只能执行一部分没有啥危害的命令,执行创建用户这种命令就直接报错。需要换一换思路搞搞。
看了一下其余的网站,全是
aspx
的,而且都是英文站,让我放弃了从网站入手的想法。继续翻着端口列表,突然看到一个Apache
服务果然事不如愿,居然访问不了,看来还是不行啊,又回去看了看
MSSQL
数据库,发现dir
命令可以执行,通过dir
命令,发现了wamp
目录下的WordPress
,尝试admin
登录,竟然登录进去了还是一样无法创建,可能就是因为管理员把
net命令给禁用了
或者给更改了什么的,反正通过创建用户这一条路是不可能的了,只有直接读取Administrator的密码
才行,上传getpass64.exe
上去执行,显示超时
4. 柳暗花明又一村
到这里就很难受了,我感觉能利用的都利用了,能试的方法都试了,但都搞不下来。难道就要放弃了么,可近在咫尺的胜利以及花费的时间让我放弃感到很吃亏,那就继续搞呗。
经过黑无常大佬的提醒,可以利用
msf
调用mimikatz
来读取密码然后又研究这个原理,终于知道了本地为什么会失败,这个
powershell命令
是在网上下载powershell脚本
,然后再执行,失败的原因下载链接不对
,所以导致失败,然后找到了GitHub
上的脚本,再去本地执行,果然执行成功了然后放在菜刀里执行,然后开始几次后面执行超时,后面执行时报了如下错误,大概是因为网速太慢或者菜刀执行命令不和cmd一样,具体为什么不太清楚
然后又想到了
MSSQL
(为什么总能想到它啊,大概是因为首先拿到权限就是因为它吧哈哈哈),执行powershell
命令试试
5. END
这次提权算是学到了不少东西,比如MSSQL
不只有xp_cmdshell
可以执行系统命令,还有很多语句都能执行。还有powershell反弹shell
、powershell下载脚本执行
等等技术。最重要的是学到了一些道理:
不抛弃不放弃
这句话不只是CF的宣言,在现实中也是很好的道理骚思路
一定要多,不能在一个地方吊死
2020.05月更新:
该文章的写作时间看上去是19年,实际时间其实更早。从技术水平、写作水平上来说,的确是稍显稚嫩。但这篇文章应该是我入安全圈以来第一篇文章,所以一直保存到现在,里面很多话语不正确的地方也没有去改,当留作纪念吧,望读到该篇文章的大佬们轻喷。