转载

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

近日监测到F5 BIG-IP 远程代码执行漏洞的公开,360灵腾安全实验室判断漏洞等级为高,利用难度低,威胁程度高,影响面高。建议使用用户及时安装最新补丁,以免遭受黑客攻击。

0x00 漏洞概述

本次漏洞位于F5 BIG-IP产品,流量管理用户页面(TMUI)存在认证绕过漏洞(CVE-2020-5902),导致可以未授权访问TMUI模块所有功能(包括未公开功能),漏洞影响范围包括执行任意系统命令、任意文件读取、任意文件写入、开启/禁用服务等。

0x01 认证绕过漏洞

TMUI站点位于 /usr/local/www/tmui/ 目录,运行环境为Tomcat。

首先分析Web配置文件 /WEB-INF/web.xml ,发现配置了servlet load-on-startup 属性,web站点在启动时会优先实例化 com.f5.controller.ControlServlet 并调用init()方法。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

分析依赖 /WEB-INF/lib/tmui.jar ,找到 com.f5.controller.ControlServlet 的init方法。

init()方法在最后调用 F5WebController.initMappings(getServletConfig()) 初始化Mapping。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

跟踪 com.f5.F5WebController.initMappings() 方法,方法紧接着调用了 com.f5.controller.Mappings()

该方法分别读取了Mapping文件 /WEB-INF/xml/requestmappings.xml/WEB-INF/xml/responsemappings.xml 初始化。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

Web请求Mapping配置文件 /WEB-INF/xml/requestmappings.xml ,请求路由对应Handler。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

Web响应Mapping配置文件 /WEB-INF/xml/responsemappings.xml ,请求路由对应Handler。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

继续分析 com.f5.controller.ControlServlet ,该servlet类重写了doGet方法、doPost方法,所有请求都会经过该方法进行处理。

154行调用 com.f5.controller.F5WebController 实例化,199行调用 processWebRequest() 方法处理Web请求。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

跟踪 processWebRequest() 方法,61行调用 Mappings.getRequestByURL() 方法获取当前路由的requestMapping配置,71行对当前路由对应的Handler进行实例化,即requestHandler。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

其中 Mappings.getRequestByURL(this.request.getPathInfo()) 为此漏洞原因所在。该方法根据 request.getPathInfo() 的Servlet路径返回相对应的Handler类名。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

继续往下看,122行调用 User.getUser() 获取当前用户身份,125行调用前面实例化的Handler的 getAllowedLevels() 方法,该方法返回当前路由允许访问的角色权限ID。

接着调用 User.haveAccessToAtLeastOneTargetLevel() 方法,判断当前角色权限ID是否在允许访问的角色范围内。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

User.haveAccessToAtLeastOneTargetLevel() 方法

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

附上角色身份及ID对照表。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

以上就是servlet主要的权限验证逻辑,根据请求路由Handler判断当前用户是否拥有权限访问该路由,通过权限验证后根据 /WEB-INF/web.xml 的路由调用对应的类。

已知TMUI登录页面 /tmui/login.jsp 可以通过未授权进行访问,以漏洞POC /tmui/login.jsp/..;/tmui/util/getTabSet.jsp 为例,当请求漏洞点时Tomcat与Servlet的URL分别如下:

  • Tomcat:
/tmui/tmui/util/getTabSet.jsp
  • Servlet request.getPathInfo():
/tmui/login.jsp

此次漏洞的本质是因为Tomcat解析的URL与request.getPathInfo()存在差异,导致绕过权限验证逻辑,未授权访问所有路由,包括执行tmsh命令、文件读取、文件写入等敏感函数。

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

除了 /tmui/login.jsp 无需登录以外,以下两个路由也无需登录即可利用:

/tmui/tmui/login/index.jsp -> /tmui/tmui/login/index.jsp/..;/..;/..;/tmui/util/getTabSet.jsp
/tmui/tmui/login/welcome.jsp -> /tmui/tmui/login/welcome.jsp/..;/..;/..;/tmui/util/getTabSet.jsp

0x02 漏洞演示

目前网上已经公开多个利用方法,包括root权限命令执行方法可导致获取F5设备root权限。漏洞危害演示如下:

  • 普通tmsh命令执行

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

  • tmsh执行bash命令(root权限)

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

  • 任意文件读取

F5 BIG-IP 远程代码执行漏洞分析(CVE-2020-5902)

0x03 影响版本

  • BIG-IP 15.x: 15.1.0/15.0.0
  • BIG-IP 14.x: 14.1.0 ~ 14.1.2
  • BIG-IP 13.x: 13.1.0 ~ 13.1.3
  • BIG-IP 12.x: 12.1.0 ~ 12.1.5
  • BIG-IP 11.x: 11.6.1 ~ 11.6.5

0x04 临时修复方案

1) 执行以下命令登录到TMOS Shell(tmsh):

tmsh

2) 执行以下命令编辑httpd组件配置文件

edit /sys httpd all-properties

3) 添加include代码

include '
<LocationMatch ".*..;.*">
Redirect 404 /
</LocationMatch>
'

4) 输入以下命令保存到配置文件

按下 ESC 并依次输入
:wq

5) 执行以下命令保存系统配置

save /sys config

6) 执行以下命令重启httpd服务

restart sys service httpd

注意:经过身份验证的用户将仍然能够利用RCE漏洞,请确保所有账号未使用弱口令。

0x05 关于我们

灵腾安全实验室(REDTEAM)正式成立于2020年,隶属于360政企-实网威胁感知部;主攻研究方向包括红队技术、物理攻防、安全狩猎等前瞻技术,为 360AISA全流量威胁分析系统360天相资产威胁与漏洞管理系统360虎安服务器安全管理系统360蜃景攻击欺骗防御系统 核心产品提供安全赋能。

0x06 参考链接

https://support.f5.com/csp/article/K52145254

https://i.blackhat.com/us-18/Wed-August-8/us-18-Orange-Tsai-Breaking-Parser-Logic-Take-Your-Path-Normalization-Off-And-Pop-0days-Out-2.pdf

https://xz.aliyun.com/t/7544

原文  https://www.anquanke.com/post/id/209932
正文到此结束
Loading...