【PHP代码审计】ThinkPHP代码审计

article/2025/10/9 20:44:25

目录

      • 0x001 开发方式
      • 0x002 审计流程
        • 1)启用调试开关
        • 2)版本查看
        • 3)定位函数
        • 4)测试是否存在漏洞
        • 5)版本自身漏洞


0x001 开发方式

在这里插入图片描述
在审计源码时根据不同的开发方式对应不同的审计方法。

  • 自写:有的站点虽然使用了thinkphp但并没有按照官方给的开发文档进行开发,没有引入内置的过滤机制导致出现安全问题。 (正常审计流程。)
  • 不安全写法:未全部引用内置过滤。(寻找没有引用内置过滤的地方。)
  • 规则写法:这种开发方式是相对安全的,因为框架的过滤机制比较完善。审计方式一般分为两种,寻找对应的版本漏洞或自己挖掘框架内置的安全问题(通杀)。

0x002 审计流程

1)启用调试开关

  • 查看index.php入口文件
  • config.php
  • app_debug=“true”
  • app_trace-“true”

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

配置好后打开网站

访问url对应所执行的文件在这里插入图片描述
查看执行的sql语句
在这里插入图片描述
debug模式可能会监控不到sql语句的输出,这种情况可以使用开源工具进行监控:

MySQL监控:https://github.com/cw1997/MySQL-Monitor

2)版本查看

  • /thinkphp/base.php
  • /ThinkPHP/ThinkPHP.php
  • /thinkphp/library/think/App.php

在这里插入图片描述

3)定位函数

定位相关函数:

  • 查看路由匹配规则 --> 可以直接定位到函数
  • 通过调试debug模式 --> 只能定位到文件

我们访问的网页为:http://192.168.8.130/hsycms/news/146.html则如何定位所对应的执行函数?

查看路由匹配规则,全局搜索use think\Route
在这里插入图片描述
我们访问的url对应的路由匹配规则为Route::rule($v['entitle'].'/:id','index/Show/index');

程序入口文件为app,即如下图所示:

在这里插入图片描述

4)测试是否存在漏洞

在这里插入图片描述
这里我们监控http://192.168.8.130/hsycms/news/150.html页面所执行的sql语句,

在这里插入图片描述
可以看到我们传入的id被直接带入到sql语句执行,接下来就是测试input函数是否有过滤

在这里插入图片描述

对比ThinkPHP5.0完全开发手册发现这里并没有按照官方文档进行编写,这种自写的方式可能没有调用框架内置的过滤机制,从而导致安全问题,剩下就是测试自写的方式是否存在漏洞就可以了,我就不测试了。
在这里插入图片描述
在这里插入图片描述

5)版本自身漏洞

如何完全按照官方开发文档进行开发的,那么我们就考虑当前版本安全问题。

ThinkPHP各版本漏洞:https://github.com/Mochazz/ThinkPHP-Vuln

使用搜索引擎查看当前版本是否存在安全漏洞。

利用官方更新版本信息查看:https://github.com/Mochazz/ThinkPHP-Vuln/blob/master/ThinkPHP5/ThinkPHP5%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E4%B9%8BSQL%E6%B3%A8%E5%85%A52.md
在这里插入图片描述


http://chatgpt.dhexx.cn/article/Mw5GqXHl.shtml

相关文章

PHP代码审计敏感函数合集

PHP代码审计 通常去代码审计的时候基本是正则的挖掘思路 通常代码审计的话,大部分就是通过关键的函数,和关键的变量去审计 ​ ​ 敏感函数 PHP操作数据库函数 mysqli_connect() //建立与MySQL数据库的连接 mysqli_connect_errno() //判断连接数…

代码审计思路之PHP代码审计

000 前言 最近也是边挖src边审计代码,总结下最近的php代码审计的一些思路,我一般按照顺序往下做,限于能力水平,可能会有不对或者欠缺的地方,希望各位师傅能够指导。 001 前期工作,需要的工具(我使用的) …

PHP代码审计 -- 文件上传

工具&环境 工具:Seay源代码审计系统,文本编辑器一个 环境:phpstudy,网站源码是 zbzcms步骤 1, 将zbzcms网站源码放入phpstudy,根据网站安装引导完成网站搭建; 2,打开Seay&…

PHP代码审计

代码审计顾名思义就是检查源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞,并提供代码修订措施和建议。 PHP代码审计 审计套路 通读全文法 (麻烦,但是最全面) 敏感函数参数回溯法 (最高效,最常用) 定向…

【PHP代码审计】——开启你的代码审计生涯

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

【代码审计】--- php代码审计方法

代码审计需要掌握的点 PHP编程语言的特性和基础Web前端编程基础漏洞形成原理代码审计思路不同系统、中间件之间的特性差异 代码审计思路 方法一 ---- 检查敏感函数的参数,然后回溯变量,判断变量是否可控,并且有没有经过严格的过滤&#xf…

DAY31:代码审计基础( PHP 篇)

DAY31:代码审计基础( PHP 篇) 1、PHP 代码审计基础 1.1、代码审计概述 ​ 代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。软件代码审计是对编程项目中源代码的全面分析,旨在…

PHP代码审计(全)

前言 官方文档:php.net php官方文档是非常详情,好用的,在遇到不清楚作用的函数时可以进行查询 白盒测试做代码审计最主要的知识是要去了解一个漏洞应该有哪些防御方式,因为大部分的漏洞都是因为修复没有做的全面,或…

PHP代码审计——PHP中常见的敏感函数列表

文章目录 前言一、PHP中的敏感函数——命令注入漏洞 1)exec() 2)system () 3)passthru () 4)shell_exec () 5)popen() **/** proc_open() 二、PHP中的敏感函数——代码注入漏洞 1)…

Idea快速选中一行的四种方式

一、鼠标连续点三下 二、end键将光标移到行尾 , ctrlw 选中行 三、end键将光标移到行尾 , shift home 选中行 四、home 键 光标移到行首、然后 点击shift end

Xcode快捷键修改 复制一行、删除一行

快速目录 Xcode快捷键修改 复制一行、删除一行0.移动选中行1.修改权限2.修改快捷键配置文件复制一行删除一行 3.设置修改Xcode快捷键4.其它注意参看 Xcode快捷键修改 复制一行、删除一行 主要是用Android Studio 开发习惯了,在Xcode上又没有,比如复制当…

竖行选中快捷键

今天选中代码时需要竖行选中,就回顾了一下竖行选中的快捷键 这是个很实用的快捷键。 在myeclipse中竖行选中是AltShiftA,进入竖行选中状态,按Esc退出 在idea中竖行选中的快捷键是Alt鼠标选中

idea 删除当一行或者选中行的快捷键

之前前端开发一直使用VSCode,常用快捷键删除一行或者当前选中的几行代码,使用idea的时候发现快捷键并不相同,查看发现idea的快捷是:Ctrl Y,比手动删除代码方便很多。 通过File->Setttings->Keymap可以查看已经…

java开发银行柜员业务绩效考核系统

导读:当今社会己进入信息社会时代,信息己经受到社会的广泛关注,被看作社会和科学技术发展的三大支柱(材料、能源、信息)之一。信息是管理的基础,是进行决策的的基本依据。在一个组织里,信息己作为人力、物力、财力之外的第四种能源,占有重要的地位。然而,信息是一种非…

Python模拟银行管理系统(面向对象)# 谭子

一、系统需求说明 本项目计划实现一个银行管理系统,包括开户、查询、取款、存款、转账、锁定、解锁和退出功能。 银行管理系统一览表 序号 模块 子模块 说明 1 菜单模块 显示菜单 验证管理员身份,显示功能菜单 2 开户模块 注册,生…

核心银行系统 之一 历史与发展

核心银行系统是银行信息系统中实现客户关系管理、产品与服务、业务流程、财务核算与管理、风险管控、辅助管理与决策等银行业务最核心功能的系统,是银行信息系统的基础和核心。 核心银行系统的英文名字 CORE Banking System,其中CORE是Centralized Onli…

银行信贷系统java_java毕业设计_springboot框架的银行信贷系统

这是一个基于java的毕业设计项目,毕设课题为springboot框架的银行信贷系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jspspringbootmybatis, 银行信贷系统采用mysql进行数据存储, 并基于mybatis进行了orm实体关系映射, 该银行信贷系统系统通过模块…

支付系统开发

支付系统开发 一、工程结构 pay-common-parent 项目的Maven父配置工程 pay-common 公共工程,所有项目均可引用 pay-common-config 公共配置工程 pay-common-core 公共核心工程,service工程共用 pay-common-web 公共…

手把手搭建Java网上银行系统【附源码】(毕设)

一、项目简介 本课程演示的是一套基于Java的SSH框架实现的网上银行系统 或 银行管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。 详细介绍了网上银行系统的实现,包括: 1.项目介绍 2.环境搭建 3.系统功能…

银行综合前置系统IFS

(布尔公司简介) 法国布尔集团是一家国际性综合IT集团,业务及分支机构遍及全球100多个国家。布尔公司重点面向四大行业,即金融、电信、公共事业和制造业,为其提供量身定作的解决方案。 (产品概述&#xff0…