zentao linux 伪静态,禅道pms路由及漏洞分析

本帖最后由 xmidf 于 2018-9-29 09:28 编辑

前言

故事起源于一次校园网内扫描,扫到一台禅道的服务器,遂开始分析起了一些历史漏洞,但是由于版本原因在服务器上都没有成功

文本分析了下禅道中路由的设置,以及一些历史漏洞,若有疏漏,还望斧正。

路由分析

路由是分析和审计cms前一个很重要的点,能了解整个cms的基本框架和代码流程。

禅道各个版本中路由没有什么较大的变化,这里以9.1.2为例进行分析。

首先,禅道里有两种类型的路由,分别对应者两种不同的url访问方式

PATHINFO:user-login-L3plbnRhb3BtczEwLjMuMS93d3cv.html以伪静态形式在html名称中传参

GET:index.php?m=block&f=main&mode=getblockdata类似于其他常规cms在get参数中传参

index.php

8f3ff2fbfdd7c7c8339951a6542705fa.gif

an1.png (211.96 KB, 下载次数: 45)

2018-9-29 10:20 上传

贴代码太多了,就放张图片好了。

一开始是加载了一些框架的类,然后new了一个路由

$app = router::createApp('pms', dirname(dirname(__FILE__)), 'router');

然后做了一些简单的判断和是否安装,最主要的是最后的三行

$app->parseRequest();

$common->checkPriv();

$app->loadModule();

看方法名也大致能猜到是干嘛了,分别对应着参数解析、权限检测、模块加载

router.class.php路由的代码文件在frameworkbaserouter.class.php中

[AppleScript] 纯文本查看 复制代码public function parseRequest()

{

if(isGetUrl())

{

if($this->config->requestType == 'PATH_INFO2') define('FIX_PATH_INFO2', true);

$this->config->requestType = 'GET';

if($this->config->requestType == 'PATH_INFO' or $this->config->requestType == 'PATH_INFO2')

{

$this->parsePathInfo();

$this->setRouteByPathInfo();

}

elseif($this->config->requestType == 'GET')

{

$this->parseGET();

$this->setRouteByGET();

}

else

{

$this->triggerError("The request type {$this->config->requestType} not supported", __FILE__, __LINE__, $exit = true);

}

}

一开始的isGetUrl就会判断是那种类型的传参方式

[AppleScript] 纯文本查看 复制代码function isG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值