Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
bola-CVE-2023-27524 — CVE-2023-27524 객체 수준 권한 부여(BOLA) 취약점을 보여주며, 보안 교육을 위해 취약한 Flask API 구현과 수정된 Flask API 구현을 함께 제공합니다. | Kitploit
도구/GitHubGitHub/rachidafaf/bola-cve-2023-27524
Authentication & AuthorizationVulnerability AnalysisWeb Application ExploitationAPI Security TestingPenetration TestingLearning & Education
GitHubrachidafaf/bola-cve-2023-27524

bola-CVE-2023-27524

CVE-2023-27524 객체 수준 권한 부여(BOLA) 취약점을 보여주며, 보안 교육을 위해 취약한 Flask API 구현과 수정된 Flask API 구현을 함께 제공합니다.

저장소 보기
4개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

bola-CVE-2023-27524

📄 README.md — BOLA CVE-2023-27524 데모 프로젝트

root@kitploit:~
# 🔐 객체 수준 인증 위반(BOLA) 데모  
## CVE-2023-27524 보안 분석 및 수정

---

## 📌 프로젝트 개요

이 프로젝트는 Flask 기반 API를 사용하여 실제 **객체 수준 인증 위반(BOLA)** 취약점과 그에 대한 안전한 수정 방법을 보여줍니다.

이 취약점은 **CVE-2023-27524**를 모델로 하며, 공격자가 API 요청에서 객체 식별자(ID)를 수정하여 승인되지 않은 객체에 접근하거나 조작할 수 있도록 하는 부적절한 인증 제어와 관련됩니다.

이 저장소는 다음을 포함합니다:
- ❌ vulnerable_api.py: 취약한 API 버전
- ✅ fixed_vulnerable_api.py: 적절한 객체 수준 권한 부여를 구현한 안전한 수정 버전

---

## ⚠️ BOLA란 무엇인가?

**객체 수준 인증 위반(BOLA)**은 애플리케이션이 다음과 같은 경우 발생합니다:
- 객체 ID를 노출함 (예: `/profile?id=2`)
- 인증된 사용자가 해당 객체에 접근할 권한이 있는지 확인하지 않음

### 🔴 영향:
공격자는 다음을 수행할 수 있습니다:
- 다른 사용자의 개인 데이터 접근
- 권한 없는 리소스 수정 또는 삭제
- 수평적 권한 상승 수행

---

## 💥 취약한 구현

### 예시 (취약 코드)

```python
@app.route('/profile')
def profile():
    user_id = request.args.get("id")
    return users.get(int(user_id))
```

### ❌ 문제점:

* 인증 확인 없음
* 소유권 검증 없음
* 사용자 제어 ID가 데이터베이스 객체에 직접 접근

### 🔓 익스플로잇 시나리오:

```
/profile?id=1   → Alice data
/profile?id=2   → Bob data (unauthorized access)
```

---

## 🔒 수정된 안전한 구현

### 예시 (안전한 코드)

```python
@app.route('/profile')
def profile():
    requested_id = int(request.args.get("id", session["user_id"]))

    # Object-level authorization check
    if requested_id != session["user_id"]:
        return "403 Forbidden - Access Denied", 403

    return users.get(requested_id)
```

---

## ✅ 적용된 보안 수정

이 구현은 다음을 강제하여 BOLA를 방지합니다:

✔ 세션 기반 인증
✔ 객체 소유권 검증
✔ 서버 측 인증 확인
✔ ID 변조 공격 방지

---

## 🧠 주요 보안 교훈

> 서버 측에서 권한을 확인하지 않고 사용자가 제공한 객체 식별자를 신뢰하지 마십시오.

인증만으로는 충분하지 않습니다. — **객체 수준에서 권한 부여가 적용되어야 합니다.**

---

## 📊 공격 흐름 vs 안전한 흐름

### ❌ 취약한 흐름:

```
User → API Request (/profile?id=2) → Direct DB Access → Data Leak
```

### ✅ 안전한 흐름:

```
User → API Request → Session Check → Ownership Validation → Allowed/Denied
```

---

## 🧪 실행 방법

### 1. 종속성 설치

```bash
pip install flask
```

### 2. 애플리케이션 실행

```bash
python fixed_vulnerable_api.py or vulnerable_api.py
```

### 3. 앱 접속

```
http://127.0.0.1:5000
```

---

## 📁 프로젝트 구조

```
api-bola-demo/
│
├── vulnerable_api.py     # insecure version
├── fixed_vulnerable_api.py   # Fixed BOLA version
└── README.md
```
도구 다운로드