안녕하세요? 허니입니다. 사용자 브라우저 인증 취약점에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다.


사용자의 개인 정보 또는 작성한 정보는 해당 사용자만 수정이 가능해야 하나 인증 미흡으로 인해 타 사용자가 접근하여 열람, 수정이 가능한 취약점입니다. 인증우회 가능성은 프록시 툴을 이용하여 인증절차를 분석하고 인증 결과값을 클라이언트가 조작하여 인증을 우회하는 방법입니다. 이는 타 사용자의 개인정보 열람, 아이디 도용, 타 사용자 작성 정보의 비 인가된 수정 등이 가능합니다.

 

 대응방법
회원 가입 시 적절한 권한이 필요한 페이지는 항상 세션 및 쿠키 등으로 현재의 사용자의 권한을 확인하여 접근을 제한해야 합니다. 세션인증 외에 입력 비밀번호로 인증할 경우, 인증이 필요한 페이지 내에 인증체크 모듈을 포함시켜 인증 결과값이 클라이언트를 거치지 않고 서버 내에서 인증 성공 여부에 따라 접근통제가 완료되도록 구현해야 합니다. DB 및 기타 데이터의 조회, 수정, 삭제 페이지에 인증체크 모듈을 포함시키고 클라이언트를 거쳐 온 인증 결과값을 신뢰해서는 안되며 인증 결과를 클라이언트로 전송하지 않도록 해야 합니다.

 

<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.* " %>
//modify_ok.jsp
// 사용자 로그인 처리를 하는 스크립트
<%
//HttpSession session = request.getSession(true);
// form 에서 사용자 id와 사용자 password를 아래 변수로 전달
if(!myfunc_userauth(userid, userpw)) //DB 에서 사용자 인증을 처리하는 부분
out.println "인증 실패";
else
//인증에 성공한 경우 처리 해야 되는 부분
session.putValue('logged_in',"1");
session.putValue('userid',userid);
session.putValue('user_ip',request.getRemoteAddr());
...
%>

 

 

+ Recent posts