记一次白盒审计解决CTF题目

admin 2023年12月1日21:57:04评论26 views字数 851阅读2分50秒阅读模式
在做某次比赛题目遇到的一道CMS渗透的题目,www.zip泄露了源代码,需要现场代码审计漏洞,现场就那点时间去审计这种大型CMS,这不是耍流氓嘛?(小声)

漏洞复现:在系统的网站设置里写入恶意语句后在工具首页生成处重新生成一个PHP文件
记一次白盒审计解决CTF题目
记一次白盒审计解决CTF题目
记一次白盒审计解决CTF题目



原理分析:后台的首页生成功能可以随意生成php文件,将恶意语句写入首页文件即可执行。

因为是后台漏洞,我们直接去看admin目录下的index.php文件看下路由怎么写的,两个变量一个m一个c,根据分析就知道$model是控制功能点具体对应的哪个文件,$action则对应着文件的具体哪个函数
记一次白盒审计解决CTF题目
记一次白盒审计解决CTF题目
根据我们抓包分析把这个功能点定位到config.class.php文件的save_action()功能,看具体的代码其实就在83和85行
记一次白盒审计解决CTF题目
第83行追踪MODEL,没看太懂好像就是包含了config.model.php文件
记一次白盒审计解决CTF题目
第85行发现将$POST进行了传值,追踪setConfig()方法。首先在数据库中的admin_config表进行查询列名为name的那列然后赋值给$config,随后对$config数组进行遍历给$v,定义了$allList数组赋值$v['name'],这里就是将遍历后的数组$config值给它,然后将POST传参进来的值进行遍历给$v,然后在if判断中检查传进的值是否在原先定义的数组$allList中,如果在就把参数的值更新掉没有就新增
记一次白盒审计解决CTF题目
记一次白盒审计解决CTF题目
继续追踪下一部分到cache.class.php中的index_action()方法,根据观察参数定位到make_index_url这个参数,调用了webindex()方法,追踪
记一次白盒审计解决CTF题目
记一次白盒审计解决CTF题目
webindex()函数的$path,是由是可控的然后进行fwrite()写入,$content处写入的内容就是经过模板渲染后的基本设置的内容
记一次白盒审计解决CTF题目
为啥不可以用其他命令执行函数或者说写一句话呢,因为在gobal.php中包含了安全文件进行了敏感词过滤,同时将英文括号变成了中文。
记一次白盒审计解决CTF题目

原文始发于微信公众号(飞奔的狸花猫):记一次白盒审计解决CTF题目

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月1日21:57:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次白盒审计解决CTF题目https://cn-sec.com/archives/2258713.html

发表评论

匿名网友 填写信息