Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
bola-CVE-2023-27524 — 演示 CVE-2023-27524 破坏对象级授权(BOLA)漏洞,包含存在漏洞和已修复的 Flask API 实现,用于安全教育。 | Kitploit
工具/GitHubGitHub/rachidafaf/bola-cve-2023-27524
身份验证与授权漏洞分析Web应用程序漏洞利用API安全测试渗透测试学习与教育
GitHubrachidafaf/bola-cve-2023-27524

bola-CVE-2023-27524

演示 CVE-2023-27524 破坏对象级授权(BOLA)漏洞,包含存在漏洞和已修复的 Flask API 实现,用于安全教育。

查看仓库
55个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

bola-CVE-2023-27524

📄 README.md — BOLA CVE-2023-27524 演示项目

root@kitploit:~
# 🔐 对象级授权失效(BOLA)演示  
## CVE-2023-27524 安全分析与修复

---

## 📌 项目概述

本项目演示了一个现实世界中的**对象级授权失效(Broken Object Level Authorization,BOLA)**漏洞,以及使用基于 Flask 的 API 进行的安全修复方案。

该漏洞以 **CVE-2023-27524** 为原型,涉及不当的授权控制,使攻击者能够通过修改 API 请求中的对象标识符(ID)来访问或操作未授权的对象。

本仓库包含:
- ❌ vulnerable_api.py:API 的易受攻击版本
- ✅ fixed_vulnerable_api.py:实现了正确对象级授权的安全修复版本

---

## ⚠️ 什么是 BOLA?

**对象级授权失效(Broken Object Level Authorization,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 篡改攻击

---

## 🧠 关键安全要点

> 切勿在未于服务端验证授权的情况下信任用户提供的对象标识符。

仅有认证是不够的——**必须在对象层面强制执行授权。**

---

## 📊 攻击流程与安全流程对比

### ❌ 易受攻击的流程:

```
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
```
下载工具