一、靶场环境简介
靶场下载地址:https://pan.baidu.com/s/1X5UQ66sUi-UphnXWs9zFuA 提取码: 6777 【27.8 GB】
1.1 五靶机+三层网络环境
1)DMZ区:IP段为192.168.1.1/24 【后续具体搭建时根据具体情况有所变动变动,跟物理机所处的环境相关。】
2)第二层网络环境:IP段为192.168.52.1/24
3)第三层网络环境:IP段为192.168.93.1/24
二、靶场基础环境搭建
2.1 VMware的三种网络模式
WMware的三种网络模式:
- 桥接模式(Bridged):在这种模式下,虚拟机直接连接到宿主机所在的物理网络中,就像它是该网络中的另一台独立计算机一样。虚拟机和宿主机在同一个物理网络上拥有平等的地位,并且可以各自获得独立的IP地址。虚拟机通常通过DHCP服务器自动获取IP地址、子网掩码、默认网关和DNS服务器信息,如果没有可用的DHCP服务器,则需要手动配置静态IP地址。由于虚拟机直接连接到物理网络,其他网络设备可以看到并直接与虚拟机通信,就如同它们是一台实体机器。
- NAT模式(网络地址转换模式):NAT模式通过虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。在这种模式下,虚拟机通过宿主机访问外部网络,虚拟机的网络流量会经过宿主机的NAT设备进行地址转换。虚拟机共享宿主机的IP地址来访问外部网络,因此它们在外部网络上不具有独立的IP地址。这种模式适合于IP地址资源有限的环境,并且可以提供一定程度的网络安全。
- 仅主机模式(Host-Only):仅主机模式创建了一个完全包含在宿主机中的专用网络,虚拟机与宿主机之间的网络连接仅对宿主机可见。在这种模式下,虚拟机不能直接访问外部网络,但可以与宿主机进行通信。如果需要,可以通过配置额外的网络设备(如虚拟路由器)来实现虚拟机之间的通信。
当我们安装 VMware 时,VMware 会自动为 3 种网络连接模式各自创建 1 个虚拟机网络**:VMnet0 (桥接模式)、VMnet8 (NAT模式)、VMnet1 (仅主机模式)**。此外,我们也可以根据需要自行创建更多的虚拟网络。VMware 的虚拟网络都是以 “VMnet+数字” 的形式来命名的,例如 VMnet0、VMnet1、VMnet2……以此类推,在 Linux 系统的主机上,虚拟网络的名称均采用小写形式,例如 vmnet0 。
虚拟机上的网络连接图示:
![]()
在Vmware中新增两个虚拟网卡VMnet8(内置的NAT虚拟网络)、VMnet14。
VMnet8设为默认的NAT模式,IP段设为192.168.52.0/24;
VMnet14设为仅主机模式,IP段设为192.168.93.0/24:
注意:VMnet8为VMware设置的默认NAT模式的虚拟网段,可能其IP地址段和靶场环境所要求的不一致,可以在虚拟网络编辑器中修改(windows)。
在mac系统中,由于虚拟网络都是vmnet(小写)+数字,所以跟靶机预设的网卡不匹配,需要重新搭建虚拟网络并配置各个靶机的网卡,而不是仅仅设置VMnet8和VMnet14虚拟网络。
2.2 虚拟机和相关系统的账户密码
web 1:
- ubuntu:web2021
web 2:
- ubuntu:ubuntu
域用户账户和密码如下:
- Administrator:Whoami2021
- whoami:Whoami2021
- bunny:Bunny2021 【PC1】
- moretz:Moretz2021
2.3 虚拟机无法启动问题解决
mac环境打开虚拟机时的踩坑记录:
- 问题:直接运行vmx文件打不开虚拟机,报如下的错误:
![]()
1)尝试删除lck文件,无效。
2)尝试修改vmx文件的vmci0.present = “TRUE”为FALSE,无效。
3)尝试在解压后的项目文件夹添加.vmwarevm后缀,打开时仍然报相同的错。
4)VMware fusion直接从现有磁盘新建虚拟机,磁盘选择从vmware workstation导出的虚拟机的vmdk文件。
参考:https://blog.csdn.net/u014028317/article/details/97311660
但是笔者按照此教程操作,出现的问题是vmdk文件灰色无法选中, 目前没找到解决办法。
![]()
- 解决:最后的解决方法是按照scsi0:0.fileName的配置修改相关的文件名
每次点击vmx文件启动的时候,提示的是“Ubuntu 64 位 (Web 1).vmdk文件找不到”,一看本身解压虚拟机之后的文件名确实不符合要求,带个奇奇怪怪的ג(本来看这个ג不顺眼),把所有带ג的文件名都改成”Ubuntu 64 位 (Web 1)…”。
然后再双击vmx启动,搞定:
![]()
靠互联网不如靠自己排查:1)详细阅读思考提示信息。2)排查系统运行日志。
靶场环境中的其他虚拟机的启动如果遇到类似的问题,解决方法也是对照vmx文件的scsi0:0.fileName 的配置修改相应的文件名即可。
2.4 靶场环境搭建
下面是我梳理的靶场的逻辑架构,搭建的过程中重点在于搞清楚网络间的互访关系、虚拟网络的设置和各主机的网卡连接。
我的mac上目前的NAT网段地址是192.168.155.0/24。
一开始的时候我的想法是新建一个vmnet,设置为NAT模式,并且配置为192.168.52.0/24网段,设置如下:
(但是,后面发现这种设置方法会导致二层网络(192.168.52.0/24网段)无法访问互联网,所以我最后还是用的自带的NAT vmnet8虚拟网络,具体设置后面有详细的踩坑记录)
新建一个仅主机模式的vmnet14,设置如下:
将vmnet2作为第二层虚拟网络,vmnet14作为第三层虚拟网络。这样以来:
- 第二层网络中的所有主机皆可以上网(NAT模式),但是位于第三层网络中的所有主机都不与外网相连通,不能上网。
- DMZ区中的web1服务器可以访问互联网(通过两块网卡均可),通过桥接的方式将web1暴露在局域网中(模拟暴露在互联网)。
- hacker虚拟机(kali)通过桥接的方式与web1、物理机共同处于一个局域网,模拟黑客从互联网对DMZ区发起攻击打点。
ping DMZ区的web1可以连通:
ping 二层网络是无法连通的:
ping web1的另一个网卡是无法ping通的,攻击机只能通过桥接方式暴露出来的192.168.43.253端口进行渗透。
2.5 网络连通性测试
2.5.1 核心网(三层网络)内部连通性
DC和PC2可以互相访问
2.5.2 核心网和二层网络的连通性
PC1可以ping通DC和PC2,但是反之不行,分析可能是PC1的防火墙影响。
2.5.3 DMZ与二层网络的连通性
2.5.4 DMZ访问互联网
2.5.5 二层网络访问互联网
二层网络发现无法访问互联网,分析可能是新设置的NAT模式的vmnet2未生效,因此决定修改默认vmnet8的NAT网段(填一开始偷懒的坑):
修改网络配置文件:
打开终端,使用以下命令编辑VMware Fusion的网络配置文件:
sudo vi /Library/Preferences/VMware\ Fusion/networking
在该文件中,找到与NAT相关的配置部分,例如
vmnet8
,然后修改SUBNET
为想要的网段,例如192.168.52.0
。同时,将DHCP
设置为no
以使用静态IP(后面发现不需要将DHCP设置为no)。修改NAT配置文件:
继续在终端中编辑NAT配置文件:
sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf
在该文件中,设置网关地址,例如
192.168.52.1
,确保网关的IP与设置的网段一致。networking原始配置:
![]()
networking修改后的配置:
![]()
nat.conf原始配置:
![]()
nat.conf修改后的配置:
![]()
重启vmware fusion。
修改完成之后虚拟机如果还是原先的设置,即二层网络都在vmnet2(192.168.52.0/24)中。ping baidu.com不通,无法访问互联网。尝试取消vmnet2的NAT选项,还是不行。
所以,将所有连接二层网络的虚拟机的对应网络适配器改成NAT模式(vmnet8),测试之前的NAT网段更改是否生效。
发现还是无法访问互联网,分析可能因为老版本的vmware在创建虚拟网络的时候会把vmnetx虚拟网卡的ip设置为x.x.x..1,把虚拟网络的网关设置为x.x.x.2,所以直接下载来的虚拟机本身也遵循了这个x.x.x.2的网关配置。所以要么改vmnet8虚拟网络的设置,要么改虚拟机本身的配置。
首先,尝试将vmnet8的网关设置为x.x.x.2,改完之后重启VMware,发现网关的ip又变成192.168.52.1了且二层虚拟机仍然无法访问互联网。
Fusion 12.0 开始 NAT 网关的 IP 变更为 x.x.x.1,更加符合使用习惯。
经测试 Fusion 12.1 NAT 网关 IP 同样为 x.x.x.1,但是比较遗憾,Fusion 12.2 又修改为 .2。
如果虚拟机本身的配置不正确将导致VM 无法访问外部网络。
我用的vmware fusion的版本是**专业版 12.1.2 (17964953)**,所以fusion可能强制将网关的ip应该和虚拟网卡的ip保持一致,都是x.x.x.1。
那么第一种方式(改vmnet8网关配置)不行,就只能修改虚拟机本身的网络配置了。
1)二层网络——web2
- 网卡配置
查看ubuntu web2的网卡配置:
cat /etc/network/interfaces
发现网关配置果然是192.168.52.2,改成192.168.52.1。
启动网卡:sudo ifup eth0
ping不通baidu,但能ping通8.8.8.8,说明能访问互联网了,但是域名解析有问题。
- 域名解析配置
查看域名解析的配置,发现配置的是192.168.52.2,所以修改成192.168.52.1
最终成功联通互联网。
涉及到vmnet2的所有网卡都需要重新进行适配。
2)二层网络——PC1
修改网卡配置的时候需要登录域管理员账户,需要启动DC。
修改前的配置:
修改后:
默认网关和DNS服务器都改成192.168.52.1。
- 待网卡生效后测试发现还是无法访问互联网和web2:
尝试关闭防火墙尝试(也需要域管理员权限)。
本来web2无法ping通PC1,现在可以了。
但PC1还是无法访问互联网,并且PC1也无法访问web2。
显示无internet访问权限,并且有个多重网络的提示。
回过头去尝试用web2访问互联网,发现web2又不能访问互联网了,十分奇怪。
- vmnet8 开启DHCP服务
猜测会不会是之前配置vmnet8时将DHCP服务关闭的原因
所以将 answer VNET_8_DHCP no 改成yes。
然后执行下面的命令同步配置:
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --configure
vmnet-cli 将根据上述修改的地址段自动修改 dhcpd.conf 和 nat.conf 中的 IP 地址。
查看 dhcpd.conf 和 nat.conf 配置文件:
cat /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf
启动vmware fusion网络服务,执行命令:
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start
保险起见重启VMware进行测试。
web2测试
web2可以访问互联网了。
PC1测试
PC1和web2可以互相访问。
PC1也可以访问互联网了!✅。
重新开启dhcp的配置还是可以的。
- 重新给web1配置网卡的时候,PC1和web2又无法连接互联网了
遂执行sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli –start,后重启VMware。
问题得到解决。
至此,靶场环境搭建完毕。
回顾一下整个靶场的架构:
2.6 靶场架构回顾
三、服务部署
3.1 DMZ区的 Ubuntu 启动nginx服务和redis服务
- sudo redis-server /etc/redis.conf 【注意:以root权限启动】
- /usr/sbin/nginx -c /etc/nginx/nginx.conf 【nginx已经启动】
端口被占用。
reboot之后重新查看端口,依然被占用。
查看accesss.log,cat /var/log/nginx/access.log
tail -f /var/log/nginx/access.log 追踪日志
排查占用端口的进程:
普通权限执行时看不到pid
sudo执行时可以看到pid
杀死PID=826的进程。
然后尝试启动nginx。
还是502错误。
遇到 Nginx 502 Bad Gateway 错误通常表示 Nginx 作为代理服务器在尝试从上游服务器获取响应时未能成功。
追踪报错 tail -f /var/log/nginx/error.log
上游服务器信息:upstream: "https://47.101.57.72:443/"
和 upstream: "https://47.101.57.72:443/favicon.ico"
表示 Nginx 尝试连接的上游服务器的地址和端口,但是连接失败,后端服务挂掉了。
这些错误日志表明 Nginx 作为反向代理服务器,尝试将请求转发到上游服务器(在这个例子中是 IP 地址为 47.101.57.72
的服务器)时,连接被拒绝。
目前可以不用理会,靶场渗透过程中也用不到这个80端口的站点。
访问81端口,可以成功访问到靶场web1的另一个站点:
对于渗透来说足够了。
iptables -F
iptables -F
是一个在 Linux 系统中使用的命令,它用于清空(Flush)iptables
的所有规则。iptables
是 Linux 内核中的一个包过滤框架,用于配置网络流量的防火墙规则。具体来说,
iptables -F
命令会执行以下操作:- 清空所有链(Chains):默认情况下,
iptables -F
会清空默认的三个表(filter、nat、mangle)中的所有链(INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING等)。 - 不删除用户定义的链:如果你创建了自定义的链,它们不会被
iptables -F
命令删除。 - 保留默认策略:
iptables -F
不会改变链的默认策略(默认策略是指当一个包没有匹配任何规则时,iptables 将如何处理这个包)。例如,如果默认策略是ACCEPT
,即使清空了所有规则,这个默认策略仍然会保留。 - 立即生效:
iptables -F
命令会立即生效,不需要重启网络服务。
- 清空所有链(Chains):默认情况下,
3.2 二层网络的 web2启动docker容器
- sudo service docker start
- sudo docker start 8e172820ac78
3.3 第二层网络的 PC1 启动通达OA
- C:\MYOA\bin\AutoConfig.exe
总结
至此靶场部署完毕,目标IP为192.168.43.253,可以开始渗透之旅了。