CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

实验链接

phpok是一套采用PHP+MySQL开发的企业网站系统,其4.8.338及4.9.015版本存在任意文件上传漏洞。通过实验了解phpok任意文件上传漏洞的成因,掌握基本的漏洞利用方法。

链接:http://www.hetianlab.com/expc.do?ce=e987f417-cc29-47ff-a5bf-8aaceadd11b2

实验简介

实验所属系列: Web安全

实验对象: 本科/专科信息安全专业

相关课程及专业: 计算机基础、计算机网络、PHP

实验类别: 实践实验类

预备知识

  • 漏洞信息

    漏洞名称:phpok任意文件上传

    漏洞编号:CVE-2018-12491

    漏洞描述:phpok是一套采用PHP+MySQL开发的企业网站系统,其4.8.338及4.9.015版本存在任意文件上传漏洞,攻击者可利用漏洞上传任意文件,获取网站权限。

    危害等级:高危

    漏洞修复:对上传类型后缀进行过滤;升级phpok为最新版本。

  • 文件上传漏洞相关实验:文件上传实战靶场Upload-labs(实验稍后添加)

实验目的

通过实验了解phpok任意文件上传漏洞的成因,掌握基本的漏洞利用方法。

实验环境

  • 操作系统:Windows10、ip:10.1.1.79

  • 工具:phpStudy、Firefox、sublime text、burpsuite、中国菜刀

实验步骤

步骤一

任务描述:phpok_4.8.338任意文件上传漏洞简单复现及分析。

实验需要事先获取后台管理员权限,可通过**管理员账号等方式,这里不做演示(管理员账号:admin,密码:password)。

确保Apache、MySQL服务正常开启:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

为避免出现权限问题,点击【其他选项菜单】—>【phpStudy设置】—>【允许目录列表】,并重启phpStudy:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

访问服务器10.1.1.79/phpok_4.8.338/admin.php:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
登录:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
在phpok后台选择【功能菜单】—>【工具】—>【附件分类管理】:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

对【压缩软件】进行编辑操作,在【支持的附件类型】中添加php并提交:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
查看修改后结果:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

选择左侧的【内容管理】—>【资讯中心】:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

点击【行业新闻】后面的+号添加新的文章,点击【选择图片】:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
新建php木马文件:

一句话内容:<?php @eval($_POST['upload']);?>

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

【上传附件】处选择【压缩软件】,上传包含一句话木马的PHP文件test.php:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

上传成功后点击【预览】,即可看到上传附件的地址:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

利用工具访问上传的PHP文件并执行命令:

注:工具在C:\tools\中国菜刀\文件夹内
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

在【POST输入框】中填写需要执行的命令并提交:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

提交结果:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

问题代码出现在\phpok_4.8.338\framework\admin\rescate_control.php:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

这里只判断附件类型是否为空,没有限制后缀。导致可以自行添加PHP后缀,上传恶意文件,获取网站shell。

步骤二

任务描述:phpok_4.9.015任意文件上传漏洞简单复现及分析。

压缩刚刚创建的一句话文件test.php:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

登录后台/ phpok_4.9.015/admin.php,管理员账号及密码同phpok_4.8.338一致,选择【模块管理】—>【模块导入】:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

选择刚刚压缩的文件导入,可以看到文件已经上传到了\phpok_4.9.015\data\cache\目录下:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

在菜刀中添加shell,获取目标服务器权限:

菜刀部分操作不会使用的同学可参考我另一篇笔记:FCKeditor 2.4.3文件上传漏洞
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

问题代码出现在\phpok_4.9.015\framework\admin\module_control.php:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

没有做任何过滤,直接把zip原样解压缩到/data/cache/目录下。

步骤三

任务描述:phpok_4.9.015还存在任意文件下载漏洞,进行漏洞简单复现及分析。

选择后台右上方的【功能菜单】—>【设置】—>【风格管理】:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

点击【文件管理】:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

随便删除一个文件并用burpsuite抓包:

burpsuite不会使用的同学可参考我另一篇笔记:burp进行暴力**
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

丢到repeater模块中,并修改数据包:
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

关闭burpsuite的intercept,重新访问http://10.1.1.79/phpok_4.9.015/index.php
CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记

可以看到文件已删除,网站主页不存在。

问题代码位于\phpok_4.9.015\framework\admin\tpl_control.php:

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记
$file虽然是由几个参数拼接而成,但是加上…/…/就可以回到任何位置,造成任意文件删除漏洞。

答题

CVE-2018-12491 phpok任意文件上传 ——合天网安实验室学习笔记