μ΄κΈλ£¨μ½νΌλ μ΄μ μμΉν
μ΄ λꡬλ₯Ό μ΄μ©νμ¬ νμ©λ°μ§ μμ μλΉμ€ λμμΌλ‘ ν΄νΉμ μλνλ νμλ λ²μ£ νμμ
λλ€.
ν΄νΉμ μλν λμ λ°μνλ λ²μ μΈ μ±
μμ κ·Έκ²μ νν μ¬μ©μμκ² μλ€λ κ²μ λͺ
μ¬νμκΈ° λ°λλλ€.Β
λΉλ°μ€λ₯Ό λ‘κ·ΈμΈνλ©΄ μμ κ°μ νλ©΄μ΄ λμ΅λλ€. μ΄λ²μλ OWASP νλͺ© μ€ νλμΈ μΈμ μ
μ λν΄μ μ΄ν΄λ³΄λλ‘ νκ² μ΅λλ€.
Β
A1 - Injection
μΈμ μ
μ 곡격μκ° μ
μμ μΌλ‘ μ£Όμ
ν λ°μ΄ν°λ₯Ό μΉ μ ν리μΌμ΄μ
μμ λ°μ΄ν°λ² μ΄μ€μ μ μμ μΈ μΏΌλ¦¬ μΌλΆλ‘ μΈμνκ³ μ€νν λμ λ°μνλ μ·¨μ½μ μΌλ‘, λ°μ΄ν°λ₯Ό μ
λ ₯λ°κ±°λ λ°μ΄ν°λ² μ΄μ€ μ 보λ₯Ό μμ²νλ κ³³μλ μΈμ μ
κ³΅κ²©μ΄ κ°λ₯ν©λλ€.
Β
곡격 λ°©λ²μ΄λ μ¬μ© μΈμ΄μ λ°λΌ μΈμ μ
μ μ’
λ₯κ° λ¬λΌμ§λλ°, λνμ μΈ μ νμΌλ‘ SQL μΈμ μ
, HTML μΈμ μ
, OS Command μΈμ μ
, LDAP μΈμ μ
λ±μ΄ μμ΅λλ€. μΈμ μ
곡격 μ€ SQL μΈμ μ
μ λ°μ΄ν°λ² μ΄μ€ μΈμ΄μΈ SQLλ¬Έμ μ¬μ©νκΈ° λλ¬Έμ λ°μ΄ν°λ² μ΄μ€ λ΄μ μ 보λ₯Ό μ μΆ λλ μμ νκ±°λ λ°μ΄ν°λ² μ΄μ€μ μ
μ±μ½λλ₯Ό μ£Όμ
νμ¬ μ¬μ©μμ μ»΄ν¨ν°λ₯Ό 곡격ν μ μμ΅λλ€.
Β
HTML μΈμ μ
HTML μΈμ μ
μ μ½λ μΈμ μ
곡격μ νμ κ°λ
μΌλ‘, μ·¨μ½ν λ§€κ°λ³μμ μ
μμ μΈ HTML μ½λλ₯Ό μ½μ
νλ 곡격μ
λλ€. 곡격μλ μ¬μ©μκ° μ°κ²°μ μμ²ν νμ΄μ§μ HTML νκ·Έλ₯Ό μ½μ
νμ¬ μλνμ§ μμ λ΄μ©μ λ³΄κ² νκ±°λ μ
μμ μΈ μ¬μ΄νΈμ μ°κ²°μν¬ μ μμ΅λλ€.
Β
HTML μΈμ μ
μ€μ λ°μ¬(Reflected) κΈ°λ²μ URLμ μ
μμ μΈ HTML νκ·Έλ₯Ό μ½μ
νμ¬ λ§ν¬λ₯Ό ν΄λ¦ν μ¬μ©μμ PCμμ HTML νκ·Έκ° μ€νλκ² νλ 곡격μ
λλ€.
νΉν GET λ°©μμ λ°μ΄ν°λ₯Ό μ μ‘ν κ²½μ° URLμ λ³μλͺ
κ³Ό μ
λ ₯ κ°μ λ
ΈμΆνκ² λ©λλ€.
Β
A1 - HTML Injection - Reflected (GET)
bWAPPμ λ‘κ·ΈμΈν ν 'HTML Injection - Reflected (GET)' νλͺ©μ μ ν ν [Hack] λ²νΌμ λλ₯΄μλ©΄ λ€μκ³Ό κ°μ΄ 'html_get.php'λΌλ νμ΄μ§κ° λμ΅λλ€.
HTML μΈμ μ 곡격μ μν HTML νκ·Έλ₯Ό ν μ€νΈ νλμ μ λ ₯ν©λλ€. ν΄λΉ μ λ ₯ν HTML νκ·Έ μ΄μΈμλ μΈμ μ 곡격μ μ¬μ©ν μ μλ λ€μν νκ·Έκ° μμΌλ ν μ€νΈλ₯Ό ν΄λ³΄μκΈ° λ°λλλ€.
<script>alert(1)</script> μ€ν¬λ¦½νΈ ꡬ문 μ λ ₯ μ νμ μ°½μ λλ€.ν€λ© νκ·Έ - μ λͺ© νκΈ°μ λ§μ΄ μ¬μ©
Β μ΄λ―Έμ§ νκ·Έ - src μμ±μ μ λ ₯ν κ²½λ‘μ μ΄λ―Έμ§ μΆλ ₯μμ κ°μ΄ μ λ ₯νκ³ [Go] λ²νΌμ ν΄λ¦νλ©΄ HTML νκ·Έκ° μ½μ λ νμ΄μ§λ₯Ό μ μμ μΈ νμ΄μ§λ‘ μΆλ ₯μ ν΄μ€λλ€. Β http://127.0.0.1/bWAPP/htmli_get.php?firstname=%3Ch1%3E+HTML+Injection+TEST+%3C%2Fh1%3E&lastname=%3Cimg+src%3Dhttp%3A%2F%2F127.0.0.1%2FbWAPP%2Fimages%2Fnsa.jpg%3E&form=submit ] GET λ©μλλ‘ μμ²νκΈ° λλ¬Έμ μΉ λΈλΌμ°μ μ URL μ λ ₯ λΆλΆμ λ³μκ° λ ΈμΆλκ³ , URL μ λ ₯λμ 'firstname'κ³Ό 'lastname'μ΄λΌλ λ³μμ μ λ ₯ν HTML νκ·Έκ° λ³΄μ΄κ² λ©λλ€. Β HTML μΈμ μ κ²°κ³Όλ‘ μΉλΈλΌμ°μ μμ 'Welcome' λ©μμ§ λ°μ μ½μ ν ν€λ© νκ·Έμ μ΄λ―Έμ§ νκ·Έ λ΄μ©μ΄ μΆλ ₯μ΄ λλ©΄ μ½μ μ΄ μ±κ³΅ν κ²μ λλ€.
λμΌνκ² First nameκ³Ό Last nameμ HTML ꡬ문μ μ λ ₯ ν [Go] λ²νΌμ λλ¬λ³΄μμ΅λλ€.
μκΉμλ λ€λ₯΄κ² μ λ ₯ν νκ·Έκ° μ€νλμ§ μκ³ νλ©΄μ λ¬Έμμ΄μ΄ κ·Έλλ‘ μΆλ ₯λλ κ²μ νμΈν μ μμ΅λλ€. λν GET λ°©μμ΄κΈ° λλ¬Έμ URL λΆλΆμλ λμΌνκ² λ³μκ° λ ΈμΆμ΄ λ©λλ€. Β μ¬κΈ°μ νμΈν΄λ³Ό μ μλ κ²μ νκ·Έλ₯Ό νν°λ§νλ€λ κ²μ μ μ μμ΅λλ€. νκ·Έλ₯Ό μΈμ½λ©ν ν λ€μ μ λ ₯μ ν΄λ³΄λλ‘ νκ² μ΅λλ€.
λ²ν μ€μνΈμ Decoder λ©λ΄λ₯Ό μ΄μ©νμ¬ μΈμ½λ©μ νμμ΅λλ€. Β Last name λΆλΆμ μΈμ½λ©ν κ°μ μ λ ₯ν ν [Go] λ²νΌμ λλ¬λ³΄μμ΅λλ€
μ μμ μΌλ‘ μ€ν¬λ¦½νΈκ° μ€νμ΄ λλ κ²μ νμΈν μ μμ΅λλ€. Β μ΄λ²μλ μ°Έκ³ μ¬μ΄νΈμ μλ μ€ν¬λ¦½νΈ ꡬ문μ μ΄μ©νμ¬ κ³΅κ²©μ μνν΄ λ³΄λλ‘ νκ² μ΅λλ€.  곡격 ꡬ문 (μΈμ½λ© νμ) ">
<IFRAME width="420" height="315" SRC="https://www.daum.net" frameborder="0" onmouseover="alert('Welcome')"></IFRAME>123
ν΄λΉ 곡격 ꡬ문μ μ λ ₯ ν [Go] λ²νΌμ λλ¬λ³΄μμ΅λλ€. IFRAME νκ·Έλ ν΄λΉ νμ΄μ§ λ΄μ λ€λ₯Έ νμ΄μ§λ₯Ό νΈμΆν λ μ¬μ©λλ νκ·Έμ λλ€.
곡격 κ΅¬λΆ μ λ ₯ ν νμ΄μ§μ λͺ¨μ΅μ λλ€. λ€μ νμ΄μ§κ° νΈμΆλ κ²μ νμΈν μ μμ΅λλ€. μΌλ¨ μλνΈ λ°μ€ μμ κ°μ μ λ ₯ μ κ° μ λ ₯μ κΈΈμ΄ μ νμ΄ μμ΄ μ½κ² 곡격μ μνν μ μμμ΅λλ€. Β bWAPP ν΄λμ 'functions_external.php' νμΌμ μ΄ν΄λ³΄λ©΄ 'xss_check_3' ν¨μλ‘ μ λ ₯ λ°μ΄ν°λ₯Ό μ°ννλ κ²μ νμΈν μ μμ΅λλ€. htmlspecialchars ν¨μλ PHPμμ μ 곡νλ κΈ°λ³Έ ν¨μλ‘, HTMLμμ μ¬μ©νλ νΉμ λ¬Έμλ₯Ό UTF-8λ‘ λ°νν©λλ€. Β λμ΄λ μ
λμ΄λ μμμλ xss_check_3 ν¨μλ‘ μ λ ₯ λ°μ΄ν°λ₯Ό μ°ννκ³ μμ΅λλ€. xss_check_3 ν¨μλ functions_external.phpμ μ μ λμ΄ μκ³ , htmlspecialchars ν¨μλ‘ μ λ ₯κ°μ μ°ν ν©λλ€.
Β htmlspecialchars ν¨μλ PHPμμ μ 곡νλ κΈ°λ³Έ ν¨μλ‘, HTMLμμ μ¬μ©νλ νΉμ λ¬Έμλ₯Ό UTF-8λ‘ λ°νν©λλ€. Β htmlspecialchars ν¨μμμ λ°ννλ ν¨μλ νΉμλ¬Έμ &, ", ', <, > μ λλ€. λ°λΌμ HTML μΈμ μ μ λ§μΌλ €λ©΄ htmlspecialchars ν¨μλ₯Ό μ¬μ©νμ¬ HTML νκ·Έμ μ¬μ©λλ λ¬Έμλ€μ μΈμνμ§ μκ² μΈμ½λ© ν΄μ€λλ€.