CVE-2018-20486漏洞还原

CVE-2018-20486漏洞是针对于Metinfo cms的存储型xss,可以绕过登录验证,直接拿到管理员cooike的高危漏洞。学习下漏洞挖掘、漏洞利用思路。

一、利用条件

Metinfo 6.x (6.0.0-6.1.3)
无需登录,知晓后台登陆地址。

二、漏洞还原环境

1、docker(推荐,根据配置文件和命令,docker就可以自动搭建我们所需要的任何系统环境了,还是比较方便的)
2、虚拟机

CVE-2018-20486漏洞还原_第1张图片

三、漏洞剖析

这里我们选择最新的Metinfo6.1.3进行漏洞还原。
漏洞位于admin/login/login_check.php第12行。

CVE-2018-20486漏洞还原_第2张图片
login_check.php

url_array数组的一部分赋值给turefile,turefile经过authcode加密插入数据库。

在common.inc.php第10行中,url_array是本地文件的绝对路径赋值


CVE-2018-20486漏洞还原_第3张图片
url_array.png

这里也没问题,那漏洞出现在哪呢?
我们看common.inc.php中77-82行,这是对传入的cookie、post和get方法的参数进行可变变量进行注册的过程。这里的url_array[]已经赋值,如果我们构造url_array[]的内容以get的方法上传至服务器会有什么效果呢?

/admin/login/login_check.php?url_array[]=inject here&url_array[]=a

CVE-2018-20486漏洞还原_第4张图片
可变变量的注册

可见,url_array的内容已经被修改成功。而turefile同样被修改,最终被存储在数据库,存在存储型xss漏洞!


CVE-2018-20486漏洞还原_第5张图片
turefile值已被修改

四、漏洞利用

xss激活点在哪里?
位于/app/system/safe/admin/index.clss.php 的doindex方法中,此方法对应着后台的【安全-安全与效率】操作。继承类的关系index <- admin <- common,common中load_config_global()接口加载全站配置数据。将数据库所有的信息加载在$_M变量。如图:

CVE-2018-20486漏洞还原_第6张图片
$_M变量赋值

_M['config']['met_adminfile']解密,此时返回/app/system/safe/admin/index.clss.php,解密后的XSS payload进入$localurl_admin。

CVE-2018-20486漏洞还原_第7张图片
解密

CVE-2018-20486漏洞还原_第8张图片
localurl_admin

index.class.php中代码39行,包含了模板/app/system/safe/admin/templates/index.php,跟进到index.php,在66行未过滤直接输出了$localurl_admin,最终导致了XSS。


CVE-2018-20486漏洞还原_第9张图片
html直接输出

五、测试poc

http://127.0.0.1/MetInfo6_1_3/admin/login/login_check.php?url_array[]=&url_array[]=a

打开【效率与安全】直接触发.


CVE-2018-20486漏洞还原_第10张图片
漏洞触发

六、攻击测试

我们使用xss平台的恶意代码,以短链接的形式植入url_array,管理员点击,即获取管理员cookie。


CVE-2018-20486漏洞还原_第11张图片
得手

你可能感兴趣的:(CVE-2018-20486漏洞还原)