관리 메뉴

FU11M00N

2-3. bee-box 를 사용하여 HTML Injection 알아보기 본문

Web Hacking/bee-box

2-3. bee-box 를 사용하여 HTML Injection 알아보기

호IT 2020. 3. 16. 19:49

안녕하세요!

이번에는 Reflected(반사) 기법을 이용한 공격 기법이 아닌 Stroed(저장) 기법을 이용하여 공격을 해보겠습니다!

 

먼저 Stored(저장) 기법의 공격 원리는

사진 1-1과 같이 작동됩니다. 

사진1-1

 

이것을 실습하기위해 bee-box에서 html injection(stored)를 클릭하여 시현해보겠습니다!

 

우선 stored는 대부분 블로그나 게시판에서 발생합니다.

bee-box의 html injection은 블로그에서 발생하는데요 HTML 태그를 블로그에 저장하여

블로그에 입력한 text 필드에 내용을 입력하고 전송을 클릭하면 입력 내용이 다른 페이지로 전송이 됩니다.

 

1. 레벨 low

그럼 전에 포스팅했던 html injection post 인 홈페이지의 html 소스 코드를 

몇 줄 복사해와서 그쪽으로 데이터가 넘어가도록 해보겠습니다.

 

사진 1-2

소스의 코드는 이렇게 되어있습니다!

 

사진 1-3

이런 형태로 Stored Blog의 필드에 소스코드를 대입하면

사진1-4

이렇게 게시물에 htmlinjection post의 Firstname과 Lastname의 필드가 생깁니다.

사진1-5

그럼 저 Firstname과 Lastname에 값을 넣어주고 Go로 Submit을 하게 되면

사진1-6

이렇게 사이트 주소가 htmli_post.php으로 가게 됩니다. 

 

2. 레벨 medium , High(대응방안)

난이도 중 과 상에서는 아까의 소스코드를 필드에 넣으면 html 소스코드가 문자열로 그대로 출력하게 되는 모습을 확인할 수 있는데요, 이것은 사이트에서 우회를 하기 때문에 그렇습니다.

사진1-7

htmli_stored.php 페이지의 소스코드를 확인해보면

 

사진1-8

이렇게 xss_check_3에 포함되며 내용을 Entry 항목에 들어가는 내용을 필터링하여 우회가 되는 것입니다.

사진1-9

 

xss_check_3는 htmlspecialchars 함수를 사용하고 이것은 PHP에서 제공하는 기본 함수입니다.

HTML에서 사용되고 있는 특수문자를 UTF-8으로 반환하고 UTF-8은 유니코드의 한 문자를

1바이트로부터 4바이트까지 인코딩하며 아스키코드도 호환이 가능합니다.

 

즉 html injection을 대응하기 위해선 htmlspecialchars 함수를 사용하여 HTML에

사용되는 태그들을 인식되지 않게 해야 합니다.

 

Reference by 비박스 환경을 활용한 웹 모의해킹 완벽실습

Comments