三层网络域渗透靶场(WHOAMII)搭建


一、靶场环境简介

靶场下载地址: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的三种网络模式:

  1. 桥接模式(Bridged):在这种模式下,虚拟机直接连接到宿主机所在的物理网络中,就像它是该网络中的另一台独立计算机一样。虚拟机和宿主机在同一个物理网络上拥有平等的地位,并且可以各自获得独立的IP地址。虚拟机通常通过DHCP服务器自动获取IP地址、子网掩码、默认网关和DNS服务器信息,如果没有可用的DHCP服务器,则需要手动配置静态IP地址。由于虚拟机直接连接到物理网络,其他网络设备可以看到并直接与虚拟机通信,就如同它们是一台实体机器。
  2. NAT模式(网络地址转换模式):NAT模式通过虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。在这种模式下,虚拟机通过宿主机访问外部网络,虚拟机的网络流量会经过宿主机的NAT设备进行地址转换。虚拟机共享宿主机的IP地址来访问外部网络,因此它们在外部网络上不具有独立的IP地址。这种模式适合于IP地址资源有限的环境,并且可以提供一定程度的网络安全。
  3. 仅主机模式(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虚拟网络,具体设置后面有详细的踩坑记录)

vmnet2的配置(使用NAT)

新建一个仅主机模式的vmnet14,设置如下:

vmnet14的配置(仅主机模式)

将vmnet2作为第二层虚拟网络,vmnet14作为第三层虚拟网络。这样以来:

  • 第二层网络中的所有主机皆可以上网(NAT模式),但是位于第三层网络中的所有主机都不与外网相连通,不能上网。
  • DMZ区中的web1服务器可以访问互联网(通过两块网卡均可),通过桥接的方式将web1暴露在局域网中(模拟暴露在互联网)。
  • hacker虚拟机(kali)通过桥接的方式与web1、物理机共同处于一个局域网,模拟黑客从互联网对DMZ区发起攻击打点。
kali攻击机

ping DMZ区的web1可以连通:

ping web1

ping 二层网络是无法连通的:

ping web1的另一个网卡是无法ping通的

ping web1的另一个网卡是无法ping通的,攻击机只能通过桥接方式暴露出来的192.168.43.253端口进行渗透。

2.5 网络连通性测试

2.5.1 核心网(三层网络)内部连通性

DC和PC2可以互相访问

核心网DC与PC2连通性测试

2.5.2 核心网和二层网络的连通性

核心网和二层网络之间的联通性

PC1可以ping通DC和PC2,但是反之不行,分析可能是PC1的防火墙影响。

2.5.3 DMZ与二层网络的连通性

2.5.4 DMZ访问互联网

DMZ区可以访问互联网

2.5.5 二层网络访问互联网

二层网络无法访问互联网

二层网络发现无法访问互联网,分析可能是新设置的NAT模式的vmnet2未生效,因此决定修改默认vmnet8的NAT网段(填一开始偷懒的坑):

  1. 修改网络配置文件

    • 打开终端,使用以下命令编辑VMware Fusion的网络配置文件:

      sudo vi /Library/Preferences/VMware\ Fusion/networking
    • 在该文件中,找到与NAT相关的配置部分,例如vmnet8,然后修改SUBNET为想要的网段,例如192.168.52.0。同时,将DHCP设置为no以使用静态IP(后面发现不需要将DHCP设置为no)。

  2. 修改NAT配置文件

    • 继续在终端中编辑NAT配置文件:

      sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf
    • 在该文件中,设置网关地址,例如192.168.52.1,确保网关的IP与设置的网段一致。

networking原始配置:

networking修改后的配置:

nat.conf原始配置:

截屏2024-12-30 15.33.05

nat.conf修改后的配置:

截屏2024-12-30 15.33.32

重启vmware fusion。

修改完成之后虚拟机如果还是原先的设置,即二层网络都在vmnet2(192.168.52.0/24)中。ping baidu.com不通,无法访问互联网。尝试取消vmnet2的NAT选项,还是不行。

截屏2024-12-30 15.40.29

所以,将所有连接二层网络的虚拟机的对应网络适配器改成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。

截屏2024-12-30 15.58.35

启动网卡:sudo ifup eth0

ping不通baidu,但能ping通8.8.8.8,说明能访问互联网了,但是域名解析有问题。

  • 域名解析配置

查看域名解析的配置,发现配置的是192.168.52.2,所以修改成192.168.52.1

最终成功联通互联网。

涉及到vmnet2的所有网卡都需要重新进行适配。

2)二层网络——PC1

修改网卡配置的时候需要登录域管理员账户,需要启动DC。

修改前的配置:

截屏2024-12-30 16.16.00

修改后:

默认网关和DNS服务器都改成192.168.52.1。

  • 待网卡生效后测试发现还是无法访问互联网和web2:

尝试关闭防火墙尝试(也需要域管理员权限)。

本来web2无法ping通PC1,现在可以了。

但PC1还是无法访问互联网,并且PC1也无法访问web2。

截屏2024-12-30 16.33.19 截屏2024-12-30 16.39.09

显示无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可以访问互联网了。

截屏2024-12-30 17.12.49

PC1测试

PC1和web2可以互相访问。

截屏2024-12-30 17.18.11

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 命令会执行以下操作:

    1. 清空所有链(Chains):默认情况下,iptables -F 会清空默认的三个表(filter、nat、mangle)中的所有链(INPUT、FORWARD、OUTPUT、PREROUTING、POSTROUTING等)。
    2. 不删除用户定义的链:如果你创建了自定义的链,它们不会被 iptables -F 命令删除。
    3. 保留默认策略iptables -F 不会改变链的默认策略(默认策略是指当一个包没有匹配任何规则时,iptables 将如何处理这个包)。例如,如果默认策略是 ACCEPT,即使清空了所有规则,这个默认策略仍然会保留。
    4. 立即生效iptables -F 命令会立即生效,不需要重启网络服务。

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,可以开始渗透之旅了。

参考


文章作者: 司晓凯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 司晓凯 !
  目录