记一次利用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年,实际时间其实更早。从技术水平、写作水平上来说,的确是稍显稚嫩。但这篇文章应该是我入安全圈以来第一篇文章,所以一直保存到现在,里面很多话语不正确的地方也没有去改,当留作纪念吧,望读到该篇文章的大佬们轻喷。




























