게시글은 기본적으로 자신이 작성한 글만 수정 및 삭제가 가능하다. 하지만 프로세스 검증이 되지 않는 사이트의 경우 타인의 게시글을 변조하고 삭제하는 취약점이 존재할 수 있다.
해당 게시판에서 계정은 단 1개의 게시글에 수정 권한이 존재했다. 해당 수정페이지에 접근했다.
접근하고 나면 GET 방식이라 요청한 URL이 보이는데 seqNo 값을 받는 것이 확인됐다. 만약 이 값을 타인의 게시글 고유의 seqNo 값으로 변경하면 어떻게 될까?
그 결과 검증이 이루어지지 않아 타인의 게시글에 접근할 수 있었다. 이렇게 정상적으로 변조까지 가능했던 것을 확인했다.
뿐만 아니라 해당 페이지의 소스코드에 존재하는 자바스크립트 구문을 살펴보면 수정과 제거 관련 함수가 노출되어 있으며, 위 함수를 직접 호출하거나 혹은 함수에 나온 URL 주소를 요청하게 되면 일반적으로 권한이 존재하지 않아 변조 및 삭제가 불가능한 타인의 게시글을 조작할 수 있게 된다.
이러한 취약점의 가장 좋은 대응 방안은 세션을 검증하는 것이다. 계정 별로 난수화되는 세션을 발급하고 이러한 세션 키를 Server-Side 로직에 구축하여 동일한 세션 키가 아니라면 게시글의 작성, 수정, 삭제 페이지에 접근이 불가능하도록 로직을 구축하는 것이다. 그렇게 될 경우 일반적으로 이러한 취약점은 발현이 불가능하다.
'3. 웹 애플리케이션 취약점 진단' 카테고리의 다른 글
정보 누출 - 소스코드에 노출된 솔루션 로그인 페이지 (0) | 2024.06.21 |
---|---|
불충분한 인가 - 일반 사용자로 공지사항 글 변조 (0) | 2024.06.21 |
파일 다운로드 - 웹 서버 내부의 시스템 파일 다운로드하기 (0) | 2024.06.21 |
프로세스 검증 누락 - 항공권을 공짜로 예매하는 것은 결제 취약점만 막으면 될까? (0) | 2024.06.21 |
프로세스 검증 누락 - 본인 인증을 URL로 진행하면 발생하는 일 (0) | 2024.06.20 |