xhcms审计-1

工具:Burp、Phpstudy、Seay、Sublime Text3
环境:Apache2、php5.6.9、mysql
搭建过程省略,千篇一律
代码分析:
Seay扫描结果第一条
xhcms审计 - 图1
双击进入
xhcms审计 - 图2
<?php
//单一入口模式
errorreporting(0); //关闭错误显示
$file=addslashes($_GET[‘r’]);
//接收文件名$action=$file==’’?’index’:$file; //判断为空或者等于index
include(‘files/‘.$action.’.php’);
//载入相应文件_
?>
代码简单到能让人吐槽
很明显的一个任意文件包含漏洞,不过存在php版本限制,5.4以前可以任意包含
接下来再看看别的
admin/index.php文件
xhcms审计 - 图3
代码与上方一模一样,也存在包含漏洞
但实际在访问后台时,r后面会自动跟login,而不是index,这是为什么呢?
打开admin/files/index.php文件
由于代码篇幅太长就截选部分

xhcms审计 - 图4
<?php
require ‘../inc/checklogin.php’;
require ‘../inc/conn.php’;
$indexopen=’class=”open”‘;
?>

可以看出,index.php是管理后台,对访问页面的用户自然会做一个判断。而checklogin.php就是用来检查权限的,跟进checklogin.php

xhcms审计 - 图5
追踪到这儿,都有些无语了,也不知道这作者是咋想的。。。
<?php
$user=$_COOKIE[‘user’];
if ($user==””){
header(“Location: ?r=login”);
exit;
}
?>
只要在cookie中加一个user(给任意值),就可以越权后台了
漏洞复现
新建一个名为user的cookie,内容任意,这里我写了admin

xhcms审计 - 图6
然后访问http://localhost/admin/?r=index即可
xhcms审计 - 图7