๐ Introduction
XSHM (Cross Site History Manipulation)์ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ํ์คํ ๋ฆฌ๋ฅผ ์ด์ฉํ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ผ๋ก ๋จ์ํ ์ด์ history๋ฅผ ๋ณ๊ฒฝํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์๋ํ ํ์ด์ง๋ก ์ด๋๋๋๋ก ํ๋ ํผ์ฑ ๋ฐฉ๋ฒ๋ถํฐ, SOP๋ฅผ ์ฐํํ๊ฑฐ๋ CSRF ๋๋ IFRAME์ ์ด์ฉํ์ฌ ์ค์ ์ ๋ณด๋ฅผ ํ์ทจํ๋๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- https://developer.mozilla.org/en-US/docs/Web/API/Window/history
- https://developer.mozilla.org/en-US/docs/Web/API/History
๋ค๋ง history๋ฅผ ๋ณ๊ฒฝํ ์ ์์๋ ๋ถ๋ถ์
|
|
๐ก Offensive techniques
Detect
ํด๋น ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ๋จ๋ ์ผ๋ก ๋์ํ๋ค๊ธฐ ๋ณด๋จ XSS๋ ์ ๋ก๋๋ ํ์ผ ๋ฑ ๊ณต๊ฒฉ์๊ฐ ํต์ ํ ์ ์๋ ํ์ด์ง์์ ์คํฌ๋ฆฝํธ ์ฝ์ ์ด ํ์ํฉ๋๋ค.
Exploitation
Phishing
history.pushState, history.replaceState ๋ฅผ ์ฌ์ฉํด์ ๋ธ๋ผ์ฐ์ ์ ์ฃผ์ํ์์ค์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ค๋ง ์ด ๊ณผ์ ์ SOP์ ์ํฅ์ ๋ฐ๊ธฐ ๋๋ฌธ์ Same-Origin ํ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์์ ๊ฐ์ด https://www.hahwul.com/cullinan/main/
ํ์ด์ง ์ ๊ทผ ํ history.pushState()
ํจ์๋ฅผ ์ฌ์ฉํด์ URL์ ์ถ๊ฐํ๋ค๋ฉด ์๋์ ๊ฐ์ด ํ์ด์ง๋ ๋ณํจ์์ง๋ง ์ฌ์ฉ์๊ฐ ํ์ธํ ์ ์๋ ์ฃผ์ํ์์ค์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
Same-Origin์ด๋ ์ ํ์ด ์์ง๋ง, ์๋ฅผ๋ค์ด ๋๋ฉ์ธ ๋ด XSS๋ html ํ์ผ ์
๋ก๋ ๊ตฌ๊ฐ์ด ์์ ๋ ์ฌ์ฉ์๋ฅผ /
๊ฒฝ๋ก์ ๊ฐ์ด ์ ๋ขฐ๋๊ฐ ๋์ ์ฃผ์๋ก ๋ณ๊ฒฝํ์ฌ ํผ์ฑ์ ์ฑ๊ณต๋ฅ ์ ์ฌ๋ฆด ์ ์์ต๋๋ค.
ํ๊ฐ์ง ์๋ฅผ๋ค๋ฉด ๋ก๊ทธ์ธ ํ์ด์ง ๋ชจ์ต์ ํผ์ฑ ํ์ด์ง๊ฐ ์๋ 2๊ฐ์ Path ์ค ์ด๋๋ก ๋ณด์ผ ๋ ์ ๋ขฐ๋๊ฐ ๋์์ง ์๊ฐํด๋ณด๋ฉด ๋ฐ๋ก ๋ต์ด ๋์ต๋๋ค.
- /users/file/125412519827125.html
- /logins
์ฌ์ฉํ ์ ์๋ ๋ํ์ ์ธ ํจ์๋ ์๋์ ๊ฐ์ต๋๋ค.
|
|
Cross-Site Condition Leakage
Cross-Site Condition Leakage์ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๊ณต๊ฒฉ์๊ฐ ์กฐ๊ฑด๋ฌธ์ ๋ฏผ๊ฐํ ๊ฐ์ ์ ์ถํ ์ ์์ ๋ ๋ฐ์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก 30x ๊ฐ์ Redirect ํ์ด์ง๊ฐ ํ์ํ๋ฉฐ ์ด๋ฅผ ์ด์ฉํด์ ๋ค๋ฅธ ํ์ด์ง์ ์กฐ๊ฑด ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
ํ๋ ์์๋ฅผ ๋ค์ด๋ณด๋ฉด ๋ง์ฝ GET /myinfo
ํ์ด์ง๋ฅผ ํธ์ถํ์ ๋ ๋ก๊ทธ์ธ ์ฌ์ฉ์๋ 200 OK
๋น๋ก๊ทธ์ธ ์ฌ์ฉ์๋ 302๋ฅผ ํตํด /error
๋ผ๋ ํ์ด์ง๋ก redirect ํ๋ค๊ณ ๊ฐ์ ํฉ์๋ค. ๊ทธ๋ฌ๋ฉด ๊ณต๊ฒฉ์๋ iframe์ ์ด์ฉํด ๋จผ์ /error
ํ์ด์ง๋ฅผ ๋ถ๋ฌ์จ ํ history.length ์ฌ์ด์ฆ๋ฅผ ๊ธฐ๋กํด๋ก๋๋ค.
|
|
์ดํ src๋ฅผ ์์ ํ์ฌ /myinfo
๋ฅผ ํธ์ถํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ๋์๋ค๋ฉด 200OK๋ก history.length์ ๊ฐ์ด ํ๋ ๋๊ฒ ์ง๋ง, ๋น๋ก๊ทธ์ธ์ธ ๊ฒฝ์ฐ /error
๋ก ๋ฆฌ๋ค์ด๋ ํธ๋๊ณ ๊ธฐ์กด๊ณผ ๋์ผํ ํ์ด์ง๊ธฐ ๋๋ฌธ์ history๊ฐ ์นด์ดํ
๋์ง ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ํ์
ํ ์ ์์ต๋๋ค.
|
|
์์๋ก๋ ๋จ์ํ ๋ก๊ทธ์ธ ์ฌ๋ถ ์ฒดํฌ์์ง๋ง, ํธ์ถํ๋ API๋ ํ์ด์ง์ ์ข ๋ฅ์ ๋ฐ๋ผ์ true/false๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํ์ฌ ์ค์์ ๋ณด๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ์ ์ถํ๋๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ XS-Leaks ๋ฐฉ๋ฒ๊ณผ ์ ์ฌํฉ๋๋ค.
๋ํ์ ์ผ๋ก ์๋ ค์ง ์นดํ ๊ณ ๋ฆฌ๋ ์๋์ ๊ฐ์ต๋๋ค.
- Login Detection
- Resource Mapping
- Error Leakage
- State Detection
- Information Inference
๐ก Defensive techniques
SOP์ ๋ธ๋ผ์ฐ์ ์ ์ฑ ๋ค์ ๊ฐํ๋ก Cross-Origin์์ ์๋์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ค๋ง ๊ทธ๋๋ Same-Origin ํ์ ์ผ๋ก๋ XSHM์ ์ด์ฉํ์ฌ ๊ธฐ์กด ์ทจ์ฝ์ ์ผ๋ก ์ป์ ์ ์๋ ์ ๋ณด๋ฅผ ํ์ทจํ ์๋ ์๊ธฐ ๋๋ฌธ์ X-Frame-Options, CSP ๋ฑ์ ๋ณด์ ํค๋๋ฅผ ํตํด ํ๋ค์ ๋์ด๊ณ XSS๋ CSRF ๋ฑ์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ์ง ์๋๋ก ์๋ฐฉํ๊ณ ์ฃผ๊ธฐ์ ์ผ๋ก ํ ์คํธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.