ce安全网绿色资源分享

教程资讯|常用软件|安卓下载|下载排行|最近更新

软件
软件
文章
当前位置:首页网络安全网络安全文章 → ThinkPHP v5.1.22 SQL注入漏洞

ThinkPHP v5.1.22 SQL注入漏洞

时间:2018-09-13 23:49:44人气:作者:本站作者我要评论

【漏洞预警】ThinkPHP v5.1.22 SQL注入漏洞

近日,ThinkPHP又曝出SQL注入漏洞,ThinkPHP以前曝出的SQL注入漏洞已经不少了,6月份就曝过“update”和“insert”类型的注入。由于其庞大的用户数量,还是需要重视一下。该漏洞是因为未正确处理所接收数组类型参数的key,直接拼接到了SQL语句的order by后面,导致漏洞的产生。该漏洞可以获取数据库数据,比如用户账号密码,管理后台账号密码,交易数据等。漏洞危害为高危。建议相关用户及时检查是否使用存在漏洞的版本,排查后门,更新版本,避免造成损失。

CVE编号

CVE-2018-16385

受影响版本

版本< 5.1.23

用户分布情况

下面是ThinkPHP全球用户分布情况(非漏洞影响情况),有23w用户。其中中国有18w+用户,美国3.3w用户,其他国家用户相对少得多。

漏洞分析

这次漏洞代码位于"/thinkphp/library/think/db/Builder.php"文件中,以下是漏洞代码:

  1. protected function parseOrder($query$order)
  2.     {
  3.         if (is_array($order)) {
  4.             $array = [];
  5.             foreach ($order as $key => $val) {
  6.                 if (is_numeric($key)) {
  7.                     if ('[rand]' == $val) {
  8.                         $array[] = $this->parseRand($query);
  9.                     } elseif (false === strpos($val, '(')) {
  10.                         $array[] = $this->parseKey($query$val);
  11.                     } else {
  12.                         $array[] = $val;
  13.                     }
  14.                 } else {
  15.                     $sort    = in_array(strtolower(trim($val)), ['asc', 'desc']) ? ' ' . $val : '';
  16.                     $array[] = $this->parseKey($query$key) . ' ' . $sort;
  17.                 }
  18.             }
  19.             $order = implode(',', $array);
  20.         }
  21.         return !emptyempty($order) ? ' ORDER BY ' . $order : '';
  22.     }
  23. protected function parseKey($query$key)
  24.     {
  25.         return $key;
  26.     }

如果我们传入orderby[username|updatexm l(1,concat(0x3a,user()),1)%23]=1,经过“$array[] = $this->parseKey($query, $key) . ' ' . $sort”;这里$sort为空,parseKey方法直接返回$key值!然后“ $order = implode(',', $array);”,这里把数组用逗号合并为字符串,最后经过“return !empty($order) ? ' ORDER BY ' . $order : '';”返回未作任何处理的order by语句。

本地复现

在/application/index/controller/文件夹下建立Index.php文件,内容如下:

  1. <?php
  2. namespace app\index\controller;
  3. class Index{
  4.     public function index()    {
  5.            $data=array();
  6.          $data['username']=array('eq','admin');
  7.         $order=$_GET['orderby'];
  8.         $m=db('user')->where($data)->order($order)->find();
  9.         Sdump($m);
  10.    }
  11. }
  12. ?>

访问以下链接触发漏洞

部分内容被隐藏
评论刷新后查看

ThinkPHP v5.1.22 SQL注入漏洞

修复建议

1 升级ThinkPHP到最新版本

2 部署waf和防火墙等安全防护设备

3 对order by语句处理流程加上数组分支安全校验。

相关文章

猜你喜欢

  • Ougishi绿色版下载 V4.00 中文版

    2020-06-19 / 561k

  • 谷歌地图下载助手睿智版破解下载 V9.5绿色版

    2020-06-19 / 32.7M

  • OfficeFIX中文破解版V6.110 注册版

    2020-06-19 / 26.8M

  • Plotagraph破解版V1.2.0 免费版 32/64位

    2020-06-19 / 31.5M

  • IP查详细地址工具下载 V1.1 官方免费版

    2020-06-19 / 408K

  • 内存扫把中文版下载V1.97绿色版

    2020-06-19 / 1.3M

网友评论

验证码:

请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!

最新评论

已有人参与,点击查看更多精彩评论

关于CE安全网 | 联系方式 | 发展历程 | 版权声明 | 下载帮助(?) | 广告联系 | 网站地图 | 友情链接

Copyright 2019-2029 cesafe.com 【CE安全网】 版权所有 蜀ICP备19039426号-2| 蜀ICP备19039426号-2

声明: 本站为非赢利性网站 不接受任何赞助和广告 所有软件和文章来自互联网 如有异议 请与本站联系 技术支持:ce安全网