#Type_Juggling #Vulnerability
آیا در خصوص آسیب پذیری Type Juggling یا دستکاری نوع داده چیزی شنیده اید؟
همونطور که میدونید در PHP بصورت کلی نوع داده ها به سه دسته String و Number که شامل int و float و نوع سوم یعنی Boolean ها که به دو خروجی True و False تاکید داره, آسیب پذیری دستکاری نوع داده اونجایی خودنمایی میکنه که مثلا در Condition ها بجای استفاده از مقایسه یا Comparisons strict (===) از Comparisons loose (==) استفاده میشه,
این بدین معنیه که شرط هایی که برنامه نویسان به واسطه loose طراحی کردند رو با منطقی که در تصویر مقایسه ای loose Comparisons نشون داده شده میشه تغییر داد,برای مثال:
▪️
شرط های بالارو اگر بررسی دقیق کنید متوجه میشوید که تناقضی در ارسال پاسخ True در شرط های بالا دیده میشه که توضیح اون رو میسپارم به خودتون...
https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09
@Unk9vvN
آیا در خصوص آسیب پذیری Type Juggling یا دستکاری نوع داده چیزی شنیده اید؟
همونطور که میدونید در PHP بصورت کلی نوع داده ها به سه دسته String و Number که شامل int و float و نوع سوم یعنی Boolean ها که به دو خروجی True و False تاکید داره, آسیب پذیری دستکاری نوع داده اونجایی خودنمایی میکنه که مثلا در Condition ها بجای استفاده از مقایسه یا Comparisons strict (===) از Comparisons loose (==) استفاده میشه,
این بدین معنیه که شرط هایی که برنامه نویسان به واسطه loose طراحی کردند رو با منطقی که در تصویر مقایسه ای loose Comparisons نشون داده شده میشه تغییر داد,برای مثال:
▪️
TRUE: "0000" == int(0)
▪️TRUE: "0e12" == int(0)
▪️TRUE: "1abc" == int(1)
▪️TRUE: "0abc" == int(0)
▪️TRUE: "abc" == int(0)
// !!شرط های بالارو اگر بررسی دقیق کنید متوجه میشوید که تناقضی در ارسال پاسخ True در شرط های بالا دیده میشه که توضیح اون رو میسپارم به خودتون...
https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09
@Unk9vvN
#Python #Input #Vulnerability
در سال ۲۰۱۷ یک محقق آسیب پذیری رو در تابع ()input زبان پایتون ۲ کشف کرد که نکات جالبی رو به همراه خودش داره, اول اینکه منشاء این آسیب پذیری این است که تابع ()input از ماژول builtin استفاده میکند برای اجرای خود و همچنین مقادیر تابع ()input درون تابع ()eval قرار میگیرد در نتیجه مقادیر ورودی اگر بصورت کد پایتون باشند اجرا خواهند شد,
اما نکته ای که این آسیب پذیری داره که در خصوص اون این پست رو زدیم اینه که این آسیب پذیری میتونه در حالاتی پازل تکمیل کننده ای از یک حمله سایبری عظیم بشه, تصور کنید این اسکریپت در یک سیستم هدف Echo بشه و بعد با ماژول هایی مانند pyinstaller تبدیل به یک فایل فرمت PE بشه و یک argv برایش تعریف شده باشه, اینجاس که میتونه برای ما مثل یک Persistence مخفی در سیستم عامل قربانی عمل کنه و جزئی از پازل Lateral Movement حمله #APT ما باشه...
https://medium.com/@abdelazimmohmmed/python-input-vulnerability-30b0bfea22c9
https://docs.python.org/2/library/functions.html
@Unk9vvN
در سال ۲۰۱۷ یک محقق آسیب پذیری رو در تابع ()input زبان پایتون ۲ کشف کرد که نکات جالبی رو به همراه خودش داره, اول اینکه منشاء این آسیب پذیری این است که تابع ()input از ماژول builtin استفاده میکند برای اجرای خود و همچنین مقادیر تابع ()input درون تابع ()eval قرار میگیرد در نتیجه مقادیر ورودی اگر بصورت کد پایتون باشند اجرا خواهند شد,
اما نکته ای که این آسیب پذیری داره که در خصوص اون این پست رو زدیم اینه که این آسیب پذیری میتونه در حالاتی پازل تکمیل کننده ای از یک حمله سایبری عظیم بشه, تصور کنید این اسکریپت در یک سیستم هدف Echo بشه و بعد با ماژول هایی مانند pyinstaller تبدیل به یک فایل فرمت PE بشه و یک argv برایش تعریف شده باشه, اینجاس که میتونه برای ما مثل یک Persistence مخفی در سیستم عامل قربانی عمل کنه و جزئی از پازل Lateral Movement حمله #APT ما باشه...
https://medium.com/@abdelazimmohmmed/python-input-vulnerability-30b0bfea22c9
https://docs.python.org/2/library/functions.html
@Unk9vvN
#Vulnerability Discovery Level
اگر علاقمند هستید که بدانید مراتب کشف آسیب پذیری چیا هستند و در چه مرتبه ای قرار دارند به تصویر پست دقت کنید,
اولین قدم همواره تحلیل ایستا هستش که بواسطه مهندسی معکوس میتوان انجام داد و تا حدی امکان کشف آسیب پذیری رو به محقق خواهد داد اما بسیار دشوار میباشد,
مورد بعدی بحث Fuzzing هستش که بواسطه نرم افزار های نوشته شده و تکنیک های مورد استفاده در این نرم افزارها پیلودهایی از Type های مختلفی از آسیب پذیری ها را ساخته و با روش منطقی مشخص به ورودی های برنامه ارسال میکند تا نشان هایی از وجود آسیب پذیری را مشاهده کند,
مورد بعدی تحلیل حملاتی است که بعد از کشف منطقه مورد ضعف انجام میشه, یعنی مرحله تصدیق و تعیین جزئیات آسیب پذیری خواهیم داشت و بررسی میکنیم
مورد بعد Asan هستش که بواسطه Map کردن بصورت Dynamic بروی منطقه Memory Shadow حافظه و تحلیل رفتار نرم افزار و اشاره گرها و توابع موجود در برنامه است, که اگر موردی تطبیق پیدا کند با Type های مختلف آسیب پذیری ها سریعا مشخص کرده و اعلام میدارد,
دو مورد آخر هم استفاده از تکنیک های Bypass در خصوص Mitigation های مختلف خواهد بود
@Unk9vvN
اگر علاقمند هستید که بدانید مراتب کشف آسیب پذیری چیا هستند و در چه مرتبه ای قرار دارند به تصویر پست دقت کنید,
اولین قدم همواره تحلیل ایستا هستش که بواسطه مهندسی معکوس میتوان انجام داد و تا حدی امکان کشف آسیب پذیری رو به محقق خواهد داد اما بسیار دشوار میباشد,
مورد بعدی بحث Fuzzing هستش که بواسطه نرم افزار های نوشته شده و تکنیک های مورد استفاده در این نرم افزارها پیلودهایی از Type های مختلفی از آسیب پذیری ها را ساخته و با روش منطقی مشخص به ورودی های برنامه ارسال میکند تا نشان هایی از وجود آسیب پذیری را مشاهده کند,
مورد بعدی تحلیل حملاتی است که بعد از کشف منطقه مورد ضعف انجام میشه, یعنی مرحله تصدیق و تعیین جزئیات آسیب پذیری خواهیم داشت و بررسی میکنیم
مورد بعد Asan هستش که بواسطه Map کردن بصورت Dynamic بروی منطقه Memory Shadow حافظه و تحلیل رفتار نرم افزار و اشاره گرها و توابع موجود در برنامه است, که اگر موردی تطبیق پیدا کند با Type های مختلف آسیب پذیری ها سریعا مشخص کرده و اعلام میدارد,
دو مورد آخر هم استفاده از تکنیک های Bypass در خصوص Mitigation های مختلف خواهد بود
@Unk9vvN
#PrintNightmare #Spooler #Vulnerability
ماجرای بهره برداری از درایور Spooler برمیگرده به ویروس Stuxnet که برای اولین بار از این آسیب پذیری منطقی در نحوه کارکرد و نصب درایور استفاده کرده است
کار این درایور اینه که دستگاه های سخت افزار پرینتر رو نصب میکنه، در تصویر شماره یک توابع API مختص به نصب درایور بصورت Remote بوده بواسطه RPC و یه Warning هم داده میشه به ادمین سمت سرور، همچنین در تصویر شماره 3 نحوه عملکرد سمت Client رو میتونید ببینید که هم بصورت CLI و GUI چطور میتواند اتفاق بی افتد
حالا مشکلی که وجود دارد اینه که ما با استفاده از توابع API سیستم عامل ویندوز میتوانیم هر درایوری رو به عنوان درایور یک پرینتر نصب بکنیم و هیچ گونه تصدیقی در خصوص Verify کردن درایور انجام نمیشه
تصویر شماره 4 توضیحاتی در خصوص ویژگی های سرویس Print Spooler هستش که میتونید ببینید بحث Auto-start بودن بحث استخراج API های Printing از این سرویس و غیره،
این درایور میتواند سطح دسترسی را بالا ببرد میتواند Lateral Movement انجام داد چرا که این سرویس بصورت RPC هم میتواند Parse شود، که در تصویر شماره 5 میتوانید مشاهده بفرماید.
@Unk9vvN
ماجرای بهره برداری از درایور Spooler برمیگرده به ویروس Stuxnet که برای اولین بار از این آسیب پذیری منطقی در نحوه کارکرد و نصب درایور استفاده کرده است
کار این درایور اینه که دستگاه های سخت افزار پرینتر رو نصب میکنه، در تصویر شماره یک توابع API مختص به نصب درایور بصورت Remote بوده بواسطه RPC و یه Warning هم داده میشه به ادمین سمت سرور، همچنین در تصویر شماره 3 نحوه عملکرد سمت Client رو میتونید ببینید که هم بصورت CLI و GUI چطور میتواند اتفاق بی افتد
حالا مشکلی که وجود دارد اینه که ما با استفاده از توابع API سیستم عامل ویندوز میتوانیم هر درایوری رو به عنوان درایور یک پرینتر نصب بکنیم و هیچ گونه تصدیقی در خصوص Verify کردن درایور انجام نمیشه
تصویر شماره 4 توضیحاتی در خصوص ویژگی های سرویس Print Spooler هستش که میتونید ببینید بحث Auto-start بودن بحث استخراج API های Printing از این سرویس و غیره،
این درایور میتواند سطح دسترسی را بالا ببرد میتواند Lateral Movement انجام داد چرا که این سرویس بصورت RPC هم میتواند Parse شود، که در تصویر شماره 5 میتوانید مشاهده بفرماید.
@Unk9vvN
#SharePoint #Deserialize #Vulnerability
نمونه ای از آسیب پذیری Deserialize در Functionality های پارس مقادیر sk یا Session Key که منجر به اجرای کد از راه دور میشود،
این آسیب پذیری روی نسخه های ۲۰۱۹ ، ۲۰۱۶ و ۲۰۱۳ وجود داشته و با شناسه CVE-2022-22005 ثبت شده است، فرایند اعمال وصله مایکروسافت در نسخه های قبلی دور زده شده و شروطی که برای تصدیق عدم وجود Object های خطرناک به درستی طراحی نشده است،
مدت دو ساله که محققین تست نفوذ وب تمرکز خودشون رو در خصوص دور زدن فیلترینگ ها و اعمال تصدیق های مایکروسافت بر روی آسیب پذیری هایی مانند Deserialization و SSRF و Directory Traversal گذاشته اند و اغلب موفق هم بوده اند،
یکی از عوامل موفقیت و جذابیت این آسیب پذیری ها، دسترسی به منابع کد سرویس های مایکروسافتی بوده و همچنین ماهیت این آسیب پذیری ها در حملات #APT بسیار مهم و نقش آفرین است...
https://hnd3884.github.io/posts/cve-2022-22005-microsoft-sharepoint-RCE/
@Unk9vvN
نمونه ای از آسیب پذیری Deserialize در Functionality های پارس مقادیر sk یا Session Key که منجر به اجرای کد از راه دور میشود،
این آسیب پذیری روی نسخه های ۲۰۱۹ ، ۲۰۱۶ و ۲۰۱۳ وجود داشته و با شناسه CVE-2022-22005 ثبت شده است، فرایند اعمال وصله مایکروسافت در نسخه های قبلی دور زده شده و شروطی که برای تصدیق عدم وجود Object های خطرناک به درستی طراحی نشده است،
مدت دو ساله که محققین تست نفوذ وب تمرکز خودشون رو در خصوص دور زدن فیلترینگ ها و اعمال تصدیق های مایکروسافت بر روی آسیب پذیری هایی مانند Deserialization و SSRF و Directory Traversal گذاشته اند و اغلب موفق هم بوده اند،
یکی از عوامل موفقیت و جذابیت این آسیب پذیری ها، دسترسی به منابع کد سرویس های مایکروسافتی بوده و همچنین ماهیت این آسیب پذیری ها در حملات #APT بسیار مهم و نقش آفرین است...
https://hnd3884.github.io/posts/cve-2022-22005-microsoft-sharepoint-RCE/
@Unk9vvN
#Elementor #XSS #Reflected #Vulnerability
مدت 4 ماهه که یک آسیب پذیری برای افزونه Elementor ثبت شده که از نسخه 1.5.0 تا 3.1.4 امکان رخدادش وجود داره.
این آسیب پذیری از نوع Reflected بوده که بصورت Unauthenticated امکان تزریق کد جاوا اسکریپت رو خواهد داشت، منطقه آسیب پذیر پارامتر settings در
آسیب پذیری در بخش یک switch قرار داره که میبایست نوع داده دریافتی رو مشخص کنه، در switch قرار داده شده نوع options یا میبایست video باشه یا image و یا slideshow ، اگر هیچ کدام اینها نبود بصورت default نوع محتوای options رو html در نظر خواهد گرفت که این یعنی تزریق کد جاوا اسکریپتی!
روش های بهره برداری از این نوع آسیب پذیری ها قالبا مبتنی بر مهندسی اجتماعی میتونه باشه، اگر مهاجم ایمیل فیشینگ مناسبی رو تهیه کرده باشه و بواسطه تحریک ادمین وبسایت، یک کلیک لینک بدزده، میتونه حمله CSRF خودش رو مبنی بر اضافه کردن ادمین ترتیب بده.
جالبه که این آسیب پذیری 4 ماهه روی برخی سایت های فعال در حوزه امنیت هم بچشم میخوره.
@Unk9vvN
مدت 4 ماهه که یک آسیب پذیری برای افزونه Elementor ثبت شده که از نسخه 1.5.0 تا 3.1.4 امکان رخدادش وجود داره.
این آسیب پذیری از نوع Reflected بوده که بصورت Unauthenticated امکان تزریق کد جاوا اسکریپت رو خواهد داشت، منطقه آسیب پذیر پارامتر settings در
#elementor-action:action=lightbox&settings=
هستش که مقدار Base64 شده دریافت میکنه و نوع محتوا JSON هستش،آسیب پذیری در بخش یک switch قرار داره که میبایست نوع داده دریافتی رو مشخص کنه، در switch قرار داده شده نوع options یا میبایست video باشه یا image و یا slideshow ، اگر هیچ کدام اینها نبود بصورت default نوع محتوای options رو html در نظر خواهد گرفت که این یعنی تزریق کد جاوا اسکریپتی!
روش های بهره برداری از این نوع آسیب پذیری ها قالبا مبتنی بر مهندسی اجتماعی میتونه باشه، اگر مهاجم ایمیل فیشینگ مناسبی رو تهیه کرده باشه و بواسطه تحریک ادمین وبسایت، یک کلیک لینک بدزده، میتونه حمله CSRF خودش رو مبنی بر اضافه کردن ادمین ترتیب بده.
جالبه که این آسیب پذیری 4 ماهه روی برخی سایت های فعال در حوزه امنیت هم بچشم میخوره.
@Unk9vvN
#Semgrep #Static_Analysis #Binary #Vulnerability
یک پویشگر کد که بصورت آنالیز ایستا کار میکند، در خصوص کشف آسیب پذیری های Binary طراحی شده که بیش از 20 زبان رو پشتیبانی میکنه و به گفته خودش بالای 2000 rule پایش برای کشف آسیب پذیری داره.
این ابزار امکان نصب بصورت یک افزونه برای VSCode و Ghidra رو داشته و میتونه در زمان Disassemble کد، شروع به پایش آسیب پذیری کنه، برخی از این Rule هارو میتونید اینجا ببینید.
از ویژگی های جالب این ابزار میشود، به داشتن Syntax مخصوص در بحث ساخت Rule اشاره داشت که همانند امضاهای Yara امکان ساخت نوع Pattern مد نظر خودتون رو خواهد داشت و بصورت هوشمند شروع به پایش در کد کند..
یک ارائه هم در این خصوص انجام شده که اینجا میتونید مشاهده بفرماید.
https://semgrep.dev/
@Unk9vvN
یک پویشگر کد که بصورت آنالیز ایستا کار میکند، در خصوص کشف آسیب پذیری های Binary طراحی شده که بیش از 20 زبان رو پشتیبانی میکنه و به گفته خودش بالای 2000 rule پایش برای کشف آسیب پذیری داره.
این ابزار امکان نصب بصورت یک افزونه برای VSCode و Ghidra رو داشته و میتونه در زمان Disassemble کد، شروع به پایش آسیب پذیری کنه، برخی از این Rule هارو میتونید اینجا ببینید.
از ویژگی های جالب این ابزار میشود، به داشتن Syntax مخصوص در بحث ساخت Rule اشاره داشت که همانند امضاهای Yara امکان ساخت نوع Pattern مد نظر خودتون رو خواهد داشت و بصورت هوشمند شروع به پایش در کد کند..
یک ارائه هم در این خصوص انجام شده که اینجا میتونید مشاهده بفرماید.
https://semgrep.dev/
@Unk9vvN