파라미터 변조 취약점이란?
사용자 입력값인 파라미터를 변조하여 악의적인 행위를 하는 공격이다.
공격 원리 분석
정상적인 동작 예시
사용자 입력값인 id 파라미터를 통해 id 값에 해당하는 회원 정보를 반환한다.
공격동작 예시
공격자는 사전 대입으로 id 파라미터 변조를 통해 사용자 정보를 반환받는다.
서버사이드에서는 공격 유무를 파악하기 어렵다. 따라서 어플리케이션 단에서 세션을 통해 검증해야 한다. 또한 사용자 입력값을 통해 사용자 아이디를 받아오기 보다는 세션을 통해 사용자 아이디를 받아와야 한다.
대응 방안
1. 사용자 입력 값에 대한 검증
사용자의 입력 값을 반드시 받아서 처리해야 하는 경우에는 사용자의 세션과 파라미터로 입력받은 사용자를 비교한다.
2. 세션을 통한 처리
회원 정보 수정이나 마이페이지 조회의 경우 사용자 입력값을 받을 필요 없이 세션을 통해 처리하면 된다. 따라서 세션의 존재 여부를 확인한다.
취약 환경 시큐어 코딩 적용 실습
1) 사용자 입력 값에 대한 검증
$query = "select * from {$tb_name} where idx={$idx} and id = '{$_SESSION["id"]}'";
$result = $db_conn->query($query);
$num = $result->num_rows;
if($num == 0) {
echo "<script>alert('잘못된 요청입니다.');history.back(-1);</script>";
exit();
}
파라미터로 입력받은 idx와 세션의 id를 쿼리문을 통해 검증한다. 쿼리문의 결과가 0일 경우 검증에 실패한 것이다.
2) 세션을 통한 검증
$query = "delete from members where id='{$_SESSION["id"]}'";
사용자의 입력을 통해 아이디 값을 받을 필요가 없을 때는 세션을 통해 id를 받아와서 사용한다.
'Security > Web Hacking' 카테고리의 다른 글
[WebHacking] URL 접근 제한 미흡 취약점 (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 |