관리 메뉴

FU11M00N

3-1. bee-box 를 사용하여 iframe Injection 공격 알아보기 본문

Web Hacking/bee-box

3-1. bee-box 를 사용하여 iframe Injection 공격 알아보기

호IT 2020. 3. 18. 11:03

안녕하세요!

이번에는 iframe 인젝션에 대해 알아보겠습니다

먼저 html을 해봤다면 iframe을 사용해봤을 텐데요 iframe 태그는

임의의 위치에 또 다른 HTML 문서를 보여주는 내부 프레임(inline frame)태그를 사이즈와 위치를 조절하여

html 페이지에 나타낼 수 있습니다. 이를 이용해 악성 URL을 삽입하여 사이즈를 작게 혹은 0 으로 설정하여 숨기는 행위를 하여 사용자가 악성 사이트로 접속하게하는 공격 기법입니다.

 

그럼 bee-box를 활용하여 실습해보겠습니다!

1. 레벨 low

사진 1-1

우선 iFrame injection의 사이트는 이렇게 생겼습니다! 무언가 iframe으로 내용이 출력되고 있습니다!

사진1-2

iFrame injection 사이트를 관리자 도구(f12)로  확인하여 페이지의 소스를 확인해보면,

iframe을 보면 robots.txt. 의. txt 파일을 불러와 사용하고 있는데요,

그리고 iframei.php의 페이지는 GET 방식으로 메서드가 지정되어있어 URL에 사용하는 변수가 전부 노출되어있는 모습을 확인할 수 있는데요, 노출되어있는 변수는 ParamUrl, ParamWidth, ParamHeight 이렇게 3가지이고

각각 주소와 사이즈를 조절하는 변수인 것 같습니다!

 

그럼 GET 메서드 방식으로 데이터를 전송하는 것을 이용해

직접 HTML로 악성 사이트를 제작하여 악성 사이트가 출력이 되게 해 보겠습니다!

사진 1-3

이렇게 제가 직접 HTML을 사용하여 코드를 작성했습니다.

참고로 저는 작성은 VIM을 사용하고 소스코드 확인은 gedit을 사용합니다!!

 

그럼 src를 제가 만든 html 소스코드의 이름으로 변경하겠습니다.

사진1-4

이 주소가 원래의 iframe injection 사이트 주소인데요 이것을

사진1-5

이런 식으로 악성 html 코드가 담긴 소스를 iframe으로 나타내는 URL으로 변경하였습니다!

사진 1-6

그럼 아까 제가 작성했던 script alert가 발생하고

사진 1-7 

<h1> 태그에 작성했던 'hello?'가 출력되었습니다!

 

공격자가 height와 width의 사이즈를 0으로 조절하여 사용자가 악성 html 사이트인지 눈치 못 채게 사이트를 변경하면

사용자는 당할 수밖에 없을 것입니다. 

 

2. 레벨 High(대응방안)

이번엔 그럼 난이도 하 에서 사용했던 URL을 난이도 상에 넣어보니 아무런 반응이 없습니다.

 

사진 1-8

 

안 되는 이유를 파악하기 위해 소스 페이지인 iframei.php의 페이지 소스를 확인해보겠습니다.

 

사진 1-9

난이도 상은 case "2" xss_check_3 함수에 해당합니다.

사진 1-10

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

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

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

 

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

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

 

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

 

Comments