adsense

글 목록

정보시스템 구조(3-Tier(클라이언트-웹-DB)), 웹 시스템 구동 개요 및 각종 취약점

' 정보시스템 취약점 점검 및 대처 방안 ' 강의 보고 내맘대로 요약한 내용



정보시스템 구조 ( 시기별 )


1. 메인 프레임 시대

정보시스템이 하나의 메인프레임에 모든 데이터, 프로그램 저장

중앙집중형 

메인프레임에 접속하기 위해 더미터미널(연산능력 X)을 이용

원격접속 당연히 불가


해커 입장 (해킹 1세대, 1970~80' 말)

중대형 컴퓨터에 단말기를 붙여 사용하므로 중대형 컴퓨터에 해킹해야 함

해커와 시스템 관리자 간의 대결

(일반 사용자는 해킹에 대해 신경 쓸 필요가 없음)



2. 클라이언트 - 서버 구조

서버의 데이터베이스 시스템과 상호작용 가능한 프로그램이 클라이언트 단말에서 운용

단말기에서 서버에 위치한 응용서비스, 데이터베이스 접속


해커 입장

중대형 컴퓨터에 대한 해킹과 PC에 대한 바이러스 공격

PC에 방화벽과 백신 설치되기 시작


3. 3-Tier 구조 (클라이언트- WAS/웹서버 - DB 서버)

기존 클라이언트와 데이터베이스 서버 사이에 어플리케이션, 웹서버 운영

각각의 업무를 분담하여 처리

클라이언트는 이용자 인터페이스, 웹 브라우저를 통해 이용자 입력 검증 

웹 어플리케이션 서버는 서비스 요청 접수 및 처리 담당

데이터베이스 서버는 데이터 서비스 제공





웹 서버 구성 관련 추가적 내용



 

웹 시스템 구동 개요 및 취약점

(KISA '정보시스템 개발.운영자를 위한 홈페이지 취약점 진단.제거 가이드' 기반)


사용자가 입력할 수 있는 값들은 아래의 그림과 같이 페이지 주소, 

페이지 주소에 사용되는 파라미터, 검색 폼, 로그인 폼, 게시판 관련 입력 폼이다.



사용자가 입력 폼을 입력 후 게시글을 등록하고자 할 경우

웹서버로 아래와 같은 패킷이 전송된다.

1. 게시글 제목 필드로 패킷의 POST 데이터 중 'title' 영역으로 전송     

2. 게시글 작성자 필드로 패킷의 POST 데이터 중 'name' 영역으로 전송

3. 게시글 공개여부 필드로 GET 방시그로 URL 파라미터(gubun)로 전송

4. 게시글 내용 필드로 패킷의 POST 데이터 중 'content' 영역으로 전송

5. 게시글 비밀번호 필드로 패킷의 POST 데이터 중 'pwd' 영역으로 전송




 서버에서 사용자 입력값을 처리하는 과정 

1. 사용자가 서버로 전달되는 파라미터 값 변경 

2. 전달된 파라미터 값(사용자 입력값)을 변수로 저장 

3. 저장된 변수를 이용하여 파라미터 값 검증(공백, 특수문자 필터링 등) 

4. 사용자 세션 값을 이용하여 사용자 검증(사용자 인증) 

5. 파라미터 값에 따른 페이지 출력 

6. 사용자에게 웹 페이지 응답

 


웹서버로 전송된 사용자 패킷은 웹 서버에서 내부적 프로세스에 따라서 

각 입력값들을 검증하고 데이터베이스에 보낸다.



 

이 중 파라미터 값 검증, 사용자 검증 부분에 문제가 있는 경우,  


파라미터 변조 및 사용자 인증 우회 등의 공격을 수행할 수 있다. 


이러한 문제가 발생하지 않도록 하기 위해 시큐어 코딩을 적용해야 한다. 

 





웹 보안 취약점 


웹 보안 취약점은 크게 두가지로 나누어 생각해 볼 수 있다.


  1. 1. 웹 응용 프로그램 개발 단계에서 보안 고려없이 개발되어 발생하는 

  2.    소스코드 보안 취약점 



  1. 2. 웹 서버 보안설정 미흡으로 발생하는 웹 서버 보안 취약점 


이와 관련한 내용은 아래 링크에서 

1. 입력값 검증 부재 관련 취약점 조치방법

2. 취약한 접근 통제 취약점 조치방법

3. 취약한 인증 취약점 조치방법

4. 민감한 데이터 노출 취약점 조치방법

5. 잘못된 보안 구성