URL 접근 제한 미흡 취약점이란?
인증 혹은 인가되지 않은 사용자가 접근 제한된 페이지에 접근하게 되는 취약점이다.
인증 혹은 인가된 사용자가 접근 가능한 페이지에 대해 접근 제한이 존재하지 않거나 존재하지만 우회 포인트가 존재하여 발생한다.
💡 인증과 인가
인증이란 로그인과 같이 인증된 사용자인지의 여부를 파악하는 것을 말하고, 인가란 특정 사용자가 해당 작업에 대한 권한의 존재 여부를 파악하는 것을 말한다.
공격 원리 분석
파리미터 변조 취약점과 동일하게 공격 유무를 파악하기가 어렵다.
공격자는 페이지의 URL을 유추해아 한다.
이때 사전 대입을 통한 수동적 유추 방식과 자동화 도구를 통한 유추 방식이 있다. 보통 네이밍 패턴이나 robot.txt를 통해 유추하게 된다.
대응 방안
접근 제한이 필요한 부분에 대해서 접근 제어 설정을 수행해야 한다.
- 인증(비회원) 여부를 확인하기 위해서는 세션의 id 값이 비었는지 안비었는지를 확인한다.
- 인가(레벨: 일반, 관리자) 여부를 확인하기 위해서는 세션의 level 값을 확인한다.
취약 환경 시큐어 코딩 적용 실습
1) 인증
# 인증 기능
if(empty($_SESSION["id"])) {
echo "<script>alert('정상적인 접근이 아닙니다.');location.href='index.php?page=login';</script>";
exit();
}
2) 인가
if(empty($_SESSION["id"])) { # 인증 기능
echo "<script>alert('정상적인 접근이 아닙니다.');location.href='index.php?page=login';</script>";
exit();
} else { # 인가 기능
if($_SESSION["id"] != "admin") {
echo "<script>alert('접근 권한이 없습니다.');history.back(-1);</script>";
exit();
}
}
📌 미흡한 시큐어 코딩 적용을 막기 위해
- exit()를 통해 구문을 반드시 종료해야 한다.
- 검증 기능은 코드 최상위에서 진행해야 한다.
'Security > Web Hacking' 카테고리의 다른 글
[WebHacking] 파라미터 변조 취약점 (0) | 2024.05.16 |
---|---|
[WebHacking] 파일 업로드 취약점 (1) | 2024.05.15 |
[WebHacking] 파일 다운로드 취약점 (0) | 2024.05.15 |
[WebHacking] CSRF(Cross-Site Request Forgery) 공격 (0) | 2024.05.13 |
[WebHacking] XSS 공격 (1) | 2024.04.28 |