Reflected XSS : LAB [2]

DATE : 2023/1/3

❗Reflected XSS into attribute with angle brackets HTML-encoded

이번 LAB도 μ•žμ„œ ν’€μ–΄λ³Έ Reflected XSS : LAB [1]κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ Reflected XSS에 κ΄€ν•œ λ¬Έμ œμ΄λ‹€.

νŽ˜μ΄μ§€ 쀑앙에 μœ„μΉ˜ν•œ 검색 κΈ°λŠ₯을 ν™œμš©ν•΄ νŒμ—… 창을 λ„μš°λ©΄ λœλ‹€.

슀크립트λ₯Ό μ‚½μž…ν•˜κΈ° μ „, νŽ˜μ΄μ§€κ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ” 지 νŒŒμ•…ν•˜κΈ° μœ„ν•΄ κ°„λ‹¨ν•œ ν‚€μ›Œλ“œλ₯Ό 검색해봀닀.

μ‚¬μš©μžκ°€ "hello"λ₯Ό μž…λ ₯ν•˜λŠ” 경우 검색 λ°” 상단에

0 search results for 'hello'

문ꡬλ₯Ό 좜λ ₯ν•΄μ£ΌλŠ” κ±Έ λ³Ό 수 μžˆλ‹€.

μ΄λ•Œ Packet을 확인해보면 이전 LABκ³Ό 달라진 점을 눈치챌 수 μžˆμ„ 것이닀. 😏

μ›λž˜λŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν–ˆλ˜ 검색 λ‚΄μš©μ΄ 검색 λ°” value둜 λ“€μ–΄κ°€ μžˆλŠ” κ±Έ λ³Ό 수 μžˆλ‹€.

<input type=text placeholder='Search the blog...' name='search' value='hello'>

κ·Έλž˜μ„œ μ‚¬μš©μžκ°€ 검색을 ν•œ 뒀에도 검색 바에 μž…λ ₯ν•œ 값이 λ‚¨μ•„μžˆλ˜ 것.

이번 λ¬Έμ œλŠ” 이 뢀뢄을 μ΄μš©ν•΄ νŒμ—… 창을 λ„μšΈ 것이닀.

문제 μ„€λͺ…을 읽어보면 μ•Œκ² μ§€λ§Œ 이번 λ¬Έμ œλŠ” angle Bracket, 즉 νƒœκ·Έλ₯Ό μ—΄κ³  λ‹«λŠ” 기호 < > κ°€

λŒ€μ²΄ 문자둜 μΉ˜ν™˜λ˜κΈ° λ•Œλ¬Έμ— 직접 <script> tagλ₯Ό μ‚½μž…ν•  수 μ—†λ‹€.

κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값을 μ‚¬μš©ν•˜λŠ” μœ„μΉ˜μ—

적절히 슀크립트λ₯Ό λ„£μ–΄ νŒμ—… 창을 λ„μš°λŠ” μ „λž΅μ„ μ„ νƒν•œ 것!

<input type=text placeholder="Search the blog..." name="search" value="___">

ν˜„μž¬ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값은 value μ†μ„±μœΌλ‘œ λ“€μ–΄κ°€λ©΄μ„œ λ”°μ˜΄ν‘œμ— λ‘˜λŸ¬ μŒ“μ΄κ²Œ λœλ‹€.

λ”°λΌμ„œ λ”°μ˜΄ν‘œλ₯Ό λ§ˆκ°ν•˜μ§€ μ•Šκ³  슀크립트λ₯Ό κ·ΈλŒ€λ‘œ μž‘μ„±ν•˜λ©΄ λ¬Έμžμ—΄μ΄ λ˜μ–΄λ²„λ¦¬λŠ” μ‚¬νƒœκ°€ λ°œμƒν•œλ‹€.

이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ”°μ˜΄ν‘œλ‘œ 짝을 맞좰 μ£Όκ³  HTML tagμ—μ„œ μ μš©ν•  수 μžˆλŠ” 속성에

슀크립트λ₯Ό μž‘μ„±ν•΄μ€„ 것이닀.

/?search=" onclick="alert(1)

> <input type=text ~~~ value="___" >
> <input type=text ~~~ value="" onclick="alert(1)" >

value λΉˆμΉΈμ— search parameter 값이 λ“€μ–΄κ°€κ²Œ λ˜λ©΄μ„œ 결과적으둜 λ§Œλ“€μ–΄μ§€λŠ” 응닡 νŽ˜μ΄μ§€μ—λŠ”

input tagλ₯Ό ν΄λ¦­ν•˜λ©΄ νŒμ—… 창이 λœ¨λŠ” μŠ€ν¬λ¦½νŠΈκ°€ μ μš©λœλ‹€.

(onclick 말고도 onmouseover λ“± λ‹€λ₯Έ 이벀트 속성을 μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€.)

LAB ν™”λ©΄μœΌλ‘œ λ‹€μ‹œ λŒμ•„μ™€ 슀크립트λ₯Ό μ‚½μž…ν•΄λ³΄μž.

μ‚½μž…ν•œ μŠ€ν¬λ¦½νŠΈκ°€ λ°”λ‘œ 응닡 νŽ˜μ΄μ§€μ— μ ν˜€μ Έ μžˆλŠ” κ±Έ 보면 Reflected XSSμž„μ„ ν™•μ‹ ν•  수 μžˆμ„ 것이닀.

슀크립트λ₯Ό μ‚½μž…ν•œ ν›„ μ‚¬μš©μžκ°€ 검색 λ°”λ₯Ό ν΄λ¦­ν•˜κ²Œ 되면 <input> tag에 적어둔 μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ–΄

νŒμ—… 창이 λœ¨λŠ” κ±Έ λ³Ό 수 μžˆμ„ 것이닀.

보톡은 "슀크립트 μ‚½μž…ν•œλ‹€"κ³  ν•˜λ©΄ <script> tagλ₯Ό λ– μ˜¬λ¦¬λ‹€ λ³΄λ‹ˆ

κ·Έ 외에도 슀크립트λ₯Ό μ‚½μž…ν•  수 μžˆλŠ” λ‹€μ–‘ν•œ 상황이 μžˆμŒμ„ λ³΄μ—¬μ£ΌλŠ” 쒋은 μ˜ˆμ‹œμ˜€λ‹€.

β•λ¬Έμ œμ—μ„œλŠ” onmouseover μ†μ„±μœΌλ‘œ νŒμ—… 창을 λ„μ›Œμ•Ό solved μ²˜λ¦¬ν•΄μ€€λ‹€.

Last updated