보안개구리

[게시판 실습] - 불충분한 인증 (2) 타인의 게시글 수정 및 삭제 가능 본문

웹 진단/게시판 실습

[게시판 실습] - 불충분한 인증 (2) 타인의 게시글 수정 및 삭제 가능

보안개구리 2024. 6. 10. 11:11

[설 명]

 중요정보(개인정보 변경 등) 페이지에 대한 인증 절차가 불충분할 경우 권한이 없는 사용자는 중요정보 페이지에 접근하여 정보를 유출하거나 변조할 수 있으므로 중요정보 페이지에는 추가적인 인증 절차를 구현하여야 한다.

 

[점검 내용]

 중요 페이지 접근 시 추가 인증 요구 여부 점검

 

[점검 기준]

 중요 정보 페이지 접근에 대한 추가 인증을 하지 않는 경우 취약

 

[대응 방법]

 * 중요정보를 표시하는 페이지에서는 본인 인증을 재확인하는 로직을 구현하고, 사용자가 인증 후 이용 가능한 페이지에 접근할 때마다 승인을 얻은 사용자인지 페이지마다 검증 필요

 * 접근 통제 정책을 구현하고 있는 코드는 구조화, 모듈화가 되어 있어야 함

 * 접근제어가 필요한 모든 페이지에 통제수단(로그인 체크 및 권한 체크)을 구현해야 하며 특히, 하나의 프로세스가 여러 개의 페이지 또는 모듈로 이루어져 있을 때 권한 체크가 누락되는 경우를 방지하기 위해서 공통 모듈을 사용하는 것을 권장

 * 인증 과정을 처리하는 부분에 Client Side Script(Javascript, VBScript 등)를 사용하면 사용자가 임의로 수정할 수 있으므로 Server Side Script(PHP, JSP, ASP 등)를 통하여 인증 및 필터링 과정을 수행

 

[진단 과정]

1) 'admin' 계정으로 로그인 후 게시글을 작성합니다. 게시글이 정상적으로 작성됨을 확인하였습니다.

게시글 작성
게시글 작성 확인

 

2) 'hacker' 아이디로 로그인 후 임의의 게시글 작성 후 수정 버튼을 클릭합니다. 이때 프록시 도구를 이용하여 요청값을 확인합니다. postID 값을 3으로 수정하였습니다.

요청값 변경

 

4) 요청값 변경 시 게시글이 수정됐다는 응답값을 확인할 수 있으며 해당 게시글 조회 시 제목 및 내용이 변경됐음을 확인하였습니다.(같은 방식으로 postID값을 변경하여 삭제가 가능함을 확인하였습니다)

응답값 확인
타인의 게시글 수정 가능 확인

 

5) 소스코드 확인 시 게시글 수정 및 삭제 과정에서 게시글 번호(postID)만 확인하고 작성자(userID)는 확인하지 않는 것을 확인하였습니다.

소스코드 확인

 

6) 소스코드 내 userID를 확인하는 검증로직을 추가하였습니다.

소스코드 수정

 

7) 소스코드 수정 후 프록시 도구를 통하여 요청값 변경을 시도하였습니다.

요청값 변경

 

8) 응답값 내 게시글 수정에 실패하였다는 메시지가 출력되었으며 게시글 역시 수정되지 않았음을 확인하였습니다.

응답값 확인
게시글 수정 실패