인증 Authentication
사용자가 본인이 주장하는 사람이 맞는지 확인하는 신원 증명과정
사용자 이름과 패스워드의 조합이나 생체정보 등으로 신원확인 방식이 사용해서 권한을 가진 사용자만 시스템에 접근하도록 함.
세션관리에서 중요한 개념이 쿠키와 세션이 있는데 웹사이트에서 신원확인, 사용자 행동 추적에 사용
(쿠키: 웹서버와 브라우저를 통해 사용자의 컴퓨터에 저장되는 텍스트파일로 사용자 식별 기능
세션: 서버 측에 저장되는 사용자 정보로 브라우저에 저장되어 서버가 사용자의 세션 데이터 조회)
사용자의 중요 정보는 서버에, 세션 아이디만 클라이언트 측에 저장된다면 면에서 쿠키보다 안전하고 우수
인가 Authorization
해당 사용자가 어떤 리소스나 서비스에 접근 권한이 있는지 확인, 작업 범위를 확인함
(ex. Role-Based Access Control: 사용자의 역할에 따른 리소스 접근 권한 결)
인가에 사용되는 기술 JWT, OAuth에 대해 알아보자
JWT
JSON 기반의 표준으로, 사용자의 인증 상태와 권한을 나타내는 데 사용되는 정보가 있어 안전한 전송에 사용됨.
사용자가 로그인 이후 이루어지는 모든 요청에 이 토큰이 포함되고 토큰에 기록된 정보에 따라 허용된 서비스나 자원에 접근할 수 있다. 다양한 도메인에서 사용되어 주로 SSO 시스템에서 많이 사용됨. 헤더, 페이로드, 서명으로 이루어져 있는데 각 역할은 아래와 같다
헤더 | 토큰 유형과 해싱 알고리즘 명시 |
페이로드 | 클레임(키-값 쌍의 형태) 정보 집합 |
서명 | 헤더와 페이로드를 검증하는 용도 |
jwt에 대해서는 다음에 더 자세히 araboza
OAuth
OAuth 2.0 기준 구성요소
Resource Owner | 사용자 |
Client | 리소스 서버에서 제공하는 자원을 사용하는 애플리케이션 |
Resource Server | 자원을 호스팅하는 서버 |
Authorization Server | 사용자 동의를 받아서 권한을 부여하는 서버 |
사용자가 서비스를 제3의 애플리케이션에 위임할 수 있게 하는 표준, 사용자가 구글 계정으로 다른 사이트에 로그인하면 해당 사이트는 구글 OAuth를 사용해서 사용자 인증을 하는 접근 위임 개방형 표준. OAuth를 이용하면 인증을 공유하는 앱끼리 별도의 인증이 필요 없어 안전하게 통합 사용이 가능하다. 사용자 정보를 안전하게 보호하고 편의성도 증대시키는 장점이 있다.
사용자가 아이디, 패스워드로 로그인 요청을 넣으면 서버에서는 DB에서 조회해 확인하고 존재한다면 사용자의 세션을 생성해 세션 스토리지에 저장함. 그리고 사용자에게 세션 아이디를 발급하는데, 이는 서버와 세션 스토리지에서 고유 식별자로 활용하는 역할임.
사용자가 다른 요청을 보낼 때마다 발급받은 세션 아이디로 쿠키값으로 보내고, 서버는 이를 세션 아이디에 저장된 값과 비교해서 사용자의 요청을 처리하고 응답을 보냄!
그런데 쿠키값이 공격자에 의해 탈취된다면?
공격자는 탈취한 쿠키값으로 서버에 요청을 보낼 수 있게 되는데 이를 세션 하이재킹이라고 한다
인증에 관련된 다른 취약점으로는 브루트 포스 Brute Force Attack이라고 한다. 가능한 모든 조합을 대입해서 시도하는데 특히 비밀번호와 해시 값 크래킹에 유용하다. 사용할 툴로는 John The Ripper, Hashcat 등이 있음
또 다른 취약점에는 MFA, Multi-Factor-Authentication이 있다. 두 가지 이상의 인증 방법을 제공하는 보안 절차를 우회하는 절차이다. 하지만 공격자가 피해자의 로그인 정보를 얻게 되면 지문 등록을 새로 할 수 있는 방식의 취약점이 있다
입력 값 검증 Input Validation
사용자로부터 받는 데이터는 시스템에 전달되기 전에 형식, 길이, 크기, 범위등을 충족하는지 확인하는 과정이다.
SQLi, XSS 공격을 필터링해서 보안 강화를 하는 기능이 있고 잘못된 데이터가 시스템에 들어가 오류를 발생시키는 것을 막는 역할을 한다.
- 화이트 리스트 접근법: 미리 정의된 특정 조건을 만족하는 입력만을 허용하고 그 외의 입력은 거부
- 블랙리스트 접근법: 특정 조건을 만족하는 입력을 거부(SELECT, DROP, DELETE 같은 키워드 거부해서 SQLi 방지)
'웹해킹' 카테고리의 다른 글
웹 취약점 체이닝의 개념과 실제 버그 사례 (0) | 2025.03.10 |
---|---|
[웹해킹] OWASP Top10 취약점 - IDOR, XSS, CSRF, SQL injection, File Inclusion, SSRF (1) | 2025.03.08 |
[웹해킹] HTTP 응답코드 종류, 프록시의 기능, Burpsuite의 주요 기능 소개 (0) | 2025.03.08 |
[웹해킹] 클라이언트와 서버 통신 구조와 GET POST 메소드 (1) | 2025.03.07 |
[웹해킹] 웹 어플리케이션 작동원리 Web Application (1) | 2025.03.06 |