phpcmsV9.6.0注入+前台getshell
作者:admin | 时间:2018-7-29 19:40:57 | 分类:黑客技术 隐藏侧边栏展开侧边栏
此漏洞发出来已经有段时间了,转过来给小伙伴们学习一下,文章结合漏洞时代和cnnetarmy博客内容,在此感谢。
代码分析:
主要的问题是phpcmsmodulesmemberindex.php 130行到140行
这里加载了两个文件.位于当前目录下的fields中的member_input.class.php。因为这里主要是调用了member_input.文件的开头就写清楚了
做一点v9的常识
因此在member_input.class.php中调用了
phpcmsmodelsitemodel_field_model.class.php
继续查看,发现调用的是
加载了数据库配置.然后读取了表model_field.那么这个流程就是需要从model_field中匹配某些东西。继续跟get函数
注意观察到
$func = $this->fields[$field]['formtype'];
if(method_exists($this, $func)) $value = $this->$func($field, $value);
查看formtype其实是edit.查看下edit函数
phpcmsmodulesmemberfieldseditorinput.inc.php
发现这里调用了$this->attachment->download
传输到地址经过new_stripslashes处理
限制了后缀为$ext = 'gif|jpg|jpeg|bmp|png'。同时限定了传输到必须是网址
("/(href|src)=(["|']?)([^ "'>]+.($ext))\2/i"
这个是一个实现远程图片自动上传功能的函数,用户提交的content中若有图片地址则自动将远程的地址copy到本地!在清楚content中的图片路径时候采用preg_match_all 正则匹配(红色代码部分),虽然有扩展名的验证但是很容易就能绕过,我们只需要将shell地址修改为:
http://mysite/shell.php?1.gif就可以绕过了,mysite是自己的网站地址,如果自己网站下解析php的话那么php内容应该是';?> 否则下载后得到的文件内容是空白,copy访问远程文件也像IE一样,访问后取得解析后的内容。
那么整个流程久清楚了..传输modelid起到了决定性的作用.只有在1,2,3,11的时候才会触发edit函数.同时可以赋值content.
GETSHELL代码:
另附上luan表哥的另一个脱裤脚本:
原文地址:
http://0day5.com/archives/4368/
phpcmsV9.6.0注入+前台getshell
你可能喜欢
始发于微信公众号: 黑白之道
本文由 华盟网 作者:congtou 发表,其版权均为 华盟网 所有