본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


웹 취약점(Web vulnerability)

20. 프로세스 검증누락(PV)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2021. 12. 9.

 

프로세스 검증누락 취약점은, 인증이 필요한 페이지에 대해 인가된 인원인지를 확인하는 기능이 존재하지 않는경우에 해당 정보를 변조하거나 탈취 할 수 있는 취약점을 의미 합니다.

로그인을 해야만 게시글을 수정할 수 있어야하는데 그렇지 않는경우나 비밀글임에도 불구하고 특정 인덱스 값을 바꾸어 들어갈 수 있는 경우가 해당 됩니다.

 

 

#방법1

인증이 필요한 페이지에서의 권한여부를 확인하는 기능은 필수 입니다.

프론트에서 단순하게 hide, none으로 가리는 것 또한 1차 방법이 될 수 있겠지만, 이러한 경우를 우회하여 접근한 경우를 대비하기 위해서 서버에서 또한 권한여부에 따라 페이지의 접근을 제한 하여야 합니다.

대표적인 방법으로는 로그인을 하는 경우 session을 활용하여 해당 페이지에 대한 접근가능 여부를 확인하게 합니다.

아래는 대표적인 인터셉터의 기능 샘플 모습 입니다.

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class 권한체크인터셉터 extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        final HttpSession session = request.getSession();		
        final String REQUEST_URL = request.getRequestURL().toString();  //요청주소를 검사 할 수도 있습니다
        if (session.getAttribute("로그인상태") == null || session.getAttribute("권한여부") == null) {  
            response.sendRedirect("되돌려주는 주소");
            return false;
        }
        return true;
    }
}

 

마찬가지로 JWT 로그인 방식을 취한 사용자라면 비슷한 방법으로 구현이 가능하겠습니다.

또한 해당 페이지에 비인가된 사용자가 접근 하였더라도 정보 요청시 이러한 사용자 여부를 반드시 검증하여 주요 정보를 전달하지 않도록 하여야 겠습니다.

 

 

이상으로 프로세스 검증누락(PV) 조치 방법에 대해서 간단하게 살펴보았습니다.

궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻

 

반응형

'웹 취약점(Web vulnerability)' 카테고리의 다른 글

22. 약한 문자열 강도(BF)  (0) 2021.12.09
21. 파일 업로드(PU)  (0) 2021.12.09
19. 자동화 공격(AU)  (0) 2021.12.09
18. 세션고정(SF)  (0) 2021.12.08
17. 불충분한 세션만료(SC)  (0) 2021.12.07
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글