์ด๋ฒ ํฌ์คํ
์ XML/Xpath Search injection์
๋๋ค.
์ค์ตํ๋ ๋ชจ๋ ๊ณต๊ฒฉ์ ์ค์ ๋ก ์ฌ์ฉํ์๋ฉด ์๋ฉ๋๋ค.
ํ์ฉ๋ฐ์ง ์์ ์๋น์ค ๋์์ ํดํน์ ์๋ํ๋ ํ๋์ ๊ธ์งํ๋ฉฐ,
๋ชจ๋ ๋ฒ์ ์ฑ
์์ ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ ๋ช
์ฌํด์ฃผ์ธ์.
๋์ด๋ ํ
(owasp ๊ณต๊ฒฉ๋ถ๋ฅ ์ค) A1 ์ด ์ด์ ๋๋ฌ๋ค.ใ
ใ
ใ
A1ํํธ์ ์ฃผ์ ๊ณต๊ฒฉ์ธ sql์ธ์ ์
์ด ํจ๊ป ์์ด์ ๊ทธ๋ฐ์ง,
los, webhacking...๋ฑ ๋ฌธ์ ์ ํจ๊ป ํ๋ฉฐ ์ด๋ฐ์ ๋ฐ ์ค์ต์ ํจ๊ป ํ๋๋ผ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ ธ๋ ๊ฒ ๊ฐ๋ค.
์์ผ๋ก ๋น ๋ฅด๊ฒ ๋๊ฐ์ผ ๊ฒ ๋ค.
xml/xpath injection (search) ๋ค์ด๊ฐ๊ธฐ!
(A1 ๋ง์ง๋ง ์ค์ต์
๋๋ค.)
xmli_2.php ํ์ด์ง๋ ์ํ๋ฅผ ์ฅ๋ฅด๋ณ๋ก ๋ถ๋ฅํ์ฌ ์ํ ์ ๋ชฉ๋ง ํ
์ด๋ธ ํํ๋ก ์ถ๋ ฅํ๋ค.
GET ๋ฉ์๋๋ก ์์ฒญํ๊ธฐ ๋๋ฌธ์ URL์ ๋ณ์๊ฐ ๋
ธ์ถ๋๋ค.
SQL ์ธ์ ์
์ทจ์ฝ์ ์ด ์๋์ง ์์๋ณด๊ธฐ ์ํด, genre๋ณ์์ ' ์์๋ฐ์ดํ ์
๋ ฅ๊ฒฐ๊ณผ xml๊ณผ ๊ด๋ จ๋ ๊ฒฝ๊ณ ๋ฅผ ์ถ๋ ฅํ๋ค.
url์ genre ๋ณ์์ ํญ์ ์ฐธ์ธ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํ๋ค.
์ ์ ์ฟผ๋ฆฌ์์ containsํจ์๋ฅผ ํธ์ถ ํ๋ฏ๋ก ์๊ดํธ์ '[ ]'๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ ๋ก ๋ซ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
ํนํ xml์ ํธ์ถํ ๋๋ ์ค๊ฐ์ ์ฃผ์ ๋ฌธ์๋ฅผ ์
๋ ฅํ์ง ๋ชปํ๋ฏ๋ก, ์ ์ ์ฟผ๋ฆฌ ์ด์ธ์ ๋๋จธ์ง ๋ถ๋ถ๋ ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ
๋ฐ์ํ์ง ์๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํ๋ค. 'contains'ํจ์๋ ์ธ์๋ฅผ ๋๊ฐ ๋ฐ์ผ๋ฉด ์ฒซ์ธ์์ ์
๋ ฅํ ๋ฌธ์์ด์ด ๋๋ฒ์งธ ์ธ์์ ์์ผ๋ฉด true ๊ฐ์ ๋ฐํ. ์๋๋ฉด false๊ฐ์ ๋ฐํํ๋ค.
lovelynoa.tistory.com/89
์ ์ฃผ์์ xml์์ ์์ฃผ ์ฌ์ฉ๋๋ ํจ์๋ค์ด ์ ์๋์ด ์์ผ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์.
') or 1=1 ][(' or
์ธ์ ์
๊ฒฐ๊ณผ ๊ฒ์ ๊ฐ๋ฅํ ๋ชจ๋ ์ํ ์ ๋ชฉ์ ์ถ๋ ฅํ๋ค์.
์ด๋ ํญ์ ์ฐธ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์๋ ์ฟผ๋ฆฌ๋ฅผ ์์ํด๋ณด์๋ฉด
genre=[(' ') or 1=1 ][(' or ')] ์ด๋ ๊ฒ ์ฟผ๋ฆฌ๊ฐ ๋ค์ด๊ฐ์ง ์์๊น ์์ํด๋ด
๋๋ค. (์ผ๋ถ๋ฌ ๋ง์ด ๋์๋จ์ต๋๋ค.)
๊ทธ๋ผ ๋ค์์ผ๋ก xml ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์ถ๋ ฅํ๋ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํด๋ณด๋ฉด
')] |//*|evil[('
์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํ ๊ฒฐ๊ณผ xml ์ธ์ ์
๊ณต๊ฒฉ์ด ์ฑ๊ณตํ์ฌ heroes ํ
์ด๋ธ์ ์กด์ฌํ๋ ๋ชจ๋ ์ฌ์ฉ์์ ์ ๋ณด๊ฐ
ํ
์ด๋ธ ํํ๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ฆ ์ด์ฟผ๋ฆฌ๋ฅผ ํด์ํด๋ณด์๋ฉด
'|' ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ xpath ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๊ฒ์ธ๋ฐ, xpath์์ |์ฐ์ฐ์๋ and์ฐ์ฐ์ ์ฒ๋ผ
๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ๋ค.
๋ค์ ํ์ด์ง์ ์ ์ ์ฟผ๋ฆฌ๋ฅผ ๋ซ๊ณ , | (and) ์ฐ์ฐ์๋ก '//*' ๋ฅผ ์ฐ๊ฒฐํ ์ฟผ๋ฆฌ์ด๋ค.
'//*'์ฟผ๋ฆฌ๋ ํ์ฌ ๋
ธ๋๋ก๋ถํฐ ๋ชจ๋ ๋
ธ๋๋ฅผ ์กฐํํ๋ xpath ์ฟผ๋ฆฌ์ด๋ค.
์ ์์ ์ธ ๋ถ๋ถ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ก and๋ก ํ๋ฒ๋ ์ฐ๊ฒฐํ์ฌ ์์์ ๋ฌธ์์ด๋ก ๋ฌธ๋ฒ์ ๋ง์ถฐ์ค๊ฒ์ด๋ค.
์ฆ ์๋ ์ฟผ๋ฆฌ์ ์ฐ๊ฒฐํด์ ์๊ฐํ๋ฉด
genre=[(' ')] |//*|evil[(' ')]
์ด๋ฐ์์ผ๋ก ์ธ์์ด ๋๊ฒ์ด๋ค.
xml ์ธ์ ์
(search)
Clear
๋์ ๋ฐฉ์
๋์ด๋ ์ ์์๋ ์์ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ๋ XML์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ํ์ธํ ์ ์๋ค.
๋์ด๋ ์ ์ ํ์ด์ง ์ฝ๋๋ฅผ ํ์ธ ํ๋ฉด, xmli_check_1 () ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐํํ๋ค.
ํจ์๋ฅผ ์ดํด๋ณด์๋๋(ํจ์๋ functions_external.php์ ์ ์๋์ด์์)
'str_replace' ํจ์๋ฅผ ํธ์ถํ๋ค. ์ด ํจ์๋ ์นํํจ์๋ผ๊ณ ๋ด๋ ๋๋๋ฐ,
์ธ์ ์
์ ์ฌ์ฉ๋๋ ๋ฌธ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๋์ฒดํ๋ ํจ์์ด๋ค.
str_replace ํจ์๋ ์ฒซ๋ฒ์งธ ์ธ์์, ๋์ฒดํ๋ ค๋ ๋ฌธ์(์ฆ ์ธ์ ์
์ ์ฌ์ฉ๋๋ ๋ฌธ์)๋ฅผ ์
๋ ฅํ๊ณ
๋๋ฒ์งธ ์ธ์์๋ ๋์ฒดํ ๋ฌธ์๋ฅผ ์
๋ ฅํ๋ค.
๋ง์ง๋ง ์ธ์์๋ ๋ณ๊ฒฝํ ๋ด์ฉ์ ์ ์ฅํ ๋ณ์๋ฅผ ์
๋ ฅํ๋ค. xmli_check_1ํจ์์์ ๋์ฒดํ๋ ๋ฌธ์๋ค์ ์์๊ฐ๊ณ
์ด ๋ฌธ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๋ณํํ์ฌ injection์ ์๋ํ ์ ๋จนํ์ง ์๊ฒ๋ ๋ง๋ ๊ฒ์ด๋ค.