前言
在CNVD上看到一个CMS存在多种类型的漏洞,对于之前只能审计出SQL注入和XSS的我来说是个比较好的学习案例,于是从网上找到源码,本地搭建审计一波
【查看资料】
审计环境
phpstudy(php 5.4.45+Apache+Mysql)
phpstorm + seay代码审计工具
Windows 7 64位
代码审计
个人习惯,安装完成后同样先看/install目录,看逻辑是否合理,有没有可能存在重装漏洞
使用file_exits()检查是否存在/install.lock.php文件,存在则exit退出,不存在重装漏洞。
接下来就从前台开始,先看入口文件index.php
require_once(dirname(__FILE__) . "/core/init.php");
// 预防XSS漏洞
foreach ($_GET as $k => $v) {
$_GET[$k] = htmlspecialchars($v);
}
$dbm = new db_mysql();
// 预处理搜索时的值,主要是防止sql的注入
if (isset($_GET['q'])) {
//搜索框为空鼠标点击显示15个热搜词
if (isset($_GET['act']) && $_GET['act'] == 'hot') {
if (trim($_GET['q']) == '') {
$sql = "SELECT id,q,qnum FROM " . TB_PREFIX . "search_keyword LIMIT 15";
$res = $dbm->query($sql);
if (empty($res['error']) && is_array($res['list'])) {
foreach ($res['list'] as $k => $v) {
$res['list'][$k][