Metinfo 5.3 后台getshell(远程文件包含漏洞)分析

最近准备入代码审计的坑,拿Metinfo来练练手,先找了下以前的版本整理下思路。

看了下大神的文章,代码审计的方法总体上分为两种:

    1. 跟踪用户的输入数据,判断数据进入的每一个代码逻辑是否有可利用的点,此处的代码逻辑可以是一个函数,或者是条小小的条件判断语句。

    2. 根据不同编程语言的特性,及其历史上经常产生漏洞的一些函数,功能,把这些点找出来,在分析函数调用时的参数,如果参数是用户可控,就很有可能引发安全漏洞

 

针对Metinfo 5.3的该漏洞利用后种方法进行,现在本地搭上Metinfo 5.3.1,利用Seay大神的代码审计工具自动审计下,发现大约在60行发现存在漏洞的函数

具体函数如下:

Metinfo 5.3 后台getshell(远程文件包含漏洞)分析_第1张图片

 

在上面包含export.func.php引用curl_post函数,跳转到该函数发现几个有用的函数:

link_error根据传入的字符串返回int型变量值

curl_post:利用curl构造数据包发送到URL,判断开头是否是metinfo,是则返回后续字符,否则返回“nohost”

Metinfo 5.3 后台getshell(远程文件包含漏洞)分析_第2张图片

漏洞分析:$result返回请求地址的后的页面,要求返回的内容“metinfo”,接收后续字符内容,利用explode函数分割标签内容放入$results数组中,后续将数组内容写入dlappfile.phpstandard.php

Metinfo 5.3 后台getshell(远程文件包含漏洞)分析_第3张图片

漏洞利用:想办法构造全局变量$met_host,$met_file使其访问我们可控的网站内容,由于$met_file在漏洞函数上已经被赋值,所以无法利用其传参,想办法改变$met_host的值

Metinfo 5.3 后台getshell(远程文件包含漏洞)分析_第4张图片

Metinfo 5.3 后台getshell(远程文件包含漏洞)分析_第5张图片

 

Global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件,搜索下当前文件及其包含文件$met_host是否被赋值,幸好没有.....ok,在远程主机上构造$met_file目录文件,代码如下

访问http://127.0.0.1/Metlnfo5.3.1/admin/app/physical/physical.php,额需要用户登陆,看来必须登陆后台才行,登陆后访问,提交$met_host值,如下

现在本地看下dlappfile.php 和 standard.php 是否成功写入

Ok,上菜刀,菜刀配置如下:

Metinfo 5.3 后台getshell(远程文件包含漏洞)分析_第6张图片

 

成功getshell!

Metinfo 5.3 后台getshell(远程文件包含漏洞)分析_第7张图片

 

刚准备开始下载Metinfo最近版本,结果听学长说不收Metinfo的洞... QAQ

漏洞参考:http://www.91ri.org/16663.html

你可能感兴趣的:(代码审计)