반응형
SMALL

이번 포스팅은 HTML 인젝션에 대한 것을 포스팅 해보려고 한다. 인젝션이라고 하면 해석해보면 "주사하다"라는 뜻을 갖고 있다. 흔히 블랙해커들이 공격할때 HTML인젝션으로 쿠키를 변조하고 악의적인 HTML태그를 만들어 파싱하게 만드는 등 여러가지 공격형태를 띠고 있다. 사실 실습법 자체는 간단한데 주요 공공기관, 대기업들은 이 공격에 속수무책으로 당하는 경우도 종종 있게 된다.(최근 보안사고 이슈에서 뽐뿌사이트가 이 공격으로 해킹당했음) 그럼 HTML 인젝션 실습은 어떻게 이루어지는지 적어보려고 한다.


1. HTML 인젝션


- 취약한 매개변수에 악의적인 HTML을 삽입해서 공격하는 기법

- HTML태그로 악의적인 사이트를 연결하거나 악성파일을 다운로드하도록 유도하게 된다.(트로이목마공격이랑 흡사)


2. HTML 인젝션 Reflected(get, Post)


- 주로 취약한 매개변수에 악성 HTML을 심어서 공격하게 하는 방법이다.

- 클라이언트가 서버에게 영향을 주었지만 서버는 그대로 다시 클라이언트에게 돌려주는 현상이다.


2. 공격 실습


(1)  HTML 인젝션 Reflected(get) 실습




본인의 이름을 입력하고 go를 누르면 사진과 같이 Welcome 뒤에 이름이 나오는 것을 볼 수 있다.


(2) 웹 서버자체에 존재하는 이미지 가져오기



이것도 크게 어렵진 않다. <src img = http://10.0.2.4/bWAPP/images/bee_1.png></img> 라고 입력해주면 저런식으로 벌사진을 가져올 수 있다.


(3) 클라이언트 쿠키 값 가져오기 공격 실습



쿠키값을 가져와서 해킹하는 방법이다. <script> alert(document.cookie) </script> 라고 입력해주면 된다. 자바스크립트 해본 분들은 어떤 코드인지 쉽게 알 수 있다. 이 방법으로 쿠키를 얼마든지 변조하고 해킹이 가능하다. 



정상적으로 실행이 되면 다음과 같은 화면을 볼 수 있다. 그런데 이렇게 허무하게 쿠키값이 뚫리게 끔 하진 않는다. 왜 이렇게 허망하게 쿠키값이 노출되게 되었는지는 아래 사진을 보면 된다.



** 쿠키값 변조 대응 방안**


비박스에 터미널을 들어가서 경로를 사진과 같이 var/www/bWAPP로 바꿔주고 gedit를 실행시킨다.



그렇게 실행시키만 다음과 같은 화면이 나오게 되는데 switch문이 걸려있다. 보안 레벨에 따라서 0, 1, 2로 나뉘는데 각각 Low, mediam, high로 나뉘게 된다. 코드를 보게 되면 1,2에는 xss_check가 걸려있는 것을 볼 수 있다. 하지만 0에는 어떠한 것도 걸려있지 않다. 따라서 쿠키값 해킹을 방지하기 위해서는 반드시 htmlspecialchar함수를 사용해서 파라미터값(&data)를 검증해주는 것이 매우 안전한 보안이며 특수문자들이나 자바스크립트 기호들을 html 엔티티로 변환시켜서 악성해커들로부터 방어할 수 있게끔 해야한다.



<보안레벨을 Low로 놓고 실행시켰을 때 화면>




<보안 레벨을 medium로 놓고 실행시켰을 때 화면>


보안레벨을 medium으로 세팅해놓고 실행시키면 쿠키값은 전혀 뜨지 않는 걸 확인할 수 있다. 만약 Low레벨의 스위치문을 1,2와 같게 해준다면 당연히 medium, high와 같은화면이 출력될 수 있다. 항상 쿠키값은 탈취당하지 않게 하는 보안력이 중요하다!


(4) HTML 인젝션 Reflected(POST) 실습


POST 방식은 파라미터가 URL에 안보여서 burp suite툴을 활용해서 파라미터 값을 보고 조작해야한다.


일단 버프스윗을 사용하기 전에 설정을 해주어야 하는데 firefox를 열어서 오른쪽 메뉴탭을 클릭하면 Preferences라는 설정탭이 나온다. 이것을 클릭해준다.



그리고 Advanced를 눌러 Connection쪽에 settings를 클릭하면 처음에는 Use system proxy settings로 설정이 되어 있을 것이다. 이것을 Manual proxy configuration로 바꿔주고 Http Proxy에 127.0.0.1을 입력하고 포트는 8080포트로 잡아주고 Ok버튼을 눌러줘서 설정해준다. 자신의 네트워크로 설정해줌으로써 버프스윗을 사용해서 프록시를 잡아줄 수 있게 설정해주는 것이다.




이렇게 입력해주고 아래 사진을 보게 된다.



이런식으로 burp suite에서 로그들이 보이게 되는데 다른건 큰 차이는 없는데 단지 post방식은 body부분을 요청할때 쓰인다. get방식 같은 경우는 head부분을 요청할 때 주로 많이 쓰이게 된다. firstname쪽을 디코딩한 값으로 넣어주게 되면 다음과 같은 화면이 또 뜨게 된다.



Post방식으로도 body를 조작해서 이렇게 쿠키값을 띄우게 할 수 있다.



포스팅이 좀 길어졌는데 생각보다 웹해킹은 공부할 게 많다. 필자도 처음엔 좀 헷갈려서 이해하려고 많은 노력을 했다. 쿠키값해킹하는법, 서버 이미지 파일 해킹하는법을 주로 포스팅을 해봤다. 2편에서는 데이터베이스 관련해서 해킹하는 법을 써보도록 하겠다.


반응형
LIST

'웹해킹 > Bee-box' 카테고리의 다른 글

SQL 인젝션 기초  (0) 2017.12.26
iframe, ssl 인젝션  (0) 2017.12.25
PHP Command 인젝션 공격  (0) 2017.12.25
HTML 인젝션(2)-Stored  (0) 2017.12.25
칼리리눅스, Bee Box 설치  (0) 2017.12.25
블로그 이미지

만년필석사

,