본문 바로가기

외부 교육 정리/서울여대 정보보호 영재교육원

웹 취약점 탐지 및 공격/방어 (라온시큐어 보안기술교육팀 - 조주봉 선생님)

링크 복사 가능. 

복사 - 붙여넣기 금지

아래 모든 내용은 서울여대에서 받은 프린트를 바탕으로 작성.

모든 저작권은 라온시큐어와 서울여대에 있음.



목차

HTTP Protocol

Protocol

Method

Cookie/Session

Client Side Attack

Cross Site Script (XSS)

CSRF

Phishing

Server Side Attack

SQL Injection

Xpath Injection

Command Injection

File Upload

File Download

Inclusion Attack

Other Attack



HTTP Protocol

- www 상에서 주로 HTML 문서를 주고 받는데 사용되는 어플리케이션 계층의 요청/응답 프로토콜

- 1996년 1.0 버전, 1999년 1.1 버전 발표

- HTTP 버전 1.1 에서는 가상호스트, 지속적인 연결 등 추가

- 텍스트 형태의 프로토콜



요청 형태


[Method] [URL] [HTTP_Version]

[Header Name]: [Header_Value]


Ex)

GET / HTTP/1.1

Host: www.naver.com


응답 형태

[HTTP_Version] [Status_Code] [Ex_Stat (코드설명) ]
[Header Name]: [Header_Value]
[Body]

Ex)
HTTP/1.1 200 OK
Date: Mon, ~~~~~~
Server: ~~~~


연결지향 (connection-oriented)
- 지속적인 연결 상태 유지
- 인증 후 지속적인 신뢰 관계
- 메신저 등에서 사용

비 연결 지향 (connectioniess / Stateless)
- 요청 / 응답 후 종료
- HTTP 프로토콜에서 사용
- 로그인 유지 등을 위해 다른 수단 필요



URL Structure

http://server[:port]/path/program?query_string

└ field1=value1&field2=value2...

? : Query String 구분자

& : 각 변수의 구분자

= : 변수 데이터 대입

- URL encoding

[A-Z][a-z].,-~_ 제외

Space : %20 or +

& : %26 ( --> 16진수로 표현)


Request Method

GET

일반적으로 특정 리소스를 요청하는데 사용. (넘기는 용도로도 사용됨)


HEAD

요청한 데이터에 대해 리소스는 반환하지 않고 헤더만 요청.


POST

일반적으로 특정 리소스를 서버로 전송할 때 사용.


OPTIONS

웹 서버에서 지원하는 METHOD를 알려줌


DELETE

요청 리소스 삭제


TRACE

요청한 Request를 그대로 반환


PUT

지정된 리소스에 전달된 데이터 저장


CONNET

Proxy와 함께 터널링 목적으로 사용


응답코드

1xx

100 : Continue

2xx

200 : OK

201 : Created

202 : Accepted

3xx

301 : Moved Permanently

302 : Found

4xx

400 : Bad Request

401 : Unauthorized

403 : Forbidden

404 : Not Found

5xx

500 : Internal Server Error


GET/POST

GET

QUERY_STRING

값을 넘겨줄 때: http://domain.com/index.php?id=test&pass=test

값을 받아올 때: 

GET /index.php?id=test&pass=test HTTP/1.1

Host: domain.com


POST

STDIN

값 받을 때

<form method=post action="index.php">

<input type="text" name="id" value="test">

<input type="text" name="pass" value="test">

<input type="submit">

</form>

값 요청 시

POST /index.php HTTP/1.1

Host: domain.com

Content-Lenth: 17


id=test&pass=test



Cookie & Session

Cookie

Client 에 정보 저장

서버 부하를 줄이는 용도로도 사용

조작 가능

Set-Cookie 헤더를 통해 전송 (Ex. Set-Cookie: name=value)


Session

Server 에 정보 저장

Key는 Cookie로 전송

인증 정보에 많이 사용됨

Session key는 Cookie(Set-Cookie)를 통해 전달 됨

Session 키 값은 유추할 수 없어야 함.


Script Language - Client Side

자바 스크립트 

클라이언트 측에서 실행되는 객체 기반의 스크립트 프로그래밍 언어

VB 스크립트

마이크로소프트에서 개발한 액티브 스크립트 언어

J 스크립트

인터넷 익스플로러에 쓰이는 스크립트 프로그래밍 언어

HTML

인터넷에서 웹페이지를 표시하기 위해 사용

웹 브라우저에 의해 해석

문서의 내용을 접근하고 조작하기 위한 표준으로 DOM을 사용

단점 - 정적이며 데이터 교환에는 부적합함.




Script Language - Server Side

ASP

마이크로 소프트에서 개발한 서버 측 스크립트 언어


ASP.NET (C#,VBScript)

마이크로 소프트에서 개발한 웹 어플리케이션 프레임 워크

2002 년 1월 닷넷 프레임 워크 버전 1.0 과 함께 처음 출시됨.


PHP

동적 웹 페이지를 작성할 수 있는 서버 측 스크립트 언어


JSP

HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에게 돌려주는 서버 측 스크립트 언어


CGI

HTTP 프로토콜의 일부이며 서버와 응용 프로그램 간에 데이터를 주고 받기 위한 방법이나 규약.