ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件

根据官方文档对"防止SQL注入"的方法解释(见http://doc.thinkphp.cn/manual/sql_injection.html)使用查询条件预处理可以防止SQL注入,没错,当使用如下代码时可以起到效果:

$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();

或者  $Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();

但是,当你使用如下代码时,却没有"防止SQL注入"效果(而官方文档却说可以防止SQL注入):

$model->query('select * from user where id=%d and status=%s',$id,$status);

或者   $model->query('select * from user where id=%d and status=%s',array($id,$status));  原因:ThinkPHP/Lib/Core/Model.class.php 文件里的parseSql函数没有实现SQL过滤.

原函数:

protected function parseSql($sql,$parse) {

// 分析表达式

if(true === $parse) {

$options =  $this->_parseOptions();

$sql  =   $this->db->parseSql($sql,$options);

}elseif(is_array($parse)){ // SQL预处理

$sql  = vsprintf($sql,$parse);

}else{

$sql    =   strtr($sql,array('__TABLE__'=>$this->getTableName(),'__PREFIX__'=>C('DB_PREFIX')));

}

$this->db->setModel($this->name);

return $sql;

}

验证漏洞(举例):

请求地址:http://localhost/Main?id=boo" or 1="1或http://localhost/Main?id=boo%22%20or%201=%221

action代码:

$model=M('Peipeidui');

$m=$model->query('select * from peipeidui where name="%s"',$_GET['id']);

dump($m);exit;

或者

$model=M('Peipeidui');

$m=$model->query('select * from peipeidui where name="%s"',array($_GET['id']));

dump($m);exit;

结果:

表peipeidui所有数据被列出,SQL注入语句起效.

解决办法:

将parseSql函数修改为:

protected function parseSql($sql,$parse) {

// 分析表达式

if(true === $parse) {

$options =  $this->_parseOptions();

$sql  =   $this->db->parseSql($sql,$options);

}elseif(is_array($parse)){ // SQL预处理

$parse = array_map(array($this->db,'escapeString'),$parse);//此行为新增代码

$sql  = vsprintf($sql,$parse);

}else{

$sql    =   strtr($sql,array('__TABLE__'=>$this->getTableName(),'__PREFIX__'=>C('DB_PREFIX')));

}

$this->db->setModel($this->name);

return $sql;

}

thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...相关推荐

  1. 测试php框架漏洞,ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    作者: seay 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商不要再 ...

  2. /plus/recommend.php sql注入漏洞,代码审计:ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法 | Seay 渗透 编程 代码审计 网络安全博客...

    显示不全请点击全屏阅读 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商 ...

  3. 漏洞复现 泛微OA E-Cology V9 browser.jsp SQL注入漏洞

    漏洞复现 泛微OA E-Cology V9 browser.jsp SQL注入漏洞 漏洞描述 泛微新一代移动办公平台e-cology不仅组织提供了一体化的协同工作平台,将组织事务逐渐实现全程电子化,改 ...

  4. 动易html在线编辑器 漏洞,动易网站管理系统vote.asp页面存在SQL注入漏洞

    动易网站管理系统vote.asp页面存在SQL注入漏洞 测试系统: 动易(PowerEasy CMS SP6 071030以下版本) 安全综述: 动易网站管理系统是一个采用 ASP 和 MSSQL 等 ...

  5. 从一个Laravel SQL注入漏洞开始的Bug Bounty之旅

    事先声明:本次测试过程完全处于本地或授权环境,仅供学习与参考,不存在未授权测试过程.本文提到的漏洞<Cachet SQL注入漏洞(CVE-2021-39165)>已经修复,也请读者勿使用该 ...

  6. SQL注入漏洞的检测与防范技术

    提 要   本文从SQL注入的基本概念和注入原理入手,分析总结了SQL注入漏洞的检测及其防范技术措施. 关键词  SQL注入漏洞 检测 防范技术 引 言    近几年来随着计算机网络和WEB技术的飞速 ...

  7. wordpress漏洞_多个WordPress插件SQL注入漏洞分析

    背景 SQL注入漏洞是用来构建SQL查询的用户输入未经适当处理导致的漏洞.比如: 图1: 使用WordPress的SQL查询示例 从上面的代码来看,其中存在SQL注入攻击漏洞,因为从$_GET中提取的 ...

  8. 最新dotCMS SQL注入漏洞 攻击者可获得敏感数据 绿盟科技发布安全威胁通告

    dotCMS 3.6.2以下版本可能存在SQL注入漏洞 ,绿盟科技发布<dotCMS SQL注入漏洞安全威胁通告>,通告全文如下 2017年2月15日,seclists.org网站发布了关 ...

  9. 【转】基于SQL的Web系统安全防范——SQL注入漏洞

    攻击研究及防范措施 SQL-Based Web System Security--Structured Query Language InjectionLeak Attack Study And De ...

最新文章

  1. 《BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition》笔记
  2. Java的缓存使用-Ehcache
  3. 【转】linux中waitpid及wait的用法
  4. 转:论文写作与投稿的一点经验,加两封催稿信
  5. SAP云平台CloudFoundry环境里route 超过quota的错误处理
  6. [六省联考2017]组合数问题
  7. python3 生成器
  8. 加利福尼亚大学(尔湾)等提出 Nasty Teacher,避免模型“被蒸馏”,加强知识产权保护(ICLR 2021)...
  9. DOS 批处理 修改xml文件
  10. mysql与php教程,php与Mysql
  11. php读取文件部分内容,PHP 提高篇
  12. 机器学习 Machine Learning中向量化矩阵化的技巧
  13. eclipse maven maven-archetype-webapp 创建失败
  14. .11-Vue源码之patch(1)
  15. scratch编程《大转盘》
  16. mindmanager2020版下载激活码序列号密钥版及使用教程
  17. 谷歌浏览器密码导入导出
  18. 130 个令你眼前一亮的网站,总有用得着的
  19. 开发一个Canvas小游戏 实现一个游戏“引擎”
  20. 针对Intel芯片mac、win平台对cpu功耗、频率、电源等信息检测

热门文章

  1. 题目1507:不用加减乘除做加法
  2. 手把手教你使用koa2
  3. Linux监控命令之==vmstat
  4. linux中tomcat修改错误日志路径
  5. [POJ](3268)Silver Cow Party ---最短路径(图)
  6. 爬虫基础学习 转【http://www.cnblogs.com/huangxincheng/archive/2012/11/08/2759752.html】
  7. WHUST 2015 Summer Contest #11
  8. Google App Engine 学习和实践
  9. OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
  10. PyCharm缺少cv2模块怎么办?怎样在PyCharm中安装自己需要的package?