蝉(feng)知(wo)cms

本文原创作者:EDI-VOID

原创投稿详情:重金悬赏 | 合天原创投稿等你来!

前言

前段时间朋友在渗透测试中遇到一个蝉知cms,于是一起审计出了不少漏洞,现在漏洞已经在新的版本中修复

正文

指纹识别

看了看源码,发现在好几个php中都存在一个判断 if(isset($_GET['mode']) and $_GET['mode'] == 'getconfig') die($app->exportConfig());  可以通过访问/index.php?mode=getconfig来获取目标cms的版本号,所有版本都有这个漏洞,响应为json。如下图:

可以看到版本号信息

在fofa上搜了几个蝉知cms验证了一下,都可以获取到版本信息

任意文件读取

搭建好环境,在测试后台和前台的功能时,在后台发现一个上传素材的地方

上传完素材精奇的发现文件的路径,是如下格式/123/www/file.php?f=source/default/default/password.txt&t=txt&o=source&s=&v=1524910657

于是复制下载丢到地址栏里一看,发现可以读取php文件的源码,只是有的目录没有权限而已

进一步审计其源代码,发现没有任何验证身份的代码逻辑

poc上场  /file.php? f=../index.php&t=txt&o=source  ,对,这里还可以跨目录,因为是cms,所以读取源代码是没有什么价值的,但是有不同的东西,就是数据库的配置文件等,于是翻阅cms的目录,发现system/config目录下的配置文件

逐个打开一看,有数据库的配置文件my.php,于是文件读取派上用场了,数了数目录层数,发现7.0版本的不可以读,有权限限制,pro1.6可以。

poc /file.php? f=../../system/config/my.php&t=txt&o=source

后台Getshell

想要getshell,就得找能生成自定义php的地方,继续测试功能,发现后台有一个编辑模版的地方,有可能有漏洞,点进去一看,这不就是直接在编辑php文件么

但是在源码里加上一句话却发现需要验证用户权限

如图所示,如果编辑模板需要管理员在cms的/system/tmp 目录下新建一个名字为jdga.txt的文件来验证权限你是否有写入权限。于是想起刚才的上传素材的地方可以跨目录上传文件,就想上传一个jdga.txt是否可以,于是操起burp抓包,数了数目录层数,把名称的参数改为../../../../../system/tmp/jdga,因为他这里本来文件名就没有后缀,说明他连接了一下字符串,我们也不必加后缀

此时成功将jdga.txt文件上传到了system/tmp目录下,绕过了权限验证

此时编辑模板,显示编辑成功

于是成功把验证的jdga.txt上传到了/system/tmp目录,此时再编辑模板文件,编辑的模板不在可以访问到的目录

继续抓包发现file参数可控

于是惯性思维,果然开发者又疏忽在了跨目录上,抓包改file参数,成功写入到www目录

验证

敬上杀器fofa

随便在前台html源码中提取一点特征,放到fofa的body关键字中搜索,于是出现一大堆蝉知cms的网站,比如搜索js的引用

body="chanzhi.all.js"  这里还可以在后面加上?v=pro1.6搜索指定版本的蝉知cms

首先getconfig获取版本号,成功

然后任意文件读取可以跨目录读取到数据库配置文件

这个配置文件的目录层数不可预测,我试了几个不一样,可以到时候自己加减目录层数尝试

试了下用数据库的帐号密码登录后台,以及换用户名为admin,没有登陆成功,有的管理员也许会疏忽把数据库密   码和后台密码设置成相同天的密码。

总结

对于一个刚入门的审计小白来说,总要总结一些大佬们早已经总结出的经验

黑盒测试从业务逻辑上下手,快速定位容易以及可能出现问题的地方。

所以审计一个cms的流程,不要从代码开始看,那就疯掉了,要先从业务逻辑开始,搭建好环境,从功能上找可能出现漏洞的地方,抓包,验证,看具体代码,面向获取更大权限的需求找其他的小漏洞或者小条件,cms是一群人开发的,每个人都有他的性格,于是相同的漏洞肯定出现好多次,比如这个跨目录。

看不过瘾?合天2017年度干货精华请点击《【精华】2017年度合天网安干货集锦

别忘了投稿哦!

合天公众号开启原创投稿啦!!!

大家有好的技术原创文章。

欢迎投稿至邮箱:edu@heetian.com

合天会根据文章的时效、新颖、文笔、实用等多方面评判给予100元-500元不等的稿费哟。

有才能的你快来投稿吧!

点击了解投稿详情 重金悬赏 | 合天原创投稿等你来!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值