一次方维o2o商城PHP审计学习

news2024/11/24 1:28:16

PHP审计源码学习

一、渗透测试

起因是朋友问fanwei o2o源码搭建的站后台能不能拿shell,于是我进后台进行了一番尝试,各功能点没什么进展,好多地方过滤了,上传也是白名单,编辑器的1day修了,万幸的是有个拿不到shell但是可以执行sql语句的功能点,再通过fofa提取特征,在其他站点下拿到一份残缺的源码(Git_Extract工具拖出来的源码文件名是中文会乱码,换用GitHack解决)。
这次学习过程中不同时间拿到了三份不同版本的源码(v1.x,v3.x,v6.5),真实环境的站一个是朋友发的那个v3.x的站一个是fofa找的v6.9的站。 在这里插入图片描述
在这里插入图片描述

            尝试Shell写到慢日志绕过priv,需要绝对路径,我是这么找的:
            1.写python脚本遍历源码下的所有路径和文件后burp suite访问所有文件甚至是构造畸形参数以尝试出现报错页面。
            2.在上传iconv压缩包处上传畸形压缩包制造报错找到了绝对路径
            可惜sql语句执行错误,没有写入权限,高版本的话对这里则是做了过滤,替换了反斜杠。

** 二、审计源码**

通过前期翻sql表的信息收集可以知道任务计划表的data字段是序列化后存储在数据库的表里的,所以拿到源码先看了任务计划处功能点的“立即执行计划任务”的操作,使用
“立即执行计划任务”操作会将yanhuo_schedule_list表的data字段值反序列化后再调用类自定义的exec函数,所以我就想通过updata语句修改成我们需要的payload然后流入exec函数,而残缺的源码里正好缺了这部分找不到exec()函数里面咋写的。
在这里插入图片描述在这里插入图片描述
源码残缺的太多了,就通过源码特征发现了个高版本(v6.5)而且齐全的源码(但本地搭不起来),在这里审到了 二次注入配合下的文件写入漏洞,只要update语句修改fanwe_conf表里面的字段构造payload,调用update_sys_config()函数触发file_put_contents() 应该就能成功写shell。
在这里插入图片描述

在修改佣金提现手续费处会调用update_sys_config()函数
构造payload时要注意:1.对于value字段用addslashes ()函数做了一遍过滤payload插name字段即可.2闭合数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
真实环境下6.9版本的站,修复了这个漏洞(6.9版本对name字段似乎也做了一定黑名单过滤php关键字会替换为空,即使payload尝试写入html文件,也触发不了file_put_contents ()函数
在这里插入图片描述
文件上传漏洞(v3.x) ,这个漏洞利用过程比较常规:

do_upload_icon()函数内对上传的zip文件解压后递归删除文件、文件夹
在这里插入图片描述
在这里插入图片描述
跟进unzip函数
在这里插入图片描述
在这里插入图片描述
提取压缩包文件名:
在这里插入图片描述
这里拼接了我压缩包内文件的文件名(…/ll.php)导致文件创建到上一级目录避免被删除:

在这里插入图片描述
在这里插入图片描述

三、最后

这次学习觉得很有意思,萌新的一次分享希望能够对大家有帮助!有什么没讲清楚的地方可以回复我

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

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

相关文章

priority_queue(优先级队列)模拟实现(堆方式)

目录 priority_queue初步介绍 堆 堆的模拟实现 接口实现 插入(push) AdJustUp(向上排序)接口 删除(pop) AdJustDown(向下排序算法) 适配器堆总结 仿函数 用仿函数对堆进一步封装 用堆进行封装优先级队列 代码总结 priority_queue初步介绍 priority_queue的性质是…

BOOST 恒压控制驱动芯片,外围电路简单

应用说明 Hi8000 是一款外围电路简单的 BOOST 升压恒压控制驱动芯片,适用于 2.7-40V 输入电压范围的升压恒压电源应用领域,启动电压可以低至 2.5V,可以广泛应用 于太阳能、便携式数码产品,锂电升压应用等供电领域。 应用领域 移…

Day_44希尔排序

目录 一. 关于希尔排序 二. 希尔排序的实现过程 三. 希尔排序的代码实现 1. 核心代码 2. 修改后的代码 四. 代码展示 五. 数据测试 六. 总结与反思 一. 关于希尔排序 希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由希尔在 19…

报名抽奖功能(互动功能接收端JS-SDK)

功能概述 本模块主要处理报名抽奖相关逻辑,如抽奖开始、结束和更新等事件消息。 图:抽奖--效果截图 图:抽奖--效果截图 初始化及销毁 在实例化该模块并进行使用之前,需要对SDK进行初始化配置,详细见参考文档。 在线…

直播教学答题卡(互动功能发起端JS-SDK)

本 SDK 主要包括发起答题卡、管理答题卡题库等功能。以下操作仅支持角色为讲师/嘉宾/助教/管理员的用户执行。 答题卡可以分为快速问答和普通答题卡。 快速问答只有单选和多选两种类型,没有具体的选项内容,最多可有 5 个选项。普通答题卡题目类型包括&a…

MySQL:索引

索引,在MySQL中非常重要。它能提高数据库的性能,不用加内存,不用改程序,不用调sql,只要执行 正确的 create index ,查询速度就可能提高成百上千倍。 但是,查询速度的提高是以插入、更新、删除的…

Lora模型训练-koya SS GUi

前提 现在大部分 AI 产品采用的的大模型(dreamboth),但是在产品的训练中也发现了不仅仅需要较大的内存还需要好的 GPU 成本较高,而且模型较大修改只能重新训练不能修改,为了解决这个问题开始推荐 lora 小模型时代.接下来讲解 lora 模型以及使用小模型(lora)的Koya.SS.GUI的流程…

LeetCode-031. 最近最少使用缓存

HashMap扩容:(30条消息) 代码优化 | 如何设置HashMap的初始值大小_hashmap指定初始值大小_死牛胖子的博客-CSDN博客 1、哈希表LinkedList 超出时间() Collection(集合):容器,用于存放对象(引用类型。基本类型需要自动装箱) List(列表):元素…

正则表达式(一):基础命令及字符

正则表达式一-基础命令及字符 一、常用命令补充:1.grep:2.sort:3.uniq:快速去重4.tr:5.cut:6.split:文件拆分7.paste:合并文件8.例题应用: 二、正则表达式:1.…

UID和cookie的查找

1、首先在浏览器中输入www.weibo.cn(如图1), 然后按回车键,打开微博(如图2)。 图1 图2 2、在上图空白处单击鼠标右键,在显示出的对话框中点击【检查】,如下图。 3、如下图,点击【网络】或者【N…

chatgpt赋能python:Python自定义函数:让编程更高效

Python自定义函数:让编程更高效 Python是一种非常流行的编程语言,它有很多强大的功能,包括自定义函数。Python的自定义函数可以让你编写自己的代码,并将其作为一个函数来使用。这在编程中非常有用,因为它可以让你将代…

java设计模式(十九)备忘录模式

目录 定义模式结构角色职责代码实现适用场景优缺点定义 备忘录模式(Memento Pattern) 保存一个对象的某个状态,以便在适当的时候恢复对象。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。备忘录模式属于行为型模式。 模式结构 角色职责 …

数据结构04:串的存储结构与KMP算法

前言 参考用书:王道考研《2024年 数据结构考研复习指导》 参考用书配套视频:4.1_1_串的定义和基本操作_哔哩哔哩_bilibili 特别感谢: Google Bard老师[解释KMP,修改BUG]、Chat GPT老师[修改BUG]、BING老师[封面图]~ 当我请求BI…

chatgpt赋能python:Python如何使用空行优化SEO

Python 如何使用空行优化 SEO 在网页排名算法中,空行的使用可以对网页的排名产生影响。在 Python 中,空行的使用也被用来优化代码和提高代码的可读性。本文将介绍如何在 Python 中使用空行来优化代码和优化 SEO。 空行的作用 在 Python 中&#xff0c…

【论文阅读】AlexNet: ImageNet Classification with Deep Convolutional Neural Networks

1. 简介 AlexNet是一个用于图像识别的卷积神经网络,其应用在ILSVRC比赛中,AlexNet所用的数据集是ImageNet,总共识别1000个类别 2. 网络结构 整体网络结果如下图所示,一共有8层,前五层是卷积层,后三层是全…

Kubernetes之pod

Kubernetes之pod 在通过docker运行程序时,我们通常会制作Dockerfile文件构建镜像。也可以基于某个镜像运行容器在容器中安装组件之后,再基于容器生成镜像 使用如下命令可生成镜像,想了解更多参数请添加–help docker build -f Dockerfile路…

(超超详!!)Linux进程间通信-----管道 + 共享内存详解

索引 通信背景管道匿名管道命名管道 共享内存基本概念共享内存如何管理共享内存的相关函数共享内存的删除共享内存的使用 通信背景 进程是具有独立性的,每个进程都有独立的PCB,独立的数据和数据结构,因此进程间想要交互数据,成本会非常高,但有时候需要多进程协同处理同一件事情…

java设计模式(十五)责任链模式

目录 定义模式结构角色职责代码实现适用场景优缺点 定义 责任链模式(Chain of Responsibility) 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象能够处理…

deque介绍

目录 简介: 初识deque deque的底层实现 deque插入 deque的operator[] deque的迭代器 deque的缺陷 与vector比的缺陷 与list相比的缺陷 deque的优势 简介: 这一节不会进行模拟实现,只会聊聊deque的底层 原因是我们学习deque是为了…

RabbitMQ中的AMQP协议与核心组成介绍

前言 在RabbitMQ中为了传输数据,使用的是基于TCP/IP协议构造的AMQP协议。RabbitMQ的核心组成部分包括:Server、Connection、Channel、Message、ExChange、Virtual Host、Bingings、Routing key、Queue AMQP协议 AMQP协议全称:Advanced Mes…