Home 11장 웹 콘텐츠에서 사용하는 기술
Post
Cancel

11장 웹 콘텐츠에서 사용하는 기술

11.1 웹 공격 기술

주로 공격이 대상이 되는 것은 HTTP를 사용하는 서버와 클라이언트 그리고 서버 상에서 동작하는 웹 애플리케이션 등의 리소스이다. 인터넷에서 벌어지는 공격의 대부분이 웹 사이트를 노린 것이다.

  1. HTTP에는 보안 기능이 없다 : HTTP는 구조가 단순한 프로토콜로 현재의 웹 사이트 대부분에서는 인증, 세션관리, 암호화 등의 보안 기능이 필요하지만 HTTP에는 없다.
  2. 리퀘스트는 클라이언트에서 변조 가능 : HTTP 리퀘스트의 내용은 모든 클라이언트에서 자유롭게 변경하고 변조할 수 있다.
  3. 웹 애플리케이션에 대한 공격 패턴
    • 능동적 공격 : 공격자가 직접 웹 애플리케이션에 액세스해서 공격 코드를 보내는 타입의 공격이다. (예. SQL 인젝션, OS 커맨드 인젝션)
    • 수동적 공격 : 함정을 이용해서 유저에게 공격 코드를 실행시키는 공격이다. (예. XSS, CSRF)

11.2 출력 값의 이스케이프 미비로 인한 취약성

웹 애플리케이션의 보안 대책을 실시하는 장소를 크게 클라이언트에서 체크, 웹 애플리케이션(서버)에서 체크로 나눌 수 있다.

  • 클라이언트 측에서 체크 : 대부분 JavaScript를 사용한다. 그러나 변조되거나 무효화될 가능성이 있기 때문에 근본적인 보안 대책으로 적합하지 않다.
  • 웹 애플리케이션 측에서 체크 : 입력 값 체크는 근본적인 보안 대책으로 적합하지 않고, 단지 제대로된 값인지 아닌지에 대한 체크, 문자코드의 체크등을 실시한다. 출력할 때 체크는 값을 이스케이프 처리하는 출력 값의 이스케이프가 보안 대책으로 중요하다.

1)크로스 사이트 스크립팅(XSS) : XSS는 취약성 있는 웹 사이트를 방문한 사용자의 브라우저에서 부정한 HTML 태그, JavaScript 등을 동작시키는 공격이다. 주로 가짜 입력 폼 등에 의해 유저의 개인 정보를 도둑 맞거나, 스크립트에 의해 유저의 쿠키값이 도둑 맞거나 가짜 이미지, 문장등이 표시되는 경우가 있다.

2)SQL 인젝션 : 웹 애플리케이션을 이용하고 있는 데이터베이스에 SQL을 부정하게 실행하는 공격이다. 데이터베이스 내의 데이터 부정 열람이나 변조, 인증회피, 데이터베이스 서버를 경유한 프로그램 실행 등의 영향을 받을 수 있다.

3)OS 커맨드 인젝션 : 웹 애플리케이션을 경유하여 OS 명령을 부정하게 실행하는 공격이다. 쉘을 호출하는 함수가 있는 곳에서 발생할 가능성이 있다. 윈도우나 리눅스 등의 커맨드 라인에서 프로그램을 기동하는 쉘에 대해 커맨드를 보낼 수 있어 다양한 프로그램을 실행할 수 있다.

4)HTTP 헤더 인젝션 : 공격자가 리스폰스 헤더 필드에 개행 문자 등을 삽입함으로써 임의의 리스폰스 헤더 필드나 바디를 추가하는 수동적 공격이다.

5)메일 헤더 인젝션 : 웹 애플리케이션의 메일 송신 기능에 공격자가 임의의 To 및 Subject 등의 메일 헤더를 부정하게 추가하는 공격

6)디렉토리 접근 공격 : 비공개 디렉토리의 파일에 대해서 부정하게 디렉토리 패스를 가로질러 액세스하는 공격이다. ‘패스 트래버설’이라 부르기도 한다.

7)리모트 파일 인틀루션 : 스크립트의 일부를 다른 파일에서 읽어올 때 공격자가 지정한 외부 서버의 URL을 파일에서 읽게 함으로써 임의의 스크립트를 동작시키는 공격이다.

11.3 웹 서버의 설정이나 설계 미비로 인한 취약성

1)강제 브라우징 : 웹 서버의 공개 디렉토리에 있는 파일 중에서 공개 의도가 없는 파일이 열람되게 되는 취약성이다. 고객 정보등 중요 정보 누설, 본래 액세스 권한이 있는 사용자에게만 표시하지 않는 정보 누설, 어디에서도 링크되지 않은 파일 누설 등의 영향을 받을 수 있다.

2)부적절한 에러 메시지 처리 : 공격자에게 유익한 정보가 웹 애플리케이션의 에러 메시지에 포함된다는 취약성이다. 웹 애플리케이션에 의한 에러 메시지, 데이터베이스 등의 시스템에 의한 에러메시지 등

3)오픈 리다이렉트 : 지정한 임의의 URL로 리다이렉트 하는 기능이다. 리다이렉트되는 곳의 URL에 악의가 있는 웹 사이트가 지정된 경우 유저가 그 웹사이트로 유도되는 취약성과 연결된다.

11.4 세션 관리 미비로 인한 취약성

1)세션 하이잭 : 공격자가 어떠한 방법으로 유저의 세션 ID를 입수해서 악용하는 것으로, 유저로 위장하는 공격이다. 세션ID를 입수하는 방법으로는 부적절한 생성 방법에 의한 세션ID 추측, 도청이나 XSS 등에 의한 세션 ID 도용, 세션 고정 공격에 의한 세션ID 강제가 있다.

2)세션 픽세이션 : 공격자가 지정한 세션 ID를 유저에게 강제적으로 사용하게 하는 공격으로 수동적 공격이다.

3)크로스 사이트 리퀘스트 포저리 : 인증된 유저가 의도하지 않은 개인 정보나 설정 정보 등을 공격자가 설치해 둔 함정에 의해 어떤 상태를 갱신하는 처리를 강제로 실행시키는 공격으로 수동적 공격이다.

11.5 기타

1)패스워트 크래킹 : 패스워드를 논리적으로 이끌어내서 인증을 돌파하는 공격으로 네트워크 경유로 패스워드 시행, 암호화된 패스워드를 해독하는 등의 방법이 있다.

  • 네트워크 경유로 패스워드 시행
    • 무차별 대입 공격 : 비밀번호 시스템에서 취할 수 있는 모든 패스워드 후보를 시험해서 인증을 돌파하는 공격
    • 사전 공격 : 사전에 패스워드 후보를 준비해 두고 그것을 시험해 봄으로써 인증을 돌파하는 공격
  • 암호화된 패스워드를 해독 : 패스워드를 어떠한 수단으로 훔쳤다하더라도 암호화되어 있기 때문에 이를 이용하기 위해서는 해독하는 등 평문을 손에 넣어야 한다. 평문을 도출하는 방법으로는 다음과 같이 있다.
    • 무차별 대입 공격/사전 공격에 의한 유추 : 암호화에 해시 함수를 사용한 경우 패스워드 후보에 같은 해시 함수를 적용하여 패스워드를 유추하낟.
    • 레인보우 테이블 : 평문과 그에 대응하는 해시 값으로 구성된 데이터베이스 테이블이다. 사전에 거대한 테이블을 만들어 무차별 대입 공격/사전 공격 등에 걸리는 시간을 단축하는 테크닉이다.
    • 열쇠 입수 : 암호화된 키를 입수하는 것
    • 암호 알고리즘의 취약성

2)클릭 재킹 : 투명한 버튼이나 링크를 함정으로 사용할 웹 페이지에 심어 두고, 유저에게 링크를 클릭하게 함으로써 의도하지 않은 콘텐츠에 액세스 시키는 공격이다.

3)DoS 공격 : 서비스 제공을 정지 상태로 만드는 공격이다. 주로 액세스를 집중시켜 부하를 걸어 리소스를 다 소비하게 해 사실상 서비스를 정지 상태로 만들거나, 취약성을 공격해 서비스를 정지시키는 방법이 있다.

4)백도어 : 제한된 기능을 정규 절차를 밟지 않고 이용하기 위해 설치된 뒷문이다.

  • 개발 단계에 디버그용으로 추가한 백도어
  • 개발자가 자기 자신의 이익을 위해 추가한 백도어
  • 공격자가 어떠한 방법을 써서 설치한 백도어
This post is licensed under CC BY 4.0 by the author.

10장 웹 콘텐츠에서 사용하는 기술

1장 테스트 주도 개발