53 代码审计-TP5框架及无框架变量覆盖反序列化

news2024/11/19 5:30:41

目录

    • 演示案例:
      • Metinfo-无框架-变量覆盖-自动审计或搜索
      • phpmyadmin-无框架-反序列化-自动审计或搜索
      • Thinkphp5-有框架-搭建使用入口访问调试SQL等

演示案例:

Metinfo-无框架-变量覆盖-自动审计或搜索

变量覆盖会直接覆盖原始变量,来形成新的变量值
在这里插入图片描述
搜索关键字或者自动审计,自动审计能帮助我们对程序快捷的进行漏洞分析,这些是简单报告,具体有没有漏洞是有待查询的,他是建立一下代码中可能存在的安全问题,forty也是可以做这个事情的
在这里插入图片描述
我们可以通过自动审计发现有些变量覆盖的东西,通过文件名可以判断出这个文件是网站程序开发里面的配置性文件,而且是在Include目录,在代码挖掘审计的过程中,像文件目录和文件名,你是要有一定的理解支持的,admin后台目录,Install安装目录,include配置性文件目录
在这里插入图片描述
一般优先看配置性文件,因为程序在运行过程中,他一般会包含配置性文件,如果不包含配置性文件很多功能就操作不了,我们优先看那个文件是比较关键的,我们不可能每个都看到,一般是看配置性文件多一些,配置性文件在程序中扮演的角色会更多一些,基本上很多文件都会包含配置性文件,就好比我们的数据库配置文件一样,如果不包含数据库配置文件,就无法去和数据库配置文件里面数据的连接进行操作,你包含他,你才能进入数据库的查询,因为你要执行sql命令的话,首先你要建立连接,再就是操作数据库,数据库配置文件是单纯的配置好数据库的信息,然后建立连接,你不包含数据库配置文件,你在代码中你还要先连接数据库,这样很麻烦,所以一般的话,这种配置性文件,很多文件在操作的时候,都会包含,因为包含之后就意味着执行了这些文件,里面的代码相当于共同享有

foreach函数,数组的遍历,遍历里面的_COOKIE、_POST、_GET,然后给request,这个就是php里面传参的写法,典型的传输方式
从这串代码理解的话是把值给了value,然后value给到$$_key
get、post、cookie,接收数据进行变量覆盖
在这里插入图片描述
在这里插入图片描述
这串代码在common. inc. php这里,这时候谁包含common. inc. php,那就表示谁享有这里面的代码,我们通过全局搜索查一下
在这里插入图片描述
我们打开首页文件,他包含common. inc. php文件
在这里插入图片描述
这个是我自己在下面写的代码
在这里插入图片描述
首页形式显示页面html的结果
在这里插入图片描述
在这里插入图片描述
我们先把原有变量index进行输出,变量index是数组,执行是引用index.html进行显示的
在这里插入图片描述
在这里插入图片描述
在.php里面把变量申明一下,然后在.html把值输出
在这里插入图片描述
在这里插入图片描述
执行一下
在这里插入图片描述
在这里插入图片描述

变量参数会直接覆盖原始变量的值,就是原有test等于xiaodi,我通过地址上输入test=122222,就会把原有xiaodi值进行覆盖掉,所以你的值就会变成我定义好的值,其实这个操作表示你原有的变量值我能进行更改,这就是变量覆盖
接收变量名=参数名,然后实现覆盖,接收get post cookie传递方式,你的参数名是什么,他的变量值就是什么
在这里插入图片描述
我们访问这串地址的时候,由于是以get方式发送的,get方式取这个值的时候,由于是两个$符,相当于request接收的是$test
在这里插入图片描述
在这里插入图片描述
变量覆盖可以配合文件包含,进行攻击,他能覆盖变量,如果说一个参数进行文件包含的时候,文件包含里面有变量,可能这个变量默认等于1的,我能实现把这个变量进行覆盖,让他等于另一个值,就可以实现包含任意文件实现攻击,由于我们知道文件包含漏洞,是可以包含文件,包含一句话后门,所以它是直接跟网站权限挂钩的一种漏洞攻击,我们选择文件包含因为它最直接,利用变量覆盖可以配合其它漏洞,但是其它漏洞不一定直接跟网站权限挂钩,所以我们采用最直接、最暴力的文件包含漏洞,比如说他以前是include包含1.php,这个1.php是他指定的值或变量,你把他的变量覆盖掉

调用common.inc.php,由于common.inc.php接收数据的时候,存在变量覆盖,所以我们能覆盖变量file,实现变量file的值由我们控制,包含任意文件,由于文件包含漏洞不需要指向文件后缀。一个图片带有后门,就能包含图片里面的后门,实现攻击
在这里插入图片描述
我们搜索带有文件包含的函数
在这里插入图片描述
这里面的包含文件没有变量指定,所以我们不能更改包含的对应东西,我们要找到既有包含函数,另外这个函数包含的文件带有可控变量在里面,我们再去覆盖原始变量值,来实现包含
在这里插入图片描述
这个地方符合文件包含产生条件
在这里插入图片描述
在这里插入图片描述
1.php包含2.php,然后2.php包含3.php,那么1.php就会包含3.php,因为我们知道包含会相辅相成的
index.php包含module.php,module.php包含common.inc.php,所以index.php包含common.inc.php
在这里插入图片描述
文件包含漏洞是跟变量覆盖搭配使用的
我们要看一下module是怎么接收到的,原有变量是多少,我们追踪一下,打开module.php文件
如果fmodule不等于7,就按照数据来,由于代码包含module文件,就按照module正常运行,我们让fmodule等于7,就跳到二次循环
在这里插入图片描述
我们现在访问地址,把原始的fmodule值进行更改,我们要让他不等于1,跳到module.php文件循环,我们让fmodule等于7,进行循环,然后1.txt是about里面的内容
在这里插入图片描述
在这里插入图片描述
只要有一个文件上传到网站目录,就能实现getwebshell,包含文件会把任意代码当中php代码执行,不需要格式,只要里面有php代码,就能执行出php代码效果

变量覆盖可以配合sql注入,这个id值假设设置好,或者这个id值有过滤,我们把id给覆盖掉,id可控,把id覆盖成$id='1 union select ',一拼接,就是变量覆盖导致的sql注入,只要说sql语句有变量,都可以利用变量覆盖搭配使用,来实现攻击
在这里插入图片描述
看个例子,dedecms 变量覆盖sql注入
在这里插入图片描述
变量覆盖就是覆盖原始变量,具体我们要搭配一些漏洞使用,文件包含、sql注入都可以

phpmyadmin-无框架-反序列化-自动审计或搜索

phpmyadmin数据库管理的web接口,他不是一套网站程序,他是用来管理数据库的第三方接口,很多网站都会套用他,像我们使用的宝塔、phpstudy,phpmyadmin属于插件类的

反序列化漏洞产生是有关键字

#反序列化
自动审计或搜索关键字找到文件及代码段
_wakeup() //使用unserialize时触发
_sleep() //使用serialize时触发
destruct() //对象被销毁时触发
_ca11()    //在对象上下文中调用不可访问的方法时触发
_callStatic() //在静态上下文中调用不可访问的方法时触发
_get()      //用于从不可访问的属性读取数据
_set()    //用于将数据写入不可访问的属性
_isset () //在不可访问的属性上调用isset ()或empty()触发
_unset () //在不可访问的属性上使用unset ()时触发
_toString() //把类当作字符串使用时触发
_invoke() //当脚本尝试将对象调用为函数时触发

在这里插入图片描述
由于这里使用unserialize参数,会触发wakeup()对象里的魔术方法
在这里插入图片描述
创建PMA_Config()对象,我们查一下这个对象
在这里插入图片描述
这里是它申明的原始地方,class,以上只有关键字,所以我们看这里
在这里插入图片描述
申明对象会涉及到魔术方法,由于他这里采用unserialize函数,会默认调用PMA_Config()对象里面的wakeup()魔术方法
在这里插入图片描述
filemtime文件时间,getSource接收文件名,load载入源码,s变量接收的就是get值
在这里插入图片描述
getSource的作用取source,对象里面默认为空,我们在调用source时可以传参
在这里插入图片描述

看一下Load函数,eval会把里面的东西当做代码执行
在这里插入图片描述
file_get_contents进行文件的读取,读取操作由getSource指定
在这里插入图片描述
找到_wakeup()代码段,代码段调用函数中存在eval等函数操作,可调式load
构造getSource()利用Payload,实现file_get_contents函数配合eval执行
Payload: action=test&configuration=0:10:“PMA_Config”;1:{s:6:“source”,s:11:“d:/test.txt”;}
输出s变量,调用getSource函数
在这里插入图片描述
调用unserialize参数给的是configuration,我们执行一下
在这里插入图片描述

Thinkphp5-有框架-搭建使用入口访问调试SQL等

入口文件,调试模式,访问路由,访问对应,内置安全等
测试访问不同方法名,不同文件不同方法名
测试常规写法SQL注入,TP5规定写法SQL注入

现在在市面上tp5开发框架是最多的,不同版本,他的知识点是一样的,只是每个版本跟新之后,有些写法有些小区别,框架是都一样的

这是他默认框架打开的页面
在这里插入图片描述
application默认存在的目录
在这里插入图片描述
入口文件可以默认也可以自定义,他指向的是application,就是说入口文件是application目录
在这里插入图片描述
这个代码段是首页显示代码
在这里插入图片描述
在这里插入图片描述
我们访问后台代码函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们要挖掘tp5网站漏洞,访问网站对应文件,查看代码,是必须要掌握的
调用xiaodi方法,并且给i传值,就是说要控制x的传参值
在这里插入图片描述
这个也可以
在这里插入图片描述
在这里插入图片描述
这个是我们自己写的清晰明了的数据库查询语句,我们用监控语句看一下
在这里插入图片描述
在这里插入图片描述
这个语句被执行了
在这里插入图片描述一般thinkphp有它自身的规矩写法,就是官方的写法
下面这串代码就是典型的thinkphp写法
在这里插入图片描述
db是数据库名,where条件语句,select调用select查询
在这里插入图片描述
我们执行
在这里插入图片描述
执行完之后,抓sql语句,抓不到,他是没有被监控到的,这就跟我们前边讲到的预编译查询有点类似
在这里插入图片描述
更改配置文件,把这两个开关更改为true,打开调式模式
在这里插入图片描述
在这里插入图片描述
我们在访问网站会发现,浏览器右下角会出现图标,从这里就会监控到sql语句,所以我们不用插件去监控了
在这里插入图片描述
直接从这里监控,可以看到这里会返回当前访问信息,对应加载那些文件,还可以看看流程,这个调式模式类似断点调式,可以看到他的错误信息和执行的SQL语句
在这里插入图片描述
可以看到我们访问地址的时候,执行的sql语句,我们输入的注入测试语句,没有执行,压根就没有作用
在这里插入图片描述
thinkphp推荐你写这个写法,他是有自带的过滤,就是他的内置安全

如果一个采用thinkphp开发的网站,他按照thinkphp官方的写法去写,我们挖的是thinkphp自身的漏洞,因为他的写法是按照thinkphp的,所以你针对的就是thinkphp

这种框架类开发的网站,按照推荐写法去写的话,如果你挖掘程序漏洞就是挖掘对应框架漏洞,有人引入框架并不代表任何代码都是按照框架写的,程序员在开发框架源码的时候,他有些地方,他是按照自己写法写的,那这个就不是thinkphp的问题了,那就是按照常规代码来分析,如果是按照thinkphp写法写,那就要针对thinkphp自身的过滤来研究了,这个就比较困难,那就是找thinkphp自己框架漏洞

一些前期的知识点是必不可少的,我们要知道怎么去访问代码段或者去调用他

采用thinkphp框架写法,我们应该采用两种方法去分析去挖掘里面的漏洞,看他的写法,如果写法自身是thinkphp的写法,那么我们就要查询这个版本的thinkphp框架有没有漏洞

如果他自身是用自定义的写法,那就是常规的漏洞挖掘,只是说他建立的是thinkphp,所以我访问和查看文件,找到对应文件,这个有点相关的区别而已,其它的都是一样的
这个网站就是典型的thinkphp开发网站
在这里插入图片描述
我们打开程序源码,这个目录跟我们thinkphp目录基本一样
在这里插入图片描述
在这里插入图片描述
一般index.php这里默认可加可不加的
在这里插入图片描述
在这里插入图片描述
先看入口文件,找到他的index.php文件
在这里插入图片描述
在这里插入图片描述
对应着去找文件
在这里插入图片描述
在这里插入图片描述
有时候你编码没有搞对,不是你修改的问题,他直接访问就有问题
用phpstorm打开,这是mvc结构
在这里插入图片描述
修改页面的每一关,就是修改这个地方
在这里插入图片描述
修改功能就是修改控制器这里,所以这就是mvc整体项目、文件和这些东西的一些分布
在这里插入图片描述
如果我要挖掘漏洞就载入程序进行全局搜索
在这里插入图片描述
sql的自定义写法,我们要去找自定义写法的地方,因为自定义写法,没有受到官方的保护,同样上传也是一样的,所以它的挖掘思路和我们常规的挖掘思路是一模一样的
在这里插入图片描述
如果采用的是官方的,搜索thinkphp官方版本有没有出现漏洞,在说明文件里面看,也可以在配置文件里面调置输出一下
在这里插入图片描述
可以搜索thinkphp历史漏洞

https://github.com/Mochazz/ThinkPHP-Vuln

在这里插入图片描述

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

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

相关文章

智慧社区前景无限,科技引领未来发展

社区是城镇化发展的标志,作为人类现代社会的生活的基本圈子,是人类生活离不开的地方,社区人口密度大、车辆多,管理无序,社区的膨胀式发展多多少少带来一定的管理上的缺失。社区作为智慧城市建设的重要一环,…

zedbox 实现配置 yolov5

Stereolabs 的 ZED Box 是一款由 NVIDIA Jetson™ 提供支持的紧凑型网关,用于在移动和现场情况下挑战 AIoT(物联网)。它旨在将空间感知和理解带到边缘,并聚合、处理和分析来自 3D 传感器和设备的数据。 相关内容 1.win10下 cud…

A-23 P离子交换树脂:高效去除无机有机污染物的新选择

在当今水处理行业中,高效、环保的离子交换树脂备受关注。本文将为您介绍一款具有卓越性能的碱性季胺基阴离子交换树脂——Tulsion A-23 P。通过分析其特性和应用,展示其在水处理领域的优势。 一、Tulsion A-23 P离子交换树脂的特性 物理化学稳定性&#…

Connection refused: no further information

解决目录 一、报错信息二、解决方法 一、报错信息 二、解决方法 1、报错原因是开启了代理,像AS是绝对不能开代理的。 2、设置为No proxy,然后Apply再选择OK,重新同步。 要远离消耗你的人和事,不要花费任何情绪或者精力在他们身…

【排序算法】快速排序

一:基本概念 1.1 介绍 快速排序由C. A. R. Hoare在1962年提出,它是一种基于二叉树结构的交换排序算法,它采用了一种分治的策略,通常称其为分治法。该方法的基本思想是:先从数列中取出一个数作为基准数,然…

【MySQL系列】Centos安装MySQL

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

10天玩转Python第1天:python基础知识与常用开发工具全面详解

这里写自定义目录标题 1.课程之前1.1 课程介绍1.2 今日内容1.3 Python 介绍[了解]1.4 语言的分类 2 Python 环境配置2.1 Python 解释器的安装2.2 pycharm 的配置安装2.3 路径的选择(建议) 3 使用 pycharm 书写代码3.1 双击打开 pycharm 软件3.2 创建新 项目3.3 配置项目的路径和…

网工内推 | 项目经理专场,最高20K*13薪,软考证书优先

01 Trasen 招聘岗位:大项目经理(医疗行业/HIS) 职责描述: 1.负责项目按计划完成交付并顺利验收结项; 2.参与项目前期预算、评审、方案设计等; 3.负责具体项目实施,制定项目计划、组织项目资源、…

wvp gb28181 pro 配置https访问

准备工作 必须要有域名。虽然数字证书也有ip证书,但是会很麻烦,多数ca机构验证服务器需要用到80或443端口,也就是必须先备案,所以最好还是使用域名证书。购买域名证书。根据安全级别要求自行配置。单域名(不支持通配符的),阿里云的域名都是可以免费申请的。完成域名到服…

jieba,一个结巴的Python库

微信公众号:愤怒的it男,超多Python技术干货文章。 一、jieba的简介 在自然语言处理任务时,中文文本需要通过分词获得单个的词语,此时一个好的分词工具是非常有必要的。jieba分词是一个开源项目,地址为:git…

Python从入门到精通四:Python循环语句

前言 循环普遍存在于日常生活中,同样,在程序中,循环功能也是至关重要的基础功能。 为什么学习循环语句 循环在程序中同判断一样,也是广泛存在的,是非常多功能实现的基础: while循环的基础语法 学习目标&…

竞赛保研 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

基于Qt的登录页面设计

题目: 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和…

leetcode 股票DP系列 总结篇

121. 买卖股票的最佳时机 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。 只能进行一次交易 很简单&#xff0c;只需边遍历边记录最小值即可。 class Solution { public:int maxProfit(vector<int>& prices) {int res …

Java:字符流 文件输出 与 读入 方法

Java&#xff1a;字节流 文件输出与读入方法 并 实现文件拷贝 文章目录 字符流FileReaderFileWrite 字符流 字符流底层就是字节流。 字符流 字节流 字符集 特点&#xff1a; 输入流&#xff1a;一次读入一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节。 输出流…

我的 CSDN 三周年创作纪念日:2020-12-12

本人大叔一枚&#xff0c;自1992年接触电脑&#xff0c;持续了30年的业余电脑发烧爱好者&#xff0c;2022年CSDN博客之星Top58&#xff0c;阿里云社区“乘风者计划”专家博主。自某不知名财校毕业后进入国有大行工作至今&#xff0c;先后任职于某分行信息科技部、电子银行部、金…

六级翻译之印章

好像大房子挺难得 三段式 1Since ancient from now&#xff0c;seals have been a symbol of power and certerfiction of identity.seals not only practical but also is a form of art.Seal is an ancient art combining with manafutuer of crafting and desgin of…

基于SSM的健身房预约系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

2023Python自动化测试5种模型(建议收藏)

1、前言 在自动化测试中&#xff0c;我们往往将自动化脚本都归纳属于哪种框架模型&#xff0c;比如关键字驱动模型等。 本篇将列举实际自动化测试中&#xff0c;Python 自动化测试的五种模型&#xff1a;线性模型、模块化驱动模型、数据驱动模型、关键字驱动模型、行为驱动模…

访问NFS存储及自动挂载

本章主要介绍NFS客户端的使用 创建NFS服务器并通过NFS共享一个目录 在客户端上访问NFS共享的目录 自动挂载的配置和使用 1 访问NFS存储 前面介绍了本地存储&#xff0c;本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统&#xff0c;所实现的是 Linux 和 Linux 之间的…