1. Proxy 서버란?
-> 컴퓨터 네트워크에서 다른 서버 상의 자원을 찾는 클라이언트로부터 요청을 받아 중계하는 서버이다
-> 클라이언트와 서버 사이에 있는 '대리인' 이다.
-> 요청된 내용들을 캐시를 이용하여 저장한다. -> 전송시간 절약
다음 사진과 같이 Client가 request를 Server에게 전달하고,
Server가 response를 Client에게 전달하는 과정에 Proxy서버가 대리인 역할을 해줌으로써,
Proxy 서버 안에 전달된 정보들이 담겨져있게 된다.
2. 프록시 서버의 역할
1) 프록시 서버 측에서 위험이 예상되는 웹 콘텐츠 및 악성코드 필터링이 가능하다.
-> 클라이언트 측의 보안 향상
2) 내부 통신과 외부 데이터 접근을 통제 할 수 있다.
-> ex) 원치 않는 사이트 차단
3) 자신의 IP 기록이 남지 않게 할 수 있다.
4) 보안 및 통제를 뚫고 나가기 위해 차단 우회가 가능하다.
-> 이 점을 악용하는 사람들이 많기 때문에, 많은 사이트에서 프록시 IP 차단
3. 프록시 패킷 접근, 조작
1) Proxy 서버 생성
위에 사진과 같이 Proxy서버 생성을 하는 툴을 이용해도 되지만,
인터넷에서 '인터넷옵션 -> 연결 -> LAN 설정' 을 통해서도 Proxy서버를 생성 할 수 있다.
여기서, Host에 '127.0.0.1' 은 시스템 자기 자신을 의미하는 루프 백(loop back) 주소이다.
다음과 같이 proxy server를 생성한 뒤, 'on' 상태로 만들면 웹 프록시 툴을 사용 할 수 있다.
2) 웹 프록시 툴을 이용해 프록시 패킷에 접근
다음 툴은 'burp suite' 라고 하는 툴인데, 대표적인 웹 프록시 툴이다.
이 툴을 이용하여 프록시 서버에 담긴 데이터들(파라미터, 헤더 등등)을 조작 할 수 있다.
이 툴을 'on'상태로 하려면 'intercept is off'를 눌러 'intercept is on' 상태로 만들어준다.
그런 상태에서 여러 조작들을 한 뒤 'Forward'를 누르면 조작된 정보가 서버로 전송이 된다.
'intercept is on'을 다시 누르면 'intercept is off' 상태가 되는 데,
이때는 패킷에 담긴 데이터를 확인하지 않은 채 바로 전송이 된다.
데이터를 조작하는 방식은 여러가지이다.
다음과 같은 화면에서 바로 조작해도 되지만,
'Action'을 누르면 여러 카테고리들로 보낼 수 있다.
개인적으로 데이터 조작에 활용하기 편하고 간편해서 'intruder'랑 'repeater'를 자주 쓴다.
그래서 예시로 intruder와 repeater를 설명하고자 한다.
예를 들어, intruder의 경우,
'Action'에서 'send to intruder'를 클릭하고 'intruder' 카테고리를 클릭하면,
다음과 같이 조작할 값들을 선택 하도록 나와있다.
조작하고 싶은 값들을 클릭 한 뒤 Payloads를 클릭하면
이런 화면이 나온다.
'Payload type' 에서 선택한 값들을 어떤 형식으로 조작 할 것인지 선택 할 수 있다.
(예를 들어서, 영문자 2개 숫자 2개의 조합으로 설정이 되면 영문자 2개 숫자 2개인 모든 조합을 값에 넣어서 실행을 시킬 수 있는 type이 있다.
aa00부터 .... zz99까지 ....
하지만 경우의 수가 너무 많은 규칙들은 그만큼 시간이 엄청 많이 걸린다.)
지금 선택되어 있는 건 'Simple list' 인데, 사용자가 원하는 값들을 넣은 뒤 'Add'를 누르면 그 원하는 값들을 다 조작하고 싶은 값에 넣는다.
그러고 (사진엔 짤렸지만) 오른쪽 위에 'start to attack' 버튼을 누르면 실행이 된다.
예를 들어서, 'a, b, v, d, f, e' 의 값을 'Add'를 눌러 다음과 같이 집어넣게 되면,
전 사진에 나와있는 화면에서 선택된 test의 값과 PHPSESSID의 값에 'a, b, v, d, f, e' 라는 값들을 넣어준 뒤 서버의 결과를 보여준다.
이렇게!!!
'repeater' 의 경우,
'Action' 을 눌러 'send to repeater'를 누른 뒤 'repeater' 카테고리를 클릭하면,
다음과 같은 화면이 나온다.
'Request' 라고 써진 화면 아래는 데이터가 repeater에 send가 된 상태이다.
여기서 값들을 조작하고 싶은 대로 조작을 한 뒤, 'Go' 를 누르면 'Response' 라고 써진 화면 아래에서
조작 된 후에 조작된 데이터를 서버에다 전송하면 결과가 어떻게 나올지를 미리 볼 수 있다.
이 외에도 데이터를 조작 하는 데에는 많은 방식들이 있다.
이렇게 프록시 서버를 생성하고 웹 프록시 툴을 사용하면서 프록시 패킷에 접근하여 데이터 조작을 할 수 있다.
그러므로, 해킹을 할 때에도(예 : SQL Injection 등) 활용이 가능하다.
4. proxy 서버 조작 활용 - SQL Injection (webhacking 3)
webhacking 3번에서 로직을 풀면 다음과 같은 칸이 나온다.
일단 값을 모르니까 아무 값이나 쳐보자.
다음과 같이 빈 칸에 기입한 글자들이 결과 값으로 화면에 나온다.
다음 사진에서 Payload는 answer와 id의 값을 나타낸 것이다.
여기서 answer의 원래 정해진 값이 '1010100000011100101011111' 이었으나, 값을 '1'이라고 해도
결과 값으로 나오게 되었다.
이것을 보고 answer의 값을 injection하면 된다는 것을 알았다.
answer의 값을 저런식으로 바꿔주면 풀리는 문제로 추측이 가능하다.
그런데 answer의 값을 저렇게 바꿔주니까 no hack이라는 문구가 나왔다.
그래서 필터링을 우회하기 위해 or 대신 ||를 써주면 된다.
created by 사실산타는없거든A
'WEB > Web' 카테고리의 다른 글
페이지 이동 Loction.href (0) | 2017.11.20 |
---|---|
base64 (0) | 2017.11.06 |
자바스크립트 용어 (0) | 2017.10.28 |
아스키 코드(ASCII) (0) | 2017.10.16 |
javascript indexOf 함수와 lastindexOf 함수 (0) | 2017.09.25 |