웹/보안 설정

[JSP] 7.URL 파라미터 조작

참두릅 2020. 9. 9. 17:49

취약점

공격자는 웹 URL의 GET/POST 파리미터 또는 HTML 코드의 <INPUT> 변수, Hidden field, javascript 변수 등에서 노출되는 데이터를 통해서 서버측 프로그램의 로직 및 역할 등을 유추할 수 있다.

또한 해당 변수의 값을 고의적을 변조하여 특정한 값을 입력하여 전송하므로서 서버측 프로그램이 자신이 원하는 특정 작업을 수행하도록 조작을 시도할 수 있다.


만일 웹사이트 로직이 신중하계 설계되지 않는다면 공격자가 전송한 조작된 입력값에 의해서 서버측 프로그램이 의도되지 않은 오동작이나 정상적인 처리 범위를 벗어난 불법적인 작업이 발생할 수 있다.

 

 대표적인 취약점 예시

[1] 게시물 번호 조작을 통한 타 사용자의 게시물에 대한 무단 열람/수정/삭제
[2] Role based 웹사이트에서 사용자 Role 등급의 임의 변경
[3] 온라인 결재시 상품 금액 등 결재 데이터의 변조
[4] 아이디, 사번 등의 변조를 통해 타 사용자 정보의 무단 열람 및 수정
[5] 회원 가입시 실명 인증에 대한 우회
[6] 접근이 제한되어 있는 정보에 대한 무단 열람 또는 변조
[7] 인증 로직의 우회, 악성 파일의 업로드, 서버측 리소스에 대한 무단 다운로드

1번에 대한 실습을 진행한다.

 

 

실습

[1] 게시물 번호 조작을 통한 타 사용자의 게시물에 대한 무단 열람/수정/삭제

 

■ 글은 보이지 않지만 2번 글이 존재함을 유추할 수 있다.

 

글번호 2를 입력하여 열람해보았더니 열람성공!

 

보안조치

삭제 유무를 표시하는 컬럼을 추가해주자!

앞으로 이값이 1일 때에만 열람을 허용한다.

 

 

결과

똑같이 2번글에 대한 요청을 보내보았으나 이제는 열람이 불가능하다!