모의해킹/웹해킹

[Web Hacking] bWAPP(비박스) HTML Injection

라임패션 2020. 3. 25. 16:58
728x90
반응형

※ HTML 인젝션 - Reflected(GET)

취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격이다.

HTML 태그를 악의적인 사이트에 연결하거나 악성 파일을 다운로드 하도록 유도한다.

 

<공격 실습>

h태그를 입력해보면 태그가 해석되면서 입력값들이 출력되게 된다.

해당 요청을 URL의 파라미터로 전달할 때는 다음과 같다.

이제 자바스크립트의 alert함수를 이용해 XSS를 시도해보자.

.

alert창이 뜨는 것을 확인할 수 있다.

해당 공격을 이용하여 쿠키와 같은 정보를 탈취할 수 있고, 악의적인 페이지로 리다이렉션이 이루어질 수 있다.

쿠키값을 가져올 수 있는지 테스트해보자.

만약 쿠키값이 공격자에게 넘어가게 된다면 공격자는 ID/PW없이 사용자로 로그인할 수 있다.

 

이번에는 img태그를 이용해보도록 하자.

비박스 페이지에 있는 이미지를 가져와보자.

 

이제 보안 단계를 미디움으로 상향시킨 후 이전 공격을 수행해보자.

스크립트 태그가 이스케이프 처리되어 공격이 막히는 것을 볼 수 있다.

서버에서 입력값이 처리되는 로직을 살펴보게 되면 <, > 문자는 str_replace함수에 의해 치환되고 있다.

하지만 <, >가 아닌 %3C, %3E같은 url 인코딩된 값을 전달하게 되면 해당 로직을 우회할 수 있다.

 

공격 수행을 위해 double 인코딩을 시도해보자.

%3cscript%3ealert(%22test%22)%3c%2fscript%3e

우회가 성공했음을 확인했다.

 

이제 보안 레벨을 하이로 옮겨보자.

디코드 과정이 없기 때문에 url 인코딩 값을 전달해도 공격이 막히게 된다.

※ HTML 인젝션 - Reflected(POST)

POST 방식으로 처리하는 로직에서는 바디값에 인자값을 전달하게 된다.

GET방식과 인자값 전달 방식만 다를 뿐 공격수행과정은 동일하다.

 

※ HTML 인젝션 - Stored(Blog)

악의적인 HTML 태그가 데이터베이스에 저장되며,

블로그에 HTML 코드를 저장하여 관리자가 의도하지 않은 페이지를 다른 사용자들에게 보여주는 공격을 시도한다.

alert함수가 담긴 script 태그를 게시판에 저장하게 되면 글이 읽어질 때 스크립트 함수가 실행된다.

보안 레벨을 하이로 올렸을 때는 태그가 이스케이프 처리되어 저장된다.

728x90
반응형