🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩
위아래 1줄씩 띄우고 중요한 부분은 볼드 효과
📍 URL 접근 제한 미흡 취약점이란?
👉🏻 Failure to Restrict URL Access Vulnerability
👉🏻 인증/인가된 사용자만 접근이 가능한 접근 제한이 존재하거나 존재하지만 우회가 가능함
📍 인증과 인가에 대한 이해
👉🏻 Authentication(인증): 인증된 사용자인지 확인하는 기능 (ex: 로그인 등)
👉🏻 Authorization(인가): 인증된 사용자 중 해당 페이지에 접근 가능한 사용자인지 확인 (ex: 관리자 페이지 등)
📍 공격 원리 분석
👉🏻 파라미터 변조처럼 특정한 공격 페이로드가 있는 게 아니라 해당 페이지에 '접근'만 하면 되는 것이기 때문에 공격을 확인하기 어려움
// ----- 공격자의 URL 유추(수동, 자동화)
http://www.victim.or.ke/page
👉🏻 웹 서비스마다 존재하는 네이밍 패턴을 공격자가 유추해서 접근하게 됨
📍 대응 방안
👉🏻 공격자가 Application에 접근하기 전에 인증/인가에 대한 로직을 추가함
// 접근 제어(인증) 소스코드 예시
...
String id = request.getSession().getAttribute("id");
if(id == null || id == "") {
out.println("<script>alert('비정상 접근'); history.back(-1);</script>");
return;
}
...
// 접근 제어(인가) 소스코드 예시
...
String user_level = request.getSession().getAttribute("level");
if(user_level < 3) {
out.println("<script>alert('접근 불가'); history.back(-1);</script>");
return;
}
...
👉🏻 접근 제어 (인증, 인가) 예시 소스코드
출처