본문 바로가기

Hacking/OWASP

OWASP Top10 2013 - A10. Unvalidated Redirects and Forwards (인가되지 않은 리다이렉트와 포워드) 인가되지 않은 리다이렉트와 포워드 정의 웹 어플리케이션이 리다이렉트와 포워드 기능을 사용하는데 이를 검증하지 않았을 때 나타날 수 있는 공격이다. 리다이렉트 브라우저가 응답을 받은 후 다시 보낼때 새로운 URL (이동할 URL)을 포함하여 요청하는 방식이다. 완전히 새로운 요청을 하는 것이기 때문에 Requset 속성이 가지고 있는 객체는 리다이렉트 발생시 추가적으로 발생한 왕복 처리를 해야 하기 때문에 Forward 보다는 느린 방식이다. 특히 URL에 파라미터 값이 보여지기 때문에 중요한 정보는 포함되지 않도록 유의해야 한다. 포워드 클라이언트가 웹 브라우저에서 요청시 포워드는 리다이렉트와 달리 클라이언트에게는 보여지지 않는 페이지에서 작업을 하게 된다. 따라서 클라이언트는 페이지의 이동을 알아챌 수.. 더보기
OWASP Top 10 2013 - A9. Using Components with Known Vulnerabilities (알려진 취약점이 있는 컴포넌트 사용) 알려진 취약점이 있는 컴포넌트 사용 정의 말 그대로 취약점이 있는 컴포넌트를 사용한다는 것이다. 여기서 컴포넌트란 쉽게 말해서 객체 지향(C++, Java) 언어에서의 Class와 유사한 것으로 어떤 기능을 수행하는 것으로 생각 할 수 있다. 다만 개인적인 생각으로는 컴포넌트 뿐만 아니라 서버에서 사용되는 모든 서비스와 프로그램들에 대한 취약점도 포함시켜 말할 수 있다고 생각한다. 즉, 이 취약점을 짧게 요약하자면 어떤한 사유로 인해 최신 버전의 업데이트를 설치하지 않고 계속 구버전을 사용하는 것으로 말할 수 있다. 발생 원인 사용 중인 컴포넌트, 서비스, 프로그램들에 대한 지속적인 유지 관리를 하지 않고 보안 업데이트를 설치하지 않았기 때문에 발생한다. * 항목 자체가 "알려진 취약점이 있는 ~~" 이.. 더보기
OWASP Top 10 2013 - A8. CSRF CSRF 정의 공격자는 변조된 HTTP 요청을 통하여 이미지 태그, XSS이나 기타 방법들을 통하여 피해자가 변조된 HTTP 요청을 하도록 속인다. 만약 피해자가 이미 해당 웹 사이트에 대해 인증이 된 상태라면, 재인증 절차 없이 피해자의 권한으로 공격자의 의도되로 공격이 성공된다. 다시 말하면 공격자는 인가된 피해자의 권한으로 악성 스크립트를 서버에 요청하고, 서버는 요청에 대한 처리를 하게 되는 것이다. 발생 원인 공격자가 자신이 요청한 특정 동작에 대해 전체 과증이 예측 가능할때 발생한다. 주로 프록시 툴을 사용하여 전체 과정을 예측하고 모자르는 부분은 직접 뽑아낼 수도 있고, 뽑아낸 내용 안에는 각종 인증 관련 사항들이 포함될 수 있기 때문에 공격자는 정상적인 요청과 구별될 수 없는 변조된 요청을.. 더보기
OWASP Top 10 2013 - A7. Missing Function Level Access Control (기능 수준의 접근 통제 누락) 기능 수준의 접근 통제 누락 정의 OWASP 2007년부터 2010년까지는 URL 접근 제한 실패 항목이 확장 된 것이라 다소 낯설게 느껴질 수 있지만 기본적인 개념은 같다. URL 접근 제한 실패는 URL에서의 접근 제한 실패이지만, 기능 수준이라는 것은 URL 이외의 모든 것들을 말한다. (프로그램의 계정, ARP 스푸핑 등) 웹 어플리케이션이 페이지들에 접근될 때 마다 접근 통제 확인이 필요한데, 이러한 행위가 이루어지지 않을 경우에는 권한이 없는 용자가 접근할 수 있게 되는데 이를 접근 제한 실패 (접근 통제 누락)이라고 한다. 보안 취약점 취약점 원리의 이해를 돕기 위해 URL 측면에서 살펴보면 관리자가 페이지를 관리하기 위한 페이지 (admin_page.php)가 있다고 가정한다. 일반적으로 .. 더보기
OWASP Top 10 2013 - A6. Sensitive Data Exposure (민감 데이터 노출) 민감 데이터 노출 정의 개인 정보 수정 페이지 및 회원 가입 과정에서 주요 개인정보 (주민번호 등)가 HTML 페이지 내에 평문으로 저장되어 있어 정보가 노출되는 취약점을 의미한다. 개인 정보가 제일 많이 포함되어 있는 곳은 정보 수정 페이지, 이력서 페이지 등이 있다. 사용자 들이 자신의 개인정보 수정페이지에 접근하게 되면 기본적으로 이메일 정보, 전화번호, 주소 등이 포함되어져 있고, 보안이 심각한 경우에는 주민번호가 페이지에 그대로 평문으로 노출되는 경우도 있다. 흐름도 취약점 모의 테스트 본 테스트는 OWASP Broken Apps에 포함된 WebGoat을 이용한다. WebGoat의 항목 중에 Insecure Communication – Insecure Login 항목을 누르면 다음과 같이 나타난.. 더보기
OWASP Top 10 2013 - A5. Security Misconfiguration (보안상 잘못된 구성) 보안상 잘못된 구성 정의 웹 어플리케이션을 운영하는데 있어서 개발자와 시스템 관리자들이 자주 실수로 놓치게 되어 발생하는 일련의 문제들을 말한다. 테스트 파일이나 샘플, 웹 서버 설치 시 기본적으로 설치되는 파일 또는 관리자나 운영자가 임시로 만들어 놓은 파일들이 만약 아무런 접근 제한 없이 웹의 홈 디렉토리에 놓여 있을 경우 권한이 없는 일반 사용자나 해커가 이 파일명을 직접 입력하여 디렉토리 정보, 시스템 정보 및 중요한 파일 정보를 획득할 수 있다. 취약점 모의 테스트 백업 파일의 노출 일반적으로 관리자는 홈페이지상에서 작은 수정을 위해 기존 홈페이지 파일의 원본을 임시로 저장할 수 있다. 혹은 대부분의 Text 전용 에디터(editplus 등)의 경우 수정을 위해 기존 원본을 특정 확장자(.bak.. 더보기
OWASP Top 10 2013 - A4. Insecure Direct Object References (취약한 직접 개체 참조) 취약한 직접 객체 참조 정의 및 취약점 발생 환경 취약한 직접 객체 참조란 개발자의 부주의로 인해 파일, 디렉토리, 데이터베이스의 레코드 등이 URL 이나 변수로 내부의 객체를 노출시킬 때 발생하는 취약점이다. 직관적으로 개발자는 종종 웹 페이지를 구성할 때 예측하기 쉬운, 혹은 실제 이름을 키 값으로 사용한다. 그리고 사용자가 요청하는 페이지에 대하여 적절한 인증 절차를 생략한 경우가 이따금 발생하기 마련인데, 이런 부분을 통하여 본 취약점이 발생한다. 공격 유형 취약한 직접 객체 참조 취약점을 이용한 공격에는 파라미터 변조, 파일 다운로드 취약점이 있다. 직접적으로는 DB나 서버 객체에 접근을 시도하는 취약점이여서 상당히 위협적인 취약점이라 할 수 있다. 파라미터 변조 공격은 매개변수라고 불리는 파라.. 더보기
OWASP Top 10 2013 - A3. Cross Site Scripting (XSS) XSS 개요 XSS는 Cross Site Scripting의 줄임말로 2013년도 OWASP TOP 10에서는 A3로 지정된 웹 어플리케이션 취약점이며, 2013년도 뿐만 아니라 이전 년도의 버전에서도 꾸준히 TOP 10 안에 드는 HTML Injection의 한 부분으로서 단순하면서도 매우 치명적인 공격이다. 이 공격 기법은 다른 공격 대부분과 달리 공격의 대상이 서버가 아닌 클라이언트라는 큰 차이점을 가지고 있다. 발생원인 본 취약점은 컨텐츠를 암호화, 검증하는 절차 없이 사용자가 제공하는 데이터를 어플리케이션에서 받아들이거나 보낼 때 발생한다. 이러한 XSS의 취약점이 발생되는 원인은 사용자들의 편의를 위해 웹 어플리케이션에서 HTML 태그 사용이 허용되었기 때문에 발생하며, 이렇게 발생되는 취약점.. 더보기
OWASP Top 10 2013 - A2.Broken Authentication and SessionManagement (인증 및 세션 관리 취약점) 인증 방법 쿠키 - 서버에서 클라이언트쪽에 상태 정보를 저장하고 추출할 수 있는 방법 - 클라이언트쪽에 사용자 정보를 텍스트(.txt) 형태로 저장하며, 클라이언트의 매 요청마다 웹 브라우저로부터 서버에서 전송되는 정보 패킷의 일종 * 쿠키를 이용한 인증 순서 1. 클라이언트가 사용자 로그인 정보로 인증 요청 2. 서버가 사용자 정보를 쿠키 값으로 클라이언트에 전송하며, 인증 확인 결과를 반환 3. 클라이언트는 사용자 정보를 Tempory Internet Files (기본 값) 폴더에 저장 4. 클라이언트는 쿠키 값을 이용하여 로그인 상태를 유지 세션 - 클라이언트와 서버간에 네트워크 연결이 지속적으로 유지되고 있는 상태 - 클라이언트의 로그인 정보를 서버 내에 저장하여, 유저의 로그인/다른 상태를 지속.. 더보기
OWASP Top 10 2013 - A1.SQL Injection SQL 개요 - 사용자와 관계형 데이터베이스를 연결시켜주는 언어로서 DDL, DML, DCL과 특수 연산자를 포함한다. - 단순한 질의 기능 뿐만 아니라 완전한 데이터 정의 기능과 조작 기능을 갖추고 있다. - 아직 표준 SQL이 100% 확정되지 않았기 때문에 상호 DBMS 간의 호환성은 완벽하지 않다. 언어 - DDL (Data Defintion Language) - 객체의 생성, 변경, 삭제를 하는 명령어 - 스키마, 도메인, 테이블, 인덱스 정의 변경 또는 삭제 - CREATE, ALTER, DROP, RENAME 등과 같은 명령어 - DML (Data Manipulation Language) - 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터 처리시 사용하는 명령어 - 사용자와 DBMS.. 더보기
OWASP Top 10 2013, 2010, 2007, 2004 Open Web Application Security Project - 오픈 소스 웹 어플리케이션 보안 프로젝트 - 웹에 관한 정보 노출, 악성파일 및 슼립트, 보안 취약점 연구 - 3년 (현재까지 04, 07, 10, 13년도)마다 10대 웹 어플리케이션 취약점 문서 발표 더보기