通过Thinkphp框架漏洞所发现的安全问题

2019 年 4 月 18 日 FreeBuf

前言

在一次偶然的机会发现公司某个网站存在thinkphp的远程命令执行漏洞,自此对这个漏洞爱不释手。这究竟是为什么呢?主要原因有2点:第一,如果网站存在这个漏洞,我们可以去执行各种各样的系统命令来进行测试观察,尤其要是还有管理员权限就更舒服了;第二点,只要发现对应版本的thinkphp,漏洞利用步骤较为简单。(主要还是笔者太懒,hhh!!!)关于这个漏洞分析笔者就不在这里献丑了,主要是介绍下如何来去挖掘这个漏洞,以及笔者相关的一些思路。希望能给刚入安全圈的新人一点灵感。

0x01 漏洞简介

在2018年12月9日,thinkphp官方发布了一个重要的安全更新,修复了一个严重的远程命令执行漏洞。此次更新主要涉及到一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本儿包括5.0(< 5.0.23)和5.1(< 5.1.31)版本儿。

0x02 漏洞特性

这个特性可以说是大部分thinkphp框架的特性,在其网站url后输入一个不存在的路径,页面会报错,显示该网站一些配置信息以及thinkphp的版本儿,如图:

输入该网站一个不存在的路径11,或者是一些不存在的文件也可例如:11.php,11.txt。此时页面会报错,抛出异常,如图:

此时我们可以看到该网站的一些敏感配置信息比如网站路径,当然我比较感兴趣的还是这个thinkphp框架的版本,如图所示thinkphp版本儿清楚可见,看到这里可能大佬们就知道我接下来干啥了。

0x03 漏洞复现

笔者感觉自己这个漏洞利用的方式还是比较简单粗暴的,初始也是抱着试一试的想法,也没想到就成功了。

首先打开百度,然后搜索引擎内输入 “thinkphp5.0漏洞”,看到很多大佬的分析,随便点开一个链接,拿走大佬写好的payload。(当然这个paylaod自己也要根据实际情况做一点小改变,根据页面多观察几次来进行改动。如果网站漏洞已经修复了再去测试肯定不会成功了。)

开始漏洞复现:

利用system函数远程命令执行payload:

http://xxx.com/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami


如图

我们不难看出当前网站确实存在并且能够执行系统命令,后面的测试方法就比较大众化了,容笔者稍微说下,各位看官一看就懂:

1、首先看下自己当前权限是否是管理员权限,如果是再好不过,不然后面还得想方法进行提权。(emm出现thinkphp漏洞已经很不应该了,如果这里再是管理员权限的话,网站的管理员老哥应该好好反省下了)

2、然后再上传一句话木马,菜刀链接,基本到这就差不多了。(不要随便操作哦)

3、通过相关平台将此漏洞告诉相关厂商。(xx不规范,牢底坐到穿)

0x04 漏洞分析

这里不是原理分析哈,只是笔者一点浅薄的看法和经验。

笔者发现thinkphp框架搭好以后,页面有如下图所示的一些字体。

然后又通过观察之前所构造的payload:

http://xxx.com/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

想到谷歌搜索引擎强大的搜索功能 ,于是构造语句“ thinkphp十年磨一剑 inurl:index.php”(说实话结果我也是吓了一跳,)

搜到大量使用该框架的网站,而且通过钟馗之眼一类的搜索引擎通过搜索 “十年磨一剑 - 为API开发设计的高性能框架 [ V5.0+版本由+七牛云+独家赞助发布+]”也能搜索到大量此类网站。

据此可见有很多网站再使用thinkphp 5.0这一版本儿框架,可能搜到的这些网站有一些管理员已经修复该版本儿漏洞,但是应当还会有一大部分管理员仍未曾修复该漏洞。(想必这点大家都会想到,而且会有黑客用此类方法批量拿站)

0x05 观点

通过thinkphp 这一版本儿漏洞,笔者想到其实蛮多的。

1、一些cms网站的漏洞挖掘方式其实和笔者所提到的thinkphp漏洞挖掘的方式还是比较一致的,都有某些方面的特征,比如版本号,url组成等等。这类通用型漏洞在利用其来技术门槛相对较低,比如笔者通过信息收集发现大量类似网站,一旦爆发危害蛮大,之前很多的事件儿都说明了这个问题。(这个漏洞挖掘指的是别人已经发布过的漏洞,而不是去挖掘还未曾发现的漏洞)

2、很多网站的管理者(中小型网站)都不具备安全意识,等到安全问题一旦爆发悔之晚矣。往往出现这类漏洞(出现很长时间却没修复的漏洞)的网站一般是中小型网站,当然大点儿的网站可能也有,但是相较于这类网站就少了。

3、人是安全的尺度这句话不假,管理网站的是人,但是往往安全和可用性又是相对的,无法去追求过度的安全,这就造成了一些漏洞的存在其实是在所难免的。即便这个网站的管理者能够想到很多很多问题,但是可能某一天他也会犯一些失误,或者配置失误或者删库,不要以为删库这种骚操作不会出现在自己身上。

emm希望有一天出现一个啥绝对的安全,这样我们就能愉快的转行,各位大佬和同僚也能实现自己的梦想,开超市的开超市,卖煎饼果子的卖煎饼果子 。。。。。若干年后又是一段传奇啊hhhh!!!

0x06 建议

漏洞修复建议:该版本儿thinkphp漏洞(大部分漏洞修复方式)修复最简单的修复方式就是升级到最新版本,打补丁,或者进行手动修复等等。

当然还有一个问题也需要进行修复,就是笔者前面所说输入一个不存在的路径或文件页面会抛出很多系统相关信息以及路径,一旦和该网站别的漏洞相结合后患无穷。

关于相关搜索引擎网站应该加以限制。

希望以上东西能够帮到大家。

*本文原创作者:xianling,本文属FreeBuf原创奖励计划,未经许可禁止转载

推荐阅读


登录查看更多
0

相关内容

中文 WEB 应用开发框架
多智能体深度强化学习的若干关键科学问题
专知会员服务
189+阅读 · 2020年5月24日
大数据安全技术研究进展
专知会员服务
93+阅读 · 2020年5月2日
【WWW2020-微软】理解用户行为用于文档推荐
专知会员服务
35+阅读 · 2020年4月5日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
专知会员服务
54+阅读 · 2020年3月16日
【综述】基于图的对抗式攻击和防御,附22页论文下载
专知会员服务
68+阅读 · 2020年3月5日
安全和健壮的医疗机器学习综述,附22页pdf
专知会员服务
46+阅读 · 2020年1月25日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
TensorFlow、Caffe、Torch 三大深度学习框架被存在安全漏洞
一个人的企业安全建设之路
FreeBuf
5+阅读 · 2017年7月7日
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Monocular Plan View Networks for Autonomous Driving
Arxiv
6+阅读 · 2019年5月16日
3D-LaneNet: end-to-end 3D multiple lane detection
Arxiv
7+阅读 · 2018年11月26日
Arxiv
7+阅读 · 2018年3月19日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关资讯
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
TensorFlow、Caffe、Torch 三大深度学习框架被存在安全漏洞
一个人的企业安全建设之路
FreeBuf
5+阅读 · 2017年7月7日
相关论文
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Monocular Plan View Networks for Autonomous Driving
Arxiv
6+阅读 · 2019年5月16日
3D-LaneNet: end-to-end 3D multiple lane detection
Arxiv
7+阅读 · 2018年11月26日
Arxiv
7+阅读 · 2018年3月19日
Arxiv
6+阅读 · 2018年1月14日
Top
微信扫码咨询专知VIP会员