Reflected XSS : LAB [8]

DATE : 2024/1/15

❗Reflected XSS into a JavaScript string with angle brackets and double quotes HTML-encoded and single quotes escaped

이번 LABμ—μ„œλŠ” μž‘μ€ λ”°μ˜΄ν‘œλŠ” νƒˆμΆœ! 큰 λ”°μ˜΄ν‘œ & < > κΈ°ν˜ΈλŠ” HTML Entity Encoding 처리λ₯Ό ν•œλ‹€κ³  ν•œλ‹€.

즉, Reflected XSSλ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•  수 μ—†λŠ” λ¬Έμžκ°€ μž‘μ€ λ”°μ˜΄ν‘œ, 큰 λ”°μ˜΄ν‘œ, < > κΈ°ν˜ΈλΌλŠ” 것.

이전 λ¬Έμ œλŠ” μž‘μ€ λ”°μ˜΄ν‘œλ§Œ μ œν•œλ˜μ—ˆκΈ° λ•Œλ¬Έμ— λ­”κ°€ λ‚œμ΄λ„κ°€ 높아진 λŠλ‚Œμ΄μ§€λ§Œ 사싀상 그리 어렡진 μ•Šλ‹€.

검색 κΈ°λŠ₯이 μ–΄λ–€ μ‹μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆλŠ” 지 보기 μœ„ν•΄ 검색 바에 μ•„λ¬΄κ±°λ‚˜ μž…λ ₯ν•œ λ’€ packet을 ν™•μΈν•΄λ³΄μž.

response packet을 보면 μ½”λ“œλŠ” 이전 λ¬Έμ œμ™€ λ™μΌν•˜λ‹€. ν•˜μ§€λ§Œ!

μž‘μ€ λ”°μ˜΄ν‘œ μ•žμ—λŠ” μ—­ μŠ¬λž˜μ‰¬κ°€ λΆ™κ³ , < > 기호 & 큰 λ”°μ˜΄ν‘œλŠ” HTML entity 처리되고 μžˆλ‹€.. πŸ™€

angle brackets 기호λ₯Ό μ‚¬μš©ν•  수 μ—†λŠ” 상황이기 λ•Œλ¬Έμ— νƒœκ·Έλ₯Ό λ§Œλ“€ 수 μ—†λ‹€λŠ” μ œν•œμ„ 고렀해보면

이번 λ¬Έμ œλŠ” 이미 μž‘μ„±λ˜μ–΄ μžˆλŠ” <script> tagλ₯Ό ν™œμš©ν•΄ 슀크립트만 μ‚½μž…ν•˜λŠ” ν˜•νƒœλ‘œ 곡격을 ν•  수 μžˆλ‹€.

λ¬Έμ œλŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값이 μž‘μ€ λ”°μ˜΄ν‘œλ‘œ 감싸지기 λ•Œλ¬Έμ— 이λ₯Ό λΉ μ Έλ‚˜μ˜¬ ν•„μš”κ°€ μžˆλŠ”λ°

ν˜„μž¬ LABμ—μ„œλŠ” μž‘μ€ λ”°μ˜΄ν‘œκ°€ escape 되고 μžˆλ‹€λŠ” 사싀!

"escape λœλ‹€" λΌλŠ” 건 μž‘μ€ λ”°μ˜΄ν‘œ μ•žμ— μ—­ μŠ¬λž˜μ‰¬κ°€ λΆ™κ²Œ λœλ‹€λŠ” 건데

였히렀 이 뢀뢄을 μ—­ μ΄μš©ν•  수 μžˆμ§€ μ•Šμ„κΉŒ??

INPUT : \'

OUTPUT : <script> var searchTerms = '\\''; document.write(~~~);</script>

μ‚¬μš©μž μž…λ ₯ 값에 μž‘μ€ λ”°μ˜΄ν‘œκ°€ λ“€μ–΄ μžˆλ‹€λ©΄ 이λ₯Ό λ°œκ²¬ν•˜λŠ” μˆœκ°„, μž‘μ€ λ”°μ˜΄ν‘œ μ•žμ— \ κΈ°ν˜Έκ°€ λΆ™κ²Œ λœλ‹€.

근데 λ§Œμ•½ μ—­ μŠ¬λž˜μ‰¬λ₯Ό ν•˜λ‚˜ 뢙인 μƒνƒœλ‘œ μž…λ ₯ν•˜κ²Œ 되면

\\'

μž‘μ€ λ”°μ˜΄ν‘œ μ•žμ— \ κΈ°ν˜Έκ°€ 두 κ°œκ°€ λ˜λ©΄μ„œ μž‘μ€ λ”°μ˜΄ν‘œλ₯Ό λ¬Έμžμ—΄λ‘œ νƒˆμΆœ μ‹œν‚€κΈ° μœ„ν•œ κΈ°λŠ₯을 μžƒκ²Œ λœλ‹€.

var searchTerms = '\\';

즉 \\ λΌλŠ” λ¬Έμžμ—΄μ΄ λ§Œλ“€μ–΄μ§€λŠ” 것이닀.

μ΄λ•Œ λΉΌκΈ° μ—°μ‚°μžμΈ - 기호λ₯Ό μ‚¬μš©ν•˜κ²Œ 되면 μ•ž λ’€ μ½”λ“œλ₯Ό λΆ„λ¦¬ν•˜λŠ” 효과λ₯Ό 얻을 수 있게 되고

INPUT : \'-alert(1)

OUTPUT : <script> var searchTerms = '\\'-alert(1)'; document.write(~~~);</script>

λ¬Έμžμ—΄ '\\'κ³Ό λΆ„λ¦¬λœ alert(1)이 <script> tag μ•ˆμ— λ§Œλ“€μ–΄μ§€κΈ° λ•Œλ¬Έμ—

뒀에 남은 μž‘μ€ λ”°μ˜΄ν‘œλ₯Ό μ§€μš°κΈ° μœ„ν•΄ μ£Όμ„λ§Œ 더 μΆ”κ°€ν•΄μ€€λ‹€λ©΄

INPUT : \'-alert(1);//

OUTPUT : <script> var searchTerms = '\\'-alert(1);//'; document.write(~~~);</script>

μ„±κ³΅μ μœΌλ‘œ νŒμ—… 창을 λ„μšΈ 수 있게 λœλ‹€. πŸ‘

Last updated