thinkphp 3.2.3 exp注入漏洞分析

如题所述

在官网下载thinkphp3.2.3,配置MySQL账号密码于Convention.php文件,添加一行用于打印SQL语句。漏洞代码通过特定的HTTP请求触发,如:http://127.0.0.1/index.php?id[0]=exp&id[1]==1 or sleep(5)。通过断点调试,跟踪至Model类的select函数,进而深入至其内部处理逻辑,发现$exp的值即为传入的exp,该值被直接拼接到后续SQL语句中,形成SQL注入。

使用I函数可以防止注入攻击,原因在于ThinkPHP\Common\functions.ph中的think_filter函数会将特殊关键字(如EXP、OR等)加上空格,避免进入if语句进行SQL字符拼接。

对于普通的SQL注入,thinkphp3.2.3会通过解析数据库字段类型来防止注入。在Model类的_parseType()函数中,对于字段类型为int(11)的字段,会将传入的值转化为整数类型,使得注入语句失效。对于字符型注入,系统在Think\Db\Driver.class.php中的escapeString()函数中对特殊符号进行转义,实现防御。

除了exp注入,还有bind注入方法。bind注入通过在SQL语句中插入特殊符号,导致SQL错误进行攻击。虽然实现较为复杂,但由于think_filter函数未对bind进行过滤,因此即使使用了I函数获取参数,仍有可能实现bind注入。

针对此漏洞的修复策略包括:1. 尽量在应用中使用I函数获取用户输入的参数;2. 修复代码,将安全补丁整合到index.php入口文件中,确保应用从源头开始执行安全措施。
温馨提示:内容为网友见解,仅供参考
无其他回答

thinkphp 3.2.3 exp注入漏洞分析
对于普通的SQL注入,thinkphp3.2.3会通过解析数据库字段类型来防止注入。在Model类的_parseType()函数中,对于字段类型为int(11)的字段,会将传入的值转化为整数类型,使得注入语句失效。对于字符型注入,系统在Think\\Db\\Driver.class.php中的escapeString()函数中对特殊符号进行转义,实现防御。除了exp...

「原创」萌新也能看懂的ThinkPHP3.2.3漏洞分析
本文将详细解析ThinkPHP3.2.3中的几个常见漏洞:where注入、exp注入、bind注入、find\/select\/delete注入、order by注入和缓存漏洞。在控制器中使用字符串方式作为where参数时,存在where注入漏洞。通过在变量user处设置断点并使用PHPSTROM F7进入,可以看到I方法获取了传入的参数。重点在于过滤函数,首先使用h...

Thinkphp3.2.3 SQL注入总结
EXP注入利用了where参数,绕过了I方法的过滤,直接将注入payload传递给find方法。在处理过程中,绕开了int型的intval转换,使用数组直接赋值给where,进而执行SQL注入。BIND注入则通过save方法和bindParam函数,绕过了数据的类型转换,直接将payload绑定到查询中,实现了注入的执行。总结,ThinkPHP3.2.3版本的S...

ThinkPHP漏洞分析与利用
深入分析高危漏洞,ThinkPHP 2.x\/3.0存在远程代码执行漏洞。该漏洞源自Dispatcher.class.php中的res参数,使用了preg_replace的\/e危险参数,导致preg_replace第二个参数被当作PHP代码执行,攻击者可通过构造恶意URL执行任意PHP代码。ThinkPHP 5.x版本在2018年12月发布安全更新,修复了一处可导致远程代码执...

ThinkPHP 3.2.0 的注入漏洞,如何在这个程序利用
Thinkphp里面的where方法是具有过滤作用的,也就是说你这里想通过openid参数去注入是失败的。因为where方法对传入的参数进行了转义。具体可以去看下源码。

ThinkPHP3.2 和 3.1.3 有哪些改进和改动
ThinkPHP3.2.3版本是一个优化和修正版本,比3.2.2更加稳定、高效和安全,是一个推荐升级的版本,主要更新如下:[ 数据库方面 ]数据库驱动完全用PDO重写;支持通用insertAll方法;改进参数绑定机制;主从分布式数据库连接改进;对Mongo的支持更加完善;[ 模型方面 ]模型类的诸多增强和改进;增加聚合模型...

Thinkphp框架 < 5.0.16 sql注入漏洞分析
分析ThinkPHP框架 < 5.0.16 的SQL注入漏洞,作者在i春秋论坛和先知社区分享了发现和修复过程。首先,通过PHPstudy环境搭建,使用ThinkPHP的input()函数接收数据,并利用框架的数据库操作功能。漏洞复现时,通过payload访问程序,逐步追踪到SQL执行的代码路径。在\\thinkphp\\library\\think\\db\\Query.php中,`...

代码审计--youdiancms SQL注入
攻击者可以通过设置`cookie`值,绕过一些基本的验证流程,进而触发SQL查询。在`App\/Lib\/Model\/Admin\/WxVoteModel.class.php`文件中,`$fromUser`值被存入`$where`数组,并通过`$this->where`方法集成到SQL查询中。尽管友点CMS系统使用了ThinkPHP3框架,该框架在某些版本中存在SQL注入风险,且未实施有效...

SecWiki周刊(第171期)
安全技术板块则深入探讨了内核exploit、安全技能树、路由器破解方法、网站物理路径搜索工具、正则学习、黑客入侵应急分析、基线检查表与安全加固规范、边界穿越技巧、高性能分布式爬虫工具(AZSpider)、Nessus插件更新经验、白帽子法规、ThinkPHP源码审计、漏洞搜索与下载工具(getsploit)、渗透技巧与互联网挂马检测...

请举一个使用账户支付的例子,说明其支付流程,并指出可能存在支付风险的...
网站漏洞安全日志检查分析 了解上述的问题后,知道了具体的问题发生症状以及支付的整个流程,安排Sine安全工程师团队小组快速响应处理找出漏洞问题关键,把客户的损失降到最低,随即登录了支付平台网站服务器对程序代码做了审计和分析,发现程序用的是TP架构(thinkphp)管理后台和前端都是在一起的,对程序代码...

相似回答
大家正在搜