백엔드

시큐어 코딩 가이드 및 보안점검 도구를 통한 보안 취약점 점검 방법

CyberI 2021. 7. 12. 10:51

목차는 아래의 순서에 따라 진행합니다.

 

1. 개요

 

2. 설계 예시

2-1 게시판 목록

2-2 게시물 조회

2-3 게시물 등록

2-4 게시물 수정

 

3. 보안 점검 도구

3-1 Burp Suite

3-2 Fiddler

3-3 Wireshark

 

-----------------------------------------------------------------------------

 

개요

 

OWASP에서 발표한 취약점 Top 10은 아래와 같습니다.

 

A1. 인젝션

A2. 취약한 인증

A3. 민감한 데이터 노출

A4. XML 외부 개체(XXE)

A5. 취약한 접근 통제

A6. 잘못된 보안 구성

A7. 크로스 사이트 스크립팅

A8. 안전하지 않은 역직렬화

A9. 알려진 취약점이 있는 구성요소 사용

A10. 불충분한 로깅 및 모니터링

 

취약한 인증, 취약한 접근 통제는 Top10 중에서도 상위권에 랭크되어 있으며. 주기적으로 발표하는 OWASP Top 10에서 항상 빠지지 않을 정도로 중요한 취약점 내용입니다.

 

  

한국인터넷진흥원에서 있는 시큐어 코딩 가이드에서도 관련된 내용을 확인할 수 있습니다.

 

쿠키 또는 Hidden 필드등의 외부입력 값이 보안기능을 수행하는 중요 파라미터로 사용되는 경우 프록시 서버에서 파라미터를 조작하여 부적절한 인가가 발생할 수 있다.

 

중요기능이나 리소스를 요청하는 경우 HTML 화면에서 기능을 안보이게 설정하여도 URL을 통해 접근할 수 있으므로 인증을 거치지 않고 처리할 경우 공격자에게 노출될 수 있다.

 

 

 

위의 코드는 인증대상 및 방식(SR2-1)에 대한 안전하지 않은 코드와 안전한 코드의 예시이다.

기능을 수행하기전에 로그인 세션 정보의 유무, 권한 체크등의 간단한 프로세스이지만, 개발자들은 기능개발을 중점적으로 두는 경향이 있어 간과할 때가 많습니다.

  

2. 설계예시

2-1. 게시판 목록

게시판 목록을 구현할 때, 필요한 보안 사항의 시퀀스 다이어그램과 체크리스트이다.

Coreframe에는 OWASP ESAPI 탑재되어 있어 인젝션, XSS 등의 취약점들은 모두 필터링되게 설계되어있어 나머지의 보안항목에 대해서만 설계하면 된다.

  

게시판 목록 – 로그인 여부 검증, 로그인 계정의 접근 권한 검증

접근 권한 체크가 존재하지 않아 URL을 통해 직접 접근할 경우 게시판에 접근이 가능하다.

jspx(컨트롤러단) 또는 jsp 페이지에서 선택하여 접근 권한 체크를 해주면 된다.

 

2-2 게시물 조회

게시물 조회 시엔 게시판의 유형에 따라 DB조회후에 로그인 세션 정보와 output의 파라미터 값이 적절한 값인지 체크해줘야 한다. 예를들어, 인사 정보와 같은 개인 정보를 조회 시에 파라미터 변조를 통해 다른 사용자의 정보를 조회할 수 있으므로 세션 정보와 output을 비교하도록 한다.

 

게시물 조회 로그인 여부 검증, 로그인 계정의 접근 권한 검증

접근 권한 체크가 존재하지 않아 URL을 통해 직접 접근할 경우 게시물에 접근이 가능하다.

jspx(컨트롤러단) 또는 jsp 페이지에서 선택하여 접근 권한 체크를 해주면 된다.

 

게시물 조회 – output이 정상적인지 검증

DB에서 데이터 조회 후에 output에 대한 검증 없이 파라미터를 set하기 때문에 파라미터 변조 시 다른 사용자의 정보에 접근할 수 있다.

로그인 체크와 세션정보와 output의 비교 체크를 추가하여 타 사용자의 정보에 접근을 막는다.

 

2-3. 게시물 등록

 

 

게시물 등록 시엔 등록 페이지 접근 시, 등록 버튼 클릭 시에 접근 권한 체크를 해줘야 한다.

 

게시물 등록 로그인 여부 검증, 로그인 계정의 접근 권한 검증(페이지 이동)

게시물 등록 - 로그인 여부 검증, 로그인 계정의 접근 권한 검증(버튼 클릭)

ajax 전송방식은 POST를 해야함(GET방식으로 전송 시 URL에 데이터 노출)

에러 처리가 존재하지 않아 접근 권한이 없는 사용자가 등록을 시도해도 처리할 수가 없다.

 

 

 

2-4. 게시물 수정

게시판 수정 페이지 접근 시 파라미터 변조를 통해 타 사용자의 게시물의 수정 페이지에 접근하여 정보를 확인하고 무단으로 수정을 할 수 있으므로 로그인 세션 정보와 output을 비교하여 검증해야 한다.

 

게시물 수정 – 로그인 여부 검증, 로그인 계정의 접근 권한 검증(페이지 이동)

DB조회 후 output에 대한 검증이 존재하지 않아 파라미터(게시물 번호) 변조를 통해 타 사용자의 게시물에 접근 가능하다.

 게시물 수정 로그인 여부 검증, 로그인 계정의 접근 권한 검증(페이지 이동)

 

3. 보안 점검 도구

1. Burp Suite

웹 동작 시 클라이언트와 서버 사이에 프록시 서버를 구축하여 패킷을 프록시 서버를 거치게 하여 중간에서 패킷을 확인하거나 변조하여 서버에 패킷을 전달해주는 프록시 도구

 

사용법

2. Fiddler

웹 동작 시 클라이언트와 서버 사이에 프록시 서버를 구축하여 패킷을 프록시 서버를 거치게 하여 중간에서 패킷을 확인하거나 변조하여 서버에 패킷을 전달해주는 프록시 도구

 

사용법

 

* 필터링

 

* 파라미터 변조

 

3. Wireshark

네트워크 트래픽을 캡쳐하여 패킷을 분석하여 모의해킹, 취약점 분석등의 쓰이는 네트워크 분석 프로그램이다.

 

사용법

 

* No. : 패킷을 수집한 순서

* Time : 패킷을 수집한 시간

* Source : 패킷을 보낸 주소

* Destination : 패킷 도착 주소

* Protocol : 프로토콜 정보

* Length : 패킷의 길이

* Info : 패킷 정보

와이어 샤크를 통해 패킷을 캡처하게 되면 수많은 패킷들이 캡처되기 때문에 Statistics(통계)를 사용하여 요약된 정보를 통해 패킷을 분석해야 한다.

대표적으로 쓰이는 4가지 통계 자료를 살펴보도록 하겠습니다.

 

* Protocol Hierachy 프로토콜에 관련된 통계 자료를 확인할 수 있다.

 * Conversation 출발지 IP, 도착지 IP, 크기, 시간등 IP에 대한 정보를 확인할 수 있다.

 

* Packet Counter HTTP 상태 코드에 대한 통계 정보를 확인할 수 있다.

 

 * Requests Request에 응답한 페이지의 목록을 확인할 수 있다.

 

Statistics를 이용하여 대략적인 패킷의 분석이 끝났으면 필터링과 Stream을 통해 자세한 내용을 확인하면 된다.

 

* 필터링 – 필터링을 통해 원하는 패킷만을 추출하여 확인할 수 있다.

 

 * Stream- 패킷의 데이터를 조합하여 볼 수 있다(파일로 저장 가능)

 

 

감사합니다.