luvit

웹 애플리케이션 보안 & 핵심 방어 메커니즘 본문

Hacking/Web

웹 애플리케이션 보안 & 핵심 방어 메커니즘

HongJun Choi 2017.07.03 23:15

HTTP는 가볍고 비접속 기반이다.


일반적으로 알려진 취약점

- 인증 실패 : 이 범주의 취약점은 애플리케이션의 로그인 메커니즘상의 다양한 취약점을 아우르는 것으로, 쉽게 추측 가능한 비밀번호를 허용한다든지 무차별 대입 공격을 허용하거나 인증을 우회하는 것을 허용하는 취약점이 포함된다.

- 접근 제어 실패 : 이 범주는 애플리케이션이 민감한 데이터나 기능에 대해 불법적인 사용자의 접근을 제대로 제어하지 못하는 것으로 공격자가 서버 내의 다른 사용자의 민감한 데이터를 열람한다든지 서버 관리자용 업무를 임의로 수행하는 것을 차단하지 못하는 것을 가라킨다.

- SQL 인젝션 : 이 취약점은 공격자가 웹 애플리케이션에 특별히 조작된 입력 값을 제공해 해당 애플리케이션이 뒷단의 데이터베이스와 연동하는 과정에서 공격자가 원하는 임의의 데이터를 가져오게 한다든지 애플리케이션 로직을 건너뛴다든지 데이터베이스 서버로 하여금 공격자가 원하는 명령어를 수행하게끔 하는 것을 가리킨다.

- 크로스사이트 스크립팅 : 이 취약점은 공격자가 대상 사이트의 다른 사용자로 도용 가능하게 하거나, 웹 사이트에 방문하는 사용자들에게 악의적인 공격을 수행하도록 하는 취약점이다.

- 정보 노출 : 이 취약점은 애플리케이션이 내부에서 발생하는 에러 처리의 결함이나 다른 비정상적인 기능으로 인해 민감한 정보를 공격자에게 누출함으로써 공격자가 공격을 위한 정보를 수집하는 데 도움을 주는 것을 가리킨다.


SSL은 웹 서버와 사용자의 브라우저 사이에서 주고받는 데이터의 기밀성과 무결성을 보호하는 기술이다. 그러나, SSL은 애플리케이션의 서버나 클라이언트 컴포넌트를 직접 공격하는 것에는 아무런 방어책이 되지 못한다.


조작된 입력 값 제공하는 예

- 특정 제품을 훨씬 싼 값에 사기 위해 HTML 폼 필드에 보이지 않는 값으로 주어진 해당 제품의 가격 값을 변조하는 것.

- 다른 인증된 사용자의 세션을 도용하기 위해 HTTP 쿠키 안에 포함돼 전달되는 세션 토큰을 조작하는 것.

- 애플리케이션 처리상의 로직 결함을 악용하기 위해 정상적으로 제공될 특정 값을 제거해 버리는 것.

- 악의적인 데이터베이스 쿼리를 강제로 삽입해서 민감한 데이터에 접근이 가능하게 내부에 있는 데이터베이스에 의해 처리될 입력 값을 조작하는 것.


SSL은 공격자가 이와 같은 조작된 입력 값을 서버에 제공하는 것을 막지 못한다. 그저, 네트워크상에 있는 다른 사용자가 해당 통신 내용을 보거나 변조하지 못하는 것만을 의미한다. 공격자들은 SSL 터널의 자기 쪽 끝단을 완전히 제어할 수 있기에 공격자는 원하는 입력 값을 반대쪽 SSL 터널을 통해 마음대로 전송할 수 있다.


웹 애플리케이션에서 발생하는 보안 문제점에 대한 근본적인 원인은 신뢰할 수 없는 사용자의 입력 값에 기인한다.


웹 애플리케이션 제어의 세 가지 보안 메커니즘

- 인증

- 세션 관리

- 접근 제어


토큰이란 애플리케이션이 세션에 나타내는 독특한 문자열을 말한다. 세션 토큰을 전송하는 많은 애플리케이션이 해당 사용자의 HTTP 요청을 처리하기 위해 히든 필드나 URL 쿼리를 사용하고 있지만 세션 토큰을 전송하는데 있어서 표준 방법은 HTTP 쿠키다.


'Hacking > Web' 카테고리의 다른 글

웹 애플리케이션 기술  (0) 2017.07.04
웹 애플리케이션 보안 & 핵심 방어 메커니즘  (0) 2017.07.03
0 Comments
댓글쓰기 폼