某汽车网源码的进一步代码审计


文章首发于圈子社区:https://www.secquan.org/CodeAudit/1071106

前言

前段时间在先知社区看到一篇文章代码审计之某汽车网源码 。作者介绍了两个sql注入漏洞,我在学习之余对该套代码进行进一步审计也发现了几个有趣的漏洞。

代码结构

admin    --后台文件夹
cache    --缓存文件夹
include   -- 一些公共包含文件重点审核
index     -- 前台注册登陆
news      -- 新闻模块
index.php   --网站入口
qzqcw.php   --后台入口

越权添加管理员

该漏洞是个几个小漏洞组合而成,待我一一分析。

前台有限制的任意文件包含漏洞

该网站的功能都是直接通过include包含其他php使用的。在入口文件index.php中我们可以看到里面的包含规则:

<?php
include('common.inc.php');
include('index/page.php');

$m = isset($_GET['m']) && trim($_GET['m']) ? trim($_GET['m']) : 'index';

if (!file_exists('index/'.$m.'.php')) exit('error url');

include('index/'.$m.'.php');
?>

获取GET传来的$m参数拼接到文件路径中,如果文件存在就直接包含。当然这里也对$m参数也进行路径穿越的过滤,但是绕过并不是很难。
过滤代码在include/function.func.php22-32行之间,如下

function _filter($value) {
    if (is_array($value)) {
        foreach ($value as $key => $val) {
            $value[$key] = _filter($val);
        } 
        return $value;
    } 
    return str_replace(array('..\\', '../', './', '.\\'), '', trim($value));
} 

使用str_replace函数进行关键词过滤是非常不安全的,尤其是这种把关键词替换成空的情况。例如该函数把select关键词替换成空,我们只需改成selselectect即可。当函数把selelct替换成空前后合在一起就又成了我们所需要的select关键词。
这里的绕过同理,我测试的payload为:.../...//....///经过一轮替换后可以变成我们需要的../
但是因为这里限定后缀只能是php所以在这里这个漏洞还是很鸡肋。

后台不安全的资源访问

在admin文件夹下文件都会在开头加上这一行代码来防止普通用户来访问后文件资源

if (!defined('APP_IN')) exit('Access Denied');

如果APP_IN这个常量没有被定义就直接退出系统。但是该定义APP_IN这个常量的文件竟然在公共文件common.inc.php处。
file
而这个文件正好也被前面所说的index.php包含着。所以思路就很明确在index.php处包含后台文件即可使用网站后台资源了。

添加管理员

我们利用该漏洞尝试在没有进行后台登陆的情况下添加管理员,效果如下图
img
然后我们查看是否添加成功:
file

存储型xss

该站存在的xss其实并不少,这里挑选个利用相对简单的存储型xss聊聊

漏洞在公司注册处:http://qzqcms.top/?m=register
漏洞代码在index/register.php
file
可以看到参数nicname和company没有进行任何的xss过滤操作就直接带入到了数据库。
这里利用的需要注意两点:

  • 1.数据库限制了nicncame参数的长度范围,所以真正好利用是公司名称company参数。
  • 2.这些参数都有前端的限制我们可以在burp中修改绕过限制。

file

登陆后台查看,xss果然被触发:
file


文章作者: EASY
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EASY !
 上一篇
某cms代码审计 某cms代码审计
前言好久没有进行代码审计了,今天空闲选了一个较为简单的MVC架构的CMS进行练练手。源码下载地址版本为3.8.6。 该cms使用了THINKPHP3.2.3框架进行开发,并且没有修复其历史漏洞,这是其有多个漏洞的一个重要原因。 前端多个sq
2020-08-03 EASY
下一篇 
New blog New blog
前言我又又又换博客了,现在想想这是自已的第三个博客了。之前一直使用wordpress建立的博客,因为种种原因我选择放弃。hexo是我心中完美博客框架,纯静态的网页结构,在本地书写博客,一键上传github文章发布,甚至连自已的服务器与域名都
2020-06-24
  目录