CVE-2023-46747 F5 BIG-IP RCE

CVE-2023-46747 F5 BIG-IP RCE

影响版本

全版本

环境搭建

直接下载镜像用vmware启动即可。

默认账号密码为:admin/default

漏洞分析&&复现

通过官方的修复补丁可以看出来和权限验证相关,并且修改了proxy_ajp_conf文件中的内容,再结合已有信息推测这是一个AJP走私问题(然而就在初步验证成功的时候chen师傅发了一句话……)

擦,点开一看竟然是poc,看了下poc和/usr/share/tomcat/conf/server.xml

省了很多事,这下确定了是AJP走私的问题,因为BIG-IP的Apache是基于Apache 2.4.6的定制版,所以也会受AJP走私的影响。

AJP走私大家并不陌生,比如ghostcat和CVE-2022-26377这类的漏洞就是AJP走私造成的,那么接下来的利用就比较简单了:

  1. 在BIG-IP的历史漏洞CVE-2022-1388中得知,我们可以从/mgmt/tm/util/bash来执行命令,但是当时是基于X-F5-Auth-Token权限的绕过,那么既然权限绕过已经修复了,我们就需要一个可以通过认证的X-F5-Auth-Token,那么也就是需要创建一个管理员用户。

  2. 那么创建账户这个问题就来到了tmui上,我们通过AJP走私到/tmui/Control/form调用/tmui/system/user/create.jsp来创建一个新的用户。

  3. 参考官方文档的方式,创建完新的用户之后就可以通过/mgmt/shared/authn/login然后返回第一步来执行命令。

流程概括下来就是:通过/tmui/Control/form来调用user/create.jsp然后从/mgmt/shared/authn/login获取新的token,最后在/mgmt/tm/util/bash执行命令。

这其中有一个需要注意的点:

tmsh中进行了csrf检测,所以在第一步调用的时候需要构造好三个参数_timenow Tmui-Dubbuf_bufvalue,满足_bufvalue的值等于Tmui-Dubbuf+Tmui-Dubbuf

在nuclei给的poc中用的是 Tmui-Dubbuf=BBBBBBBBBBB、_timenow=a、_bufvalue=eIL4RUnSwXYoPUIOGcOFx2o00Xc=

我们也使用这三个键值对进行构造,那么最后得到的poc就是:

使用Transfer-Encoding: chunked时,会使用分块传输编码,第一个204就是trunk size的大小,用十进制转换为十六进制后对应516,也就是我们走私请求的长度,最后的0表示结尾,如果不是用https看到的明文如下:

这个步骤需要多试几次,不一定第一次就成功,发现返回的不是登录界面后就可以进行下一步了:

通过账号密码获取到token的值。

然后执行命令:


CVE-2023-46747 F5 BIG-IP RCE
http://www.springkill.club/2023/11/07/CVE-2023-46747 F5 BIG-IP RCE/
作者
SpringKill
发布于
2023年11月7日
许可协议