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,明天出去走走再审计