JSON ํ ์กฐ๊ฐ์ ํ์ ์ด๋ฆ์ด ๋ถ์ด ์์ ๋ — Ajax.NET Professional์ด ๋์น ๊ฒฝ๊ณ์
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ๋ก ๋ณด๋ด๋ ๊ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก "๋ฐ์ดํฐ"์ฌ์ผ ํจ. ๊ทธ๋ฐ๋ฐ ๊ทธ ๋ฐ์ดํฐ ์์ "์ด๊ฑธ ์ด๋ค ํด๋์ค๋ก ๋ง๋ค์ด๋ผ"๋ผ๋ ์ง์๊ฐ ์์ฌ ๋ค์ด๊ฐ ์ ์๋ค๋ฉด, ๊ทธ ์๊ฐ๋ถํฐ ๊ทธ๊ฑด ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ๋ช ๋ น์ด ๋จ. CVE-2021-23758์ ๋ฐ๋ก ๊ทธ ๊ฒฝ๊ณ์ ์ด ํ๋ ค์ก์ ๋ ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์ง ๋ณด์ฌ์ฃผ๋ ์ฌ๋ก์.
- Ajax.NET Professional(AjaxPro)์ด ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ JSON์ ์ ๋ขฐํ์ง ์๋ ์ํ๋ก ์ญ์ง๋ ฌํํ๋ฉด์, ๊ณต๊ฒฉ์๊ฐ ์ง์ ํ ํ์ ๊น์ง ๋ง๋ค์ด์ง๋ ๋ฌธ์ ์.
- ํต์ฌ ์ํ์ ์๊ฒฉ ์ฝ๋ ์คํ์ผ๋ก, ์ธ์ฆ์ด ํ์ ์๋ AjaxPro ์๋ํฌ์ธํธ๊ฐ ์ธ๋ถ์ ์ด๋ ค ์์ผ๋ฉด ์ํ๋๊ฐ ๊ธ๊ฒฉํ ์ฌ๋ผ๊ฐ.
- ๋ฐฉ์ด๋ ์ธ ๊ฐ์ง — ์ต์ ๋ฒ์ ๋ฐ์, AjaxPro ํธ๋ค๋ฌ ๊ฒฝ๋ก ๋ ธ์ถ ํต์ , ๊ทธ๋ฆฌ๊ณ ์์ฒญ ๋ณธ๋ฌธ์ ํ์ ์ง์์๊ฐ ์์ฌ ๋ค์ด์ค๋์ง ํ์งํ๋ ๊ฒ.
AjaxPro๊ฐ ํ๋ ์ผ
Ajax.NET Professional์ ๊ฝค ์ค๋๋ .NET ๋ผ์ด๋ธ๋ฌ๋ฆฌ์. AJAX๋ผ๋ ๋ง์ด ์ ํํ๋ ์์ , ๋ธ๋ผ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๋ฒ์ C# ๋ฉ์๋๋ฅผ ๊ฑฐ์ ์ง์ ํธ์ถํ๋ ๊ฒ์ฒ๋ผ ์ฐ๊ฒ ํด์ฃผ๋ ๊ฒ ๋ชฉ์ ์ด์์. ๊ฐ๋ฐ์๋ ๋ฉ์๋์ ํน์ฑ(attribute) ํ๋๋ง ๋ถ์ด๋ฉด ๋๊ณ , ๋๋จธ์ง ๋ฐฐ๊ด ์์ — ์์ฒญ์ ๋ฐ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ฑํ๊ณ ์ค์ ๋ฉ์๋์ ๋๊ฒจ์ฃผ๋ ์ผ — ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์์ ํด์คฌ์.
ํธ์์ฑ ์์ฒด๋ ํ๋ฅญํ์. ๋ฌธ์ ๋ ๊ทธ "ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ฑํ๋" ๋จ๊ณ์ ์์์. C# ๋ฉ์๋์ ์ธ์๋ ๋ฌธ์์ด์ด๋ ์ซ์๋ง ์๋ ๊ฒ ์๋๋ผ ์์์ ๊ฐ์ฒด์ผ ์๋ ์์. ๊ทธ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์ด์จ JSON์ ์ ๋นํ .NET ๊ฐ์ฒด๋ก ๋์ด๋ ค๋ด๋ ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์์ด์ผ ํ๊ณ , ์ด๋ ์ด๋ค ํ์ ์ผ๋ก ๋์ด๋ฆด์ง๋ฅผ ์์ฒญ ์ชฝ ์ ๋ณด๋ก ํ๋จํ๋ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ก์. ์ฌ๊ธฐ์ ์ ๋ขฐ ๊ฒฝ๊ณ๊ฐ ๋ฌด๋์ง.
์ญ์ง๋ ฌํ๊ฐ ์ํํด์ง๋ ์ง์
์ญ์ง๋ ฌํ ์์ฒด๋ ์ฃ๊ฐ ์์. ์ํํ ๊ฑด "๋ฐ์ดํธ ๋ญ์น๋ฅผ ๊ฐ์ฒด๋ก ๋๋๋ฆฌ๋ ๊ณผ์ ์์ ์ฝ๋๊ฐ ์คํ๋๋ค"๋ ํน์ฑ์. .NET์ด๋ ์๋ฐ๋ ํ์ด์ฌ์ด๋ , ๊ฐ์ฒด๋ฅผ ๋ณต์ํ ๋๋ ์์ฑ์·์ธํฐ·์ฝ๋ฐฑ ๊ฐ์ ๊ฒ๋ค์ด ์๋์ผ๋ก ๋์๊ฐ. ๊ณต๊ฒฉ์๊ฐ ๋ณต์๋ ํ์ ์ ๊ณ ๋ฅผ ์ ์๊ฒ ๋๋ฉด, ์ด์ผ๊ธฐ๋ ์ด๋ ๊ฒ ํ๋ฌ๊ฐ.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ก๋ํ ๋ชจ๋ ์ด์ ๋ธ๋ฆฌ์์ "๋ณต์๋๋ ์๊ฐ ๋ญ๊ฐ๋ฅผ ์คํํ๋" ํด๋์ค๋ฅผ ๋ค์ง. ์ด๋ฐ ๊ฑธ ๊ฐ์ ฏ(gadget)์ด๋ผ ๋ถ๋ฆ.
- ๊ทธ ๊ฐ์ ฏ์ ํ๋กํผํฐ๋ฅผ ์ํ๋ ๊ฐ์ผ๋ก ์ฑ์ด JSON์ ๋ง๋ค์ด ๋ณด๋.
- ์๋ฒ๊ฐ ๊ทธ JSON์ ๊ฐ์ฒด๋ก ๋์ด๋ฆฌ๋ ์๊ฐ, ๊ฐ๋ฐ์๊ฐ ์๋ํ ์ ์๋ ์ฝ๋ ๊ฒฝ๋ก๊ฐ ๋ฐ๋๋จ.
๊ฐ๋ ์ ์ผ๋ก๋ง ์ง์๋ฉด ์ด๊ฒ ์ ๋ถ์. ์ค์ ๊ฐ์ ฏ ์ฒด์ธ์ ํ๋ ์์ํฌ ๋ฒ์ ๊ณผ ๋ก๋๋ ์ด์ ๋ธ๋ฆฌ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก ์ฌ๊ธฐ์ ๋ค๋ฃจ์ง ์์. ์ค์ํ ๊ฑด "๊ณต๊ฒฉ์๊ฐ ํ์ ์ ์ง์ ํ ์ ์๋๊ฐ"๋ผ๋ ์ง๋ฌธ ํ๋๊ฐ ์ทจ์ฝ/์์ ์ ๊ฐ๋ฅธ๋ค๋ ์ฌ์ค์.
๋ด ํ๊ฒฝ์ ์ด๊ฒ ์๋์ง๋ถํฐ
์ด ์ทจ์ฝ์ ์ด ๊น๋ค๋ก์ด ์ด์ ๋ AjaxPro๊ฐ ์์ฆ ์๋ก ๋์ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ๋ ๋ฐ ์์. ์ค๋๋ ์ฌ๋ด ์์คํ , ์ธ์ํฉ๋ณ์ผ๋ก ๋์ด์จ ๋ ๊ฑฐ์ ํฌํธ, ๋ช ๋ ์งธ ์๋ฌด๋ ์๋์ง ์๋ ๊ด๋ฆฌ์ ํ๋ฉด ๊ฐ์ ๊ณณ์ ์กฐ์ฉํ ๋ฐํ ์์ ํ๋ฅ ์ด ๋์. ๊ทธ๋์ ์ ๊ฒ ์์๋ ์ด๋ ๊ฒ ์ก๋ ๊ฒ ํ์ค์ ์.
- ํ์ผ ํ์ : ๋ฐฐํฌ ๋๋ ํฐ๋ฆฌ์์ AjaxPro ๊ด๋ จ DLL์ด ์๋์ง ํ์ธ. bin ํด๋๋ฅผ ๋ค์ง๋ ๊ฒ ๊ฐ์ฅ ๋น ๋ฆ.
- ์ค์ ํ์ : web.config์ httpHandlers ๋๋ handlers ์น์ ์ ajaxpro ๊ฒฝ๋ก๊ฐ ๋ฑ๋ก๋์ด ์๋์ง ํ์ธ. ๋ฑ๋ก๋ผ ์๋ค๋ฉด ๊ทธ ๊ฒฝ๋ก๊ฐ ๊ณง ๊ณต๊ฒฉ ํ๋ฉด์.
- ํธ๋ํฝ ํ์ : ์น ์๋ฒ ์ก์ธ์ค ๋ก๊ทธ์์
/ajaxpro/ํํ์ ๊ฒฝ๋ก๊ฐ ์ฐํ๋์ง ๊ฒ์. ๊ฐ๋ฐ์๋ ์์ ๊ธฐ๋ฅ์ด ๋ก๊ทธ์๋ ๋จ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์. - ์ฐธ์กฐ ํ์ : ์์ค๊ฐ ์๋ค๋ฉด ํ๋ก์ ํธ ํ์ผ๊ณผ ํจํค์ง ๋ชฉ๋ก์์ ์ฐธ์กฐ๋ฅผ ํ์ธ. ์ง์ ๋ฃ์ ๊ฒ ์๋๋ผ ๋ค๋ฅธ ์ปดํฌ๋ํธ๊ฐ ๋๊ณ ๋ค์ด์จ ๊ฒฝ์ฐ๋ ์์.
๊ฐ์ธ์ ์ผ๋ก๋ ์ธ ๋ฒ์งธ ํญ๋ชฉ์ ์ ์ผ ๋จผ์ ํด๋ณด๋ ๊ฑธ ์ถ์ฒํจ. ์์ฐ ๋ชฉ๋ก์ด ๋ถ์ ํํ ์กฐ์ง์ผ์๋ก, ์ฌ๋ ๊ธฐ์ต๋ณด๋ค ๋ก๊ทธ๊ฐ ์ ์งํ๊ธฐ ๋๋ฌธ์.
ํ์ง ๊ท์น์ ์ด๋์ ๊ฑธ ๊ฒ์ธ๊ฐ
์ด ๋ถ๋ฅ์ ์ทจ์ฝ์ ์ "์์ฒญ ๋ณธ๋ฌธ ์์ ํ์ ์ด๋ฆ์ด ์์ฌ ์๋ค"๋ ์์ฃผ ํน์ง์ ์ธ ์ ํธ๋ฅผ ๋จ๊น. ์ ์์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ์๋ .NET ํ์ ์ ์ ๊ทํ๋ ์ด๋ฆ์ด๋ ์ด์ ๋ธ๋ฆฌ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ ์ด์ ๊ฐ ๊ฑฐ์ ์์. ๊ทธ๋์ ํ์ง๋ ๋ค์ ์ถ์ผ๋ก ์ธ์ฐ๋ฉด ๋จ.
- ๋ณธ๋ฌธ ํจํด: POST ๋ณธ๋ฌธ์
__type,$type๊ฐ์ ํ์ ์ง์ ํค๋System.์ผ๋ก ์์ํ๋ ์ ๊ทํ ํ์ ๋ฌธ์์ด,Assembly·Culture=·PublicKeyToken=๊ฐ์ ์ด์ ๋ธ๋ฆฌ ์๋ณ ๋ฌธ์์ด์ด ์์ฌ ๋ค์ด์ค๋ ๊ฒฝ์ฐ. - ๊ฒฝ๋ก ๊ฒฐํฉ: ์ ํจํด์ด AjaxPro ํธ๋ค๋ฌ ๊ฒฝ๋ก๋ก ํฅํ๋ ์์ฒญ์์ ๋ฐ์ํ๋ฉด ์ฐ์ ์์๋ฅผ ํฌ๊ฒ ์ฌ๋ฆผ. ๊ฒฝ๋ก์ ๋ณธ๋ฌธ์ ํจ๊ป ๋ณด๋ ๊ฒ ์คํ์ ์ค์ด๋ ํต์ฌ์.
- ํํ ํ์: w3wp.exe ๊ฐ์ IIS ์์ปค ํ๋ก์ธ์ค๊ฐ cmd.exe๋ powershell.exe๋ฅผ ์์์ผ๋ก ๋์ฐ๋ ์๊ฐ. ์ญ์ง๋ ฌํ ๊ณต๊ฒฉ์ ์ฑ๊ณต ์ฌ๋ถ๋ ์ฌ์ค ์ด ์ง์ ์์ ๊ฐ์ฅ ํ์คํ๊ฒ ๋๋ฌ๋จ.
- ๋๊ฐ๋ ์ฐ๊ฒฐ: ์น ์๋ฒ๊ฐ ๊ฐ์๊ธฐ ์ธ๋ถ๋ก ์์๋ฐ์ด๋ ์ฐ๊ฒฐ์ ์๋ํ๋ ํจํด. ํ์ด๋ก๋ ๋ค์ด๋ก๋๋ ๋ฆฌ๋ฒ์ค ์ ธ์ ์ ํ์ ์ธ ๋ชจ์ต์.
์์ ๋ ์ถ์ ์๋จ(WAF·ํ๋ก์)์์, ๋ค์ ๋ ์ถ์ ๋ท๋จ(EDR·ํ๋ก์ธ์ค ๋ก๊ทธ)์์ ๋ด์ผ ํจ. ํ์ชฝ๋ง ๊ฑธ์ด๋๋ฉด ์ฐํ ํ ๋ฒ์ ๊ทธ๋๋ก ๋ซ๋ฆผ.
์ค์ ๋ก ๋ง๋ ์์
์์๋ฅผ ์ ํ ๋๋ "์ ์ผ ๋นจ๋ฆฌ ์ํ์ ๋จ์ด๋จ๋ฆฌ๋ ๊ฒ"๋ถํฐ ๊ฐ๋ ๊ฒ ๋ง์.
- 1. ๋ ธ์ถ ์ฐจ๋จ: AjaxPro ํธ๋ค๋ฌ ๊ฒฝ๋ก๋ฅผ ์ธํฐ๋ท์์ ์ ๊ทผ ๋ชป ํ๊ฒ ๋ง์. ๋ด๋ถ ์ ๋ฌด์ฉ ๊ธฐ๋ฅ์ด๋ผ๋ฉด ์ ์ด์ ์ธ๋ถ์ ์ด๋ ค ์์ ์ด์ ๊ฐ ์์. ํจ์น๋ณด๋ค ์ด๊ฒ ๋จผ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์.
- 2. ๋ฒ์ ์ ๋ฆฌ: ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฆด๋ฆฌ์ค๋ก ์ฌ๋ฆผ. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ต์ฒด๊ฐ ๊ณง๋ฐ๋ก ์ด๋ ต๋ค๋ฉด ์ต์ํ ์ด๋ค ๋ฒ์ ์ด ์ด๋์ ๊น๋ ค ์๋์ง ๋ชฉ๋ก๋ถํฐ ๋ง๋ค์ด ๋ .
- 3. ์ ๊ฑฐ ๊ฒํ : ์์งํ ๊ฐ์ฅ ํ์คํ ํด๋ฒ์. AjaxPro๊ฐ ๋ด๋นํ๋ ๊ธฐ๋ฅ์ด ์์ฆ ๊ธฐ์ค์ผ๋ก ๋ณด๋ฉด ์ผ๋ฐ์ ์ธ REST ์๋ํฌ์ธํธ ๋ช ๊ฐ๋ก ๋์ฒด ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๊ณ , ๊ทธ๋ ๊ฒ ๋ฐ๊พธ๋ฉด ์ด ์ทจ์ฝ์ ๊ณ์ด ์ ์ฒด๊ฐ ์ฌ๋ผ์ง.
- 4. ๊ถํ ์ถ์: ์ ํ๋ฆฌ์ผ์ด์ ํ ๊ณ์ ๊ถํ์ ์ต์ํ. ์ฝ๋ ์คํ์ด ์ผ์ด๋๋๋ผ๋ ๊ทธ ๋ค์ ๋จ๊ณ๋ก ๋ชป ๊ฐ๊ฒ ๋ง๋ ์ธต์.
- 5. ๋ก๊ทธ ๋ณด์กด: ์ด๋ฏธ ๋นํ๋์ง ํ์ธํ๋ ค๋ฉด ๊ณผ๊ฑฐ ๋ก๊ทธ๊ฐ ํ์ํจ. ์กฐ์นํ๊ธฐ ์ ์ ์ก์ธ์ค ๋ก๊ทธ์ ํ๋ก์ธ์ค ๋ก๊ทธ ๋ณด์กด ๊ธฐ๊ฐ๋ถํฐ ํ์ธํด๋๋ ๊ฑธ ๊ถํจ.
์ด ์ฌ๊ฑด์ด ๋จ๊ธฐ๋ ๊ฒ
์ญ์ง๋ ฌํ ์ทจ์ฝ์ ์ ์๋ก์ด ๊ฒ ์๋. ๊ทธ๋ฐ๋ฐ๋ ๊ณ์ ๋์ค๋ ์ด์ ๋, ๊ฐ๋ฐํ ๋ "๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ฃผ๋ฉด ํธํ๋ค"๋ ์ ํน์ด ์๋ ๊ฐํ๊ธฐ ๋๋ฌธ์ธ ๊ฒ ๊ฐ์. ํธ์ ๊ธฐ๋ฅ์ด ํ๋ ๋์ด๋ ๋๋ง๋ค ์ ๋ขฐ ๊ฒฝ๊ณ๊ฐ ํ ์นธ์ฉ ์์ชฝ์ผ๋ก ๋ฐ๋ ค ๋ค์ด์ค๋๋ฐ, ๊ทธ๊ฒ ๋ฐ๋ ค ๋ค์ด์จ ์๋ฆฌ์ ์ฝ๋ ์คํ์ด ๋์ฌ ์์ผ๋ฉด ์ฌ๊ณ ๊ฐ ๋จ.
๊ทธ๋์ ๋ฐฉ์ด์ ์ ์ฅ์์ ๊ธฐ์ตํ ์์น์ ๋จ์ํจ. ์ ๋ ฅ์ด ํ์ ์ ๊ณ ๋ฅด๊ฒ ํ์ง ๋ง ๊ฒ. ์๋ฒ๊ฐ ๊ธฐ๋ํ๋ ํ์ ์ ์๋ฒ๊ฐ ๋จผ์ ์ ํด๋๊ณ , ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ๊ทธ ํ์ ๋ง์ถฐ ๊ฒ์ฆํ๋ฉฐ ์ฑ์ฐ๋ ๋ฐฉํฅ์ด์ด์ผ ํจ. ์์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ํ์ ์ ๋ณด ํฌํจ ์ญ์ง๋ ฌํ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๋๊ณ , ์ผ๋ ค๋ฉด ๋ช ์์ ์ผ๋ก ํ์ฉ ๋ชฉ๋ก์ ์๊ตฌํ๋ ๊ฒ๋ ๊ฐ์ ์ด์ ์.
ํน์ ์ฌ๋ด์ AjaxPro๊ฐ ๋จ์ ์๋ ๊ฑธ ๋ฐ๊ฒฌํ๋ค๋ฉด, ๊ทธ๊ฑด ๋์ ์์์ด ์๋๋ผ ์ข์ ์์์ด๋ผ๊ณ ์๊ฐํจ. ๋ชจ๋ฅด๋ ๊ฒ๋ณด๋ค ์๋ ๊ฒ ์ธ์ ๋ ๋์ผ๋๊น. ์ค๋ bin ํด๋ ํ ๋ฒ, web.config ํ ๋ฒ๋ง ์ด์ด๋ณด์์. ๋น์ทํ ๋ ๊ฑฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฆฌํ๋ค ๊ฒช์ ์ด์ผ๊ธฐ ์์ผ๋ฉด ๋๊ธ๋ก ๋๋ ์ฃผ๋ฉด ์ข๊ฒ ์ต๋๋ค!