F5 BIG-IP远程代码执行漏洞 - CVE-2020-5902

xiannv  1350天前

最近我们研究了上个月公布的F5 TMUI RCE漏洞,官方通报指出,该漏洞可被利用多种功能,包括执行任意Java代码的功能,这对我们来说很有用。

1.png

图1:漏洞影响声明

可以看出缓解措施指向目录遍历和潜在的命令注入。利用模式中有趣的字符是分号。

2.png

图2:缓解

第一步是比较已知漏洞版本和固定版本之间的更改,因此我们首先比较了15.1.0与15.1.0.4之间的系统配置。我们发现存在很多差异,但是对Apache配置的以下更改特别激起了我们的兴趣,并导致我们陷入了困境。

快照显示 /hsqldb 端点已从反向代理配置中删除。Tomcat应用程序服务器在localhost:8009上侦听。

3.png

 图3:proxy_ajp.conf中的差异

4.png

图4:httpd.conf中的差异

运行一个基本的未经身份验证的GET请求,该请求重定向到登录页面,这是预期的,因为访问管理应用程序需要身份验证。

5.png

图5:HTTP重定向到登录

考虑到缓解漏洞的措施,我们添加了分号,并且请求已成功发送到应用程序服务器。这必须是身份验证绕过,因为此结点不可访问。

6.png

图6:身份验证绕过

现在我们可以到达 /hsqldb 了,我们开始了一段旅程,看看可以用它做什么。HyperSQL是Java应用程序使用的嵌入式关系数据库。通过阅读文档并寻找方法,这可能会被滥用。

第一次尝试使用用户定义功能(UDF);但是,发现该功能在v1.8中不可用。我们发现我们可以调用本机Java函数或服务器可用的任何方法,但主要限制是它必须是静态方法。在HSQLDB源代码中寻找静态方法之后,我们发现 org.hsqldb.util.sc riptTool.main() 方法反序列化了以ASCII十六进制字符串表示的Java对象。这看起来很有希望,因此我们尝试使用sqltool手动调用此方法,并遇到“序列化失败”错误。

7.png

图7:序列化异常

值得庆幸的是,该错误消息通知我们如何解决它。将enableUnsafeSerialization属性设置为true并成功执行有效负载。至此,我们证明了可以执行经过身份验证的远程代码。尝试使用 /hsqldb; POST请求导致连接错误,因此我们再次查看缓解正则表达式“.* \.\.;.*”,并注意到身份验证绕过为“ ..;”。然后,我们更改了利用该正则表达式的漏洞利用程序,从而使我们可以直接访问HQSLDB。

可以在https://github.com/Critical-Start/Team-Ares/tree/master/CVE-2020-5902中找到完整的漏洞利用程序

8.png

图8:远程执行代码

通过tmsh创建一个具有管理员角色的新用户。此操作将创建一个根系统帐户。

9.png

 图9:本地特权升级

测试的版本:

  • F5大IP 15.1.0
  • F5大IP 14.0.0
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://www.criticalstart.com/f5-big-ip-remote-code-execution-exploit/?from=groupmessage

最新评论

昵称
邮箱
提交评论