๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸดCTF/OWASP Juice Shop

OWASP Juice Shop - 100kB๋ณด๋‹ค ํฐ ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ์„ธ์š”. (Improper Input Validation)

by Janger 2023. 9. 27.
728x90
๋ฐ˜์‘ํ˜•

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ธฐ ๋ณ„๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ์ด ์žˆ๋‹ค.

๊ฐ€์žฅ ํฐ ํŒŒ์ผ์€ 120KB (122,880 ๋ฐ”์ดํŠธ)

๊ฐ€์žฅ ์ž‘์€ ํŒŒ์ผ์€ 1๋ฐ”์ดํŠธ (1 ๋ฐ”์ดํŠธ)

์ค‘๊ฐ„์€ 97.6KB (100,000 ๋ฐ”์ดํŠธ)

 

ํŒŒ์ผ ์—…๋กœ๋“œ๋Š” ์ตœ๋Œ€ 100 KB๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ฐ€์žฅ ํฐ ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๋ฉด ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค. 

 

 

๊ฐœ๋ฐœ์ž ๋„๊ตฌ์— Console ํƒญ์„ ํ™•์ธํ•˜๋ฉด fileSize์— ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๊ฐ€ ๋œจ๊ฒŒ ๋œ๋‹ค. ํฌ๊ธฐ๊ฐ€ ํฐ ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๋ฉด ์ € ์˜ค๋ฅ˜ ๋ฌธ๊ตฌ๊ฐ€ ๋œจ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋œจ์ง€ ์•Š๋Š”๋‹ค. 

 

์˜ค๋ฅ˜ ์›์ธ ํŒŒ์ผ์ธ vendor.js๋ฅผ ํ™•์ธํ•˜๋ฉด ํŒŒ์ผ์˜ ์ตœ๋Œ€ ์‚ฌ์ด์ฆˆ๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ ๊ฐ™์€ ํ•„ํ„ฐ ํ•จ์ˆ˜ ๋ถ€๋ถ„์ด ๋ณด์ธ๋‹ค. 

 

์ด๊ฑธ ๋ณด์•˜์„ ๋•Œ๋Š” ์ตœ๋Œ€ ํฌ๊ธฐ ์‚ฌ์ด์ฆˆ์ธ์ง€ ๊ฒ€์ฆ์„ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ๊ทธ๋Ÿผ ์ € ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜๋ฉด 100 KB๊ฐ€ ๋„˜๋Š” ํŒŒ์ผ๋„ ์˜ฌ๋ ค ๋ณผ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ์˜ˆ์ƒ์„ ํ•ด๋ณธ๋‹ค. 

 

 

vendor.js ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฒ„ํ”„์Šค์œ„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๊ฑธ๋ฆฌ๋„๋ก ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฃฐ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. 

 

๋ฃฐ์„ ์ถ”๊ฐ€ ํ›„์— ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์ฃผ์˜ํ•  ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค. 

๋ถ„๋ช… vendor.js๊ฐ€ ์žกํžˆ๋Š”๋ฐ 304 Not Modified๊ฐ€ ๋œจ๋ฉด์„œ ๋‚ด์šฉ์ด ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ ์บ์‹œ์— ์ด๋ฏธ vendor.js๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ๋˜ ๋‚ด์šฉ์„ ์š”์ฒญํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

๊ทธ๋Ÿผ์—๋„ ์บ์‹œ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋‚ด์šฉ์„ ์ƒˆ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด Ctrl + F5๋ฅผ ๋ˆŒ๋Ÿฌ ๊ฐ•์ œ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•œ๋‹ค. 

 

์ด๋ฒˆ์—๋Š” 200 OK๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ ๋‚ด์šฉ์ด ์ œ๋Œ€๋กœ ๋ถˆ๋Ÿฌ์™€์ง„๋‹ค. 

 

์ด์ œ ์•„๋ž˜ ์›๋ณธ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•œ๋‹ค. 

_fileSizeFilter(U) {
	return !(this.options.maxFileSize && U.size > this.options.maxFileSize)
}

 

์•„๋ž˜์™€ ๊ฐ™์ด NOT ์กฐ๊ฑด์„ ์ง€์›Œ ํŒŒ์ผ์ด ์ปค๋„ ํ•„ํ„ฐ์— ๊ฑธ๋ฆฌ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. 

_fileSizeFilter(U) {
	return (this.options.maxFileSize && U.size > this.options.maxFileSize)
}

 

 

 

์ˆ˜์ •์„ ํ•˜๊ณ  ๋‹ค์‹œ ๊ธฐ์ค€์น˜ ๋ณด๋‹ค ์‚ฌ์ด์ฆˆ๊ฐ€ ์ดˆ๊ณผ๋œ ํŒŒ์ผ์„ ์˜ฌ๋ ค๋ณธ๋‹ค. 

 

100 KB๊ฐ€ ๋„˜๋Š” ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•˜๋Š”๋ฐ ์„ฑ๊ณตํ•˜์˜€๋‹ค. 

728x90
๋ฐ˜์‘ํ˜•