phpcmsv9.6注册功能远程getshell0day漏.PDF

phpcmsv9.6注册功能远程getshell0day漏.PDF

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
phpcmsv9.6注册功能远程getshell0day漏.PDF

phpcms v9.6 注册功能远程getshell 0day 漏洞分析 简介 phpcms 在国内应该使用很多,前几天被爆出来一个getshell 的0day,这个漏洞 无需登录即可远程直接getshell,所以影响很大。 phpcms 官方4 月12 日发布了9.6.1 版本,对漏洞进行了补丁修复。 漏洞分析: 在/phpcms/modules/member/index.php 文件register 函数处: 这里有一个$member_setting = getcache(member_setting); 就是从/caches/caches_member/caches_data/member_setting.cache.php 文件 中取出用户注册相关的配置信息: 然后我们继续/phpcms/modules/member/index.php 文件register 函数,前面的 一大部分都是根据member_setting 的配置信息来判断用户注册过程的合法性, 对注册进行验证的过程。 一直到下面的内容,130 行: 当 用户配置信息中choosemodel=1 时,加载了 /caches/caches_model/caches_data/member_input.class.php 和 /caches/caches_model/caches_data/member_update.class.php 文件,然后实 例化了member_input 类,并且传入$userinfo[modelid]参数,这里的 $userinfo[modelid]就是$_POST[modelid], 然后$_POST[info]经过new_html_special_chars 函数处理, new_html_special_chars 函数在文件 \phpcms\libs\functions\global.func.php 中,他的功能就是返回经 htmlspecialchars 处理过的字符串或数组: 经过处理的$_POST[info] 进入到$member_input-get()函数,跟进get 函数, 文件/caches/caches_model/caches_data/member_input.class.php 这里在get 函数中,将data=$_POST[info]循环去除key 和value 内容 这里的$this-fields 就在构造函数中: 也是获取了caches 中的配置信息,这里的$modelid 就是我们上面再register 函数中实例化member_input 类时传入的$userinfo[modelid]参数,也就是 $_POST[modelid]),当$_POST[modelid])=1 时,就是文件 /caches/caches_model/caches_data/model_field_1.cache.php 然后当这里的$field 也就是我们传入的$_POST[info]中key,等于content 时, $func = $this-fields[$field][formtype] = $this-fields[content][formtype] = editor, 然后$value = $this-$func($field, $value) = editor($field, $value ), 来看看editor 函数,就在get 函数下面: $value 变量和content进入了download 函数,这里的content值也就是上面 我们为什么要将$field 设置为content的原因 跟进download 函数,$this-attachment 也是在构造函数中定义: $this-attachment = new attachment(content,0,$this-siteid),在文 件/phpcms/libs/classes/attachment.class.php 在download 函数的153-160 行: 这里的$string = new_stripslashes($value),然后通过正则匹配$string,正 则里面的$ext = gif|jpg|jpeg|bmp|png, 如果匹配到正则中的内容,就将第三个括号的匹配内容取出来,再进入 $this-fillurl 函数,对url 进行处理。 我们先来看看一下这个正则: /(href|src)=([\|]?)([^ \]+\.($ext))\\2/i,画个图解释一下,一目了 然: 所以$string 也就是我们post 进来

文档评论(0)

tangtianxu1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档