#Deserialization #RCE
توابع Serialize در زبان هایی مانند PHP و JAVA و غیره از سال 2017 به اینور بستری برای رخداد حملات Code Execution در سمت Server شدند, و این مدل از آسیب پذیری ها همچنان پتانسیل بسیار بالایی در رخداد حملات سطح بالا رو دارا هستند,

در نتیجه در پلتفرم هایی که نیاز به انتقال مثلا یک ساختار به دیتابیس هستند, یا نیاز داریم تا در API تعریف شده یک برنامه, Object رو انتقال بدیم از توابع Serialize و Unserialize استفاده میکنیم, اما آیا هکرها قادر به تزریق مثلا یک کد به پارامتر های ساختارهای Serialize شده هستند؟ سابقه این نوع حملات نشون داده بله هستند...

https://www.ambionics.io/blog/drupal8-rce
https://www.exploit-db.com/exploits/46510
@Unk9vvN
#RMI Protocol #Deserialization Vulnerability
شاید اسم پروتکل Java RMI به گوشتون نخورده باشه اما جالبه که بدونید برای مدیریت RMX یا Remote Management Extentions به کار میره و تعاملات داده ای رو میتونه بر عهده بگیره, از جمله مدیریت و مانیتورینگ برنامه ها,و کلاس MBean برای طراحی قوانین این تکنولوژی

اینکار از طرفی خوبی هایی رو به همراه داره از جمله بالا رفتن سرعت Transfer اطلاعات, اما از طرفی هم میتونه موجب خطر آفرینی باشه, در طول سالها آسیب پذیری های متعددی از این سرویس کشف شده اما اخیرا فضای تحقیقاتی محققین به سمت کشف آسیب پذیری های Deserialization بر مبنای این پروتکل رو در پیش گرفتند,

برای مثال در تصویر پست سمت چپ یک فراخوانی wrapper مخصوص jndi رو در jmx مشاهده میکنید که هکر با استفاده از این,به نوعی پیلود تونسته مکانیزم احراز هویت رو دور بزنه البته این پیش تر به این دلیل بوده که الگوریتم تصدیق احراز در کلاس های JMXConnector رو داشته که اینجا موجب ساخت یک پیلود Serialize به دست payloadObject که یک آبجکت از کلاس ysoserial هستش رو به همراه داشته و در نهایت Initialize میشه برای ارسال به پروتکل RMI.

@Unk9vvN
#Java #Deserialization Vulnerability Detection Bypass on Blind Commons Gadgets
آسیب پذیری ها همواره در حال عمیق تر شدن هستند و آسیب پذیری Deserialization هم از این قاعده مستثنا نیست, حال این پیشرفت با چالش هایی هم رو به رو شده از جمله شناسایی پیلود های RCE که به دلیل محدود بودنشان به سادگی قابل Signature شدن و رهگیری هستند,

در این میان یک محقق ایده ای رو مطرح کرده که در فواصل ابتدایی خود با ذکر مثال ساده خلاصه گویی کرده, همونطور که در تصویر مشاهده میکنید ایده استفاده از Query های شرطی SQLMap روش خوبی برای دور زدن فایروال میتونه باشه,

که هکر با استفاده از تابع ()sleep امکان اینو پیدا میکنه که با زمان دادن به وبسایت متوجه صحت شرط خود شده یا خیر, به نوعی میتوان گفت که ایده Blind Base بودن یا شرطی بودن پیلودها مبنای خوبی حساب میشده و همونطور که در انتهای تصویر پست میبینید با استفاده از هوشمند کردن Condition پیلود سریالیز شده هکر امکان حدس کاراکتر رو هم پیدا میکنه,اطلاعات بیشتر در لینک زیر...

https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets
@Unk9vvN
#Nodejs #Deserialization Exploiting
تصویر شماره 1 حاوی یک کد سمت سرور است که دارای آسیب پذیری Deserialization در پارامتر دریافتی Cookie هستش,

اگر دقت کنید متغییر obj مستقیما مقدار Base64 شده پارامتر Cookie که در Object بالای یعنی str به عنوان یک ()toString ترجمه شده است را (str)unserialize کرده و اجرا میشود,

خب حالا بهره برداری از این آسیب پذیری مستلزم این است که یک پیلود RCE در خصوص پارسر زبان Nodejs طراحی بشود, خب در تصویر دوم من یک پیلود از Github پیدا کردم که به نظرم پیلود خوبی هست, همونطور که میبینید دو require به net و child_process زده شده که امکان ایجاد یک سوکت بر بستر یک پروسس زیرین رو فراهم میکنه,

نکته ای که در این پیلود مهمه اینه که هکر با استفاده از,تعریف یک () bracket در انتهای پیلود یک تماس بصورت invoked function ایجاد کرده که بعد از پارس شدن کد در سمت سرور بصورت اتوماتیک اجرا هم بشود,

مورد بعدی تصویر 3 هستش که پیلود ساخته شده میبایست یک بار به CharCode اینکودشده و سپس با اضافه کردن {} پیلود رو به فرمت Json تعریف کرده و نهایتا Base64 شده و آماده ارسال.

REF
@Unk9vvN