웹 진단/게시판 실습

[게시판 실습] - 불충분한 인가 (2) 삭제된 게시글 조회 가능

보안개구리 2024. 6. 10. 12:44

[설 명]

 접근제어가 필요한 중요 페이지의 통제수단이 미흡한 경우, 비인가자가 URL 파라미터 값 변경 등의 방법으로 중요 페이지에 접근하여 민감한 정보 열람 및 변조가 가능하므로 접근 권한에 대한 검증 로직을 구현하여 비인가자의 악의적인 접근을 차단하여야 한다.

 

[점검 내용]

 민감한 데이터 또는 기능에 접근 및 수정 시 통제 여부 점검

 

[점검 기준]

 접근제어가 필요한 중요 페이지의 통제수단이 미흡하여 비인가자의 접근이 가능한 경우 취약

 

[대응 방법]

 * 접근제어가 필요한 중요 페이지는 세션을 통한 인증 등 통제수단을 구현하여 인가된 사용자 여부를 검증 후 해당 페이지에 접근할 수 있도록 함

 * 페이지별 권한 매트릭스를 작성하여 접근제어가 필요한 모든 페이지에서 권한 체크가 이뤄지도록 구현하여야 함

 

[진단 과정]

1) 'hacker' 아이디로 로그인 후 게시판 메뉴 내 4번 게시글을 삭제하였습니다.

4번 게시글 삭제

 

2) 게시글 삭제 후 게시판 확인 시 게시글이 삭제되어 게시판 내 노출되지 않는 것을 확인하였습니다. 임의의 게시글 조회 후 postID값을 변경하여 삭제한 게시글 조회를 시도합니다.

게시글 삭제 확인

 

3) 파라미터값 변경을 통하여 조회 시 삭제한 게시글이 정상적으로 조회됨을 확인하였습니다. DB 확인 시에도 여전히 해당 게시글이 존재함을 확인할 수 있습니다. 이를 통해 게시글 삭제 시 게시판 목록에서만 노출되지 않고 DB에서는 삭제되지 않음을 확인하였습니다.

삭제한 게시글 조회 가능
DB 내 게시글 확인

 

4) 해당 경우에서는 두 가지 방법을 사용할 수 있는데 먼저 게시글 삭제 시 DB상에서도 삭제를 진행하는 방법과 삭제된 게시글들은 관리자만 조회할 수 있는 방법입니다.

 후자의 경우는 게시글을 삭제하더라고 즉정 기간까지는 유예기간을 두고 본인이 삭제한 게시글을 복원할 수 있도록 할 수 있는 방법으로 게시글을 삭제할 경우 해당 게시글을 조회할 수 있는 사람은 관리자와 본인뿐입니다.

 이번 경우에는 전자의 방식으로 게시글 삭제를 클릭한 경우 DB에서도 삭제되도록 수정하겠습니다.

 

5) 소스코드 확인 시 게시글 삭제를 시도하면 해당 postID에 해당하는 게시글의 post Ver를 0으로 변경하여 게시판 내 노출만 되지 않도록 설정된 것을 확인할 수 있습니다.

소스코드 확인

 

6) 게시글 삭제 시 delete를 사용하여 DB상에서도 삭제되도록 수정하였습니다.

소스코드 수정

 

7) 게시판 내 작성한 게시글을 조회 후 삭제를 시도합니다.

게시글 삭제 시도

 

8) 게시글 삭제 시 게시판 내 노출이 되지 않음은 물론 DB상에서도 삭제가 된 것을 확인하였습니다.

게시글 삭제 확인