Game/Bee-box

[Bee-box] HTML injection - Reflected(GET)

μ •λ³΄λ³΄μ•ˆπŸŒ 2020. 4. 30. 20:52
λ°˜μ‘ν˜•

HTML μΈμ μ…˜μ˜ μ’…λ₯˜λŠ” μ €λ²ˆ κ²Œμ‹œκΈ€μ—μ„œ ν¬μŠ€νŒ… ν–ˆμ—ˆμ£ .

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

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

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

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

 


λ¨Όμ € μ‚¬μ΄νŠΈμ—μ„œ HTML injection - Reflected(GET) ν•­λͺ©μ„ 선택해 μ£Όμ„Έμš”.

μ£Όμ†Œμ— λ³΄μ‹œλ©΄ htmli_get.php λŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값을 κ·ΈλŒ€λ‘œ 좜λ ₯ν•˜λŠ” νŽ˜μ΄μ§€ μž…λ‹ˆλ‹€.

μ΄λ•Œ μž…λ ₯ 값을 κ²€μ¦ν•˜μ§€ μ•ŸμœΌλ©΄ μ›Ή λΈŒλΌμš°μ €λŠ” κ³΅κ²©μžκ°€ μž…λ ₯ν•œ HTML νƒœκ·Έλ₯Ό ν•΄μ„ν•˜κ³  κ΄€λ¦¬μžκ°€ μ˜λ„ν•˜μ§€ μ•ŠλŠ” λ‚΄μš©μ„ 좜λ ₯ν•©λ‹ˆλ‹€.

 

λ¨Όμ € low(λ‚œμ΄λ„ : ν•˜) 단계λ₯Ό μ‹€μŠ΅ν•΄λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

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

 

단계λ₯Ό low둜 μ„€μ •ν•œ ν›„ μ‹œμž‘ν•΄ λ΄…μ‹œλ‹€.

ν…ŒμŠ€νŠΈλ₯Ό ν•˜κΈ° μœ„ν•΄ κ°„λ‹¨ν•˜κ²Œ μ½”λ“œλ₯Ό μ‚½μž…ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. HTML을 쑰금 λ‹€λ£° 쀄 μ•„μ‹ λ‹€λ©΄

μ œκ°€ ν•œ λͺ…λ Ήμ–΄ 외에 λ‹€λ₯Έ 것듀도 μ‹œλ„ν•΄λ³΄μ„Έμš”!

μ €λŠ” 일단 

First name :

<h1> you win</h1>

Last name  :

<img str = http://192.168.0.20/bWAPP/images/bee_1.png 

(λΉ¨κ°„ 뢀뢄은 μžμ‹ μ˜ μ„œλ²„'Bee-box' IPλ₯Ό μž…λ ₯ν•΄μ£Όμ…”μ•Ό ν•΄μš”)

을 λ„£μ–΄μ£Όμ—ˆλŠ”λ°μš”. img strλŠ” HTMlμ—μ„œ 이미지 νƒœκ·Έ, src속성에 μž…λ ₯ν•œ 경둜의 이미지λ₯Ό 좜λ ₯ν•œλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.

경둜λ₯Ό 따라가보면

 

 

ν„°λ―Έλ„μ—μ„œλ„ 확인이 κ°€λŠ₯ν•˜μ‹œκ³ , νŒŒμΌλ‘œλ„ μ‹€μ œλ‘œ μžˆλŠ” 사진인 κ±Έ 보싀 수 μžˆμ–΄μš”!

λ¨Όμ € 검색 ν›„ μ‚¬μš©ν•˜κ³  싢은 사진을 μ‚¬μš©ν•΄λ„ λ©λ‹ˆλ‹Ή.

 

 

μž…λ ₯ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

 

 

μ•„λž˜μ— you win μ΄λΌλŠ” μ œκ°€ μž…λ ₯ν•œ μ½”λ“œμ™€ κΏ€λ²Œ 사진이 μ˜¬λΌμ™”λ„€μš”.

μ΄λ ‡κ²Œ λ‘˜λ‹€ μ •μƒμ μœΌλ‘œ μ˜¬λΌμ™”λ‹€λ©΄ -> 성곡

 

GET방식이라 μ›ΉλΈŒλΌμš°μ €μ˜ URL μž…λ ₯뢀뢄에 λ³€μˆ˜κ°€ λ…ΈμΆœλ˜λ„€μš”

μžμ„Ένžˆ λ³΄λ‹ˆ fristnameκ³Ό lastname 값이 λ‹€ λ³΄μž…λ‹ˆλ‹€.

ν•˜μ—¬νŠΌ  ! μ„±κ³΅μž…λ‹ˆλ‹€.γ…Žγ…Ž

 

λ‚œμ΄λ„ 쀑

 

λ‚œμ΄λ„λ₯Ό λ†’μ—¬μ„œ μ‹€μŠ΅ν•΄λ³Όκ»˜μš”.

μ•„κΉŒ λ‚œμ΄λ„ ν•˜ μ—μ„œ 썼던 λ°©λ²•μ²˜λŸΌ μž…λ ₯을 ν•΄λ΄€λ”λ‹ˆ.

 

 

μ΄λ ‡κ²Œ νƒœκ·Έκ°€ μ‹€ν–‰λ˜μ§€ μ•Šκ³  화면에 λ¬Έμžμ—΄μ΄ κ·ΈλŒ€λ‘œ 좜λ ₯λ˜λ„€μš”

μ΄λŠ” 'λ‚œμ΄λ„ _ 쀑' μ—μ„œλŠ”  νƒœκ·Έλ₯Ό 필터링 ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

λ”°λΌμ„œ νƒœκ·Έμ— μ‚¬μš©λ˜λŠ” "<"  ">" "/" 문자λ₯Ό URLμΈμ½”λ”©ν•˜μ—¬ μž…λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

μ•„λž˜λŠ” μ•„μŠ€ν‚€ μ½”λ“œ ν‘œμ΄κ³ ,

URL인코딩은 ASCII(μ•„μŠ€ν‚€)μ½”λ“œμ˜ HEXκ°’μ—μ„œ %λ₯Ό 뢙인 값을 λ§ν•©λ‹ˆλ‹€.

 

 

%3Ch1%3E you Win %3C%2Fh1%3E

%3Cimg src= http://192.168.0.20/bWAPP/images/bee_1.png%3E

μš”λ ‡κ²Œ λ°”κΎΈμ–΄ μ£Όλ©΄ 되겠죠?!

 

 

μž…λ ₯ν•œ 값을 λ„£κ³  GOλ₯Ό λˆŒλŸ¬μ€λ‹ˆλ‹€

 

 

μ•„κΉŒμ²˜λŸΌ μ•„λž˜μ˜ you win κ³Ό κ·€μ—¬μš΄ λ²Œν•œλ§ˆλ¦¬κ°€ λ–΄λ„€μš” γ…Žγ…Ž

 μ„±κ³΅μž…λ‹ˆλ‹Ή.

 

λŒ€μ‘λ°©μ•ˆ

λ‚œμ΄λ„ μƒμ—μ„œλŠ” 

'λ‚œμ΄λ„ ν•˜'μ—μ„œ μ‚¬μš©ν•œ HTMLνƒœκ·Έλ₯Ό μž…λ ₯ν•˜λ©΄ νƒœκ·Έλ‘œ ν•΄μ„ν•˜μ§€ μ•Šκ³  λ¬Έμžμ—΄λ‘œ 좜λ ₯ν•©λ‹ˆλ‹€.

λ§ˆμ°¬κ°€μ§€λ‘œ 'λ‚œμ΄λ„ 쀑'μ—μ„œ μ‚¬μš©ν•œ 인코딩 νƒœκ·Έλ“€λ„ μ‹€ν–‰ν•˜μ§€ μ•Šκ³  λ¬Έμžμ—΄λ‘œ 좜λ ₯ν•˜κ³ μš”.

μ΄λŠ”, '상' λ‹¨κ³„μ—μ„œ 우회 단계λ₯Ό κ±°μ³€κΈ° λ•Œλ¬ΈμΈλ°μš”

 

 

직접 ν™•μΈν•΄λ΄…μ‹œλ‹€. λ‹¨κ³„λŠ” high

 

 

λ‚œμ΄λ„ 쀑 처럼 μž…λ ₯ν•΄λ΄€λ”λ‹ˆ μ΄λ ‡κ²Œ λ¬Έμžμ—΄λ‘œ λœ¨λ„€μš”..

 

 

우회 과정을 ν™•μΈν•˜κΈ° μœ„ν•΄μ„œ λΉ„λ°•μŠ€λ₯Ό λ“€μ–΄κ°€μ„œ 직접 μ½”λ“œλ₯Ό μ°Ύμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

htmli_get.php --> μ½”λ“œκ°€ λ³΄μ΄λ„€μš”.

 

 

μ‚΄νŽ΄λ³΄λ©΄ λ‚œμ΄λ„ ν•˜μ—λŠ” no_cleck 인 반면 

λ‚œμ΄λ„ 상 μ—μ„œλŠ” Xss_check_3 ν•¨μˆ˜λ‘œ μž…λ ₯ 데이터λ₯Ό 우회 ν•˜κ³  μžˆλ„€μš”.

 

 

ν•¨μˆ˜μ— μ •μ˜λœ λ‚΄μš©μ„ λ³΄κΈ°μœ„ν•΄ functions_external.php 에 λ“€μ–΄κ°€μ„œ 확인을 ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

 

 

μ΄λ ‡κ²Œ μ½”λ“œκ°€ μ§œμ—¬μ Έμžˆλ„€μš”. 

htmlspecialcharsν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ 우회λ₯Ό ν•œ 것이죠.

μ΄ν•¨μˆ˜μ— 손을 λŒ€λ©΄,,(?) 'λ‚œμ΄λ„ : 상'을 클리어 ν•  수 μžˆμ„ 것 같은데

μ½”λ“œλŠ” μ†λŒ€μ§€ μ•Šμ„κ²Œμš”^-^....

 

htmlspecialchars 

이 ν•¨μˆ˜λŠ” PHPμ—μ„œ μ œκ³΅ν•˜λŠ” κΈ°λ³Έ ν•¨μˆ˜λ‘œ, HTMLμ—μ„œ μ‚¬μš©ν•˜λŠ” 특수 문자λ₯Ό UTF-8 둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.

UTF-8은 μœ λ‹ˆμ½”λ“œ ν•œ 문자λ₯Ό 1byteλΆ€ν„° 4byteκΉŒμ§€ μΈμ½”λ”©ν•˜λ©° μ•„μŠ€ν‚€ μ½”λ“œλ„ ν˜Έν™˜μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

htmlspecialcharsν•¨μˆ˜μ—μ„œ λ³€ν™˜ν•˜λŠ” νŠΉμˆ˜λ¬ΈμžλŠ” &,  ",  ',  <,  > μž…λ‹ˆλ‹€.

 

μ΄λ ‡κ²Œ. ν•˜,쀑,상을 μ‹€μŠ΅ν•΄ λ³΄μ•˜λŠ”λ°μš”

HTMLμΈμ μ…˜μ„ λ§‰μœΌλ €λ©΄ μœ„μ™€κ°™μ΄ htmlspecialcharsν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κ³  htmlνƒœκ·Έμ— μ‚¬μš©λ˜λŠ” λ¬Έμžλ“€μ„ μΈμ‹ν•˜μ§€ μ•Šκ²Œ 

인코딩을 ν•˜λ©΄ λœλ‹΅λ‹ˆλ‹€.γ…Žγ…Ž 

 

μ˜€λŠ˜μ€ μ—¬κΈ°κΉŒμ§€! 그럼 λ‹€λ“€ μˆ˜κ³ ν•˜μ…¨μ–΄μš”

λ°˜μ‘ν˜•