beebox A1 HTML 인젝션(Get)
HTML 인젝션은 공격자가 사용자의 연결을 요청한 페이지에 HTML태그를 삽입하여 의도하지 않은 내용을 보거나 악의적인 사이트로 유도 하는공격기법이다.
반사(Reflected)기법: URL에 악의적인 테그를 삽입하여 사용자의 PC에서 HTML 태그가 실행되게하는 공격이다.
실습
Level-하
First name:web
Last name:hacking
입력후 출력하게되면 welcome web hcking이라고 나오게 됩니다.
First name:bee<h1>CLICK HERE</h1>
Last name:hacking
이번에는 <h1>코드를 넣어 출력 결과 글자크기가 커진것을 볼수있습니다. 따라서 HTML코드가 작동한다고 알 수 있습니다.
First name:bee<h1>CLICK HERE</h1>
Last name:<a href="https:naver.com"><img src="192.168.31.122/bWAPP/images/bee_1.png"> border="0"</a>
html테그가 모두 삽입 성공 한 것을 볼수있다.
사진을 클릭하게되면 다음과 같은 사이트로 이동하게 된다. 이러한 방법으로 악성사이트나 자동다운및 실행하는사이트로 유도 할 수 있다.
Level-중
First name:bee<h1>CLICK HERE</h1>
Last name:<a href="https:naver.com"><img src="192.168.31.122/bWAPP/images/bee_1.png"> border="0"</a>
아까와 같은 방법으로 입력시 테그가 실행 되지 않고 문자열이 그대로 출력되는것을 볼 수 있다.
First name:bee%3ch1%3eCLICK+HERE%3c%2fh1%3e%0d%0a
Last name:%0d%0a%3ca+href%3d%22https%3anaver.com%22%3e%3cimg+src%3d%22192.168.31.122%2fbWAPP%2fimages%2fbee_1.png%22%3e+border%3d%220%22%3c%2fa%3e
이번에는 URL인코딩으로 변환하여 입력결과 코드가 정상적으로 실행 된것을 볼수있다.
Level-상
똑같이 URL인코딩하여 입력해보았지만 코드는 실행되지않고 문자열그대로 출력한것을 볼수있다.
코드를 보게되면 htmlspecialchares라는 함수를 이용하여 입력값을 우회하고 있다.
htmlspecialchares: PHP제공하는 기본함수로 html에서 사용하는 특수문자를 UTF-8로 변환한다.
변환하는 특수문자는 &, ", ', < 이있다.
대응방안: htmlspecialchares 함수를 사용하여 특수문자를 사용하지 못하게 한다.