seacms v6.64 最新漏洞分析

栏目: 编程工具 · 发布时间: 6年前

内容简介:最近seacms 更新了版本,直接从6.61更新到了6.64, 小版本之间的时间间隔比较短,但是在新版本发布没有多久,已经有不少最新版本的漏洞被挖掘出,今天我们就来总结分析一下这些漏洞。后台sql注入漏洞,这个漏洞在提交cve的报告中,只列出了sqlmap的扫描结果,并没有写明漏洞产生的原因,作者在第一次溯源的时候也是因为疏忽,竟然没有找到漏洞点。

seacms v6.64 最新漏洞分析

最近seacms 更新了版本,直接从6.61更新到了6.64, 小版本之间的时间间隔比较短,但是在新版本发布没有多久,已经有不少最新版本的漏洞被挖掘出,今天我们就来总结分析一下这些漏洞。

CVE-2018-16445

后台 sql 注入漏洞,这个漏洞在提交cve的报告中,只列出了sqlmap的扫描结果,并没有写明漏洞产生的原因,作者在第一次溯源的时候也是因为疏忽,竟然没有找到漏洞点。

  1. 相信很多童鞋在做审计的时候,phpstorm的全局搜索也是和作者一样设置的吧,默认搜索的范围是 php 文件,一些没有用的文件是不去搜索的,因为这样确实是可以加快搜索的速度和进度,不用去看很多js和css等样式文件,以及html等模板文件,但是这个漏洞呢,问题就出在了htm模板文件之中,常规做审计的过程中,还真的是容易忽略!
    seacms v6.64 最新漏洞分析
  2. 在利用cve报告中提供的payload进行注入的时候,默认会进行跳转,这样对于漏洞追踪也产生了一点困难。

基础知识

要理解这个漏洞,首先要知道一个基础的问题,就是关于php的include机制,我们来做个实验:

  1. 首先建立一个php文件,内容如下:
    seacms v6.64 最新漏洞分析
  2. 然后建立一个htm文件,文件内容如下:
    seacms v6.64 最新漏洞分析
  3. 然后我们运行php文件,结果如下:
    seacms v6.64 最新漏洞分析
  4. 结果中我们可以看到,htm文件中的符合php语法的部分被正确解析执行了,当然这算是一个常识,例如我们有一个情景,有一个任意文件包含漏洞,我们怎么才能getshell呢,就可以利用这个知识点,我们首先污染apache或者nginx的日志文件,然后将其包含进来,这个时候其中符合php语法的部分,就会被解析执行,从而我们就能获取webshell,这在渗透中是非常常见的思路,在ctf中也是遇到过很多次了。

漏洞分析

经过溯源,漏洞产生的位置是:/admin/templets/admin_video_main.htm的42行附近。

先看一下seacms的全局过滤以及伪全局机制:

seacms v6.64 最新漏洞分析

这种防御方法有一个弱点,就是如果sql变量没有引号包围,那就相当于没有过滤,是十分危险的。

下面我们来看一下整个的漏洞逻辑部分:

seacms v6.64 最新漏洞分析

乍一看,整个的处理替换逻辑十分复杂,很难通过肉眼直接看出来,这里可以用一个小技巧,我们既然知道了是sql注入漏洞,那我们可以着重看进入sql查询的过程,我们这里在其中加几个var_dump,就能很明显的看出来了:

经过简化,我们的代码可以抽象成:

seacms v6.64 最新漏洞分析

seacms v6.64 最新漏洞分析

然后我们就可以开始测试:

seacms v6.64 最新漏洞分析

可以清楚的看到,报错注入是可以直接回显结果的,这里我们测试发现cve提交的payload有点小问题,是不用加repeat和allrepeat这两个参数的。

/admin_video.php?order=v_name and (extractvalue(1,concat(0x7e,(select user()),0x7e))) -- 1

提取数据的过程就不累述了,有回显的注入比较好办。

CVE-2018-17062

这是一串xss漏洞的cve集合,产生问题的文件是admin_video.php

作者给出的利用链接有:

admin_video.php?action=keoiw"><script>alert(1)</script>c7dkw

seacms v6.64 最新漏洞分析 其余可以利用的参数有:

area
type
yuyan
jqtype
v_isunion
v_recycled
v_ismoney

具体的利用可以参考具体 链接

我们去看一下这个代码层:

seacms v6.64 最新漏洞分析

首先这里我们传入的action是不满足任何一个if条件的,所以就进入最后一个else语句,然后我们跟进模板htm文件,查看一下变量的输出是否经过过滤。

seacms v6.64 最新漏洞分析

可以明显的发现,传入的变量没有经过任何的过滤,就直接输出,上面的参数基本都是这样的模式,所以这个漏洞发现的难度不是很大,但是需要及时跟进业务逻辑的更新操作。

CVE-2018-17321

同样是新业务点的xss漏洞,利用payload如下:

/admin_datarelate.php?action=dorandomset&maxHit=1000&time=1000</script><script>alert(1)</script>&submit=1

seacms v6.64 最新漏洞分析

/admin_datarelate.php?action=dorandomset&maxHit=1000</script><script>alert(1)</script>&time=1000&submit=1

seacms v6.64 最新漏洞分析

原理和上面的cve类似,这里就不重复讲解。

CVE-2018-17365

一枚任意文件删除漏洞,产生问题的文件是/admin/admin_template.php的114行附近。

有关的代码逻辑为:

seacms v6.64 最新漏洞分析

可以看到,接受到参数以后,对其进行了简单的过滤,我们只要绕过就可以进行任意文件的删除:

$dirTemplate="../templets";
substr(strtolower($filedir),0,11)!=$dirTemplate

过滤简单的截取了传入变量的前11个字符,然后与模板文件的开头对比,但是这里忽略了操作系统中的../上跳操作,即bypass payload为:

../templets/../install/install_lock.txt

这样我们就可以删除安装产生的install锁文件,从而重新安装seacms,拿到webshell。

实际演示一下删除index.php.bak:

删除之前:

seacms v6.64 最新漏洞分析

执行删除操作:admin_template.php?action=del&filedir=../templets/../install/index.php.bak

删除完:

seacms v6.64 最新漏洞分析 可以发现,确实成功删除了文件,这个过滤其实是十分不安全的,所以很容易就可以bypass。

总结

对于cms的cve挖掘,需要及时的跟进业务逻辑的更新,很可能新增加的业务就会有漏洞的产生。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Zen of CSS Design

The Zen of CSS Design

Dave Shea、Molly E. Holzschlag / Peachpit Press / 2005-2-27 / USD 44.99

Proving once and for all that standards-compliant design does not equal dull design, this inspiring tome uses examples from the landmark CSS Zen Garden site as the foundation for discussions on how to......一起来看看 《The Zen of CSS Design》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器