오늘은 인증&인가 취약점에 대하여 알아보겠습니다.
1. 인증 vs 인가 (What's the diffrence?)
단어가 둘이 한끗차이라서 누군가 순간적으로 무슨차이냐고 물어본다면 잠시 생각해야만 할 것 같습니다.
하지만 이 둘은 엄연히 다른 단어이고 큰 차이가 있습니다.
인증 (Athentication) | 인가 (Ahtoriztion) 취약점 |
그 사람이 본인이 맞는지 확인하는 작업. | 특정 권한을 부여하는것. |
>예시
>> 인증
인증의 예로는 저희가 사용하는 로그인 페이지를 예로 들수 있습니다.
로그인 을 하기위해서 아이디와 비밀번호를 입력합니다.
이 아이디의 사용자가 맞는지 비밀번호를 통해 확인하는 작업이 바로 인증입니다.
그래서 로그인 인증 이라고 하는거죠.
>> 인가
인가의 예로는 게시글 수정을 예로 들어볼 수 있을것 같습니다.
게시글 수정같은 경우는 글쓴이 외에는 허용이 될 수 없습니다.
즉 수정기능이란 특정권한을 글쓴이에게만 부여하는 것인데 이러한 과정이 인가 입니다.
특정 권한을 부여하는 것이죠.
2. 인증 (Athentication) 취약점
-> 인증과정에서 일어나는 취약점
-> 인증을 무시하는 공격
*인증 취약점 대표케이스
1. Cookie 를 통해 인증하는 케이스 : (클라이언트 측 정보를 통해서 인증하는 케이스)
> 쿠키를 통해 인증을 진행한다면 사실 별 의미가 없습니다.
쿠키는 클라이언트 측에 저장되는 정보기 때문에 이 쿠키는 클라이언트 측에서 얼마든 변조를 할 수 있기 때문입니다.
이것을 쉽게 쿠키변조라고 말합니다.
2. Process 점프
> 직접접근: 만약 인증 페이지 주소가 step2 면 공격자는 step3 라고 주소창에 입력하여 직접적으로 우회가 가능합니다.
본인인증 페이지 또한 이러한 직접접근 방법으로 우회할 수 있습니다.
3. 파라미터 응답값 변조
> 웹페이지에서 전달되는 POST&GET 변수의 값을 이용하여 인증을 우회하는 방법도 있습니다.
특히 모바일 앱에서 이런 케이스의 인증 취약점이 많습니다.
4. 인증 횟수 제한 X
> 인증횟수를 제한하지 않을경우 브루트 포스(무차별 대입)공격이 가능해지므로 이 또한 인증 취약점이 됩니다.
(EX) 로그인 페이지에선 횟수 제한이 있지만 , 마이페이지에서 비밀번호 검증 횟수 제한이 없는 경우.
3. 인가 (Ahtoriztion) 취약점
-> 원래는 못해야 하는것을 하는 것.
인가 취약점을 찾을때 시야를 두는 전략은 크게 두가지 입니다.
> 파라미터 변조
> 직접 접근을 하는 경우.
CASE 1) 주석으로 접근 제한을 하는 케이스(클라이언트 측 인가 , 권한 체크)
웹사이트를 보면 특정권한을 가진 계정은 버튼이 뜨는데 그렇지 않은 계정은 버튼이 안보이는 경우가 있습니다.
이런 경우 개발자 도구를 통해 확인하면 버튼부분 HTML 태그를 주석처리 해놓은 경우가 많습니다.
이런 식으로 주석처리를 통해 특정 기능을 인가하게 되면 주석만 풀어버린후 버튼을 클릭할 수 있게됩니다.
즉 불안정한 인가 처리를 한것입니다.
CASE 2) 인가 체크를 클라이언트 측에서 하고 있는 경우.
가끔 서버측에서 인가 체크가 이루어지는것이 아닌 클라이언트 측 브라우저에서 처리되는 경우가 있습니다.
이는 자바스크립트를 이용한 경우인데,이런 경우엔 주로 alert창으로 "권한이 없습니다" 라고는 뜨지만 서버로 어떠한 요청도 보내지 않는 경우를 확인할 수 있습니다.
서버에 요청도 보내지 않고 권한이 없는지 체크를 한다? 이 경우 우회가 가능할 수 있습니다.
자바스크립트의 경우 개발자도구를 통해 확인할 수 있는데 기능을 사용하려고 할때 작동되는 자바스크립트 함수를 찾아서 분석한 후,응답패킷이 올때 자바스크립트 함수를 조작하여 인증우회가 가능해집니다.
*오는 응답패킷을 바꾸는 방법은 Burp Suite 같은 프록시 도구를 통해 이루어 집니다.
CASE 3) Guessing 공격
말 그대로 추측을 통한 공격입니다.
만약 post_read.php 가 게시글을 읽는 페이지라면 "post_update.php , post_change.php , post_modify ....등 은 글을 수정하는 페이지겠구나" 라고 추측하여 다른사람의 게시글을 수정하는 기능을 이용하는 공격입니다.
이는 많은 실무경험을 통해 차츰차츰 쌓이는 능력이라고 할 수 있습니다...
CASE 4) 파라미터 변조
주소창에 ?id=42 라고 되어있으면 42를 41 로 바꾸는 행위를 하는 등 파라미터값을 변조하여 다른 사람의 게시물이나 정보의 조작을 하는 방법입니다.
인증&인가 취약점은 이러한 관점을 두고 살펴보시면 쉽게 접근하실수 있을것 같습니다!
긴 글 읽어주셔서 감사합니다!
'웹해킹' 카테고리의 다른 글
[웹 해킹]Bit연산 기반의 Blind SQL Injection 방법 (실습 포함) (0) | 2025.01.14 |
---|---|
Blind SQL 인젝션 상황시 알아두면 좋은기법(이진탐색 기법,Bit 연산기법) (0) | 2025.01.10 |
File upload vulnerability - 파일 업로드 취약점 (1) (2) | 2024.07.19 |
CSRF(Cross Site Request Forgery)공격 (0) | 2024.07.04 |
XSS 공격 대응방안 (0) | 2024.06.30 |