2020/2/22 74cms3.5.1 代码审计

0x00 网站结构

简单试了一下。每一个模块还是比较清楚的,分别对应网站的一个模块。还有一些没有权限访问

0x01 通读代码

先看入口文件,index.php
开头先对网站是否安装做了判断
然后就是判断是否是手机浏览
页面的变量都做了很好的过滤,单引号闭合,且intval强制转换

然后引入了配置文件:
/include/common.inc.php
include/mysql.class.php
我们跟进
/include/common.inc.php
74cms 公共配置文件
页面包含了几个文件,我们一会跟进,先来看看这个页面
对变量过滤:

if (!empty($_GET))

{

$_GET  = addslashes_deep($_GET);

}

if (!empty($_POST))

{

$_POST = addslashes_deep($_POST);

}

$_COOKIE   = addslashes_deep($_COOKIE);

$_REQUEST  = addslashes_deep($_REQUEST

有一个点:

$online_ip=getip();

$ip_address=convertip($online_ip);

我们一会看一下$ip_address是否拼接到了数据库是否能注入
页面最后

if ($_CFG['filter_ip'] && check_word($_CFG['filter_ip'],$online_ip))

      {

                  $smarty->assign('info',$_CFG['filter_ip_tips']);

                  $smarty->display('warning.htm');

                  exit();

      }

对ip进行了过滤。看起来过滤了字符。
跟进data/config.php

看到gbk,想到了宽字节注入,即使他的页面有时做了转义,依旧能注入
include/common.fun.php
这个就是一整个过滤页面了
过滤了sql,xss
同时ip注入几乎不可能了

include/mysql.class.php

$dbcharset = 'gbk'

于是我们就可以想到了,之后的测试中有目的的进行宽字节注入。

0x02 后台管理员密码可以爆破

我们先打开了后台

看到没有验证码
简单测试了一下并没有对密码错误有什么限制
复现:

虽然速度慢了些但是可以看到还是能够爆破出来密码

0x03 SQL注入漏洞

按照之前的思路找宽字节注入
心静不下来orz,明天出去走走再审计

猜你喜欢

转载自www.cnblogs.com/wangtanzhi/p/12346925.html