๐ Introduction
SSE(Server-Sent Event)๋ Server Push ๊ธฐ์ ๋ก ์น ์์บฃ๊ณผ ์ ์ฌํ๊ฒ ์๋ฒ์ Javascript๊ฐ ์๋ก ํต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ์ ์์ต๋๋ค. ๋ค๋ง ์น์์ผ์ ๊ฒฝ์ฐ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํ์ง๋ง, SSE๋ ์๋ฒโํด๋ผ์ด์ธํธ๋ก ๋ฐ๋ ์์ฒญ๋ง ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋จ์ํ ์๋ฒ๋ก๋ถํฐ Push๋ฅผ ๋ฐ์์ผํ๋ ๊ฒฝ์ฐ SSE๊ฐ ๊ฐ์ฅ ๊ฐํธํ ๊ธฐ์ ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ค๋ง ์ฑ๋ฅ์ด๋ ๊ธฐ์ ์ ์ธ ๋ถ๋ถ์์ ์ด์ ๋ณด๋จ ๋จ์ ์ด ๋ง์์ ๋๋ถ๋ถ์ ์๋น์ค์์ WebSocket ๋๋ Ajax ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
Event Straem Format
Basic and content-type
SSE๋ text/event-stream ํ์ ๊ณผ plain text response๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ line ๋ณ๋ก data: ๋ผ๋ ๊ตฌ๋ถ์๋ฅผ ํตํด์ stream์ ์ ์กํ๊ณ ๊ตฌ๋ณํฉ๋๋ค.
|
|
Multiline
|
|
JSON
|
|
์ด ๋ SSE๋ฅผ ๋ฐ๋ Client์์ ์๋์ ๊ฐ์ด eventListener๋ก ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ JSON.parse ํ์ฌ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
|
|
Event name
event: ๊ตฌ๋ถ์๋ฅผ ํตํด eventListner๋ก ์ ๋ฌํ ์ด๋ฒคํธ ์ด๋ฆ์ ๋ช ์ํ ์ ์์ต๋๋ค.
|
|
|
|
๐ก Offensive techniques
How to Testing
SSE๋ ์น ๋ธ๋ผ์ฐ์ ์ Console, Debugger๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ์ ๋ํด ํ ์คํธํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก SSE๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ๋ง ํ๊ธฐ ๋๋ฌธ์ EventHandler ์ดํ ๋ก์ง์ด ์ฃผ์ ๋ถ์ ๊ตฌ๊ฐ์ด ๋ฉ๋๋ค.
ZAP์์๋ Server-Sent Events Addon ํตํด์ Recv๋๋ ๋ฐ์ดํฐ๋ฅผ ํธ๋ํนํ๊ณ ๋ถ์ํ๋๋ฐ ํ์ฉํ ์ ์์ต๋๋ค.
Testing Method
SSE๋ ์๋ฒ๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฒฉํ ์ ์๋ ๋ฒ์๊ฐ ๋์ง๋ ์์ต๋๋ค. ๋ค๋ง SSE์ ์ฐ๊ฒฐ๋๋ ์๋ฒ๊ฐ ํญ์ ์ ๋ขฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ค๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค. ๊ทธ๋์ ์๋ฒ๋ก ๋ถํฐ ์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก DOM์ ๋ฐ์๋๊ฑฐ๋ ๋ค๋ฅธ ๋ก์ง์ ์ฒ๋ฆฌ๋๋ ๊ฒ์ ์ด์ฉํ ๊ณต๊ฒฉ๋ค์ด ์ฃผ๋ฅผ ์ด๋ฃจ๊ฒ ๋ฉ๋๋ค.
DOM XSS
SSE๋ฅผ ํตํด ๋ฐ์ ๋ฐ์ดํฐ์์ DOM XSS๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ DOM XSS์ ๋์ผํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์์น๊ฐ SSE๋ผ๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
|
|
์์ ๊ฐ์ ์ฝ๋๋ ์๋ฒ๋ก ๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๊ฐ logObject์ innerHTML๋ก ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ DOM ๊ธฐ๋ฐ์ XXS๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Weak Origin Check
SSE๋ WebSocket๊ณผ ๋ค๋ฅด๊ฒ Client ๋จ์์ ์ง์ Origin ๊ฒ์ฆ์ ํด์ผํฉ๋๋ค. ๋น์ฐํ Browser๋ก ๋ถํฐ ์ ๊ณต๋๋ SOP์ ์ํฅ์ ๋ฐ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ก์ง์ ๊ตฌํํด์ผํ๋ฉฐ, ์ฝ๋์ ๋ฐ๋ผ์ Origin ๊ฒ์ฆ์ ์ฐํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
Etc
์ด์ธ์๋ Browser๋จ ๋ณด์ ์ทจ์ฝ์ ์ ๋์ผํ๊ฒ ์ํฅ๋ฐ์ ์ ์์ต๋๋ค. ๋ค๋ง ์์ค๊ฐ ์๋ฒ๋ผ๋ ์ฐจ์ด์ ๋ง ์กด์ฌํฉ๋๋ค.
๐ก Defensive techniques
์๋ฒ๋ก ๋ถํฐ ์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋ฌด์กฐ๊ฑด ์ ๋ขฐํ ์๋ ์์ต๋๋ค. ๋ง์ฝ SSE๋ก ์ฐ๊ฒฐ๋๋ ์๋ฒ๊ฐ ์ ๋ขฐ ๊ตฌ๊ฐ์ ์๋ ์๋ฒ๋ผ๊ณ ํ๋๋ผ๋, ๊ฐ๊ธ์ ์ด๋ฉด FE๋จ์์ SSE๋ก ์ธํ ์ด์๋ ์ ํ๋ ์ ์๋๋ก ๋ณ๋์ ๋ฐฉ์ด๋ก์ง์ด ์๋ ๊ฒ์ด ์ข์ต๋๋ค.