์ธ์ฆ (Authentication) Bypass with SQL Injection
SQL Injection
SQL Injection์ด๋?
๋ง ๊ทธ๋๋ก SQL ์ง์๋ฌธ์ ์ฝ์ ํ์ฌ ์๋ฒ ์ธก์์ ์ค๋น๋ SQL ์ง์๋ฌธ์ ๋ณ์กฐํ๋ ๊ณต๊ฒฉ์ ์๋ฏธํ๋ค.
์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ์ ๋ ฅ๊ฐ์ ๋ํด ๊ฒ์ฆ์ ์ ๋๋ก ํ์ง ์๋ ์ทจ์ฝ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด SQL๋ฌธ์ ๋ผ์ ๋ฃ์์ ์๋ค๋ ๊ฒ์ด๋ค. ๊ณต๊ฒฉ์๊ฐ ์ ๋ ฅ์ฐฝ์ ์ ์์ ์ผ๋ก SQL ๋ฌธ์ ๋ผ์๋ฃ์ด ๊ณต๊ฒฉํ๋ ๊ฒ์ด ๋ฐ๋ก SQL Injection์ด๋ค.
SQL๋ฌธ์ ์ ๋ ฅ์ฐฝ์ ์ ์ผ๋ฉด ๋ฌด์์ ํ ์ ์๊ธฐ์ ์ด๊ฒ์ ๊ณต๊ฒฉ์ด๋ผ๊ณ ํ ๊น?
์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ํ์ํ ๋ฐ์ดํฐ๊ฐ ๋ณด๊ด๋ DB๊ฐ ์กด์ฌํ๊ณ , ์์ฒญ์ ๋ฐ๋ผ ํด๋น DB๋ฅผ CRUD(์ ์ฅ,์กฐํ,์์ ,์ญ์ )ํ๋๋ฐ ํ์ํ SQL Query๊ฐ ์ค๋น๋์ด์๋ค.
์ข ๋ ์์ธํ ์์๋ณด์๋ฉด?
ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ ํ๋ฉด, ์ด๋ฅผ ๋ฐ์ ์๋ฒ๋ DB์๊ฒ ์ด๋ฏธ ์์ฑ๋์ด ์๋ Query๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
์ด๋ฏธ ์์ฑ๋์ด ์๋ Query์ด๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์๊ฐ ์ด๋ค ๊ฐ์ ๋ฃ์ด ์์ฒญ์ ๋ณด๋ด๋์ง์ ์๊ด์์ด SQL ์ง์๋ฌธ์ ๋์ผํ๋ค๋ ์๋ฏธ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก, ๋ง์ฝ ์๋ฒ์ธก์ SQL์ ํํ๋ฅผ ์์ธกํ ์ ์๋ค๋ฉด?
ํด๋น SQL์ ์ ์ฉ ๊ฐ๋ฅํ ๋ฐฉ์์ ์ฐํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
์ด๋ ๊ฒ ์ด๋ฏธ ์์ฑ๋์ด ์๋ SQL์ '์ ๋ ฅ ๊ฐ'์ ์ด์ฉํ์ฌ ์๋ก์ด SQL๋ก ๊ตฌ์ถํ๊ฑฐ๋, ๊ธฐ์กด์ SQL์ ๋ฌด๋ ฅํ ์์ผ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋์ด๋ด๋ ํ์๋ฅผ SQL Injection ์ด๋ผ๊ณ ํ๋ค.
์ด ์ทจ์ฝ์ ์ ๋ง์ง ์์ผ๋ฉด ์ธ์ฆ์ ์ฐํํ ์ ์๋ค. ์์ด๋๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ชฐ๋ผ๋ ๋ก๊ทธ์ธ์ ํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ , ์์ด๋๋ง ์์๋ ๋ก๊ทธ์ธ์ ํ ์ ์๋ ๋ฑ ๋ณด์์ ํฐ ์ทจ์ฝ์ ์ ๊ฐ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ธ์ฆ ์ฐํ(Authentication Bypass)
๋ณธ๋ Bypass๋ผ ํจ์ '์ฐํ'๋ผ๋ ๋ป์ผ๋ก ๊ฑฐ์ณ์ผ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น์ง ์๊ณ ํผํด๊ฐ์ ์๋ฏธํ๋ ๋จ์ด์ด๋ค.
์ธ์ฆ์ ๊ทธ ์ฌ๋์ด ๋ง๋์ง ํ์ธํ๋ ์์ ์ด๋ค.
์ฆ, ์ธ์ฆ ์ฐํ๋ ๋ฐ์ดํฐ์ ๋ํ ์ก์ธ์ค(Access) ๊ถํ์ด ์๋ ์๊ฐ ์ธ์ฆ ์ ์ฐจ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ธ์ฆ์ ์ฑ๊ณตํ ๊ฒ์ฒ๋ผ ์์ฅํ์ฌ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ธ์ฆ ๋ก์ง์ด ๋ฌธ์ ๊ฐ ๋๋ ๊ฒฝ์ฐ(์ทจ์ฝ์ ์ด ์๋ ๊ฒฝ์ฐ), ์ฐํ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
์ธ์ฆ ์ฐํ ์ทจ์ฝ์
Cookie (Client ์ ๋ณด) ์ ๋ขฐ ๋ฌธ์
- ์ฟ ํค๋ฅผ ํตํด์ ์ธ์ฆํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋๋ค.
- (์ฟ ํค๋ ํด๋ผ์ด์ธํธ, ์ด์ฉ์๊ฐ ๋ณด๋ด๋ ๋ฐ์ดํฐ์ด๊ธฐ์ Cookie ๋ณ์กฐ๊ฐ ๊ฐ๋ฅํด์ง๊ธฐ ๋๋ฌธ)
ํ๋ผ๋ฏธํฐ
- ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐ์ ๋ณ์กฐํ์ฌ ์ ๋ ฅ๋ ๊ฐ์ด ์๋ ์ํ๋ ๊ฐ์ผ๋ก ์์ ์กฐ์์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ
์ง์ ์ ๊ทผ(Direct Access)
- ์ธ์ฆ ํ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ or 2์ฐจ ์ธ์ฆ์ ๊ฒฝ์ฐ, ๊ทธ ๋ค์ ์์ฒญ์ ์ง์ ๋ณด๋ด๋ ๊ฒ์ผ๋ก ์ฐํ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ
- ์ธ์ฆ ํ ํ ํฐ์ ๋ฐ๊ธํด ์ธ์ ์ ์ ์ฅํ๊ฑฐ๋, ๊ทธ ํ ํฐ์ ๋ค๊ณ ๊ทธ ๋ค ์์ฒญ์ ํ๋๋ก ๋ง๋ค์ด์ผ ํ๋ค.
SQL Injection์ ์์ ๊ฐ์ ์ธ์ฆ ์ฐํ๋ฅผ ์ํ ๋ฐฉ๋ฒ ์ค์ ํ๊ฐ์ง์ด๋ค.
๋ก๊ทธ์ธ ๋ก์ง์ ์ฐํํด๋ณด์๋ฉด? ์ด๋ป๊ฒํ๋ฉด ์ํ๋ ๋ฐ์ดํฐ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ๊ฒ ํ ๊น?
๋ก๊ทธ์ธ ๋ก์ง ๋ณ ์ฐํ ์ ๋ต
๐ก ๋ก๊ทธ์ธ ์๋ณ/์ธ์ฆ ๋ก์ง ๊ฐ๋ฅ์ฑ๋ค์ ๋จธ๋ฆฌ ์์ ์๊ฐํด๋ณด๊ณ , SQL ์ง์๋ฌธ์ ์ด๋ป๊ฒ ๋ฃ์ด์ผ ๋ก๊ทธ์ธ์ ํต๊ณผํ ์ ์๋์ง ์๊ฐํด๋ณด์!
(์์ ์ค)
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก SQL Injection์ ํตํด ํด๋น ๊ณ์ ์ ๊ถํ์ด ์๋ ์ฌ๋์ด ์๋ฒ ์ธก์ ์์ฑ๋ SQL์ ๋ค๋ฅธ SQL์ ์ฃผ์ ํจ์ผ๋ก์จ ์์ ์ด ์ํ๋ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ๋๋๋ก ์ธ์ฆ ๊ณผ์ ์ ์ฐํํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ DB ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ฆ์ํ๋ ๊ฒฝ์ฐ, SQL Injection์ด ์ธ์ฆ ์ฐํ์ ์๋จ์ด ๋ ์ ์์์ ์ ์ํ์ฌ์ผ ํ๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์