在做某次比赛题目遇到的一道CMS渗透的题目,www.zip泄露了源代码,需要现场代码审计漏洞,现场就那点时间去审计这种大型CMS,这不是耍流氓嘛?(小声)
漏洞复现:在系统的网站设置里写入恶意语句后在工具首页生成处重新生成一个PHP文件
原理分析:后台的首页生成功能可以随意生成php文件,将恶意语句写入首页文件即可执行。
因为是后台漏洞,我们直接去看admin目录下的index.php文件看下路由怎么写的,两个变量一个m一个c,根据分析就知道$model是控制功能点具体对应的哪个文件,$action则对应着文件的具体哪个函数
根据我们抓包分析把这个功能点定位到config.class.php文件的save_action()功能,看具体的代码其实就在83和85行
第83行追踪MODEL,没看太懂好像就是包含了config.model.php文件
第85行发现将$POST进行了传值,追踪setConfig()方法。首先在数据库中的admin_config表进行查询列名为name的那列然后赋值给$config,随后对$config数组进行遍历给$v,定义了$allList数组赋值$v['name'],这里就是将遍历后的数组$config值给它,然后将POST传参进来的值进行遍历给$v,然后在if判断中检查传进的值是否在原先定义的数组$allList中,如果在就把参数的值更新掉没有就新增
继续追踪下一部分到cache.class.php中的index_action()方法,根据观察参数定位到make_index_url这个参数,调用了webindex()方法,追踪
webindex()函数的$path,是由是可控的然后进行fwrite()写入,$content处写入的内容就是经过模板渲染后的基本设置的内容
为啥不可以用其他命令执行函数或者说写一句话呢,因为在gobal.php中包含了安全文件进行了敏感词过滤,同时将英文括号变成了中文。
原文始发于微信公众号(飞奔的狸花猫):记一次白盒审计解决CTF题目
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/2258713.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论