حملات تحت وب

امتیاز کاربران

ستاره فعالستاره فعالستاره فعالستاره فعالستاره فعال
 

حملات تحت وب

تا اويل سال 2003 به هنگامی که صحبت از ایمن سازي سيستم يک سايت مي گرديد، می توانستیم تا میزان 70% مسئوليت را بر عهده دیواره های آتش (Firewall) و یا سيستم هاي سيستم هاي تشخيص و بازشناسي حملات(IDS)  قرار دهیم. اين سيستم ها حملات تعريف شده اي را که به سرويس هايي همانند : FTP , SMTP , POP3 , TELNET   و  ... صورت ميگرفت و ميگيرد را مورد ارزيابي قرار ميدادند ، اما ، با گسترش فضاي وب و به دنبال آن برنامه نويسي ها و روشهاي مختلف ارائه محتوا بر روي پروتکل HTTP  ، ما شاهد گسترش بسيار زياد حملات در اين باره شديم .

حملات تحت وب از سال 2004 به شدت گسترده شد ، و شايد از حملات کلاسيک پيشي گرفت ، به طوري که بنابر گزارش سايت امنيتي www.securityfocus.com ، اين حملات افزايش 100% و در بين حملات ديگر افزايش 40% داشته اند .

نمونه ایاز گزارش اعلام شده از حمله SQL INJECTION فقط در سال 2006 (6  ماه اول)

حملات هر روز پيچيده تر ميگرديد ، Bypass کردن firewall  ها امکان پذير شده بود ، و نفوذگران به راحتي سازمان هاي بزرگ را از پا در ميآوردند ، بنا بر گزارش آمده در سايتwww.zone-h.com   که سايت مخصوص ثبت و آمار دهي سايتهاي مورد حمله قرار گرفته است ، چه بيشمار سرور هايي را ميبينيم که با استفاده از حملات web application از  پاي در آمده اند .

Description: Description: The image “<a href=http://www.acunetix.com/site-audit/web-app-sec2.gif” cannot be displayed, because it contains errors.">

(همانطور که در شکل ديده ميشود ، Attacker توانسته تمامي موانع را رد کند )

شمای کلی از شرکت Acunetix  (یکی از ابزار های مورد استفاده ) ،  (پویش اتوملتیک مشکلات WebApp )

معرفی حملات تحت وب (به صورت کلی ) :

ورود اطلاعات)) Authenticationدسته حملات

Brute Force - 1

اين حمله به معناي ورود به زور به قسمت هايي است که داراي (ورودي اطلاعات ) ميباشد . و در اصل تست تعداد زيادي کلمه عبور است ، بدون محدوديت !

Insufficient Authentication -2

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

Weak Password Recovery Validation - 3

در بسياري از وبسايتهاي قسمت recovery Password و يا Forget Password وجود دارد ، اين حمله به اين اشاره دارد که Attacker بتوانيد با تمهيداتي بازيافت پسورد را به نفع خودش برگرداند .

 (تعيين هويت )Authorizationدسته حملات

Credential/Session Prediction - 4

سرقت نشست هايي که بين کاربران با سايتها صورت ميپذيرد .

Insufficient Authorization - 5

دسترسي به صفحاتي که در آنها تعيين هويت به درستي صورت نگرفته است .

Insufficient Session Expiration - 6

استفاده از نشست هاي مشترک ،هماندتاييد يک نشست هم نام ، براي مدير و هم براي کاربران عادي ديگر .

Session Fixation -7

استفاده  از نشست هاي بدون تاريخ مصرف ، نامحدود .

(حملات مبتني بر اشتباهات کاربر )Client-side Attacks

Content Spoofing -8

جعل محتوا .

Cross-site Scripting -9

حملات مبتني بر کد هايي که ميتواند اطلاعات مربوط به نشست ها را در اختيار قرار دهد .

 (اجراي دستورات  اشکالات سروري )Command Execution

Buffer Overflow -10

Format String Attack - 11

LDAP Injection - 12

OS Commanding -13

اجراي دستورات بر روي سيستم عامل (دستورات سيستم عامل ) .

SQL Injection-14

حمله اي مشترک که در ميان دو حوزه مشکلات برنامه نويسي  سروري قرار ميگيرد و به معني ضعف در برنامه نويسي و سوءاستفاده از اين خطاها براي تزريق دستورات به پايگاههاي داده است ، بدون دسترسي به پايگاه ها .

SSI Injection-15

XPath Injection-16

(فاش سازي اطلاعات مخفي )Information Disclosure

Directory Indexing-17

مربوط به جمع آوري و دسته بندي اطلاعات قرار گرفته بر روي سايت و نتيجه گيري از آنهاست .

Information Leakage-18

گرفتن اطلاعات از خطاهايي که برنامه نويسان و سرور گزارش ميدهند .

Path Traversal-19

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

Predictable Resource Location-20

کشف محل هايي که مخفي شده اند و ....

Logical Attacks

و مشکلات مخصوص و ذاتي کد نويسي ها ، که براي سوء استفاده از مهارت خاصي بايد بهره مند بود .

حالا که آشنايي مختصري با حملات مهم در اين زمينه پيدا شد ، بهتر است به ارائه آماري رسمي از سايتهاي امنيتي ، براي اينکه به درک بيشتري از اهميت هر کدام از اين حملات در دسته بندي خاص خودشان داشته باشيم ، بپردازيم :

طريقه ورد اطلاعات در لايه هاي مختلف و درجه آسيب رساني حملات به هر یک از قسمت هایی که نقشی در سرویس دهی Web Application ها دارند .

که طبق آنچه در مورد حملات در بالا شرح داده شد ميتوان اين لايه هاي به طور کلي دسته بندي کرد ، همانطور که مشاهده ميکنيد ، آسيب رساني به لايه هاي بانکهاي اطلاعاتي بيشترين ضريب را دارد .

اطلاعاتي که در زير دسته بندي شده اند ، براي سال 2006 و از بين 31373 سايت تست شده گرد آوري شده است (White Hat ) :

Threat Classification No. of Vulns Vuln. % No. of Sites % of Vuln. Sites
Brute Force 66 0.04% 66 0.21%
Content Spoofing 663 0.45% 218 0.69%
Cross Site Scripting 100,059 67.59% 26,531 84.57%
Directory Indexing 292 0.20% 168 0.54%
HTTP Response Splitting 4,487 3.03% 3,062 9.76%
Information Leakage 20,518 13.86% 4,924 15.70%
Insufficient Authentication 84 0.06% 1 0.00%
Insufficient Authorization 23 0.02% 4 0.01%
Insufficient Session Expiration 46 0.03% 1 0.00%
OS Commanding 143 0.10% 44 0.14%
Path Traversal 426 0.29% 374 1.19%
Predictable Resource Location 651 0.44% 173 0.55%
SQL Injection 19,607 13.25% 8,277 26.38%
SSI Injection 950 0.64% 298 0.95%
XPath Injection 14 0.01% 6 0.02%
148,029 100.00% 44,147

نمودار حملات :

Description: Description: Most Common Vulnerabilities by Class

Description: Description: Percentage of Websites Vulnerable by Class

به ترتيب : XSS – SQL INJECT  -  REFERERR INJECT – Spoofing – Upload INJECTION مهمترين اين حملات  دسته بندي مي شدند .

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

ارائه چک لیست تهیه شده برای این نوع تست نفوذ پذیری :

این check list  بر اساس قوانین بین المللی OWASP   تهیه  و تدوین گردیده است .

دیاگرام تست نفوذ پذیری web applications

نوع نام عملکرد توضیحات

AppDos

Application Flood

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

استفاده از ابزار های مختلف تست این حملات شامل فازر ها و ابزاهای دیگر از جمله این فازر ها Spike میباشد

Access Control

Parameter Analysis

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

در واقع این نوع حمله شامل دستکاریURL ها فرم ها رشته های دریافتی و اسکریپ های سمت مشتری و کوکی ها میشود .

Access Control

Authorization

دسترسی به منابعی که دسترسی به آنها نیاز به اعتبار سنجی به وسیله ارسال یک نام کاربری  و کلمه عبور دارد

ندارد

Access Control

Authorization

Parameter

Manipulation

دسترسی به  امکانات یک کاربر با ورود درست و صحیح و دستکاری پارامتر ها و نشست ها برای رسیدن به بقیه ی کاربران .

برای مثال پارامتر های account number و userlevel و id و ....

Access Control

Authorized Pages / Functions چک برای دسترسی به صفحاتی که نیاز به ورود کاربر دارند (دور زدن)

ندارد


نوع
نام عملکرد توضیحات

Authentication

Authentication endpoint request should be HTTPS

ایا کاربران توسط SSL در هنگام مورد محافظت میشوند یا خیر

در این بخش چک میشود که آیاCertificate پرسیده شده توسط کاربر چک میشود یا خیر .

Authentication

Authentication Bypass

اطمیمان از اینکه آیا میتوان اعتبار سنجی یا همان Authentication  را دور زد یا خیر .

این حمله میتواند با آسیب پذیری های مختلفی از جمله SQL Injectionصورت بگیرد و تست شود

Authentication

Authorization

دسترسی به منابعی که دسترسی به آنها نیاز به اعتبار سنجی به وسیله ارسال یک نام کاربری  و کلمه عبور دارد

ندارد

Authentication

User

Credential Transport Over An Encrypted Channel

اطمیمان از اینکه اطلاعات مهم مانند نام کاربری و کمله ی عبور از یک کانال با رمزنگاری عبور میکنند

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

Authentication User

Default Accounts چک برای دسترسی با استفاده از نام های کاربری و کلمات عبور پیشفرض .

ندارد

نوع نام عملکرد توضیحات

Authentication

USER

Password

Quality

اطمینان از این موضوع که پسورد ها قابل حدس زدن نیستند

ندارد

Authentication

USER

Password

structure

اطمینان از این که کاراکتر های خاص مانند متاکاراکتر ها و دیگر کاراکتر های ویژه ی مخرب نمیتوانند در پسورد باشند

معمولا در حملاتی مانند SQL Injection  این نوع تعبیر امنیتی کاربرد دارد

Authentication

USER

Blank Password

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

ندارد

Authentication Session Management

Session Token

Length

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

ندارد

Authentication

Session Management

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

ندارد

نوع

نام

عملکرد

توضیحات

Authentication

Session Management

Session Reuse

اطمینان از این موضوع کهToken مربوط به نشست ها در مورد یک کاربر استفاده از

ندارد

Authentication

Session Management

Session

Deletion

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

ندارد

Authentication

Session Management

Session Token Format

اطمینان از نشست های مورد استفاده به هیچ وجه هیج ج مانند history مرورگر ها وcache سیستم نوشتن نمیشوند  

ندارد

Configuration Management

HTTP Method

اصمینان از اینکه وب سرور اجازه ی دستکاری منابع از اینترنت را دارا نیست (مانندPUT یا DELETE)

ندارد

Configuration

Management

Virtually Hosted Sites تلاش برای فهمدین اینکه آیا میزبان سایت مجازی است یا خیر اگر سایت دیگری وجود داشته باشد میتواند آسیب پذیر باشد و باعث آسیب پذیری سایت شما شود .

نوع نام عملکرد توضیحات

Configuration Management

Known Vulnerabilities Security Patched

اطمینان از اینکه آیا تمام وصله های امنیتی از فروشنهای مختلف نصب شده اند یا خیر

ندارد

Configuration Management

Back-up file

اطمینان از اینکه هیچ Backup از اطلاعات در هیچ جا وجود ندارد (مانندBackup از کد ها و ...)

ندارد

Configuration Management

Web Server Configuration

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

ندارد

Configuration Management

Web Server Components

اطمیمان از اینکه کامپوننت های وب سرور مانند Front Page و یا ماژول های آپاچی بر روی سرور دارای آسیب پذیری های مختلف نیستند

ندارد

Configuration

Management

Common Paths چک کردن دایرکتوری های معروف در دایرکتوری ریشته مانند /backup یا /admin یا/database و ... که میتوانند شامل اطلاعاتی مهم بشوند

نوع نام عملکرد توضیحات

Configuration Management Infrastructure

Infrastructure Admin Interface

چک کردن برای درک این موضوع که رابط مدیریتی در اینترنت قابل رویت نمیباشد

ندارد

Configuration Management Application

Application Admin Interface

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

ندارد

Error

Handling

Application Error Messages

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

این نوع حمله معمولا  در صورت بازگشت پیغام های خطایی مبتنی بر خطای بانک اطلاعاتی یا Stack Trace ها قابل استفاده هستند

Error

Handling

User Error

Messages

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

این نوع حمله معمولا مواقعی رخ میدهد در هنگام ورود پیغام های مانند User does not exist  user correct , password incorrect

Data

Protection

Sensitive Data In HTML اطمینان از اینکه هیج اطلاعات مهمی درHTML ذخیره نشده است (برای مثال درhistory مرورگر) که باعث حمله  شود

این نوع حمله وقتی رخ میدهد که برنامه نویسان اطلاعات را در کامنت هایHTML و ... نگه میدارند .

نوع نام عملکرد توضیحات

Data

Protection

Data Storage

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

در واقع این بدین معنا می باشد که فقط پشتیبانی از SSL 3 و TLS 1 امکان پذیر است .

Data Protection

Transport

SSL Version

اطمینان از اینکه ورژن SSL مورد استفاده دارای ضعف های رمزشناسی نیست .

ندارد

Data Protection

Transport

SSL Key Exchange Method

اطمینان از اینکه وب سرور اجازه ی استفاده از کلید متود کاربر مهمان را نمیدهد 

معمولا ADH و  Anonymous Diffe-hellman

Data Protection

Transport

SSL Algorithm

اطمینان از اینکه ضعفی در الگوریتم به صورت عمومی یا غیر عمومی وجود ندارد

به طور مثال استفاده از الگوریتم هایی مانندRC2 و DES

Data Protection

Transport

SSL Key

Lengths

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

معمولا وبسایت ها از رمزنگاری 128 بیتی استفاده میکنند

نوع نام عملکرد توضیحات

Configuration Management Infrastructure

Infrastructure Admin Interface

چک کردن برای درک این موضوع که رابط مدیریتی در اینترنت قابل رویت نمیباشد

ندارد

Configuration Management Application

Application Admin Interface

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

ندارد

Error

Handling

Application Error Messages

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

این نوع حمله معمولا  در صورت بازگشت پیغام های خطایی مبتنی بر خطای بانک اطلاعاتی یا Stack Trace ها قابل استفاده هستند

Error

Handling

User Error

Messages

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

این نوع حمله معمولا مواقعی رخ میدهد در هنگام ورود پیغام های مانند User does not exist  user correct , password incorrect

Data

Protection

Sensitive Data In HTML

اطمینان از اینکه هیج اطلاعات مهمی درHTML ذخیره نشده است (برای مثال درhistory مرورگر) که باعث حمله  شود

این نوع حمله وقتی رخ میدهد که برنامه نویسان اطلاعات را در کامنت هایHTML و ... نگه میدارند .

نوع نام عملکرد توضیحات

Data

Protection

Data Storage

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

در واقع این بدین معنا می باشد که فقط پشتیبانی از SSL 3 و TLS 1 امکان پذیر است .

Data Protection

Transport

SSL Version

اطمینان از اینکه ورژن SSL مورد استفاده دارای ضعف های رمزشناسی نیست .

ندارد

Data Protection

Transport

SSL Key Exchange Method

اطمینان از اینکه وب سرور اجازه ی استفاده از کلید متود کاربر مهمان را نمیدهد 

معمولا ADH و  Anonymous Diffe-hellman

Data Protection

Transport

SSL Algorithm

اطمینان از اینکه ضعفی در الگوریتم به صورت عمومی یا غیر عمومی وجود ندارد

به طور مثال استفاده از الگوریتم هایی مانندRC2 و DES

Data Protection

Transport

SSL Key

Lengths

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

معمولا وبسایت ها از رمزنگاری 128 بیتی استفاده میکنند

نوع نام عملکرد توضیحات

Data Protection Transport

Digital Certificate Validity

اطمینان از اینکه برنامه از یک Digital Certificate با اعتبار استفاده میکند . 

اطمینان از اینکه digital Certificate واقعی میباشد  و مواردی مانند امضای میزبان  و اطلاعات واقعی هستند

Input

Validation

      Script Injection

اطمینان از اینکه هیچ جایی در برنامه ورودی گرفته نمیشود که اجازه ی اجرای اسکرپیت به نفوذگر بدهد .

که در واقع این نوع حمله نوع کلاسیک همان XSS یا Cross Site Scripting میباشد

Input

Validation (SQL)

SQL Injection

اطمینان از اینکه وروی ها اجازه اجرای دستورSQL به یک نفوذگر نمیدهد

ندارد

Input

Validation (OS)

Command

Injection

اطمینان از اینکه هیج ورودی از کاربر به عنوان یک دستور سیستمی اجرا نمیشود

این حمله معمولا شامل دسترسی به Shellسیستم هدف با اجرای دستورات چک نشده در ورودی میباشد .

Input

Validation

(LDAP)

LDAP Injection

ورودی های توسط کاربر که چک نمی شوند و موجب ایجاد دستورات LDAP میشوند

ندارد

راه کارهای جلوگیری از حملات :

راههای فراوانی برای جلوگیری از حملات تحت وب پیشنهاد شده است ، اما کاربردی ترین آنها کنترل ورودی های تحت پروتکل HTTP    می باشد ، شماتیک زیر به  این موضوع و نحوه کارکرد جلوگیری از حملات در یک IDS (سیستم جلوگیری از ورود سرزده ) تحت وب اشاره دارد .

Description: Description: C:\Documents and Settings\Phoenix News\Desktop\mids-shematic.png