首頁  >  文章  >  php框架  >  一分鐘了解ThinkPHP框架的審計(分享)

一分鐘了解ThinkPHP框架的審計(分享)

慕斯
慕斯轉載
2021-06-18 10:29:383025瀏覽

以下由thinkphp框架教學專欄為大家介紹一分鐘了解有關ThinkPHP框架的審計(分享),希望對需要的朋友有所幫助!

一分鐘了解ThinkPHP框架的審計(分享)

ThinkPHP簡介

#ThinkPHP 是一個免費開源的,快速、簡單的物件導向的輕量級PHP開發框架,創立於2006年初,遵循Apache2開源協定發布,是為了敏捷WEB應用開發和簡化企業應用開發而誕生的。 ThinkPHP從誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡的程式碼的同時,也注重易用性。並且擁有眾多的原創功能和特性,在社區團隊的積極參與下,在易用性、擴展性和性能方面不斷優化和改進,已經成長為國內最領先和最具影響力的WEB應用開發框架,眾多的典型案例確保可以穩定用於商業以及門戶級的開發。

漏洞簡述

#儘管ThinkPHP 5.0.x框架採用了參數化查詢方式,來操作資料庫,但是在 insert 和 update 方法中,傳入的參數可控,且無嚴格過濾,最終導致本次SQL注入漏洞發生。

以ThinkPHP框架5.0.x sql注入漏洞進行分析

thinkphp官網下載5.0.15版本: http://www.thinkphp.cn/down/1125.html #。搭建好資料庫,資料庫為tp,表名為user,其中有兩個欄位id和username。

#修改資料庫設定資訊application/database.php,在application/config .php 中開啟偵錯和trace。

#在application/index/controller/Index.php 中Index類別中新增方法:

public  function testsql()
    {
        $username = input('get.username/a');
        db('user')->where(['id'=> 1])->insert(['username'=>$username]);
    }

#解釋如下:

##http://127.0.0.1/thinkphp/  public/        index.php/   index/   index/   index c        前台     控制器    方法名稱

擴充功能:

其中關於updatexml 函數UPDATEXML (XML_document, XPath_string, new_value );

第一個參數:XML_document是String格式,為XML文件物件的名稱,文中為Doc

#第二個參數:XPath_string (Xpath格式的字串) ,如果不了解Xpath語法,可以在網路上尋找教學。

第三個參數:new_value,String格式,取代查找到的符合條件的資料##

作用:改变文档中符合条件的节点的值

访问payload,就可以触发漏洞了。

漏洞分析

首先,我们知道 insert 方法存在漏洞,那就查看 insert 方法的具体实现。

通过input获取到参数后,username变量情况如下:

跟入insert,thinkphp/library/think/db/Query.php

然后执行insert语句

$sql = $this->builder->insert($data, $options, $replace);

跟入 thinkphp/library/think/db/Builder.php

跟入parseData至 thinkphp/library/think/db/Builder.php

可以看出$val是数组,且根据$val[0]值为inc,会通过switch语句进入到’inc’:

此处的parseKey,即thinkphp/library/think/db/builder/Mysql.php

此处并未对传入的$key进行更多的过滤与检查,将其与前面经过parseKey的结果进行拼接后返回给result

至此注入成功。

漏洞修复

 https://github.com/top-think/framework/commit/363fd4d90312f2cfa427535b7ea01a097ca8db1b

在进行dec和inc操作之前对$val[1]的值进行了再次确认。

总结

第一次审计Thinkphp框架   ,结合Thinkphp5.0手册以及网上教程完成此次漏洞的审计。

相关推荐:最新的10个thinkphp视频教程

以上是一分鐘了解ThinkPHP框架的審計(分享)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除