인젝션의 정의

공격자가 어플리케이션에 악의적인 쿼리를 넣으면 그것이 정상적인 동작으로 어플리케이션이 인식하여 악의적인 동작이 수행되게 하는 공격이다.



    그렇다면 HTML 인젝션은 무엇?

코드 인젝션 종류의 하위 개념
취약한 매개변수에 악의적인 HTML 코드를 삽입하여 공격


    HTML Injection - Reflected (GET) 공격 실습

Bee-Box에 bee/bug로 각각 ID. PW로 입력하여 로그인한다.

이후에 choose your bug를 통해 아래와 같이 설정


우선 HTML 인젝션이란 개발자가 입력된 검증값을 넣어두지 않아서
해커가 HTML관련 태그들을 브라우저를 통해 삽입함으로써 개발자가 의도하지않은 행위가 일어나는 공격기법이다.



정의는 여기까지 하고 우선 레벨 Low로 실습을 해보자.
위와 같이 HTML Injection - Reflected (GET) 그리고 low로 셋팅하면 아래와 같이 이미지가 뜬다.


여기서 First name에는 123, Last name에는 abc를 입력하고 Go를 눌러보면


위와 같이 Welcome 123 abc이라고 뜬다.

우리가 해야할 것은 HTML 인젝션이라고 했으니 HTML 태그들을 섞어보자.
이번에는 <h1>Hello</h1> 그리고 <img src="https://lh3.googleusercontent.com/DjUgn0hqwzO0hw4NchiE4r66I5vutBFZQWsL0nct8gFTkzRhBIAZmyXPdtyzD4-hKGM=w300"> 를 입력해보자(네이버로고 이미지 주소)

그러면

아래와 같이 HTML 인젝션이 성공된 것으로 확인할 수 있다.

이어서 이제 레벨을 Medium, High로 올려서 따로 풀어보도록 하자.



    HTML Injection - Reflected (POST) 공격 실습

앞서서 한 GET과 POST 방식에는 차이점이 있다.

GET방식은 위와 같이 URL을 통래 값이 전달된다는 점이고 POST방식은 데이터를 통해 전달된다는 점이다.
데이터를 통해 전달된다는 것은 즉 Burpsuite같은 프록시 도구로 데이터를 볼 수 있다는 점이다.
(물론 GET도 볼 수 있지만 굳이 그러는 경우는 없다고 한다.)

이번에는 아래 그림과 같이 설정해 페이지를 바꿔주자.


그러면 아래와 같이 화면이 출력될 것이다.
이번에도 마찬가지로 <h1>Hello</h1> 그리고 <img src="https://lh3.googleusercontent.com/DjUgn0hqwzO0hw4NchiE4r66I5vutBFZQWsL0nct8gFTkzRhBIAZmyXPdtyzD4-hKGM=w300" width="100px" height="100px"> 를 입력해보자
(짜잘하게 그림이 너무커서 크기를 조절했다.)

동일하게 잘 출력되는 것을 확인.
이제 이것을 버프 슈트로 보기 위해서 프록시 설정을 해주고 burpsuite를 대기시켜놓자.

필자는 Kali Linux를 사용하므로 위와 같이 설정

대기중인 burpsuite

이제 준비는 되었으니 아까와 같이 입력을 해보자.

그렇게 위와 같이 데이터가 캡쳐가 되는 것을 확인할 수 있다.
아래 firstname과 lastname의 값이 들어가있고 각 특수문자들은 URL인코딩이 되어 있는 것을 확인할 수 있다.
위 값은 수정해서 얼마든지 forward시킬 수 있다.

이 방법을 이용하여 Medium과 High레벨도 풀어보도록 하자.


'Penetration Testing > Bee-Box' 카테고리의 다른 글

[Bee-Box] OS 커맨드 인젝션  (0) 2018.02.14
htmlspecialchars 함수에 대해  (0) 2018.02.13
[Bee-Box] iframe Injection  (1) 2018.02.13
Bee-Box 사용하기  (0) 2018.02.11
공부하면서 사용할 책  (0) 2018.02.10

+ Recent posts