웹 프로토콜과 로그의 이해 ★ 웹 프로토콜 ★ 통신 절차 ★ HTTP Request ★ HTTP Response
학습 포인트 1. HTTP 구조(Request, Response)의 이해 2. 툴(파로스)사용법 – 취약점 분석의 기본
★ 웹 프로토콜 - 통신절차(1) 사용자는 웹 브라우저를 통해 주소를 입력, 그러면 웹 브라우저에는 요청한 페이지가 로딩 HTML 파일 그림 파일 그림. HTTP 송수신 과정
★ 웹 프로토콜 – 통신절차(2) TCP(HTTP)는 3가지 절차를 통해 통신이 이루어진다. 세션 연결 ( 나는 너와 통신하고 싶다. ) 데이터 송.수신 ( 웹 브라우저에 페이지 로딩 ) 세션 종료 ( 통신 종료 ) …. HTML 페이지 1개 .JS(자바스크립트)파일 등등 그림 파일
★ 웹 프로토콜 – 통신절차(3) HTTP 세션연결 그림. HTTP 세션연결 및 데이터 전송 HTTP 데이터송수신
★ 웹 프로토콜 – 통신절차(4) 그림. HTTP 종결 세션 종료
★ 웹 프로토콜 – 통신절차(5) Control Flags ( 연결에 대한 제어 정보 ) 그림. TCP 헤더 URG : 다른 패킷에 비해 가장 먼저 긴급하게 처리를 요청하기 위한 BIT ACK : 잘 받았다는 메시지 처리를 위한 BIT PSH : 빠른 처리 요구를 위한 BIT ( 모든 데이터가 전송되었음 ) (일반적으로 모든 TCP 메시지를 주고 받을 때 기본 값으로 들어감) RTS : 강제로 세션을 끊기 위한 BIT SYN : TCP 세션을 시작하기 위한 BIT FIN : 정상적인 절차로 세션을 끊기 위한 BIT
★ 웹 프로토콜 – HTTP Request(1) Header 웹 브라우저 웹 서버 Body HTTP Response(수신) Header 웹 브라우저 웹 서버 Body 그림. HTTP 송, 수신
★ 프로토콜 – HTTP Request(2) ○ HTTP Request 에는 무엇이 포함되어 있는가 ?
★ 웹 프로토콜 – HTTP Request(3) ① GET /index.html HTTP/1.1 // 요청 URL 정보(메소드, 페이지) 및 HTTP 버전 ② user-agent: MSIE 6.0; Windows NT 5.0 // 사용자 웹 브라우저 종류 ③ accept: text/html; */* // 요청 데이터 타입 ④ cookie: name = value // 쿠키(인증 정보) ⑤ referer: http://www.bbb.com // 경유지 URL ⑥ host: www.evenstar.co.kr // 요청 도메인
★ 웹 프로토콜 – HTTP Request(4) ○ GET Method 2,083 정도의 길이 데이터만을 처리( 게시판 글 입력 처리 불가 등 ) Method 구조 설 명 GET GET [request-uri]?query_string HTTP/1.1 Host:[Hostname] 혹은 [IP] GET 요청 방식은 요청 URI(URL)가 가지고 있는 정보를 검색하기 위해 서버 측에 요청하는 형태이다. ○ HTTP GET 구조 (URI + Query String) http://www.evenstar.co.kr/webpage/biglook_a.html ( http header에 포함 ) URI http://www.evenstar.co.kr/wizboard.php?BID=notice ( http header에 포함 ) URI Query String
★ 웹 프로토콜 – HTTP Request(5) ○ GET Method GET 요청 메시지(Body)는 없음
★ 웹 프로토콜 – HTTP Request(6) ○ POST Method 길이 제한이 없어 많은 입력 데이터를 처리( 게시판 입력 글 처리 가능 ) Method 전송 형태 설 명 POST POST [request-uri] HTTP/1.1 Host:[Hostname] 혹은 [IP] Content-Length:[Bytes] Content-Type:[Content Type] [query-string] 혹은 [데이터] 게시판 등과 같은 폼 데이터 및 CGI 프로그램으로 구성된 페이지를 위해 처리하기 위해 POST 방식으로 전송하게 되며, 웹 브라우저와 시스템 간 데이터 처리로 웹 브라우저에는 페이지 정보만을 확인할 수 있다. ○ HTTP POST 구조 (URI + Query String) http://www.evenstar.co.kr/wizboard.php ( http header에 포함 ) URI BID=notice ( http Body에 포함 ) Query String
★ 웹 프로토콜 – HTTP Request(7) ○ POST Method POST 요청(헤더) POST 요청(몸체) [주의] GET Method와의 차이는 무엇인가?
★ 웹 프로토콜 – HTTP Response(1) ① HTTP/1.1 OK 200 // 프로토콜 버전 및 응답코드 ② Server: NCSA/1.4.2 // 웹 서버 배너 정보 ③ Content-type: text/html // MIME타입 ④ Content-length: 107 // HTTP Body 사이즈 ⑤ <html><head></head> // 페이지 구성 정보(HTML태그 등) <Title>http protocol</Title> <body> The understanding of http protocol </body></html> Header 빈 공백 1줄 Body HTTP Header 포함 범위 : (1), (2), (3), (4) HTTP Body 포함 범위 : (5)
★ 웹 프로토콜 – HTTP Response(2) HTTP Status Code(응답코드) 종류 요청( get /index.html ) 수신(응답코드) 웹 브라우저 웹 서버 200번(요청성공) 201번(원격지서버에 파일 생성) 302번(페이지이동) 304번(로컬 캐쉬정보이용) 401번(인증실패) 403번(접근금지) 404번(페이지없음) 500번(서버에러)
★ 프록시 툴을 이용한 HTTP분석(1) 그림. HTTP분석 및 테스트
★ 프록시 툴을 이용한 HTTP분석(2) 파로스는 HTTP분석 (프록시 기능) 및 취약점 분석을 보유 * 파로스 운영 요구 사항 ① 자바 1.4 이상 버전 설치 ( 파로스는 자바 어플리케이션 ) ② ant(자바 컴파일러) 설치 ( 파로스 소스 수정 및 컴파일 ) ③ 운영 환경을 위한 시스템 환경 변수 설정 ④ 환경 변수 설정 적용을 위한 시스템 리부팅
★ 프록시 툴을 이용한 HTTP분석(3) ① 자바 설치 여부 확인 C:\>java –version Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02) Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode) [주의] 위와 같은 메시지가 없는 경우, java 설치되지 않음
★ 프록시 툴을 이용한 HTTP분석(4) ② ant 설치 여부 확인 C:\>ant Buildfile: build.xml does not exist! Build failed [주의] 위와 같은 메시지가 없는 경우, ant 설치
★ 프록시 툴을 이용한 HTTP분석(5) ③ 시스템 환경 설정 – 자바 설정 그림. 자바 설정
★ 프록시 툴을 이용한 HTTP분석(6) ③ 시스템 환경 설정(2) 2) ant 위치 지정 그림. ANT 설정
★ 프록시 툴을 이용한 HTTP분석(7) ④ 시스템 리부팅 후, 재 확인 C:\>java –version Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02) Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode) C:\>ant Buildfile: build.xml does not exist! Build failed
★ 프록시 툴을 이용한 HTTP분석(8) http://www.parosproxy.org/ ○ 파로스 설치 – 소스 및 실행파일 다운로드 및 설치 http://www.parosproxy.org/ 그림. 파로스 다운로드
★ 프록시 툴을 이용한 HTTP분석(9) 그림. 파로스의 운영(프록시)구조
★ 프록시 툴을 이용한 HTTP분석(10) ○ 파로스의 중요 모듈 Crawl : URL구조를 파악하고 페이지 정보를 수집하는 단계 Scan : 수집된 정보를 바탕으로 취약점 패턴을 전송하는 단계 Report : 취약점 결과를 제공하는 단계 Proxy : HTTP 프록시 구조 제공
★ 프록시 툴을 이용한 HTTP분석(11) ○ 파로스 프록시 설정 그림. 파로스 포트 설정
★ 프록시 툴을 이용한 HTTP분석(12) ○ 웹 브라우저 프록시 설정 주의할 점은 파로스의 프록시 포트와 동일해야 한다. 그림. 웹 브라우저 프록시 설정
★ 프록시 툴을 이용한 HTTP분석(13) 그림. 파로스 운영 설정 테스트 HTTP Request HTTP Response 수집된 구조 그림. 파로스 운영 설정 테스트
★ 프록시 툴을 이용한 HTTP분석(14) ○ 파로스 프록시를 이용한 데이터 변조 방법(1) http://www.elated.com/res/File/articles/development/javascript/ form-validation-with-javascript/simple_form.html 그림. 파로스를 이용한 데이터 변조(1)
★ 프록시 툴을 이용한 HTTP분석(15) ○ 파로스 프록시를 이용한 데이터 변조 방법(1) Trap Request : 웹 브라우저에서 웹 서버로 전송되는 데이터 가로채기 Trap Response : 웹 서버에서 웹 브라우저로 전송되는 데이터 가로채기 프록시 기능 그림. 파로스를 이용한 데이터 변조(2)
★ 프록시 툴을 이용한 HTTP분석(16)