渗透靶场—ATT&CK红队评估实战靶场(一)

靶场搭建

靶场地址

网络拓扑图

网络搭建

如图所示,我们有三台虚拟机,一台vm1即win7与外网连接,另外两台vm2即win2k3,vm3即winserver08R2是内网环境,只能通过vm1进行访问。所以这里我们要搭建的环境:

  1. vm1,vm2,vm3三台主机在一个内网环境中,即将三台主机设置为仅主机模式放到一个VMnet中,实现三台主机在同一个内网中。这里我把三台主机都放在VMnet2中,如下图所示

  1. 同时保证vm1能访问外网,即能通过kali访问到,这里将其和攻击机kali放在同一个VMnet1中。在vm1下编辑虚拟机设置|添加网络适配器|自定义(VMnet1),最后配置好如下所示:

    vm1-win7-VMnet1-192.168.13.0/24-VMnet2-192.168.142.0/24

    vm2-win2k3-VMnet2-192.168.142.0/24

    vm3-winserver08R2-VMnet2-192.168.142.0/24

这里一开始发现连不上,且ip是莫名其妙的,打开ipv4属性发现没有自动获取,这里自动获取,另外几台也是一样,改成自动获取

启动主机

首先启动vm1,初始密码为hongrisec@2019,启动后在C:\phpStudy下启动phpstudy,启动报错的重启一下,至此,前期工作准备完成,正式开启渗透之路

信息收集

探测内网

nmap -sP 192.168.13.0/24 探测内网存活的机器

发现主机ip地址192.168.13.129

nmap -T4 -A 192.168.13.129 扫描10000端口、操作系统、版本

可以看到靶机开启80和mysql远程登陆端口3306,并且操作系统为windows2008,据此,我们可以先通过80端口查看web服务

web服务

发现是一个探针,那都不需要信息收集了,东西都在上面

既然有mysql服务,并且开了3306,不爆破一波不是人

root/root直接进了???真是够弱的弱密码。一般这种phpstudy搭建的环境,很有可能有phpmyadmin,直接加路径/phpmyadmin,弱密码成功登陆

发现有newyxcms这个数据库,那肯定有相应页面了,这时候我的思路有三个。

  1. 通过cms,前台或后台找寻能getshell的漏洞
  2. 搜索phpmyadmin的漏洞打过去
  3. 通过mysql写shell进去

getshell

现在还是渗透萌新,有靶场就都试一下

通过cms

看这个数据库名,可能是yxcms,尝试加路径/yxcms,成功登陆页面,前台信息搜集,发现有这样的内容

尝试此登陆,成功登陆,并且发现yxcms的版本为1.2.1,发现一篇审计此版本cms的文章——地址另一文章

要是真实环境也有这么舒服就好了。。。

前台模板处发现可以增加代码,这里我们插入一句话,蚁剑成功连接,并且直接是admin的权限,不需要提权了,此方法getshell成功

通过mysql写文件

通过mysql写文件有两种办法:

  1. 利用sql语句创建一张包含php一句话的表,以php后缀的形式导出到网站的绝对路径
  2. 利用环境变量中的日志记录功能,设置日志保存的地址为绝对路径的地址,保存日志的格式为php后缀的文件,利用sql语句,让含有php的一句话的查询记录被写入在日志中

验证第一种思路:show variables like '%secure_file%';

发现值为null,第一种思路无法进行。

验证第二种思路:show variables like 'general_log%';

这里虽然关闭了,但是我们可以远程开启(secure_file_priv无法远程开启)

set global general_log = 'ON';

设置日志保存的地址为绝对路径的地址,保存日志的格式为php后缀的文件:

SET GLOBAL general_log_file='C:/phpStudy/www/karsa.php'

然后进行sql查询,将一句话保存在php日志中:

SELECT '<?php eval($_POST["pass"]);?>'

蚁剑成功连接,此方法getshell成功

通过phpmyadmin

测试了几个cve,CVE-2014-8959等,发现版本都不太适合,然后这个暂时就不考虑了吧

内网渗透

CS上线

流程:创建团队服务器->客户端连接服务器->创建监听器->生成后门对应监听器->靶机运行后门成功上线

将生成的后门通过蚁剑上传,执行exe文件,即可cs上线

创建监听

Cobalt Strike|Listeners

Listeners|Add

反弹shell

Attacks|Packages|Windows Executable

成功生成一个shell后上传至靶机,通过虚拟终端执行.exe文件,反弹shell成功

内网信息收集

net view

本机ip为192.168.142.132,扫到一台192.168.142.130的主机

net config workstation

判断当前登陆域及登录用户信息

net time /domain

发现存在域,但是探测到的机器不是域控机,那我们思路就是进行横向渗透

net view /domain:god

查看域成员

该台机器在域中,ok,进行横向渗透

横向渗透

抓取密码

Access|Run Mimikatz

hashdump

权限提升

这里是我后面加的内容,因为发现不能通过admin反弹域内机器的shell,所以进行了提权操作

Access|Elevate

选取监听器,即会自动进行提权操作,下面的机器即为system权限的机器,后续操作在system机下进行

端口转发

因为外网不能直接访问内网,所以通过端口转发实现让内网主机连接到win7上

这里使用SMB Beacon的方法

重新建立一个新的监听器

Spawn

派生出这台3588机器,相当与一个儿子

横向移动

使用psexec进行跳跃

这里我试了几次,一开始都抓不到域控的机器,只能抓到内网中的一台,经过多次尝试后终于抓到,ip可能会有变化,请注意

这里我真测试到心态崩了,对于make_token原理又看了一下,在win7中我密码为hongrisec@2019,而且不知道为什么改不了密码,然后一直看别人博客直接就用抓取的win7机的密码,后面一直不对,想了原因,最终确定在了应该是token不对的问题上,第一台域内非域控机器的Domain应该是GOD,自己在password处手动设置hongrisec@2020,终于成功反弹域内机的shell

弹成功后,一样的targets选择OWA,jump|psexec,选取GOD.ORG

最终反弹DC机的shell,实现域渗透

总结

  1. 渗透web服务的过程比较简单,也没有什么坑
  2. 靶机默认设置了ip,导致一开始kali里扫不到ip,一脸懵,要更改DHCP自动获取
  3. cobalt strike不会一次性成功,在创建smb与连接内网机器时可能都需要进行重复多次操作,我同样的设置打了四五次才成功,可能还会有更多的情况

巨坑

这里一个巨坑,域和本机是不同的两套系统,这里梗住了特别久。我win7登陆计算机的密码是hongrisec@2019,域的密码是hongrisec@2020,所以我一直拿hongrisec@2019的password,psexec无法弹shell,后面猜测可能是这里问题,但是改密码我用hongrisec@2019的原密码也一直提示密码错误。最终用hongrisec@2020的域密码成功反弹shell

域和计算机是不同的两套系统,可能密码不一样

本次也算是填补之前hw,拿到shell,不会扩大战果的坑。因为第一次玩这种渗透的靶场,同样也是第一次后渗透,如有不好敬请见谅

posted @ 2020-11-18 21:02  kar3a  阅读(1016)  评论(0编辑  收藏  举报