【代码审计-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

目录
相关文章
|
7天前
|
PHP
PHP——安装ThinkPHP框架报错
PHP——安装ThinkPHP框架报错
8 0
|
21天前
|
安全 IDE 编译器
深入理解PHP 7的新特性及其对现代Web开发的影响
【7月更文挑战第30天】本文将深入探索PHP 7版本中引入的关键新特性,并分析这些改进如何优化现代Web开发实践。通过对比PHP 5和PHP 7的性能差异,我们将揭示PHP 7如何提升应用响应速度和资源利用效率。此外,本文还将讨论PHP 7对开发者工作流程的影响,包括新的语言特性、错误处理机制以及内置函数的增强,旨在为读者提供全面了解PHP 7所带来的变革性影响。
|
7天前
|
PHP 数据库 开发者
探索PHP的现代演变:从Web开发到框架创新
【8月更文挑战第13天】本文将深入探讨PHP语言自诞生以来的发展历程,特别是它在Web开发领域的演进和在现代框架中的创新。我们将回顾PHP的历史,分析其在不同阶段面临的挑战及解决方案,并讨论PHP如何适应新的编程范式和技术需求,以及这些变化对开发者社区的影响。
18 2
|
11天前
|
前端开发 网络安全 PHP
PHP代码审计之MVC与ThinkPHP简介
PHP代码审计之MVC与ThinkPHP简介
20 2
|
22天前
|
安全 API PHP
深入理解PHP 7的新特性及其对现代Web开发的影响
【7月更文挑战第29天】本文将探索PHP 7版本引入的一系列新特性,并分析它们如何革新了现代Web开发。我们将从性能提升、语言特性增强、以及面向对象编程的改进等方面进行详细讨论,旨在为开发者提供一份全面的PHP 7新特性指南,帮助他们更好地利用这些新工具优化和加速Web应用的开发。
|
17天前
|
安全 JavaScript Go
探索PHP的现代演进:从Web开发到框架创新
在数字化时代的浪潮下,PHP作为一门历史悠久且广受欢迎的编程语言,其发展轨迹映射了Web开发的变迁。本文将通过具体实例和数据分析,探讨PHP如何适应现代Web开发的需求,特别是其在流行框架中的角色演变,以及这些变化如何激发开发者社区的创新精神。
30 2
|
17天前
|
SQL 安全 PHP
探寻PHP的现代演进之路:从Web开发到框架创新——揭秘PHP语言如何引领技术潮流
【8月更文挑战第2天】探索PHP的现代演进:从Web开发到框架创新
25 1
|
22天前
|
安全 编译器 API
深入理解PHP 8的新特性及其对现代Web开发的影响
【7月更文挑战第29天】随着PHP 8的发布,这个广受欢迎的服务器端脚本语言迎来了重大更新。本文将深入探讨PHP 8引入的关键新特性,包括JIT编译器、联合类型、命名参数、匹配表达式以及错误处理改进等,并分析这些变化如何影响现代Web开发实践。我们将通过具体示例和代码片段,展示这些新特性如何提升性能、增强类型安全和支持更简洁的代码编写,同时讨论它们对现有PHP项目的迁移和维护的潜在影响。
24 2
|
23天前
|
存储 设计模式 安全
PHP 7新特性及其对现代Web开发的影响
随着PHP 7的发布,这一广泛使用的服务器端脚本语言带来了显著的性能提升和新的编程特性。本文将深入探讨PHP 7中的关键更新,包括性能优化、类型声明、异常处理改进以及匿名类等,并分析这些变化如何影响现代Web开发的实践和模式。通过具体案例,我们将了解开发者如何利用这些新特性来编写更快、更安全、更易维护的代码。 【7月更文挑战第28天】
27 3
|
5天前
|
缓存 安全 JavaScript
探索PHP的现代演变:从Web开发到框架创新
【8月更文挑战第14天】随着互联网技术的不断进步,PHP语言也在不断地发展和演变。本文将深入探讨PHP在现代Web开发中的地位,分析其语法和功能的演进,并着重讨论PHP框架如何推动Web开发的现代化。同时,文章也将预测PHP在未来技术生态中的可能发展方向。