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๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

{{$on.constructor('alert("hanhxx")')()}}

์ฒ˜์Œ์— ๋งํ–ˆ๋“ฏ์ด angular JS๋Š” {{ }} ์ด ์•ˆ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์œ„์™€ ๊ฐ™์ด ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‚ด์šฉ์„ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์ค€๋น„ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ search parameter์— ๋„ฃ์–ด์ฃผ๋ฉด!

ng-app directives ์•ˆ์— {{__script__}}๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด์„œ alert() ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค! ๐Ÿ‘

Last updated