이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A7 - Missing Functional Level Access Control (기능 수준의 접근 통제 누락)
OWASP Top 10 에서는 Missing Functional Level Access Control 항목은 Broken Access Control 항목으로 통합되었습니다.
개요
2017년 5위에서 1위로 올라가면서 94 %의 응용 프로그램이 평균 발생률 3.81 %의 손상된 액세스 제어에 대해 테스트되었으며 318k 이상의 기여 데이터 세트에서 가장 많이 발생합니다. 주목할만한 공통 약점 열거 (CWE)는 CWE-200 : 허가받지 않은 배우에게 민감한 정보 노출, CWE-201 : 보낸 데이터에 민감한 정보 삽입 및 CWE-352 : 교차 사이트 요청 위조입니다.
설명
액세스 제어는 사용자가 의도한 권한 이외의 작업을 수행할 수 없도록 정책을 적용합니다. 실패는 일반적으로 모든 데이터의 무단 정보 노출, 수정 또는 파괴 또는 사용자의 제한 밖에서 비즈니스 기능을 수행하는 결과를 초래합니다. 일반적인 액세스 제어 취약성은 다음과 같습니다.
- 특정 기능, 역할 또는 사용자에게만 액세스 권한이 부여되어야 하지만 모든 사용자가 사용할 수 있는 최소 권한 또는 기본 거부 원칙을 위반하는 행위입니다.
- URL (매개 변수 조작 또는 강제 탐색), 내부 응용 프로그램 상태 또는 HTML 페이지를 수정하거나 API 요청을 수정하는 공격 도구를 사용하여 액세스 제어 검사를 우회합니다.
- 고유한 식별자를 제공하여 다른 사용자의 계정을 보거나 편집할 수 있도록 허용(보안되지 않은 직접 개체 참조)
- POST, PUT 및 DELETE에 대한 액세스 제어가 누락된 API에 액세스합니다.
- 특권의 상승이다. 로그인하지 않고 사용자로 동작하거나 사용자로 로그인할 때 관리자로 동작합니다.
- JJSON 웹 토큰(JWT) 액세스 제어 토큰을 재생하거나 조작하는 것과 같은 메타데이터 조작 또는 권한을 높이거나 JWT 무효화를 남용하기 위해 조작된 쿠키 또는 숨겨진 필드.
- CORS 잘못된 구성을 사용하면 인증되지 않았거나 신뢰할 수 없는 원본에서 API에 액세스할 수 있습니다.
- 인인증되지 않은 사용자로 인증된 페이지를 강제로 검색하거나 표준 사용자로 권한 있는 페이지를 검색합니다.
예방하는 방법
액세스 제어는 공격자가 액세스 제어 검사 또는 메타데이터를 수정할 수 없는 신뢰할 수 있는 서버 측 코드 또는 서버 없는 API에서만 유효합니다.
- 공용 리소스를 제외하고 기본적으로 거부합니다.
- CORS(Cross-Origin Resource Sharing) 사용 최소화를 포함하여 액세스 제어 메커니즘을 한 번 구현하고 애플리케이션 전체에서 재사용합니다.
- 모델 액세스 제어는 사용자가 레코드를 생성, 읽기, 업데이트 또는 삭제할 수 있다는 것을 허용하기보다는 레코드 소유권을 적용해야 합니다.
- 고유한 애플리케이션 비즈니스 제한 요구사항은 도메인 모델에 의해 시행되어야 합니다.
- 웹 서버 디렉토리 목록을 비활성화하고 파일 메타데이터(예: .git) 및 백업 파일이 웹 루트 내에 존재하지 않는지 확인하십시오.
- 액세스 제어 실패를 기록하고 적절한 경우 관리자에게 알립니다(예: 반복되는 실패).
- 자동화된 공격 도구로 인한 피해를 최소화하기 위한 속도 제한 API 및 컨트롤러 액세스.
- 상태 저장 세션 식별자는 로그아웃 후 서버에서 무효화되어야 합니다. Stateless JWT 토큰은 공격자의 기회가 최소화되도록 수명이 짧아야 합니다. 수명이 긴 JWT의 경우 OAuth 표준에 따라 액세스 권한을 취소하는 것이 좋습니다.
개발자와 QA 직원은 기능적 액세스 제어 장치 및 통합 테스트를 포함해야 합니다.
공격 시나리오의 예
시나리오 #1: 애플리케이션이 계정 정보에 액세스 하는 SQL 호출에서 확인되지 않은 데이터를 사용합니다.
공격자는 단순히 브라우저의 'acct' 매개변수를 수정하여 원하는 계정 번호를 보냅니다. 올바르게 확인되지 않으면 공격자는 모든 사용자의 계정에 액세스 할 수 있습니다.
시나리오 #2: 공격자는 단순히 대상 URL로 검색을 강제 실행합니다. 관리자 페이지에 접근하기 위해서는 관리자 권한이 필요합니다.
인증되지 않은 사용자가 두 페이지 중 하나에 액세스할 수 있다면 결함입니다. 관리자가 아닌 사람이 관리자 페이지에 액세스할 수 있다면 이는 결함입니다.
참고
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A7 Directory Traversal - Files (0) | 2022.09.22 |
---|---|
비박스(bWAPP) A7 Directory Traversal - Directories (0) | 2022.09.21 |
비박스(bWAPP) A6 Text Files (Accounts) (0) | 2022.09.19 |
비박스(bWAPP) A6 POODLE Vulnerability (0) | 2022.09.19 |
비박스(bWAPP) A6 HTML5 Web Storage (Secret) (0) | 2022.09.19 |