Game/Bee-box

[Bee-box] HTML injection - Stored(Blog)

μ •λ³΄λ³΄μ•ˆπŸŒ 2020. 6. 7. 16:22
λ°˜μ‘ν˜•

μ˜€λžœλ§Œμ— μ œκ°€ μ§„μ§œ μ§„μ§œ ν•˜κ³  μ‹Άμ—ˆλ˜..γ… γ… γ… 

Bee-boxλ₯Ό λ‹€μ‹œ μ‹œμž‘ν•˜λ„€μš”..

κ·Έλ™μ•ˆ SQLμΈμ μ…˜, νŒŒμΌμ—…λ‘œλ“œ λ“± μ‹€μŠ΅μ€ ν•΄λ³΄μ•˜μ§€λ§Œ

처음 ν•˜λŠ” 마음으둜 λ‹€μ‹œ μ°¨κ·Όμ°¨κ·Ό μ˜¬λ¦¬λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€!

 

 

HTML injection-Reflected(Post)방식에 μ΄μ–΄μ„œ,

μ˜€λŠ˜μ€ Reflected기법 쀑 Stored(Blog)방법을 μ‹€μŠ΅ν•΄λ³Όκ²Œμš”

μ‹€μŠ΅ν•˜λŠ” λͺ¨λ“  곡격은 μ‹€μ œλ‘œ μ‚¬μš©ν•˜μ‹œλ©΄ μ•ˆλ©λ‹ˆλ‹€.

ν—ˆμš©λ°›μ§€ μ•Šμ€ μ„œλΉ„μŠ€ λŒ€μƒμ— 해킹을 μ‹œλ„ν•˜λŠ” 행동은 κΈˆμ§€ν•˜λ©°,

λͺ¨λ“  법적 μ±…μž„μ€ μ‚¬μš©μžμ—κ²Œ μžˆλŠ” 것을 λͺ…μ‹¬ν•΄μ£Όμ„Έμš”.


λ‚œμ΄λ„ ν•˜

'htmli_stored.php' νŽ˜μ΄μ§€λŠ” λΈ”λ‘œκ·Έ ν˜•μ‹μ΄κΈ° λ•Œλ¬Έμ— HTML νƒœκ·Έλ₯Ό μ €μž₯ν•˜μ—¬,

κ΄€λ¦¬μžκ°€ μ˜λ„ν•˜μ§€ μ•Šμ€ λ‚΄μš©μ„  좜λ ₯ν•˜κ²Œ ν•˜λŠ” 곡격이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ˜ν•œ λΈ”λ‘œκ·Έμ— μ‹€λ¦° ν…μŠ€νŠΈ ν•„λ“œμ— λ‚΄μš©μ„ μž…λ ₯ν•˜κ³  [GO]λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ μž…λ ₯ λ‚΄μš©μ„ μ „μ†‘ν•˜κ³  λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ 이동할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

λ¨Όμ € bWAPP  -> "low" λ‹¨κ³„λ‘œ μ ‘μ†ν•΄λ³Όκ»˜μš”

 

 

> 'htmli_post.php' νŽ˜μ΄μ§€μ˜ ν˜•μ‹μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ 'Stord'말고 'POST'둜 일단 μ΄λ™ν•΄λ΄…μ‹œλ‹Ή.

 

 

> 'Post' λ°©μ‹μœΌλ‘œ λ“€μ–΄μ™€μ„œ [F12] κΈ°λŠ₯ν‚€λ₯Ό λˆŒλŸ¬μ„œ 개발자 도ꡬλ₯Ό μ‹€ν–‰μ‹œμΌœμ€λ‹ˆλ‹€.

 

μ‹€ν–‰μ‹œμΌœμ£Όμ‹œλ©΄ ν”„λ ˆμž„λ³„λ‘œ κ΅¬λΆ„λœ HTML μ†ŒμŠ€ μ½”λ“œλ₯Ό λ³Ό 수 μžˆλŠ”λ°μš”! μ—¬κΈ°μ„œ formνƒœκ·Έλ₯Ό λ³΅μ‚¬ν•΄λ³ΌκΊΌμ˜ˆμš”. 

 

 

μ΄λ ‡κ²Œ HTML μ½”λ“œλ₯Ό λ³΅μ‚¬ν•΄μ€λ‹ˆλ‹€. (μ €λŠ” 보이기 μ‰½κ²Œ λ©”λͺ¨μž₯에 λ”°λ‘œ ν‘œμ‹œν•΄λ‘μ—ˆμ–΄μš”)

 

> λ³΅μ‚¬ν•œ μ½”λ“œλŠ” form νƒœκ·Έλ‘œ, μž…λ ₯ν•œ 데이터λ₯Ό μ„œλ²„λ‘œ λ³΄λ‚΄λŠ” κΈ°λŠ₯을 ν•©λ‹ˆλ‹€.

 

λ³΅μ‚¬ν•œ μ½”λ“œλŠ” 'HTML injection - Stored(Blog)' 에 λ“€μ–΄κ°€μ„œ 'Textarea'둜 μ„ μ–Έλœ ν•„λ“œ μ•ˆμ— λ„£μ–΄μ€λ‹ˆλ‹€.

 

 

> μœ„μ™€ 같이 뢙여넣은 ν›„ submit을 λˆŒλŸ¬μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

 

 

> μ΄λ ‡κ²Œ μ•„λž˜μ— 무언가 μƒμ„±λ¬λ„€μš”!! 여기에 Entry μ•ˆμ— μžˆλŠ” ν…μŠ€νŠΈ ν•„λ“œμ— 데이터λ₯Ό μž…λ ₯ν•΄λ΄…μ‹œλ‹€.

 

 

> 데이터 μž…λ ₯ ν›„ Goλ₯Ό ν΄λ¦­ν•΄μ€λ‹ˆλ‹€.

 

 

> POST ν™”λ©΄μœΌλ‘œ 이동이 λ˜μ—ˆλ„€μš”. μ•„λž˜ μžμ‹ μ΄ μž…λ ₯ν•œ 데이터가 좜λ ₯λ˜μ—ˆλ‹€λ©΄ 성곡.

 

μ½”λ“œλ₯Ό 쑰금 λ°”κΎΈμ–΄μ„œ μ œκ°€ μ›ν•˜λŠ” ν™”λ©΄μœΌλ‘œ μ΄λ™μ‹œν‚€κ³  μ‹Άλ‹€λ©΄ β–Ό β–Ό β–Ό

 

 

제 λΈ”λ‘œκ·Έλ‘œ μ΄λ™μ‹œμΌœλ³Όκ»˜μš”! 

 

 

> λ§ˆμ°¬κ°€μ§€λ‘œ μ½”λ“œλ₯Ό μž…λ ₯ ν›„ submit을 λˆŒλŸ¬μ€λ‹ˆλ‹€.

 

 

> μœ„μ— μ½”λ“œμ²˜λŸΌ ID, Pwd둜 λ°”λ€Œμ—ˆμŠ΅λ‹ˆλ‹€. GO λ²„νŠΌμ„ λˆ„λ₯΄λ©΄

 


λΈ”λ‘œκ·Έλ‘œ μ΄λ™λ˜κ³  아이디와 λΉ„λ°€λ²ˆν˜Έ 정보가 λ…ΈμΆœλ˜λ„€μš”.

> μ΄λ ‡κ²Œ 되면 곡격 성곡! 

 

 


 

λ‚œμ΄λ„ 쀑과 μƒμ—μ„œλŠ” νƒœκ·Έλ₯Ό μž…λ ₯ν•˜κ³  submit을 ν΄λ¦­ν•˜λ©΄ μ•„λž˜μ™€ 같이 λ¬Έμžμ—΄λ‘œ 좜λ ₯ν•©λ‹ˆλ‹€. 

> 즉 HTML νƒœκ·Έλ₯Ό μž…λ ₯ν•˜μ—¬λ„ ν•΄μ„ν•˜μ§€ μš°νšŒλ‹¨κ³„λ₯Ό 거치기 λ•Œλ¬Έμ— ν•΄μ„ν•˜μ§€ μ•ŠλŠ” κ²ƒμ΄μ§€μš”.

 

 

μ‹€μ œλ‘œ medium λ‹¨κ³„λŠ” ν•΄μ„λ˜μ§€ μ•Šκ³  λ¬Έμžμ—΄λ‘œ κ·ΈλŒ€λ‘œ 좜λ ₯λ˜λŠ”λ°,

htmli_stored.php νŽ˜μ΄μ§€ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λ‚œμ΄λ„ 'ν•˜' μ—μ„œλŠ” 필터링 ν•˜μ§€ μ•Šμ§€λ§Œ

'쀑'κ³Ό '상'은 μ•„λž˜μ™€ 같이 xss_check_3ν•¨μˆ˜λ‘œ 'Entry' ν•­λͺ©μ— λ“€μ–΄κ°€λŠ” λ‚΄μš©μ„ ν•„ν„°λ§ν•©λ‹ˆλ‹€.

 

 

> 'xss_check_3' ν•¨μˆ˜λ₯Ό μ°Ύμ•„μ„œ 확인해보면

 

 

'htmlspecialchars'λΌλŠ” ν•¨μˆ˜λ‘œ μž…λ ₯ 값을 μš°νšŒν•˜λ„€μš”.

 

>> "htmlspecialchars" ν•¨μˆ˜λŠ” HTMLμ—μ„œ μ‚¬μš©ν•˜λŠ” 특수 문자λ₯Ό UTF-8둜 λ°˜ν™˜ν•˜λ©°, λ³€ν™˜ν•˜λŠ” νŠΉμˆ˜λ¬ΈμžλŠ” μœ„ μ½”λ“œμ—

μ£Όμ„μ²˜λ¦¬ λ˜μ–΄μžˆλŠ” &, ", ', <, > 이닀.

λ”°λΌμ„œ 곡격을 막기 μœ„ν•΄μ„œλŠ” μœ„μ™€ 같은 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬, νƒœκ·Έμ— μ‚¬μš©λ˜λŠ” λ¬Έμžλ“€μ„ HTML νƒœκ·Έλ‘œ ν•΄μ„ν•˜μ§€ μ•Šλ„λ‘ μž…λ ₯ 데이터λ₯Ό UTF-8둜 μΈμ½”λ”©ν•˜λ©΄ λ©λ‹ˆλ‹€!

λ°˜μ‘ν˜•
λŒ“κΈ€μˆ˜0