问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
CVE-2023-46747和AJP走私漏洞
漏洞分析
本文主要介绍了AJP走私漏洞在实际项目中的应用,以及CVE-2023-46747的分析。
什么是AJP走私? --------- `AJP`是一种用于连接web服务器与应用服务器的二进制协议,通常用于`Apache HTTP Server`或`Nginx`与`Apache Tomcat`等`Java`应用服务器之间的通信。 `AJP`走私漏洞利用的是`AJP协议`与`HTTP协议`之间的差异,以及中间件(如代理服务器或负载均衡器)和应用服务器对`HTTP请求`的不同解析方式。这种漏洞允许攻击者通过特殊构造的请求,操纵`AJP协议`下的数据流,实现请求走私。 关于`AJP协议`的详细内容可以参考https://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html AJP走私的实际意义 ---------- 说到`AJP走私`其实相关的漏洞很少,这也导致了很多时候并没有考虑到这方面的问题。但是实际上`AJP走私`相当于发送一个额外的请求,通过这个额外的请求我们可以访问到原来无法访问的地址,绕过一些针对外部的访问配置问题,当然这只是利用方式的一种。 `AJP走私`最早的利用应该是在长亭的`ghostcat`漏洞中,通过这个漏洞,攻击者可以读取目标机器`webapp`目录下的任意文件,这也是在公开项目中危害比较大的一个漏洞了,网上有很多相关资料可以查阅。 CVE-2023-46747 -------------- ### 环境搭建 直接[下载](https://my.f5.com/manage/s/downloads?productFamily=BIG-IP&productLine=big-ip_v15.x&version=15.1.8&container=Virtual-Edition&files=BIGIP-15.1.8-0.0.7.ALL-vmware.ova&locations=JAPAN)镜像用vmware启动即可。 默认账号密码为:admin/default ### 漏洞分析 因为BIG-IP的Apache是基于Apache 2.4.6的定制版,所以也会受AJP走私的影响,结合其它信息就能得知: 1. 在BIG-IP的历史漏洞[CVE-2022-1388](https://xz.aliyun.com/t/11418#toc-7)中得知,我们可以从`/mgmt/tm/util/bash`来执行命令,但是当时是基于`X-F5-Auth-Token`权限的绕过,那么既然权限绕过已经修复了,我们就需要一个可以通过认证的`X-F5-Auth-Token`,那么也就是需要创建一个管理员用户。 2. 那么创建账户这个问题就来到了tmui上,我们通过AJP走私到`/tmui/Control/form`调用`/tmui/system/user/create.jsp`来创建一个新的用户。 3. 参考[官方文档](https://clouddocs.f5.com/products/big-iq/mgmt-api/v5.4/ApiReferences/bigiq_api_ref/r_auth_login.html)的方式,创建完新的用户之后就可以通过`/mgmt/shared/authn/login`然后返回第一步来执行命令。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/05/attach-a2ecf45619799de456855703245b7c443e025fd1.png) 流程概括下来就是:通过`/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`。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/05/attach-5b2e725857dcdf06e23875af6dd33ecaa6319fb8.png) 通过构造`Tmui-Dubbuf`=BBBBBBBBBBB、`_timenow`=a、`_bufvalue`=eIL4RUnSwXYoPUIOGcOFx2o00Xc=,即可绕过csrf的检测,这也是这个漏洞中比较关键的一环。 使用这三个键值对进行构造,那么最后得到的poc如下: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/05/attach-e29009265775cfbbca5b05267d0b26ce7d852743.png) 使用`Transfer-Encoding: chunked`时,会使用分块传输编码,第一个204就是trunk size的大小,用十进制转换为十六进制后对应516,也就是我们走私请求的长度,最后的0表示结尾,如果不是用https看到的明文如下: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/05/attach-4fd991a818e019544958b5e8cd42f193eef8f763.png) 这个步骤需要多试几次,不一定第一次就成功,发现返回的不是登录界面后就可以进行下一步了: 通过账号密码获取到token的值。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/05/attach-aaf9c561d706785c9962559a618cd204bf3f9c64.png) 然后执行命令: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/05/attach-623cecf11bf99da9a491af3273a323f31eb44315.png) 自此漏洞利用就结束了。 总结 -- 根据这个CVE发现其实在通过请求走私是可以将一些老漏洞重新利用的,那么在进行代码审计的过程中或者渗透测试的过程中,是否有别的可能存在的思路?因为现如今很多的企业,尤其是一些老企业所使用的组件仍然是较低版本,在做的时候可以顺带看一眼,如果存在可利用的`AJP走私`就可以绕过一些权限验证从而进一步操作。
发表于 2024-05-24 10:06:12
阅读 ( 14900 )
分类:
漏洞分析
0 推荐
收藏
0 条评论
请先
登录
后评论
SpringKill
4 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!