【代码审计-PHP】基于Thinkphp框架开发的

简介: 【代码审计-PHP】基于Thinkphp框架开发的

一、Thinkphp基本结构


1、框架目录

www  WEB部署目录(或者子目录)
├─application           应用目录
│  ├─common             公共模块目录(可以更改)
│  ├─module_name        模块目录
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  └─ ...            更多类库目录
│  │
│  ├─command.php        命令行定义文件
│  ├─common.php         公共函数文件
│  └─tags.php           应用行为扩展定义文件
├─config                应用配置目录
│  ├─module_name        模块配置目录
│  │  ├─database.php    数据库配置
│  │  ├─cache           缓存配置
│  │  └─ ...            
│  │
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─log.php            日志配置
│  ├─session.php        Session配置
│  ├─template.php       模板引擎配置
│  └─trace.php          Trace配置
├─route                 路由定义目录
│  ├─route.php          路由定义
│  └─...                更多
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
├─thinkphp              框架系统目录
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
│  │  ├─think           Think类库包目录
│  │  └─traits          系统Trait目录
│  │
│  ├─tpl                系统模板目录
│  ├─base.php           基础定义文件
│  ├─convention.php     框架惯例配置文件
│  ├─helper.php         助手函数文件
│  └─logo.png           框架LOGO文件
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件


2、判断框架、版本


在源码中搜Thinkphp,如果有就是Thinkphp框架

搜THINK_VERSION可以看到相应的版本信息

ec14bf288fe54ac3882154a9a24365d8.png


3、入口文件


关键词APP_PATH

定义应用目录、框架入口文件

89b4525472c24df792769c16d3f29ae3.png

25c44795490946f6aaff2e58053c62c5.png

18d0134605a44a7c8f5d68b3f3ea31e8.png


按住Ctrl再点击这个目录,就会在左边目录栏跳转到这个目录位置

e8644c56e2d14f2883a68fd7aad0ec63.png


4、资源文件


均放在public的目录下,找不到的话会爆路径错误情况


public
├─index.php       应用入口文件
├─static      静态资源目录   
│  ├─css            样式目录
│  ├─js             脚本目录
│  └─img            图像目录
│─router.php      快速测试文件
└─.htaccess       用于apache的重写


5、调试开关


审计的时候,需要将false改为true

如果直接搜debug的话,可能会搜到convention.php上的debug


  默认情况下:
    // 应用调试模式
    'app_debug'              => false,
    // 应用Trace
    'app_trace'              => false,

248d13cb748f400d977dc1a4e945e68f.png


6、URL路由


①方法/变量值进行传参
http://domainName/index.php/模块/控制器/操作/方法/变量值
eg:访问www.xxx.com/index.php/index/index/index
为application目录下的index模块下的从contraller目录下的index文件下的index函数
②变量传参
http://tp5.com/index.php?s=/index/Index/index


二、基本函数


1、请求


Request对象进行调用

获取请求变量

利用:寻找用户可控的变量(且传入给有一定功能的函数)

1、param()


获取所有请求变量


param('指定的函数对象','未获取到时的默认值','对于获取到的值的处理函数')


$request->param():用于获取所有的变量(优先级:路由变量 > 当前请求变量($_POST) > $_GET变量


2、get()


获取$_GET变量


$request->get('指定的函数对象')

echo input('get.函数对象')


3、

post()获取$_POST


file()获取$_FILE


ip()获取请求IP


method()获取请求方法


pathInfo()获取控制器和方法名的路径


rootInfo()获取路由


2、交互:


配置:

1、代码过滤

2、过滤器过滤

3、模块过滤

4、预编译,使用占位符

……


利用:

1、判断代码绕过条件

2、过滤器漏洞

3、寻找未使用过滤模块的地方

4、不安全的过滤

……


3、响应:


1、配置自动输出


配置:在config.ph中设置default_return_type更改默认返回类型


利用:寻找模板存在的漏洞、寻找未引用模板的目录


2、函数输出


配置:


return 格式类型json($data,201,['set_cookie'=>'xxxx'])


利用:寻找用户可控值


3、重定向


eg:


if($userid>=0){$this->success("提示语","user跳转页面")}

else{ $this->error("错误提示语")}


利用:看是否能利用重定向漏洞,跳转到其他不安全地方


三、危险函数


1676087434884.png


四、已有漏洞


针对未公开的漏洞

根据描述寻找到未公开的漏洞点

2e3652eab81f4f38bed8d8c15de1c155.png

五、漏洞检测工具


针对已公开的漏洞

大佬集成了一个工具箱,可以关注公众号以后免费下载

1d5bffeb72214edea81eb6e248e9b9e8.png

9424cdf48daa48ad984486710808037a.png


六、工具


Seay

RIPS

CheckMarx

Fortify

VCG

Kunlun-M

目录
相关文章
|
5月前
|
安全 PHP
PHP 8 新特性实战:提升开发效率的利器
PHP 8 新特性实战:提升开发效率的利器
209 87
|
5月前
|
安全 PHP
PHP 8 新特性实战:提升开发效率的利器
PHP 8 新特性实战:提升开发效率的利器
214 88
|
5月前
|
安全 编译器 PHP
PHP 8 新特性:现代开发的强力引擎
PHP 8 新特性:现代开发的强力引擎
208 89
|
5月前
|
安全 编译器 PHP
PHP 8 新特性:现代化开发的飞跃
PHP 8 新特性:现代化开发的飞跃
300 89
|
5月前
|
安全 大数据 PHP
PHP 7+ 新特性实战指南:提升开发效率
PHP 7+ 新特性实战指南:提升开发效率
222 87
|
3月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
9月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
501 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
7月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
452 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
8月前
|
前端开发 PHP 开发者
Wordpress主题开发之index.php
本文介绍了 WordPress 主题开发中页面结构与模板文件的使用方法。通过 header.php、sidebar.php、footer.php 和 index.php 等模板文件,实现网站模块化设计,便于统一管理和代码重用。Header 部分包含 logo、导航条等;Content 展示主体内容;Side bar 显示推荐信息或广告;Footer 则呈现版权和备案信息等内容。文章还提供了各模板文件的具体代码示例,帮助开发者快速理解和应用 WordPress 模板机制。
240 9
|
8月前
|
API PHP 数据库
PhalApi 2.x:让PHP接口开发从“简单”到“极简”的开源框架
PhalApi 2.x 是一款专为接口开发设计的轻量级PHP框架,性能卓越且易于上手。它支持多协议、自动生成文档、提供多种客户端SDK,并采用现代化技术栈,适合中小型项目及微服务架构。通过清晰的分层架构和丰富的扩展库,开发者可快速构建高可用API。其日均超1000万次调用,广泛应用于移动App、物联网、电商等领域。官网:https://www.phalapi.net/,欢迎体验高效开发之旅!