54 代码审计-TP5框架审计写法分析及代码追踪

目录

    • 知识点1
    • 知识点2
    • 演示案例:
      • demo代码段自写和规则写分析
      • hsycms-TP框架-不安全写法-未过滤
      • weipan21-TP框架-规则写法-内置过滤

在这里插入图片描述

知识点1

调试,访问,路由,配置,版本等

知识点2

自写写法:自己写代码,一步步去实现功能的代码,从0到有的代码

不安全写法:在tp开发里面,代码段有一定是按照官方推荐写的,但是它在使用的时候,没有使用比较规矩的写法,就是他有使用官方的写法,然后自己也写了些自己的东西,半吊子的那种感觉

规则写法:完全按照官方开发手册去写,没有自己在单独写一些东西

自写写法:框架是完全没有作用的,他完全还是按照套路来,网站是建立在TP框架,这种情况就按照常规的审计流程,跟我们前面看代码一样,一个个追踪就完事了

不安全写法要跟踪自己写法里面或用官方写法里面有没有一些没有注意到的问题

规则写法,先寻找对应版本,然后在网上寻找一下关于对应版本有没有安全的一些问题,如果没有可以私下进行分析,如果有直接利用网上出现的问题进行测试,规则写法涉及到框架内置过滤问题,其实就是分析框架内置过滤问题,别人挖到的漏洞和自己挖到的漏洞,都是分析他框架内置过滤,就是研究它核心代码的,这是最难的

首先我们要把调式开关开上,找到config.php,把这两个开关设置为true
在这里插入图片描述

通过追踪对应的方式去追踪对应网址、对应代码段在那个地方,这也是我们在分析的时候必备的,追踪对应做不了的,后面就不用看了

通过查看三个文件,有些版本可能有,有些版本部分缺失,三个文件里面肯定是有一个存在的,只需要查看对应文件的内容,就能知道当前thinkphp版本,就来到规则写法这里

还有输出调式,在代码中,我们会经常写到关键字来输出当前调式,来看一下代码段网站执行的地址数据是否是接收正常,是否有相关过滤的问题

演示案例:

demo代码段自写和规则写分析

我们需要有一定的代码基础,然后通过查看ThinkPHP V5 完全开发手册,根据他官方推荐写法,对应一下差不多的就是官方写法
在这里插入图片描述
我们的写法就是完整的sql语句,而testsqlinl就是按照官方的手册来
在这里插入图片描述
在这里插入图片描述
我们看一下index进行数据传输
在这里插入图片描述
我们看一下数据库监控,发现没有执行相关代码,没有数据库语句出现
在这里插入图片描述
有两种原因,第一个是没有监控到,这个时候,我们可以利用调式模式
在这里插入图片描述
输入之后,执行的sql语句是没有任何变化的
在这里插入图片描述
如果我们用自写写法就是跟常规注入点是一样的,但是用规则写法,我们发现在这里注入的时候,参数传不进去,肯定就注入不了,因为规则写法是用ThinkPHP配置文件里面的过滤,导致语句写进去没有用

规则写法有没有漏洞,需要进行三点分析的
我们看一下当前版本
在这里插入图片描述
我们知道版本之后,就能借助网上公开的项目和网上搜索的相关资料,我们可以看一下漏洞介绍,发现有报过这个版本的漏洞
在这里插入图片描述
给出了漏洞触发地址,我们可以复制一下,他的实现代码参数给的是user
在这里插入图片描述
我们给的是id,我们简单改一下注入就可以实现一下,把每个username改成id,执行
在这里插入图片描述
这是他自身的安全问题造成的,核心里面的问题造成的,在使用规则写法的时候,我们无法探针到有没有漏洞,就是我们传入数据

不管我们如何提交,都看不到任何反应的时候,这个时候,我们就需要针对版本有没有相关的安全性问题,在网上搜索

有些ThinkPHP让我们升级,就是升级他的安全问题,那也不代表版本越低,漏洞越多

他的版本是建立在两个方面,一个是基于安全问题的升级,一个是他自己写法的升级,就是他框架自身引起的升级,就和我们windows一样,不是说漏洞在xp上多一些,当然的确是在xp上多一些,但是有些漏洞是不适用的,他是只建立在这个版本上面,就是你这个版本低也不行,高也不行,版本只是他东西的升级,他可能升级内核,保证ThinkPHP在运行网站更快,写法更简洁,同时也会更新安全问题

hsycms-TP框架-不安全写法-未过滤

这个是ThinkPHP开发的一套程序源码
在这里插入图片描述
先找到源码段,然后找入口文件同目录下的config.php,开启调式模式
在这里插入图片描述
我们分析的时候,需要借助调式模式来便于我们更加了解网站的一些相关问题,如果你不开调式模式的话,有时候即使有错误,他也不报给你,你也不知道那里出问题,调式模式就是更方便知道错误出在哪里,而且他有一些很好的功能,sql语句执行的监控各种各样的,这是一个良好习惯

在入口文件的目录下面,叫route.php,这个是路由文件,它的作用是访问路径的时候如何去分析路径,也就是控制路由的访问方式
在这里插入图片描述
我们访问地址信息,通过先查询数据库语句,然后再用这值匹配entitle,在指向文件
你访问地址有下面这些信息的话,这两种信息对应两种文件
在这里插入图片描述
点击流程,流程的关键词叫RUN,这里就一步到位帮我们找到网址对应的文件,你就知道网址在执行的时候,代码段处于那里

这种有个缺点不能定位到方法里面,刚才的路由就能直接追踪到方法里面
在这里插入图片描述
我们现在开始分析漏洞,很明显150、131是个变量值,这个值不同的时候,新闻就不同
在这里插入图片描述
在这里插入图片描述
首先第一步追踪文件,他的执行流程,运行的那个方法
在这里插入图片描述
我们再看sql语句,这里并没有看到
在这里插入图片描述
这个时候就用到客户端的监控工具,代码审计工具自带的监控工具也监控不到
在这里插入图片描述
我们执行一下150,在搜索一下
在这里插入图片描述
确定了代码段就在这里
在这里插入图片描述
我们这里要看input有没有过滤,我们直接测试就完事
在后面加一些东西,看他有没有带入进去,明显有带入进去,就可以测试注入点了
在这里插入图片描述
在这里插入图片描述
sql语句写得比较规律,但是他接收变量的时候,不规矩,他用的是Input接收
在这里插入图片描述
我们看官方的写法,数据接收的东西,他没有按照官方的写法加上这些东西,指定传输方式
在这里插入图片描述
也可以使用request写法
在这里插入图片描述
其它地方用规矩写法,其它地方就又不规矩了,这种叫半吊子;街溜子,自己写法,自己玩自己的
这三种写法都可能存在漏洞,前面两种会产生漏洞,第三种看版本

如果上面规则写法的sql注入漏洞修复了,我们可以从版本自身漏洞出发去分析漏洞,有就是有,没有你就自己挖

weipan21-TP框架-规则写法-内置过滤

以前违法类的资金盘,虚拟金币的网站,网上很多,都是采用thinkphp开发的
在这里插入图片描述
我们先把微盘的载入进去,看微盘的情况
在这里插入图片描述

这个源码主要是说思路,对TP框架进行代码审计,进去我们要先看一下入口,调试,路由文件,看完之后,我们要找代码分析,分析三种写法,自写、不安全、规则;如果是自写写法,我们就常规思路来,一步步跟踪变量,针对这三种有通用点,全部可以利用提交测试数据测试是否可控
在这里插入图片描述

它这里没有涉及到数据库,这个东西有过滤跟没过滤关系不大,因为它没有涉及到数据库语句或者上传操作这些关键性的东西,它就是地址上面的伪造,所以这个东西有过滤跟没过滤关系不大,因为他没有涉及到数据库语句、上传操作这些东西,就是地址上面的伪造
在这里插入图片描述
我们发现他这个写法都是很规矩的,那就要查看对应版本,找找对应资料,找到对应目录base文件
在这里插入图片描述
查看github项目地址,查看本地资料
在这里插入图片描述
在这里插入图片描述
x代表任意
在这里插入图片描述
有可以利用网上公开的漏洞利用工具,那就可以利用网上工具进行测试,那这就不是从代码去分析了,完全是利用网上公开工具
其实原则上还是分析了代码,只是说我们没有看代码,只是思路问题
直接把网站复制过来测试就完事了,这边是未检测到漏洞
在这里插入图片描述
我把版本找到了符合存在漏洞,但是没有找到漏洞,第一种就是你漏洞没有找全

我们推荐了这个项目,不代表这个项目就是完整的,他可能有些漏洞没有收录到上面,收录的只是高位漏洞,有些低危漏洞没有收录进去,都是收的什么代码执行文件包含这种高危漏洞
在这里插入图片描述
thinkphp官方有个更新的地址,然后更新的时候,每次都会有版本的发布说明,当有提到包含一个安全更新,说明在上一个版本有出现安全问题,所以我们可以从版本上判断有没有存在安全问题
在这里插入图片描述
我们在网上搜索thinkphp漏洞,你搜到的大部分是危害比较大的漏洞,但是他的漏洞是出了好多个,比如5.1、5.2、5.3、6.1,但是我们在网上没有找到漏洞,因为没有人去分析他或者没有人给出利用代码出来,但是刚好你的审计程序是在这套程序里面,假设6.1,你在网上搜不到任何漏洞,这个时候,我们找他官方地址,看一下他这个版本里面有没有提示关键字

有,那就说明他出过安全漏洞,只是说这个漏洞小,没有人去研究公开出来
在这里插入图片描述
你查commits你就知道这个漏洞的大概说明,你就知道漏洞产生在那个地方
在这里插入图片描述

这个资料一直在更新,不是说这个漏洞一直在出现, 或者网上有公开,他就是根据官方的更新提示,修改那个地方,然后根据修改的地方去分析,能分析出来,他就把项目增加,分析不出来,即使有漏洞,你也不知道,他也不知道
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新闻管理系统

其他项目,点击作者主页 目录 1 系统简介 2 系统相关技术 2.1 Java开发语言 2.1.1 Spring框架 2.1.2 Spring MVC框架 2.1.3 Mybatis框架 2.2 MySQL数据库 3 需求分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 业务流…

C语言-实验题目:运动会成绩模拟统计

实验题目:运动会成绩模拟统计 为推动学校体育工作的开展,计算机科学技术学院将在近期举办院运会。本届运动会只设学生组,比赛项目为田径、游泳、篮球、排球、足球、武术、健美操、兵乓球8项。 名次奖励 田径、游泳、健美操、武术 1&#…

【SpringBoot】Starter的使用与案例讲解

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《SpringBoot》。🎯🎯 &…

快速入门Tailwind CSS:从零开始构建现代化界面

快速入门Tailwind CSS:从零开始构建现代化界面 介绍 Tailwind CSS 是一个以原子类的方式快速构建界面的 CSS 框架。它提供了丰富的预定义类,使得开发者能够快速构建样式和布局。 安装和设置 首先,我们需要在项目中安装 Tailwind CSS。可以…

【超详细前后端项目搭建】前端vue3+ts项目(引入ElementPlus、Axios)、后端springboot搭建(创建接口操作mysql数据库)实现前后端联调

目录 前言一、前端项目1、使用vue脚手架创建项目1.1检查vue版本1.2 使用vue脚手架创建项目 2、删除项目多余文件,修改配置项目2.1、删除以下文件2.1、在views下创建index文件2.2、修改router/index.ts路由文件:2.3、修改App.vue文件:2.4、初始…

ElementPlus中的分页逻辑与实现

ElementPlus中的分页逻辑与实现 分页是web开发中必不可少的组件,element团队提供了简洁美观的分页组件,配合table数据可以实现即插即用的分页效果。分页的实现可以分成两种,一是前端分页,二是后端分页。这两种分页分别适用于不同…

C语言:指针与数组易错辨析

前言: 在学校学习指针和数组的联系时,对指针与数组的结合产生了很大的疑惑,后来不断查找资料,本人对指针与数组的综合有了一定的理解,现进行综合讨论辨析 数组指针: 数组指针,即为指向数组类…

【Pytorch】Transposed Convolution

文章目录 1 卷积2 反/逆卷积3 MaxUnpool / ConvTranspose4 encoder-decoder5 可视化 学习参考来自: 详解逆卷积操作–Up-sampling with Transposed Convolution PyTorch使用记录 https://github.com/naokishibuya/deep-learning/blob/master/python/transposed_co…

【改进YOLOv8】车辆测距预警系统:融合空间和通道重建卷积SCConv改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义: 随着交通工具的普及和道路交通的不断增加,车辆安全问题日益凸显。特别是在高速公路等高速道路上,车辆之间的距离和速度差异较…

java-两个列表进行比较,判断那些是需要新增的、删除的、和更新的

文章目录 前言两个列表进行比较,判断那些是需要新增的、删除的、和更新的 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实…

计算机网络编程 | 并发服务器代码实现(多进程/多线程)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

深入了解空号检测API:提升通信效率的关键

引言 随着通信技术的不断发展,人们对于通信效率的要求也越来越高。在通信过程中,空号检测是一个非常重要的环节,它可以帮助我们避免无效的通信,提高通信效率。而空号检测API则是实现空号检测功能的重要工具。 空号检测API 空号…

Seata Server与Nacos Server搭建(商城7)

一、Nacos简介 (一)Nacos是什么 1、Nacos是 Dynamic Naming and Configuration Service的首字母简称,相较之下,它更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 2、Nacos 帮助您发现、配置和管理微服务。Nacos…

【seata】 seata整合nacos + springcloud alibaba 真保姆级教程 解决各种坑点

前言: 坑点太多了,以至于需要单独写篇博客记录一下。 网上教程五花八门且不声明版本,文档不对应以及seata本身的bug,就造成了部署时各种踩坑,如果你和博主一样,已经又恰好很久没碰过nacos了,那可…

pandas读取Excel表指定数值 计算总和

题目要求:在一个文件夹里面有424个Excel表格,每个表格中都是统一的,如下图。要求计算所有表格中金额的总和。 上代码: import os import glob import pandas as pd# 指定文件夹路径 folder_path C:\\Users\\Administrator\\Desk…

Java—基于SpringBootWeb的综合小案例(智能学习辅助系统)

简介:这篇帖子是小编在看哔哩哔哩网课是的一个小案例,来自于黑马程序员,我觉得他们的课讲的很好,而且这个案例很有实用性,就在看视频的基础上,边温故知新,边实现了这个代码,在一些重…

Three.js中文网1-12入门案例

Three.js中文网 <template><div id"webgl"></div> </template><script setup> import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js;// 创建3D场景对象Scene const scene new THR…

【Axure RP9】动态面板使用------案例:包括轮播图和多方式登入及左侧菜单栏案例

目录 一 动态面板简介 1.1 动态面板是什么 二 轮播图 2.1 轮播图是什么 2.2 轮播图应用场景 2.3 制作实播图 三 多方式登入 3.1多方式登入是什么 3.3 多方式登入实现 四 左侧菜单栏 4.1左侧菜单栏是什么 4.2 左侧菜单栏实现 一 动态面板简介 1.1 动态面板是什么…

配置VRRP负载分担示例

一、组网需求&#xff1a; HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力&#xff0c;HostA以SwitchA为默认网关接入Internet&#xff0c;SwitchB作为备份网关&#xff1b;HostC以SwitchB为默认网关接入Internet&#xff0c;SwitchA作为…

【教程】从零开始的ORB-SLAM3的安装与配置

引言 最近项目需求需要接触vslam&#xff0c;博主选择从ORB-SLAM3下手并且记录下安装的基本流程。不得不说&#xff0c;这安装流程就像二大娘的裹脚布。 大致环境前提&#xff1a;Ubuntu20.04 一、ORB-SLAM3的源码下载 1、首先&#xff0c;为了方便管理文件&#xff0c;我们…