DOM XSS : LAB [6]
DATE : 2024/1/10
โDOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded
์ด๋ฒ LAB์ ํ๊ธฐ ์ํด์๋ ๊ฐ๋จํ๊ฒ angular JS์ ๋ํ ์ง์์ด ํ์ํ๋ค!
์ ๋ฐ์ ์ธ ๋ด์ฉ์ ๋ค๋ฃจ์ง๋ ์๊ณ ์ด๋ฒ LAB์ ํด๊ฒฐํ๊ธฐ ์ํด์ ํ์ํ ๋ด์ฉ๋ง ๋ณด๊ณ ๋์ด๊ฐ์.
(1) angular JS๋ {{__expression__}} double braces ๊ธฐํธ ์์ ์์ฑํ๋ค.
(2) angluar JS์์๋ ng-๋ก ์์ํ๋ directives๋ฅผ ์ฌ์ฉํ๋ค. (ex. ng-app, ng-model, ng-init)
๋ฑ ์ด ์ ๋ ๋ด์ฉ์ด๋ฉด ์ด๋ฒ LAB์ ํ๊ธฐ์ ์ถฉ๋ถํ๋ค!
๊ทธ๋ผ ๋ฐ๋ก ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋๋ก ํ์.
ํ์ฌ LAB์์๋ ํ์ด์ง ์ค์์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐพ์๋ณผ ์ ์๋ ๊ฒ์ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๊ณ ์๋ค.
์ฌ์ฉ์๊ฐ ์ด๋ค ๋ด์ฉ์ ๊ฒ์ํ๋ฉด ํด๋น ๋ฐ์ดํฐ๊ฐ search parameter๋ก ์ฌ์ฉ๋๋ ๋์์
ํ๋ฉด์ ์ถ๋ ฅ ๋จ์ ์ ์ ์๋๋ฐ
search parameter๊ฐ ๋ฐ๋ก ํ๋ฉด์ ์ถ๋ ฅ ๋๋ ๊ฒ ๋ง๋ ์ง ํ์ธํ๊ธฐ ์ํด ๊ฐ์ ๋ฐ๊ฟ ๋ณด์๋๋
๋ฐ๋ก Response์ ์ ์ฉ๋๋ ๊ฑธ ํ์ธํ ์ ์์๋ค.
๋ค๋ง, ํ๊ทธ๋ฅผ ์ฝ์ ํ ๋ ํ์ํ angle bracket ๊ธฐํธ๊ฐ ๋์ฒด ๋ฌธ์๋ก ์นํ๋๋ค๋ ์ฌ์ค์ ํ์ ํ๋ค.
ํ๊ทธ๋ฅผ ์ฝ์ ํ ์ ์๋ ์ํ๋ผ๋ฉด, ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด์ผ ํ๋ค..!
์ด๋ ๋ ์ค๋ฅธ ๊ฒ์ด ๋ฐ๋ก, directives!
directives๋ HTML element์ ์์ฑ์ฒ๋ผ ๋ถ์ฌํ๋ ๊ฐ์ด๋ผ์
angular JS๋ฅผ ์ฌ์ฉํ๋ค๋ฉด Packet ์์์ directives๋ฅผ ์ฐพ์๋ผ ์ ์์ ๊ฒ์ด๋ค.
๋ฐ-๋ก Packet์์ ng๋ก ์์ํ๋ ์์ฑ์ ์ฐพ์๋ดค๋๋ <body> tag์
์ฌ์ฉ๋ ng-app์ ๋ฐ๊ฒฌํ ์ ์์๋ค. ๐
์ฌ์ฉ์๊ฐ ๊ฒ์ํ ๋ด์ฉ์ <body> tag ์์ ๋ค์ด์๋ <h1> tag์ด๊ธฐ ๋๋ฌธ์
angular JS๋ฅผ ์ฝ์ ํ๋ฉด ์คํํ ์ ์๋ค.
์ฒ์์ ๋งํ๋ฏ์ด angular JS๋ {{ }} ์ด ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ด์ฉ์ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์
์์ ๊ฐ์ด ์คํํ๊ณ ์ ํ๋ ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ์ ์ด์ค์ผ ํ๋ค.
๋ง์ง๋ง์ผ๋ก ์ค๋นํ ์คํฌ๋ฆฝํธ๋ฅผ search parameter์ ๋ฃ์ด์ฃผ๋ฉด!
ng-app directives ์์ {{__script__}}๊ฐ ๋ค์ด๊ฐ๋ฉด์ alert() ํจ์๊ฐ ์คํ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๊ฒ ๋๋ค! ๐
Last updated