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你就知道这个漏洞的大概说明,你就知道漏洞产生在那个地方
在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以csv为源 flink 创建paimon 临时表相关 join 操作

目录 概述配置关键配置测试启动 kyuubi执行配置中的命令 bug解决bug01bug02 结束 概述 目标:生产中有需要外部源数据做paimon的数据源,生成临时表,以使用与现有正式表做相关统计及 join 操作。 环境:各组件版本如下 kyuubi 1.8…

互联网加竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…

迅速理解什么是通信前置机

通信前置机设在两个通信对象之间,是实质性的物理服务器,适应不同通信协议或数据格式之间的相互转换。 前置机的作用: 隔离——隔离客户端与服务端,保障后端安全减负——处理非核心业务,分担后端服务器压力&#xff0…

Microsoft 365 Copilot正式上线,如何稳定访问体验?

如果将微软对人工智能的投资看成一场豪赌,Microsoft Copilot无疑是现阶段最受瞩目的赌注。2023年9月正式发布的Microsoft Copilot是一种基于大型语言模型(LLM)和微软图形(Microsoft Graph)的数据和人工智能&#xff08…

Maven环境搭建及配置

Maven环境搭建及配置 1.下载部署 官方网站下载正式版的Maven文件,打开bin目录,复制路径然后去环境变量中的path下配置环境变量, 如果只有一个用户只需要在上面path配置复制的路径,当然也可以直接在下面配置,下面配置默认给所有用户都配置 设置完成打开控…

MIT线性代数笔记-第28讲-正定矩阵,最小值

目录 28.正定矩阵,最小值打赏 28.正定矩阵,最小值 由第 26 26 26讲的末尾可知在矩阵为实对称矩阵时,正定矩阵有以下四种判定方法(都是充要条件): 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&…

软考科目如何选择?

软考科目繁多,让许多学弟学妹感到困惑,不知道该选择哪个科目。以下是一些建议,可以根据个人实际需求选择备考的科目。 1、初级是可选的 软考初级非常简单,适合刚刚入门学习的朋友报考。对于一些有基础的朋友,建议直接…

【后端开发】Next.js 13.4:前端开发的游戏规则改变者!

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

微服务实战系列之MQ

前言 从今天起,席卷北国的雪,持续了一整天,北京也不例外。这场意外的寒潮,把整个冬天渲染的格外cool。当然你可以在外面打雪仗、堆雪人、拉雪橇,也可以静坐屋内,来一场围炉煮茶的party。此刻,冬…

世界第一个语言不通的人是如何沟通的?

引言:语言是人类交流的重要工具,但在人类历史的某个时刻,肯定会有这样一位勇敢的先驱,他成为了世界上第一个语言不通的人。那么在他面临交流难题时,他是如何与他人沟通的呢?本文将对此进行探索。主体&#…

18 5G - NR物理层解决方案支持6G非地面网络中的高移动性

文章目录 非地面网络场景链路仿真参数实验仿真结果 非地面网络场景 链路仿真参数 实验仿真结果 Figure 5 && Figure 6:不同信噪比下的BER和吞吐量 变量 SISO 2x2MIMO 2x4MIMO 2x8MIMOReyleigh衰落、Rician衰落、多径TDL-A(NLOS) 、TDL-E(LOS)(a)QPSK (b)16…

HTML行内元素和块级元素的区别? 分别有哪些?

目录 一、行内元素和块级元素的区别二、行内元素和块级元素分别有哪些1、行内元素2、块级元素 一、行内元素和块级元素的区别 1、行内元素不会占据整行,在一条直线上排列,都是同一行,水平方向排列;    2、块级元素可以包含行内…

C语言—每日选择题—Day42

第一题 1. 下面程序输出的结果是&#xff08;&#xff09; #include <stdio.h> int main () {int x;x printf("I See, Sea in C");printf("x%d" , x); } A&#xff1a;2 B&#xff1a;随机值 C&#xff1a;都不是 D&#xff1a;15 答案及解析 D p…

人工智能:机器与人类的对决

一、引言 随着科技的飞速发展&#xff0c;人工智能已经逐渐渗透到我们生活的方方面面。从智能手机到自动驾驶汽车&#xff0c;从语音识别到机器翻译&#xff0c;人工智能已经成为我们生活中不可或缺的一部分。然而&#xff0c;随着人工智能的不断演进&#xff0c;人们开始担心…

数据结构——队列

目录 一、队列的定义 二、队列的实现 1. 队列的顺序存储结构 1.1. 顺序队 1. 创建顺序队 2. 删除顺序队 3. 判断队列是否为空 4. 判断队列是否已满 5. 入队 6. 出队 7. 获取队列长度 8. 获取队首元素 1.2. 环形队 1. 创建环形队 2. 删除环形队 3. 判断环形队列…

LeetCode 每日一题 Day 12 || BFS

2415. 反转二叉树的奇数层 给你一棵 完美 二叉树的根节点 root &#xff0c;请你反转这棵树中每个 奇数 层的节点值。 例如&#xff0c;假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] &#xff0c;那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。 反转后&#xff0c;返回树的根…

每日一题SQL

以下题目来源微信公众号【SQL数据库开发】 1、编写一个 SQL 查询来实现分数排名。如果两个分数相同&#xff0c;则两个分数排名&#xff08;Rank&#xff09;相同。请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说&#xff0c;名次之间不应该有“间隔…

主卧卫生间门对着床,怎么设计才能让你好好睡觉呢?福州中宅装饰,福州装修

主卧卫生间门对着床&#xff0c;一抬眼就能和卫生间来一个对视&#xff0c;心里很膈应&#xff0c;那么怎么解决这个问题呢&#xff1f; 1️⃣门改方向 首先&#xff0c;你可以考虑把卫生间门的开门方向改一下。如果卫生间门是向外开的&#xff0c;你可以考虑把门换成向内开的…

ChatGPT热门项目

1.智能GPT 项目地址&#xff1a;智能GPT&#xff1a;你只要提供OpenAI的API Key&#xff0c;那么它就可以根据你设定的目标&#xff0c;采用Google搜索、浏览网站、执行脚本等方式 主要语言&#xff1a;Python 推荐理由&#xff1a;这是由开发者Significant Gravitas推出的项目…

2023-12-14 使用Qt画一条曲线(AI辅助)

点击 <C 语言编程核心突破> 快速C语言入门 使用Qt画一条曲线 前言一、Qchart简介二、代码总结 前言 要解决问题: 有一个函数, 生成一些点, 想画一条曲线. 想到的思路: 这个用Qchart比较简单. 其它的补充: 需要稍许配置 一、Qchart简介 QChart是Qt中的一个图表控件&a…