본문 바로가기

교육 및 자격증/정보보안기사 : 실기

홈페이지 보안 취약점 대응 가이드(행안부 2008. 9.)

728x90
크로스 사이트 스크립팅
XSS 취약점은 콘텐츠를 암호화하거나 검증하는 절차 없이 사용자가 제공하는 데이터를 어플리케이션에서 받아들이거나, 웹 브라우저로 보낼 때마다 발생.

점검 방법

게시판, 사이트 검색란 등에 html 코드나 js를 삽입할 수 있는지 확인

서버 에러 메시지를 조작하여 html 코드나 js 를 삽입할 수 있는지 확인

조치사항

 - 게시판 등과 같은 매개체들에 사용자 입력 값 검증루틴 추가

 - http 헤더, html, java/VBScript, flash, GIF/JPG, 쿠키, 쿼리 스트링, 폼 필드, 히든 필드 등의 모든 인자들에 대한 허용된 유형의 데이터만 입력할 수 있도록 수정

삽입취약점
사용자가 입력한 데이터가 명령어나 질의문의 일부분으로 웹서버에 보내질 때 발생

점검방법

검색어 필드, 로그인id, pw필드에 "", ' , ; 등을 입력하여 DB 에러 발생 확인

인수에 특수문자를 삽입하여 서버 내부에 명령 전달 가능 여부 확인

외부 스크립트를 서버 내부에 삽입

시스템 명령어 삽입 가능

조치사항

 - db와 연동을 하는 스크립트의 모든 파라미터 점검

 - 사용자 입력 시 특수문자(", '..)가 포함되어 있는지 검사하여, 비 허용된 문자열/문자 포함시 에러 처리

 - sql 서버 에러 메시지를 사용자에게 보이지 않도록 설정

 - 웹 애플리케이션이 사용하는 db 사용자의 권한을 제한

 - php.ini 설정 중 magic_quotes_gpc 값을 On으로 설정

악성 파일 실행
원격 파일 삽입에 취약한 소스코드는 공격자의 악의적인 코드와 데이터의 삽입을 허용함으로써 저네 서버 훼손과 같은 피해 유발 가능 iframe

점검 방법

디렉터리 인덱싱 서비스 제공 유무 확인

시스템 스캐너를 이용한 점검 nessus nikto

백업, 디폴트, 예제, 환경, 로그 설정 파일의 존재 확인

웹 디렉토리에서 확장자가 bak, org, cfg, ini, log인 파일 검색

조치사항

 - "request" 대신 "POST"사용

 - 입력값에 대한 유효성 검증을 통해 알려진 값만 허용하도록 설정

 - 서버상의 파일명이 사용자에게 노출되지 않도록 설정

 - php.ini에서 allow_URL_fopen, allow_URL_include 사용 금지

불완전한 직접 객체 참조
 : 개발자가 파일, 디렉터리, DB 기록. 키 등 내부 구현 객체에 대한 참조를 URL 혹은 폼 매개변수로 노출시킬 때 발생.

점검 방법

nessus, nikto 툴

시스템 스캐너로 점검

조치사항

 - 인덱스, 간접 참조 또는 검증이 쉬운 다른 간접적인 방법을 사용하여 직접 객체 참조에 노출 금지

 - 어플리케이션 객체의 참조에 대한 표준 방법을 확립하는 것이 중요

 - index, map 등을 통한 직접적인 객체 참조 정보를 사용자에게 노출시키지 않도록 개발

 - 파일 시스템 참조를 노출해야 할 경우, 경로/파일명 조작을 막기 위해 index 값 또는 map 사용

 

CSRF
로그온한 희생자의 브라우저가 사전 승인된 요청을 취약한 웹 애플리케이션에 보내도록 함으로써 희생자의 브라우저가 공격자에게 이들이 되는 악의적인 행동을 하게 한다.

점검 방법

어플리케이션에 xss 취약점 존재 여부 확인

소스코드에서 임의의 토큰 사용하는지 확인

조치사항

 - 유일무이한 토큰을 사용하고 어플리케이션에 존재하는 모든 xss 관련 취약점 제거

 - URL 등에 브라우저에 의해 자동으로 제공되는 인증이나 토큰값이 아닌 맞춤 토큰 사용 및 이에 대한 사용자 적절성 여부 확인

 - 민감한 데이터나 값에 대한 트랜잭션을 위해 인증 또는 트랜잭션 서명을 사용하여 요청이 진실함을 확인

 - 민감한 데이터 값의 트랜잭션 수행위해 get요청 사용 금지

 - 모든 폼과 url 내에 브라우저에 의해 자동으로 제출되지 않도록 특별히 설계되고 불규칙한 토큰을 삽입하고, 제출된 토큰이 현재 사용자에게 적합한지 검증

 - ASP.NET은 set a ViewStateUserKey를 사용

정보 유출 및 부적절한 오류처리
다양한 웹 어플리케이션 문제점을 통해 의도하지 않게 자신의 구성 정보, 내부 작업에 대한 정보를 누출하거나 또는 개인정보 보호 위반 가능

점검방법

owasp의 webScarab과 같은 도구 사용 부적절한 에러 처리 여부 검증

웹 어플리케이션에 무작위 인수 전달

웹 디렉터리에 파일의 존재 유무

로그인 시 ID 입력이 틀린 경우

조치 사항

 - 로그인 실패, 접근 거부 등에서 단순하고 통일된 메시지를 보여줌.

 - 정보 유출 통제

 - 최종 사용자에게 스택추적정보, 경로정보, 디버그 정보 제공 금지

 - 공격자로부터 자세한 정보를 숨기기 위해 모든 트랜잭션들에 대한 ㅂ불규칙한 대기 시간 부여

취약한 인증 및 세션 관리
자격 증명과 세션 토큰은 종종 적절히 보호되지 못함.

점검방법

javascript : document.cookie로 점검

db서버에 저장된 사용자 정보의 raw데이터 열람 가능

계정의 패스워드를 유추할 수 있는지 점검

쿠키 인증 시 쿠키 값으 ㅣ변조로 인증을 통과할 수 있는지 점검

조치사항

 - 강력한 패스워드 정책

 - 전송 중의 자격증명 보호

 - ssl 과 같은 로그인 트랜잭션 전체를 암호화

 - 서버측 인증 기술 사용[.hidden field, session id 사용]

 - 쿠키 인증 시 쿠키 값의 암호화

 - 세션 타임 아웃 설장

 - 활동 부재 시 10~30분 경과 후 강제로 서버에서 세션 파기

 - 세션 인증 시 주기적인 세션 값 변화로 일정 시간 후 폐기

 - 인증 및 세션 관련 정보는 get 방식이 아닌 post 방식으로 요청

 - 동시 로그인 금지 및 암호화 채널 사용

 - 강력한 세션 생성기를 사용하고 부수적인 인증 기능 활용

불안전한 암호화 저장
웹 애플리케이션은 데이터와 자격 증명을 적절히 보호하기 위한 암호화 기능을 거의 사용하지 않아보호되지 않은 데이터를 이용하여 신원 도용이나 신용카드 사기와 같은 범죄 감행함

점검 방법

DB에 저장된 중요 정보가 sql query로 열람 가능한지 확인

세션 id나 암호화된 쿠키값이 명백히 랜덤하게 생성되는지 검증

적절한 암호화 알고리즘ㅇ ㅣ제대로 적용되었는지 검증

조치사항

 - DB에 저장될 중요한 정보는 암호화하여 저장

 - 암호화 관련 기능이나 코드 적절성의 구현 가능성을 검증한 후 사용

 - 암호화가 요구되는 정보는 가능한 저장하지 않는다 - 신용카드번호

 - 기밀정보 마스터는 최소한 두군데 이상 분산저장하고, 실행할 때 합쳐서 사용

 - aes, rsa, sha-256 등 사용

불안전한 통신
애플리케이션은 민감한 통신을 보호할 필요가 있을 때 네트워크 트래픽을 암호화 미적용으로 인한 취약점.

점검방법

ssl 적용 여부 확인

개인정보, 신용카드 정보 등민감한 정보에 대한 암호화 여부 확인

백엔드 시스템에 대한 전송 데이터 암호화 여부 확인

조치사항

 - 모든 인증된 연결이나 민감한 데이터가 전송되는 곳에 ssl을 사용

 - 웹 서버와 db간의 통신 시에도 tcp/ip 레벨 암호화 등 적용

URL 접근 제한 실패
애플리케이션이 권한 없는 사용자에게 연결 주소나 url이 표시되지 않도록 함으로써 민감한 기능들을 보호.

점검방법

/admin/adduser.php나 /approveTrasfer.do 등과 같이 숨겨진 url로 관리자나 허가받은 사용자만 접근할 수 있지만, 이러한 정보가 있는지 아는 모든 사용자들이 접근할 수 있는 경우

조치사항

 - 가장 효율적이고 정확한 접근방법은 접근통제 메커니즘을 검증하기 위해 코드 검토와 보안 테스트를 병행하는 것

 - 각 페이지별 접근 통제 강제성 확인

 - 모든 url, 비즈니스 함수가 작업 발생 이전에 사용자의 역할/권한 부여 여부를 확인하는지 점검

 - 코드 전달이나 배포이전에 모의해킹 실시

 - 알려진 값이나 파일 타입 이외의 것은 허용 금지

디렉터리 리스팅
인터넷 이용자에게 웹 서버 내 모든 디렉터리 및 파일 목록을 보여주고, 파일의 열람 및 저장도 가능한 취약점

점검방법

해당 웹 사이트의 하위 디렉터리 정보를 사전에 모두 확인

모든 디렉터리에 대해 디렉터리 리스팅 취약점 존재 여부 확인

파일 다운로드/업로드 취약점
게시판 등에 저장된 자료에 대한 위치 지정 제한을 부여하지 않아 웹 서버 내의 비공개 자료를 다운로드 받을 수 있거나 악성코드 파일을 업로드 할 수 있는 취약점

점검방법

게시판이 존재하는지, 파일 다운로드 기능이 있는지 점검

파일 업로드 기능이 존재하는 모든 게시판에 php, php3 등 확장자로 시도                                                  

조치사항

  - 첨부파일이 저장되어 있는 특정 디렉토리에 있는 파일만을 다운 받을 수 잇도록 하기위해 다운로드 스크립트를 수정

 - 게시판의 첨부파일 업로드를 처리하는 웹 소스코드에서 첨부파일의 확장자를 필터링하도록 처리

백업파일 노출
.baj,.back,.org, .origin 등 웹 서버의 업데이트 불필요한 백업파일을 삭제하지 않고 보관하여 사용자에게 중요문서의 백업파일을 노출

조치사항

 - 웹 디렉터리와 다른 곳에서 백업파일을 생성하여 소스 수정 후 소스만 업로드 하는 형태로 작업

 - 웹 브라우저를 통해 보여지는 디렉터리에는 html, php, cgi만 업로드

 - 비사용 홈페이지, 백업파일 등 휴면홈페이지 삭제 조치

 

 

 

 

 

 

 

 

 

 

 

 

 

'교육 및 자격증 > 정보보안기사 : 실기' 카테고리의 다른 글

2024년도 1회사 정보보안기사 최종 합격 후기  (1) 2024.06.01
내용 정리  (0) 2024.04.01
애플리케이션  (0) 2023.04.19
  (1) 2023.04.16
보안 솔루션 종류 및 특징  (0) 2023.04.15