๐ Introduction
EL(Expression Language) Injection์ Expression์ ์ฒ๋ฆฌํ๋ EL interpreter์ ๋ํ Injection ๊ณต๊ฒฉ์ผ๋ก SSTI, OGNL Injection๊ณผ ์ ์ฌํจ์ ๊ฐ์ง๋๋ค.
๐ก Offensive techniques
Detect
๋ง์ฝ Spring์์ Expression์ ํตํด ์๋์ ๊ฐ์ด ์ฒ๋ฆฌํ๊ณ ์๋ค๋ฉด param.msg ์ฆ data๋ ์ด๋ฆ์ ํ๋ผ๋ฏธํฐ๋ Expression Language๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ Injection์ ํตํด์ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ ๊ตฌ๋ฌธ์ ์ฃผ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
|
|
|
|
EL Injection์ ๋ํ ํ์ง๋ ๋ณดํต SSTI์ ์ ์ฌํ ํํ๋ก ์งํ๋๋ฉฐ, ์ด์ธ์๋ ์ง์ Expression ๊ตฌ๋ฌธ์ ์ ์กํ์ฌ ์๋ฒ๊ฐ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ฒดํฌํ๋ ํํ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
|
|
Time-Based
|
|
ping ์ฒดํฌ ์ 5ํ ์ฒดํฌํ๊ธฐ ๋๋ฌธ์ ์ฝ 5์ด์ ๋๋ ์ด๊ฐ ๋ฐ์ํฉ๋๋ค.
OAST-Based
|
|
OAST-SERVICE๋ก DNS Query์ HTTP Request๊ฐ ๋์ฐฉํ๋ ๊ฒ์ ํ์ธํ์ฌ ์ฒดํฌํ ์ ์์ต๋๋ค.
Exploitation
RCE
Expression์ ์ธ์ด์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ๋ณดํต Server-Side Application์์ ์ฒ๋ฆฌํ ์ ์๋ ๊ถํ๊ณผ ์ ์ฌํ ๊ถํ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ํตํด ๊ณต๊ฒฉ์๊ฐ ์๋ํ ๋ช ๋ น์ ์ ๋ฌํ๊ณ ์คํํ์ฌ ์๋ฒ๋ฅผ ํ์ทจํ ์ ์์ต๋๋ค.
|
|
RCE Tirkc์ SSTI์์ Expression์ ๋ํด ๋ช ์๋์ด ์์ผ๋ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
Infomation Disclosure
Expression์ ํตํด Object๋ฅผ ์ฐธ์กฐํ ์ ์๊ธฐ ๋๋ฌธ์ ํต์ ๋ Object ๋ด๋ถ์ ๊ฐ์ ํธ์ถํ์ฌ ์ ๋ณด๋ฅผ ํ์ทจํ ์ ์์ต๋๋ค.
|
|
๐ก Defensive techniques
Basic
๊ธฐ๋ณธ์ ์ธ ๋์๋ฐฉ์์ SSTI์ ๋์ผํฉ๋๋ค.
SePL
SePL(Spring Expression Language)์ ๊ฒฝ์ฐ Spring framework์ web.xml์ springJspExpressionSupport
๋ฅผ false
๋ก ์ง์ ํ์ฌ ๊ธฐ๋ณธ์ ์ธ SePL Injection์ ์๋ฐฉํ ์ ์์ต๋๋ค.
|
|
๐ Articles
- https://www.hahwul.com/2018/08/25/spel-injection-springboot-rce/
- https://www.hahwul.com/cullinan/ssti/
- https://www.hahwul.com/cullinan/ognl-injection/