Business logic vulnerabilities
๐ What is Business logic vulnerabilities?
๋น์ฆ๋์ค ๋ก์ง ์ทจ์ฝ์ ์ ๊ณต๊ฒฉ์๊ฐ ์๋ํ์ง ์์ ๋์์ ์ ๋ํ ์ ์๋๋ก ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ค๊ณ ๋ฐ ๊ตฌํ์ ๊ฒฐํจ์
๋๋ค.
Low-level logic flaw
๋ฐฑ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ ์์ ํ์ฉ๋ ์ต๋๊ฐ(2,147,483,647)์ ์ด๊ณผํ์ฌ ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ๋ฅํ ์ต์๊ฐ(-2,147,483,647)๋ก ๋ฃจํ๋ฐฑ ๋๋ ์ทจ์ฝ์ ์ ๋๋ค.
์ฅ๋ฐ๊ตฌ๋์ ๋ฌผํ์ ๋ด์ ์ 99๊ฐ๊น์ง์ ๊ฐฏ์๋ง ์ถ๊ฐ๊ฐ ๋ฉ๋๋ค.(100๊ฐ ์ด์์ ๊ฐฏ์ ์๋ฌ)
ํด๋น ํจํท์ ์ธํธ๋ฃจ๋๋ก ๋ณด๋ด ๋ํ์ด๋ก๋๋ก ์ค์ ํ์ฌ ๋ฌด์ ํ์ผ๋ก ๊ณ์ ํจํท์ ๋ณด๋ ๋๋ค
ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด์ ํ์ธํ๋ค๋ณด๋ฉด Total ๊ฐ๊ฒฉ์ด ํ์ฉ๋ ์ต๋๊ฐ(2,147,483,647)์ ์ด๊ณผ์ ๊ฐ๊ฒฉ์ด -2,147,483,647๋ก ๋ณ๊ฒฝ๋๊ณ ์์์ ๊ฐ๊ฒฉ์ผ๋ก ๋ณ๊ฒฝ์ด ๋ฉ๋๋ค.
๊ฐ๊ฒฉ์ด ์์
๊ฐ๊ฒฉ์ด ์์๋ก ๋ณ๊ฒฝ
์ต์ข ์ ์ผ๋ก ์ ํ์ ์๋์ ๋ง์ถ์ด ์ผ์ ๊ธ์ก์ ๊ฐ๊ฒฉ์์ ์ ํ ์ฃผ๋ฌธ์ด ๊ฐ๋ฅํฉ๋๋ค
Inconsistent security controls
๊ฐ์ธ ์ ๋ณด ๋ณ๊ฒฝ ์ ํ์ฌ ์ด๋ฉ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ์ด๋๋ฏผ ํ์ด์ง ์ ๊ทผ๊ฐ๋ฅํ ์ทจ์ฝ์ ์ ๋๋ค.
ํ์ฌ ์ด๋ฉ์ผ ๊ถํ ๋ถ์ฌ ๋ฌธ์
ํ์ ๊ฐ์ ์ DontWannaCry ํ์ฌ์ ๊ทผ๋ฌดํ๋ค๋ฉด ์ด๋ฉ์ผ์ @dontwannacry.com ์ผ๋ก ๋ฑ๋กํ๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ํ์๋ฉ๋๋ค.
ํ์ฌ ์ด๋ฉ์ผ ๋ฑ๋ก
๋จผ์ ์์ ์ ์ผ๋ฐ ๊ณ์ ์ผ๋ก ํ์๊ฐ์ ์ ๋ฑ๋ก ํ ํ ๊ฐ์ธ์ ๋ณด ๋ณ๊ฒฝ์์ ์ด๋ฉ์ผ์ ํ์ฌ ์ด๋ฉ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ์ค๋๋ค.
ํ์ฌ ์ด๋ฉ์ผ ๋ณ๊ฒฝ
๊ทธ๋ฌ๋ฉด ๋ณ ๋ค๋ฅธ ์ธ์ฆ์์ด ํ์์ ์ด๋ฉ์ผ์ด ํ์ฌ ์ด๋ฉ์ผ๋ก ๋ณ๊ฒฝ์ด ๋๋ฉด์ ๋ณด์ด์ง ์์๋ Admin panel ํ์ด์ง๊ฐ ๋ณด์ด๊ฒ ๋๊ณ Adminํ์ด์ง ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋๋ค.
ํ์ฌ ์ด๋ฉ์ผ ๋ฑ๋ก ์ฑ๊ณต
adminํ์ด์ง ์ ๊ทผ ๊ฐ๋ฅ
Inconsistent handling of exceptional input
์ด๋ฉ์ผ ๋ฑ๋ก์ ํ์ฉ๋๋ ๋ฌธ์์ด 255๋ฅผ ์ด๊ณผํ์ฌ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์กฐ์ํ๋ ์ทจ์ฝ์ ์ ๋๋ค.
๋จผ์ ๋ฒํ์ค์ํธ ๋๋ ํ ๋ฆฌ ์ค์บ์ ํ์ฉํ์ฌ ํด๋น ํ์ด์ง์ /admin ํ์ด์ง๊ฐ ์๋ค๋๊ฒ์ ํ์ธํฉ๋๋ค.
์ด๋๋ฏผ ํ์ด์ง๋ฅผ ์ด์ฉํ ๋ ค๋ฉด DontWannaCry ์ ์ ๋ง ์ฌ์ฉํ ์ ์๋ค๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ฉ์ผ ๋ฑ๋ก์ 255๊ฐ์ ๋ฌธ์์ด์ ์ด๊ณผํ๋ฉด 255๊ฐ๊น์ง์ ๋ฌธ์์ด๋ง ๋ฑ๋ก๋๊ณ ๋๋จธ์ง ๋ฌธ์์ด์ ์๋ ค์ ๋์ค์ง ์์ต๋๋ค.
์ด๋ฉ์ผ ๋ฑ๋ก์ ์ํ๋ ์ด๋ฉ์ผ @dontwannrycry.com ๊น์ง 255๊ฐ์ ๋ฌธ์์ด์ ์์ฑํ ํ ๋ค์ ์์ ์ ์ด๋ฉ์ผ์ ์ ์ด ์ด๋ฉ์ผ์ dontwannacry.com ์ผ๋ก ๋์ง๋ง ๋ฑ๋ก ์ด๋ฉ์ผ์ ์์ ์๊ฒ ์ค๋๋ก ์ค์ ํฉ๋๋ค.
๊ทธ ํ ํด๋น ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด admin ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
//255๊ฐ์ ๋ฌธ์์ด
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@dontwannacry.com
//255๊ฐ์ ๋ฌธ์์ด ์ดํ ์์ ์ ์ด๋ฉ์ผ ๋๋ฉ์ธ ์ถ๊ฐ ์
๋ ฅ
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@dontwannacry.com.exploit-ac411ff61f2df426c05010d801a00085.web-security-academy.net
Admin panel ํ์ด์ง ์ถ๊ฐ
2FA Simple bypass
๊ธฐ๋ณธ์ ์ธ ๋ก์ง์ ๋ก๊ทธ์ธ -> 2์ฐจ์ธ์ฆ -> ๋ฉ์ธํ์ด์ง ์์์ง๋ง ์ด๋ฅผ ์ฐํํ์ฌ
๋ก๊ทธ์ธ -> ๋ฉ์ธํ์ด์ง๋ก URL์ ์ง์ ์ด๋ ์ 2์ฐจ์ธ์ฆ์ ์ฐํํ๋ ์ทจ์ฝ์ ์
๋๋ค.
๊ธฐ์กด ์์ ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ์ฌ URL ์ฃผ์๋ฅผ ๊ธฐ์ตํ์ฌ ๋ก๋๋ค (my-account)
2์ฐจ์ธ์ฆ ํ ๋ฉ์ธ ํ์ด์ง
ํฌ์์์ ๊ณ์ ์ผ๋ก ์ ์ํ์ฌ 2์ฐจ์ธ์ฆ URL ํ์ด์ง์์ Mainํ์ด์ง(my-account)์ URL์ฃผ์๋ฅผ ์ง์ ์ ๋ ฅํฉ๋๋ค
URL ์ฃผ์ ์๋ ์
๋ ฅ
ํฌ์์์ ๊ณ์ ์์ 2์ฐจ์ธ์ฆ์ ์ธ์ฆํ์ง ์๊ณ ์ฐํํ์ฌ ๋ก๊ทธ์ธ์ด ์ ์์ ์ผ๋ก ๋๋๊ฒ์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค
2์ฐจ์ธ์ฆ ์ฐํ
2FA broken logic
2FA์ธ์ฆ์์ ์ธ์ฆ ๊ฒฐํจ ๋ก์ง์ ์ค๋ฅ๊ฐ ์์ด 2์ฐจ์ธ์ฆ์ด ์ฐํ๋๋ ์ทจ์ฝ์ ์ ๋๋ค.
2์ฐจ์ธ์ฆ ๋ฌธ์
๋ก๊ทธ์ธ ์๋
๋ก๊ทธ์ธ ํ 2์ฐจ์ธ์ฆ ์์ฒญ์ ์ํ ํจํท์ด ์ ์ก๋ ๋ Burp๋ฅผ ์ด์ฉํ์ฌ ์ ์ก๋๋ ํ๋ผ๋ฏธํฐ verify๋ฅผ wiener ์์ ์ฐํ๋ฅผ ์ํ๋ ๊ณ์ carlos๋ก ๋ณ๊ฒฝ ํ ํจํท์ ์ ์กํ์ฌ OTP ๋ฒํธ๋ฅผ ๋ฉ์ผ๋ก ์์ฒญ๋ฐ์ต๋๋ค.
ํ๋ผ๋ฏธํฐ ๋ณ์กฐ
์ธํธ๋ฃจ๋๋ฅผ ์ด์ฉํ์ฌ 2์ฐจ์ธ์ฆ OTP ์ ๋ ฅ ํจํท์์ verify๋ฅผ carlos๋ก ๋ณ๊ฒฝ ํ ์ธ์ฆ๋ฒํธ 4๊ธ์๋ฅผ ๋ธ๋ฃจํธํฌ์ค ๊ณต๊ฒฉ์ ์งํํฉ๋๋ค.
๋ธ๋ฃจํธ ํฌ์ค
์ด์ ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ณ์กฐํ์ฌ carlos๋ก 2์ฐจ์ธ์ฆ ์ธ์ฆ๋ฒํธ๋ฅผ ์์ฒญํ ํจํท์ด ์ ์ก๋์๊ธฐ์ ๋ธ๋ฃจํธํฌ์ค๋ฅผ ํตํ์ฌ 2์ฐจ์ธ์ฆ์ ์ฐํํ ์ ์์ต๋๋ค.
2์ฐจ์ธ์ฆ ์ฐํ
๋ก๊ทธ์ธ ์ฑ๊ณต
Weak isolation on dual-use endpoint
ํ์์ ๋ ฅ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์ญ์ ํ์ฌ ์ ์ก ์ ์ธ์ฆ์ด ๋๋ ์ทจ์ฝ์ ์ ๋๋ค.
ํ๋ผ๋ฏธํฐ ๋ฟ ์๋๋ผ URL, ์ฟ ํค๋ ์ญ์ ํ์ฌ ์ ์ก ํ ์ด๊ฒ์ด ์๋ต์ ์ด๋ค ์ํฅ์ ๋ผ์น๋์ง ํ์ ํ์ฌ์ผ ํฉ๋๋ค
๊ธฐ๋ณธ ๊ณ์ ์ผ๋ก ์ ์ ํ ํจ์ค์๋ ๋ณ๊ฒฝ์์ ์ ๋ ฅ๊ฐ์ ์์ฑ ํ ํจํท์ ์ ์กํฉ๋๋ค
ํจ์ค์๋ ๋ณ๊ฒฝ
ํจ์ค์๋ ๋ณ๊ฒฝ์ ์ ์ก๋๋ ํจํท์ ์บก์ณํ์ฌ ์์ด๋๋ฅผ administrator๋ก ๋ณ๊ฒฝ ํ ํ์ ์ ๋ ฅ๊ฐ์ด ํ์ฌ ํจ์ค์๋ current-passwordํ๋ผ๋ฏธํฐ๋ฅผ ์ญ์ ํ ์ ์กํฉ๋๋ค
ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ ๋ฐ ์ญ์
ํด๋น ์ ๋ ฅ๊ฐ์ด ์ค๋ฅ์์ด ์ ์ก๋๊ณ administrator์ ๋น๋ฐ๋ฒํธ ๊ฐ ๋ณ๊ฒฝ๋์ด ๋ก๊ทธ์ธ ํ admin ํ์ด์ง ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค
administrator ๊ณ์ ์ ๊ทผ ๊ฐ๋ฅ
Insufficient workflow validation
ํ๋ชฉ ๊ตฌ๋งค workflow์ ์์์ฒ๋ฆฌ ๋ก์ง์ ์๋ฌ -> ์ ์๊ฒฐ์ ๋ก ๋ฐ๊ฟ ์ ์๋ ์ทจ์ฝ์ ์ ๋๋ค.
์ผํ๋ชฐ์์ ๊ฐ๊ฒฉ์ด ์ผ ์ ํ์ ์ ์์ ์ผ๋ก ๊ตฌ๋งค ์๋ํฉ๋๋ค
ํ๋ชฉ ๊ตฌ๋งค
๋ฌผํ ๊ตฌ๋งค ์ฑ๊ณต์ /cart/order-confrimation?order-confirmed=ture ๋ก ๋์ด๊ฐ๋๊ฒ์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค
์ ์์ ์ธ ๋ฌผํ ๊ตฌ๋งค ์ฑ๊ณต
ํด๋น URL์ด ์ ์ก๋๋ฉด ๋ฌผํ์ด ์ ์์ ์ผ๋ก ๊ตฌ๋งค๊ฐ ์๋ฃ๋ฉ๋๋ค
๋ฌผํ ๊ตฌ๋งค ์ฑ๊ณต
ํ์ฌ ๊ฐ์ง๊ณ ์๋ ๋ $36๋ณด๋ค ๋น์ผ ์ ํ $1337๋ฅผ ๊ฒฐ์ ์๋ํฉ๋๋ค
๋ฌผํ ๊ตฌ๋งค ์๋
์ ์์ ์ธ ํ๋ก์ธ์ค๋ /cart?err=INSUFFICIENT_FUNDS ๋ก ์๋ฌํ์ด์ง๋ก ๋์ด๊ฐ์ง๋ง ํด๋น ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฌผํ์ ๊ตฌ๋งคํ์๋ ๋์ด๊ฐ๋ URL๋ก ๋ณ๊ฒฝ ํฉ๋๋
ํ๋ผ๋ฏธํฐ ๋ณ์กฐ
๊ทธ๋ฌ๋ฉด ๊ฐ์ง๊ณ ์๋ ๋๋ณด๋ค ๋น์ผ ์ ํ์ด ์ ์์ ์ผ๋ก ๊ตฌ๋งค๊ฐ ๋ฉ๋๋ค
๋ฌผํ ๊ตฌ๋งค ์ฑ๊ณต
Authentication bypass via flawed state machine
๋ก๊ทธ์ธ ์ role์ ์ ํํ์ฌ ๋ฉ์ธํ์ด์ง๋ก ์ด๋ํ๋๋ฐ ์ด๋ role ์ ํํ์ด์ง๋ก ์ด๋ํ์ง ์๊ณ ๋ฐ๋ก ๋ฉ์ธํ์ด์ง๋ก ์ด๋ ์ admin ๊ณ์ ์ผ๋ก ์ ํ๋๋ ์ทจ์ฝ์ ์ ๋๋ค
๋ก๊ทธ์ธ ์งํ ํ /role-selector ๋ก ๋์ด๊ฐ๋ฉด ์๋์ ๊ฐ์ ํ์ด์ง๊ฐ ํ์๋ฉ๋๋ค
role selector ํ์ด์ง
์ดํ role ์ ํ ํ select ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฉ์ธํ์ด์ง(/)๋ก ๋์ด๊ฐ๊ฒ ๋๋ ๋ก์ง์ ๋๋ค
๋ฉ์ธ ํ์ด์ง
์ฐํํ๊ธฐ ์ํ์ฌ ๋ก๊ทธ์ธ ํ /role-selectorํ์ด์ง๋ก ๋์ด๊ฐ์ง ์๊ณ ๋ฐ๋ก ๋ฉ์ธํ์ด์ง(/)๋ก ๋ณ๊ฒฝ ์๋ํฉ๋๋ค
ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ
๊ทธ๋ฌ๋ฉด role์ ์ ํํ์ง ์๊ณ ๋ฐ๋ก administrator ๊ณ์ ์ผ๋ก ์ ๊ทผ๊ฐ๋ฅํ๊ฒ์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค
admin role ์ ๊ทผ