رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

P0S3ID0N

جاویدان
  • ارسال ها

    327
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    20

پست ها ارسال شده توسط P0S3ID0N

  1. به نام خدا

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

    This is the hidden content, please

     

    حذف کردن فایل های htaccess.txt و LICENSE.txt و README.txt و  web.config.txt

    بعد از اینکه فایل های نصبی جوملا را در از حالت zip خارج کردید اقدام به حذف فایل های htaccess.txt و LICENSE.txt و README.txt و  web.config.txt کنید. برای اینکه اطلاعات اولیه را از دسترس اسکنرها خارج کنید حتما این فایل ها را حذف کنید.

     

    انتخاب یوزر و پسورد مناسب

    در آدرس site.com/installation/index.php اقدام به نصب جوملا کنید. در قسمت تنظیمات اصلی برای نام کاربری مدیر ارشد، یک یوزر مناسب و برای پسورد هم پسوردی مناسب را انتخاب کنید. دقت کنید از admin برای نام کاربری مدیر اصلی سایت استفاده نکنید.

     

    تنظیمات دسترسی به دیتابیس

    در قسمت تنظیمات پایگاه داده > نوع پایگاه داده، دو نوع پایگاه داده مشخص شده است که ما روی mysqli قرار می دهیم. نوع دیگر pdo است که تفاوت این دو را در اینترنت می توانید جستجو کنید. دقت کنید نام دیتابیس و یوزر با هم یکی باشند و برای انتخاب پسورد از پسورد قوی و مناسبی استفاده کنید.

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

     

    This is the hidden content, please

     

    محدود کردن دسترسی به url صفحه ی لاگین با ست کردن کوکی (set cookie)

    بعد از نصب جوملا با این آدرس site.com/administrator/index.php وارد صفحه ی لاگین مدیریت خواهید شد. با استفاده از کوکی دسترسی به این صفحه را محدود می کنیم.

    ابتدا یک پوشه در مسیر اصلی سایت در هاست ایجاد کرده به عنوان مثال guardiran سپس یک فایل به نام index.php درون آن ایجاد می کنیم. فایل را ویرایش کرده و کد های زیر را درون آن قراردهید:

     

    This is the hidden content, please

     

    ابتدا یک متغیر با نام cookie_code$ تعریف کرده و سپس مقداری را درون آن می ریزیم. نام متغییر و مقدار آن اختیاری است.

    در خط بعد با استفاده از تابع setcookie به پارامترهای آن مقدار داده ایم. تابع ( ) setcookie ، یک کوکی را به وسیله یک دستور HTTP به مرورگر کاربر ( client ) ارسال میکند.

    پارامتر اول name است که تعیین کننده نام کوکی است.

    پارامتر دوم value است که مقدار کوکی را تعیین می کند که این مقدار را با استفاده از متغییر $cookie_code تعریف کرده ایم.

    پارامترسوم expire است تعیین کننده مدت زمان اعتبار کوکی ، بر حسب ثانیه است که مقدار آن را برابر صفر 0 قرارداده ایم.

    پارمترچهارم domain است که دامنه ای که کوکی بر روی آن قابل دسترس است را تعیین می کند .

    تابع setcooki یک پارامتر دیگر به نام secure دارد که تعیین میکند که آیا کوکی فقط بایستی از طریق یک پروتکل امن HTTPS منتقل شود با خیر. مقدار پیش فرض این خاصیت FALSE بوده و تعیین آن نیز اختیاری است .

    در خط بعدی با استفاده از تابع ( ) header ، یک دستور HTTP را به مرورگر کاربر ( client ) ارسال کرده ایم.

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

    This is the hidden content, please

     

    که تنها از پارمتر string استفاده کرده ایم.

    بعد از ذخیره کد بالا در مسیر اصلی سایت خود وارد پوشه administrator شوید و درون آن یک فایل htaccess. ایجاد کنید و کد های زیر را درون آن قراردهید:

    This is the hidden content, please

     

    در کد بالا نام کوکی + مقدار آن که در فایل index.php تعریف کردیم با هم برابر بود درخواست را ریدایرکت کن به صفحه  administrator.php در واقع با این کار تنها کسانی که url زیر را فراخوانی کند می تواند به صفحه ی لاگین دسترسی پیدا کند چون با این کار کوکی برای آن ست می شود.
     

    This is the hidden content, please

     

    اگر هرکاربری به صورت مستقیم صفحه ی site.com/ administrator/index.php را فراخوانی کند یقناً با صفحه ی forbidden 403 مواجه خواهد شد.

     

    فعال کردن تایید دومرحله ای در صفحه لاگین پنل مدیریت

    بعد از ورد به پنل مدیریت با پیغامی مبنی برای "شما پیام هایی در خصوص نصب بسته دارید" مواجه خواهید شد که با زدن بر روی "خواندن پیام ها" به صفحه ی موردنظر هدایت خواهید شد.

    This is the hidden content, please

    در این صفحه بر روی "فعال کردن دو عامل احرازهویت" کلیک کنید که به صفحه ی کاربران >  ویرایش مشخصات میروید . در صفحه ی پیش رو یک تب جدید با نام "دو عامل احرازهویت" مشاهده می کنید.

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

    This is the hidden content, please

     

    بر روی "کد احراز هویت با سیستم عامل اندروید و..." کلیک کرده وارد صفحه ی دانلود نرم افزار Google Authenticator خواهید شد نرم افزار را دانلود و نصب کنید.

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

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

    This is the hidden content, please

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

     

    This is the hidden content, please

    کد امنیتی هر 30 ثانیه یک بار تغییر می کند.

     

    استفاده از فایل htaccess. جامع مستندات سایت جوملا

    درمستندات سایت جوملا به این آدرس :

    This is the hidden content, please

     رفته و کدهای پیشنهادی htaccess. را کپی کرده و درون فایل htaccess. در مسیر اصلی سایت خود قراردهید.

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

     

    محدود کردن سطح دسترسی فایل های configuration.php , .htaccess

    سطح دسترسی فایل های configuration.php , .htaccess را روی 0444 فقط خواندن قراردهید.

     

    تهیه نسخه پشتیبان بک آپ از سایت

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

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

    موفق باشید.

  2. به نام خدا

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

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

     

    This is the hidden content, please

     

    اقدامات قبل از نصب وردپرس

    حذف کردن فایل های readme.html و license.txt

    بعد از اینکه فایل نصبی وردپرس را در هاست از حالت zip خارج کردید اقدام به حذف فایل های readme.html و license.txt کنید. این فایل ها اطلاعاتی ازجمله نسخه نگارش وردپرس و پلاگین ها را در خود دارند پس برای اینکه اطلاعات اولیه را از دسترس اسکنرهای وردپرسی خارج کنید حتما این دوتا فایل را حذف کنید.

     

    تنظیمات دسترسی به دیتابیس MySQL در فایل wp-config.php

    1- فایل wp-config درابتدا با اسم wp-config-sample است که باید از حالت sample خارج شود و به wp-config  تغییرنام داده شود. در قسمت DB_NAME نام دیتابیسی که ساخته اید را واردکنید، درقسمت DB_USER نام یوزردیتابیس و در قسمت DB_PASSWORD هم نام پسورد دیبتابیس را وارد کنید دقت کنید که نباید نام دیتابیس و یوزر با هم یکی باشند و برای انتخاب پسورد از پسورد قوی و مناسبی استفاده کنید.

    2- مورد بعدی که در تنظیمات فایل wp-config باید به آن توجه شود Authentication Unique Keys and Salts است که کلیدهای امنیتی قابل قبولی را در فایل wp-config  فعال می کند . برای فعال کردن کد های Salts از لینک https://api.wordpress.org/secret-key/1.1/salt/ که خود وردپرس در اختیار ما قرار داده است استفاده می کنیم با مراجعه به این آدرس کلید هایی را مشاهده می کنید که باید با کلید های پیشفرض خود فایل wp-config  جایگزین شوند. 

    3- آخرین مورد برای این قسمت WordPress Database Table prefix یا پیشوند جدول پایگاه داده وردپرس است که باید تغییر نام داده شود دلیل این کارهم این است که  پیشوند جدول ها در پایگاه داده وردپرس درحالت عادی روی _wp است که تمامی فیلدهای جدول ما با این پشوند شروع می شوند و یقیناً برای هکرها قابل حد هست که تمامی فیلد های جدول با _wp شروع میشوند و با تغییر نام _wp به اسمی دیگر جلوی حمله های نرم افزاری را میگیریم و به مراتب کار را برای دوستان هکر سخت می کنیم.

     

    توجه: مورد 1 و 3 در هنگام نصب وردپرس قابل تغییر هستند.

     

    انتخاب یوزر و پسورد مناسب

    بعد از انجام تغییرات بالا اقدام به نصب وردپرس می کنیم در آدرس site.com/wp-admin/install.php نام کاربری پنل مدیریت و پسورد را وارد می کنیم دقت کنید که از یوزر admin به هیچ عنوان استفاده نکنید و همچنین پسورد قوی و مناسبی استفاده کنید .می -توانید از سایت های آنلاین که به صورت رندم پسورد generate میکنند استفاده کنید..اقداماتی برای جلوگیری از حملات بروت فورس است که در ادامه گفته خواهد شد.

     

    اقدامات بعد از نصب وردپرس

    حذف کردن فایل های نصبی وردپرس

    بعد از نصب وردپرس فایل های install.php و install-helper.php را پاک کنید.

     

    تغییرمسیر url صفحه ی لاگین

    url صفحه لاگین به صورت پیشفرض با آدرس site.com/wp-login.php قابل مشاهده است. برای تغییر این مورد ابتدا فایل wp-login.php را به عنوان مثال به guardiran.php تغییر نام داده و فایل را باز کرده و درون فایل هرجایی wp-login.php بود به جای آن guardiran.php قرار می دهیم.

     

    امن سازی پوشه wp-admin

    برای این کار ابتدا در کنترل پنل هاست خود برای دایرکتوری wp-admin پسورد قرار دهید . نکته ای دیگری که باید به آن توجه شود این است که بعد از log out از پنل مدیریت وارد آدرس wp-login.php نشویم در پوشه wp-includes  به دنبال فایل general-template.php می گردیم. فایل را ویرایش کرده و هرجایی wp-login.php بود به جای آن مثلا guardiran.php قرار میدهیم.

     

    انتقال فایل wp-config از مسیر اصلی سایت

    فایل wp-config.php را از مسیر public_html به یک مسیرقبل تر در هاست خود انتقال دهید. مشکلی خاصی هم پیش نخواهد آمد.

     

     تغییرنام لقب مدیرسایت

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

     

     خارج کردن لینک های غیرضروری از دسترس جستجوگر گوگل

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

     

    This is the hidden content, please

     

     رفته و در قسمت وب سایت آدرس سایت خود را به عنوان مثال guardiran.org  است را وارد کنید بعد از تایید وارد تب Recommended method شده و فایل HTML verification را دانلود کنید و فایل رو در مسیر اصلی سایت خود آپلود کنید سپس به صفحه ی Search Console بازگشته و بر روی verified کلیک کنید بعد از تایید به قسمت google index > Remove urls رفته و لینک های غیرضروری را پاک کنید.

     

    آپدیت کردن لحظه ای پلاگین ها و افزونه ها

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

     

     محدود کردن ثبت نام در سایت 

    اگر واقعا سایت شما نیازی به ثبت نام ندارد عملیات ثبت نام در سایت رو از قسمت "تنظیمات > همگانی" محدود کنید و نقش پیشفرض کاربرتازه را روی "مشترک" قرار دهید.

     

    عدم index شدن و نمایش دادن محتویات درون یک دایرکتوری

    برای این کار فایل htaccess. در مسیر اصلی سایت را ویرایش کرده و Options –Indexes را به آخر آن اضافه کنید. با این کار فایل ها و پوشه هایی که اجازه ایندکس شدن ندارد نمایش داده نمیشوند.

     

    امن سازی پوشه include

    فایل htaccess. را ویرایش کرده و به آخر آن کدهای زیر را اضافه کنید.

    This is the hidden content, please

     

     

    محافظت از فایل های wp-config و htaccess.

    با اضافه کردن این کد به فایل htaccess.  عملیات خواندن را برای همه ی کاربران محدود می کند.

    secure wp-config.php#

    This is the hidden content, please


    secure .htaccess#

    This is the hidden content, please

    همچنین برای اینکه دسترسی به فایل htaccess. محدود تر کنیم سطح دسترسی این فایل رو روی 0444 قرارمی دهیم.

     

     مخفی کردن ورژن و نسخه وردپرس

    وقتی در صفحه ی اصلی بر روی view page surce کلیک کنیم میتوان ورژن وردپرس رو در سورس مشاهده کرد برای جلوگیری از این مورد می توان کد زیر را در قسمت پوسته ها > ویرایش پوسته > functions.php اضافه کرد.

    This is the hidden content, please

     

    جلوگیری از حملات بروت فورس (Brute Force)

    1- استفاده از افزونه limit login attempts : با نصب این افزونه یک گزینه با اسم limit login attempts به تنظیمات اضافه خواهد شد که در تنظیمات این این افزونه میتوان تعداد رمز های استباه را محدود کنیم و از حملات صفحه لاگین محافظت کرد  

     با اضافه کردن کد زیر به functions.php می توان پیغام ارور صفحه لاگین را عوض کرد

    This is the hidden content, please

    2- استفاده از افزونه معادله امنیتی یا Captcha

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

     

    3- غیرفعال کردن چند منو و همچنین اپدیت اتوماتیک وردپرس

    با اضافه کردن کد زیربه فایل wp-config.php می توان منوهای "افزودن ، ویراشگر" را در قسمت افزونه ها و "ویرایشگر" در قسمت نمایش و همچنین آپدیت خودکار وردپرس را غیرفعال کرد.

    This is the hidden content, please

     تهیه نسخه پشتیبان بک آپ از سایت

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

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

    موفق باشید.

  3. در 3 ساعت قبل، Mahdikarami گفته است :

    من یک تازه کار در هک هستم.

    میشه گفت من یک هکر کلاه صورتی هستم.

    میخواهم وارد هک شوم اگه میشود یکی مرا را راهنمایی کند.

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

    شبکه رو یاد بگیرید، با زبان های برنامه نویسی مثل پایتون و php یا c++ کارکنید سیستم عامل و همچنین خط فرمان ویندوز و لینوکس تجریه کسب کنید تمرین کنید و....

     

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

    لینک 1

    لینک 2

    لینک 3

    لینک 4

    لینک 5

     

    موفق باشید.

     

     

  4. قسمت سوم 

    ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

    توابع XML در  پایگاه داده MySQL

    توابع ()ExtractValue و ()UpdateXML قابلیت XPath 1.0 را ارائه می کنند. عبارات XPath از این توابع برای پشتیبانی از متغیرهای کاربر و متغیرهای برنامه ذخیره شده محلی استفاده می کند.

    در این قسمت بحث اصلی بر روی تابع ()ExtractValue است.

     

    تابع ()ExtractValue

    تابع ()ExtractValue  برای استخراج داده از یک رشته XML با استفاده از XPath استفاده می شود.

     

    ورودی های تابع extract value به صورت زیر است:

    This is the hidden content, please

    در اینجا اگر کوئری  xpath ما به طور متناوب اشتباه باشد با خطای زیر مواجه میشویم:

     

    This is the hidden content, please

    چرا باید از این نوع متد inject استفاده کنیم ؟

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

    به طور مثال در کوئری زیر:

    This is the hidden content, please

    هیچ خروجی نشان داده نمی شود و نمی توانیم از تکنیک union select استفاده کنیم.در این شرایط است که باید از injection xpath استفاده کنیم.

     

    در مثال بالا می بینیم که بعد از عدد 1 دابل کوتیشین امده است پس متوجه می شویم که تزریق ما باید از نوع رشته string باشد.

    در نتیجه کوئری ما به شکل زیر میباشد:

    This is the hidden content, please

     

    و در ادامه تزریق خودمان را با استفاده از تزریق XPATH ادامه می دهیم

    This is the hidden content, please

    برای مثال دریافت اسم پایگاه داده از تزریق زیر استفاده می کنیم:

     

    This is the hidden content, please

    خروجی :  XPATH syntax error: ' database_name_here'

     

     

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

    This is the hidden content, please

    خروجی : XPATH syntax error: 'table_name_here'

     

    در مثال بالا دلیل استفاده از limit این است که این در این تکنیک ما نمی توانیم اطاعات طولانی بیشتر از ۳۲ کاراکتر را استخراج کنیم

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

    • Posts
    • Assets
    • Banner
    • Links
    • Users

     

    سپس با استفاده از تزریق زیر میتوانیم ستون های مورد نظر خود را پیدا کنیم:

    This is the hidden content, please

    خروجی : XPATH syntax error: 'column_name_here'

    خروجی تزریق فوق :

    • id
    • username
    • password

     

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

    This is the hidden content, please

    خروجی :  XPATH syntax error: 'count_will_come_here'

     

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

    This is the hidden content, please

    خروجی : XPATH syntax error: 'Output_here'

     

     

    تابع ()UpdateXML

    UPDATEXML یک نمونه XMLType و یک جفت XPath را به عنوان آرگومان در نظر می گیرد و یک نمونه XMLType را با مقدار به روز شده برمی گرداند.

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

     

    ورودی های تابع extract value به صورت زیر است:

    This is the hidden content, please

    در اینجا اگر کوئری  xpath ما به طور متناوب اشتباه باشد با خطای زیر مواجه میشویم:

    This is the hidden content, please

     

    در ادامه تزریق خود را ادامه میدهیم

    1-

    This is the hidden content, please

    2-

    This is the hidden content, please

    Output : XPATH syntax error: ':database_name_here'

     

    3-

    This is the hidden content, please

    Output : XPATH syntax error: ':table_name_here'

     

    5-

    This is the hidden content, please

    Output : XPATH syntax error: ':column_name_here'

     

    6-

    This is the hidden content, please

    Output : XPATH syntax error: ':count_will_come_here'

     

    7-

    This is the hidden content, please

    Output : XPATH syntax error: ':Output_here'

     

     

    ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

    پایان قسمت سوم

  5. تزریق در فایل XML با دانش صفر

    گزینه های مورد بررسی :

    1.       تست و تایید XPATHi

    2.       تکرار روی گره ها + استخراج داده ها از گره ها

    3.       استخراج داده از گره ها و المنت های هم نژاد

     

    1.تست و تایید XPATHi

    تست و تایید XPATHi مهمترین بخش است. وقتی ما یک ورودی را می بینیم، اولین چیزی که بررسی می- کنیم استفاده از متد های تست است:

    This is the hidden content, please

    در مورد XPATH یا SQLi و بسیاری از تزریق های دیگر از همین متدها استفاده خواهیم کرد بنابراین برای تایید اینکه آیا XPATHi است از متد ()position  استفاده میکنیم که مربوط به XPATH است:

     

    This is the hidden content, please

    اگر هر کدام از موارد بالا کار کرد، می توانید فرض کنید تزریق شما با یک تزریق XPATH انجام می شود.

     

    2.تکرار روی گره ها + استخراج داده ها  از گره ها

    کد xml ما به صورت زیر است:

    This is the hidden content, please

    یک کوئری SQL را به صورت زیر در نظر بگیرید:

    This is the hidden content, please

     

    اگر بخواهیم آن را به یک کوئری XPATH  تبدیل کنیم به این صورت عمل میکنیم:

    This is the hidden content, please

     

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

    اگر به جای رشته عبارت ورودی [id='1'] ما از متد بایپس استفاده کنیم که در بالا توضیح داده شد به این صورت:

    This is the hidden content, please

    میتوانیم جزئیات مربوط به اولین کاربر را مشاهده کنیم.

     

    فرض بر این است که ما شناسه کاربر (ID) را برای هر کاربر نمی شناسیم و می خواهیم نام های کاربری همه کاربران را بررسی کنیم، بنابراین می توانیم از متدposition ()  استفاده کنیم. یک مثال از متدposition ()  :

    This is the hidden content, please

     

    میخواهیم پرس و جویی که قبلا انجام دادیم را با استفاده از متد ()position  تزریق کنیم:

    This is the hidden content, please

     

    در اینجا گفته ایم که شناسه باید خالی باشد و نام کاربری اولین یوزر را دریافت کنیم اما این تزریق به ما اجازه نمی دهد که جزییات دیگری، مانند ستون های دیگر در SQL یا XPATH یا دیگر المنت های هم نژاد رو به دست آوریم زیرا در انتهای جستجو گفته ایم که تنها نام کاربری را دریافت کنیم.

     

     

    3.استخراج داده از گره ها و المنت های هم نژاد

     

    برای استخراح داده ها و المنت های هم نژاد از عملگر pipe استفاده می کنیم که دو کوئری رو باهم ترکیب می کند مثال :

    This is the hidden content, please

     

    خب در اینجا ما نام ستون رو برای کلمه عبور،  password قرار دادیم که فقط یک فرض بود اما گر نام ستون برای کلمه عبور “my-pass” باشد چگونه می توان آن را استخراج کرد؟ می توان از یک ترفند استفاده کنیم! اگر در قسمت 1 آموزش انتخاب مسیر های نامشخص را خوانده باشید می توانیم برای انتخاب گره یا عنصر ناشناخته از * استفاده کنیم:

    This is the hidden content, please

     

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

    ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

    پایان قسمت دوم

  6. مقدمه ای برای XPATH Injection

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

    در یک سند xml نیز با استفاده از XPath querying پرس و جویی هایی به سمت فایل های XML که دیتابیس ما محسوب می شود انجام می گیرد.

    تزریقات ما شبیه به SQL است با این تفاوت که کوئری ها و همچنین نتایج متفاوت است.

     

    مثالی ساده از XPATH Injection

    یک برنامه وب را که از XPath برای پرس و جوی یک سند XML و بازیابی استفاده می کند را در نظر بگیرید این سند به گونه ای عمل می کند که نام کاربری و رمز عبور را از مشتری دریافت می کند چنین برنامه ای می- تواند این مقادیر را به طور مستقیم در XPath query قرار دهد

    برای مثال :

    کد php

    This is the hidden content, please

     

    کد xml

    This is the hidden content, please

     

    و صفحه ی login ما نیز به صورت زیر است:

    This is the hidden content, please

     

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

    This is the hidden content, please

    This is the hidden content, please

     

    می بینید که id 1 با نام کاربری neo رو نمایش داد.

    This is the hidden content, please

     

    دلیل این کار چیست؟

    query ما در کد php به این صورت است:

    This is the hidden content, please

     

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

    This is the hidden content, please

     

    This is the hidden content, please

     

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

    This is the hidden content, please

  7. قسمت دوم 

    ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

    در قسمت اول به طور خلاصه با مبانی XML و XPath آشنا شدید. 

    در ادامه به بررسی آسیب پذیری های XML و همچنین بایپس ها و متدهای تزریقی زبان پرس و جوی  XPath  می پردازیم. قبل از اینکه به مبحث XPath Injection بپردازم ابتدا چند مورد پیش نیاز رو توضیح خواهم داد.

    عملگرهای منطقی  (logical operators)

    عملگرهای منطقی، منطق بین مقادیر رو مشخص می کند که خروجی آن یک مقدارtrue / false)  Boolean) است.

     

    عملگر

    نام

    &&

    AND

    ||

    OR

     

    ترکیب شروط

    عملوند اول
    A

    عملوند دوم
     B

    نتیجه
    A && B

    نتیجه
    A || B

    True

    True

    True

    True

    True

    False

    False

    True

    False

    True

    False

    True

    False

    False

    False

    False

     

  8. XPath Syntax

    XPath از عبارات مسیر (path) برای انتخاب گره ها (nodes) در یک سند XML استفاده می کند.

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

    This is the hidden content, please

     

    پر کار برد ترین اصطلاحات )دستورات( برای انتخاب مسیر ، به شرح زیر می باشد :

    توضیحات

    عبارت

    انتخاب تمام گره ها از  "اسم گره"

    اسم گره (node name)

    انتخاب از گره ریشه اصلی

    /

    انتخاب گره ها از فایل جاری

    //

    انتخاب گره ی فعلی

    .

    انتخاب زیر مجموعه گره از گره ی فعلی

    ..

    انتخاب ویژگی )متغیر(

    @

     

    جست جوی عبارات مشخص (Predicate)

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

    Predicate همیشه به شکل براکت [ ] هستند.

     

    نمونه ی یک سند XML

     

     

    This is the hidden content, please

     

    در جدول زیر مثال هایی از سند بالا بیان شده است :

    نتایج

    مسیر ها به همراه دستورات

    انتخاب المنت اول از مجموعه المنت های bookstore

    /bookstore/book[1]

    انتخاب آخرین کتاب از المنت هایbookstore  

    /bookstore/book[last()]

    انتخاب تمامی المنت های موجود به جز آخرین المنت

    /bookstore/book[last()-1]

    انتخاب اولین دو کتاب از مجموعه المنت هایbookstore  

    /bookstore/book[position()<3]

    انتخاب موضوع تمامی المنت هایی که دارای المنت lang هستند

    //title[@lang]

    انتخاب تمامی موضوعاتی که دارای المنت lang با مقدار en هستند

    //title[@lang='en']

    انتخاب تمامی کتاب هایی که قیمت آن ها بزرگ تر از 35.00 هستند در مجموع المنت های bookstore  

    /bookstore/book[price>35.00]

    انتخاب تمامی موضوعات کتاب ها در مجموعه bookstore  که قیمت آن ها بیشتر از 35.00 می باشد

     

    /bookstore/book[price>35.00]/title

     

    انتخاب مسیر های نامشخص (Selecting Unknown Nodes)

    برای انتخاب گره های ناشناخته XML می توانیم از  wildcards XPath استفاده کرد.

     

     

    توضیحات

    Wildcard

    در نظر گرفتن هر گره عنصر

    *

    در نظر گرفتن هر المنت در گره

    @*

    در نظر گرفتن هر گره در هر جایی

    node()

     

    انتخاب چندین مسیر (Selecting Several Paths)

    با استفاده از عملگر |  میتوانیم به چندین مسیر درXPath  دست یابیم و استفاده کنیم .با این عملگر میتوانیم چندین مسیر را درXPath  انتخاب کنیم .

     

     

    نتایج

    مسیرها

    انتخاب موضوعات و قیمت ها از المنت های درون المنت کتاب

    //book/title | //book/price

    انتخاب تمامی موضوعات و قیمت ها در سند

    //title | //price

    انتخاب تمامی موضوعات در المنت های کتاب در المنت های
    bookstore  و قیمت ها در سند

    /bookstore/book/title | //price

     

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

     

    اگر یک کد php به صورت زیر داشته باشیم:

    This is the hidden content, please

     

    این کد یک فایل XML به نام coffee.xml رو لود میکنه که دارای یک button جستجو است و وقتی روی اون کلیک شد نتایج از فایل coffee.xml  فراخوانی می شود درواقع ورودی ما همان کوئری میشود که ارسال می کنیم.

     

    کدهای فایل coffee.xml  نیز به این صورت است:

     

    This is the hidden content, please

     

     

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

     

    This is the hidden content, please

     

    با استفاده از تابع ()position نیز میتوانیم خروجی های متفاوت تری داشته باشیم مثلا میتوانیم دوتا المنت اول رو در خروجی نمایش دهیم:

    This is the hidden content, please

     

    خروجی دیگر دستورات نیز به همان صورتی است که در جدول مربوط به Predicate ذکر شده است.

    ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

    پایان قسمت اول

  9. اصطلاحات  XPath

    گره ها (nodes)

    درXPath، هفت نوع گره وجود دارد: عنصر، ویژگی، متن، فضای نام، پردازش، نظر، و گره های سند.

    • Root
    •  Element
    •  Text
    • Attribute
    •  Comment
    • Processing Instruction
    •  Namespace

    اسناد XML به عنوان درختان گره به محسوب می شوند. بالاترین عنصر درخت عنصر ریشه (root) است.

     

    به سند XML زیر نگاه کنید:

    This is the hidden content, please

     

    مثال گره در سند XML بالا :

    This is the hidden content, please

     

     ارزش های ریز (Atomic values)

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

    مثال مقادیر ریز :

    This is the hidden content, please

    آیتم ها (Items)

    آیتم ها، مقادیر اتمی یا گره ها هستند.

     

    رابطه گره ها (Relationship of Nodes)

    1.والدین (Parent)

    هر عنصر و ویژگی یک والد دارد.

    در مثال زیر: عنصر book، والدین title, author, year, price است.

    This is the hidden content, please

     

     

     

    2.فرزندان (Children)

    گره های عنصر ممکن است صفر، یک یا چند فرزند داشته باشند.

    در مثال زیر: title, author, year, price همه فرزندان عنصر عنصر book هستند.

    This is the hidden content, please

     

     

    3.هم نژاد (Siblings)

    گره هایی که والدین مشابه دارند.

    در مثال زیر: title, author, year, price همه هم نژاد هستند. 

    This is the hidden content, please

     

    4. اجداد (Ancestors)

    والدین گره، پدر و مادر والدین و غیره

    در مثال زیر:عنصر bookstore اجداد title, author, year, price و book است.

    This is the hidden content, please

     

  10. XPath

    قبل از یادگیری XPath، ابتدا باید XSL را که مخفف extensible Stylesheet Language است را درک کنیم که همانند CSS برای HTML است.

    در اسناد HTML، تگ های از پیش تعریف شده مانند table، div، span و غیره... استفاده می شود. مرورگر می- داند که چگونه آن ها را (با استفاده از CSS) نمایش دهد.

    همانطور که گفته شد در اسناد XML، تگ ها از پیش تعریف نمی شوند به منظور درک و به رسمیت شناختن یک سند XML، کنسرسیوم جهانی وب،  XSLرا توسعه داده است که می تواند به عنوان یک زبان Stylesheet مبتنی بر XML عمل کند. یک سند XSL مشخص می کند چگونه یک مرورگر باید سند XML را ارائه دهد.

     

    بخش های اصلی XSL 

    •   XSL برای تبدیل اسناد XML به انواع دیگر سند استفاده می شود.
    •   XPath برای سرچ و بازیابی داده ها در اسناد XML استفاده می شود.
    •   XSL-FO برای فرمت XML اسناد استفاده می شود.

     

    پس XPath یک زبان پرس و جو است که برای آدرس دهی و سرچ اطلاعات در یک سند XML استفاده می شود.

     

    در هنگام کار با XPath، باید نکات زیر را در نظر داشته باشید:

    • XPath یک عنصر اصلی در استاندارد XSLT است  
    • XSLT نمی تواند بدون XPath کار کند.
    •  XPath مبتنی بر XQuery و XPointer است.

     

     

  11. قسمت اول

    ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

    زبان XML

    همانطور که مطلع هستید اگر ما بخواهیم حملات SQLInjection انجام بدیم نیاز به دانستن ساختار و دانش پایگاه داده مثل (جداول، سطرها، ستون و..) هستیم در حملات XPath Injection هم به همین صورت نیاز به درک اصطلاحات، ساختار و دانش اولیه در مورد XML است.

    در پایین مقدمه ای برای درک اصطلاحات XML از سایت w3schools.com گرفته شده است.

    • XML مخفف زبان نشانه گذاری Extensible Markup Language است
    • XML یک زبان نشانه گذاری شبیه به HTML است.
    • XML برای ذخیره و انتقال اطلاعات طراحی شده است
    • تگ‌های XML از قبل تعریف نشده‌اند، خودتان‌ باید تگ ها را تعریف کنید.
    • XML به صورت خود توصیفی (self-descriptive) طراحی شده است.

     

    XMLهیچ کاری انجام نمی‌دهد!

    مثال زیر متنی است از طرف mary برای ajax با XML نوشته شده:

     

    This is the hidden content, please

     

    متن بالا یک متن خود‌ توصیفی است. این متن اطلاعاتی در مورد ارسال کننده (from)  و دریافت کننده  (to) دارد و همچنین دارای یک عنوان (heading) و یک پیغام (body) است.

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

     

    توسط XML شما تگ‌ های خودتان را می‌سازید

    تگ‌ های مثال بالا مثل <to> و <from> در هیچ استانداردی برای XML تعریف نشده‌اند. این تگ ‌ها توسط نویسنده این سند XML ساخته شده‌اند به دلیل این که زبان XML هیچ تگ از پیش تعریف شده‌ای ندارد.

    تگ‌هایی که درون HTML استفاده می‌شوند از قبل تعریف شده‌اند. یک سند HTML فقط می‌تواند از تگ‌هایی استفاده کند که در استاندارد HTML تعریف شده باشند مثل <h1> ،<p>  و ...

    XML اجازه می‌دهد که نویسنده خودش ، تگ ها و همچنین ساختار سند را تعریف کند.

     

    تفاوت  بین XML  و HTML

    • XML برای توصیف داده‌ها و تمرکز بر محتوای داده‌ها طراحی شده است.
    • HTML برای نمایش داده‌ها و نحوه‌ ی نمایش داده‌ها طراحی شده است.
    • HTML مخصوص نمایش داده‌ ها است در حالی که XML مخصوص انتقال اطلاعات است.

     

  12. به نام خدا

    در این سری آموزش ها، ابتدا توضیحاتی راجع به زبانXML  داده می شود، سپس در ادامه به بررسی(XPath)  XML Path language در XML میپردازیم و درنهایت به صورت عملی روش ها و تکنیک های Xpath Injection رو توضیح می دهیم.

    این آموزش در 3 قسمت ارایه می شود: 

    قسمت اول آموزش

    قسمت دوم آموزش

    قسمت سوم آموزش

    دوستانی که سوال، نظر یا پیشنهادی در مورد آموزش ها دارند در بخش سوال و جواب های  انجمن مطرح کنند.

    موفق باشید

     

    GUARDIRAN SECURITY TEAM

  13. در 11 ساعت قبل، Mr.dead گفته است :

    سلام یه سوال

    من کالی لینوکس ابزارهایی مثل dnsmap رو نداره چه کنم؟ نسخه کالی لینوکسم هم جدیدترین (2019) است

     

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

     

    برای نصب از این این دستور استفاده کنید 
     

    This is the hidden content, please

     

    توضیحات مربوط به این ابزار رو در اینجا 
     

    This is the hidden content, please

     


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

     

    This is the hidden content, please

     

     

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

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

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

    موفق باشید.

  15. به نام خدا

    در این آموزش میخواهیم به حل مشکل آپدیت مخازن در کالی لینوکس و آپدیت کالی لینوکس به کالی رولینگ بپردازیم .در حال حاضر ورژن 2017.1 در دسترس است.

    پس از انتشار کالی لینوکس 2.0به اسم رمز سانا sana ، کالی پروژه جدیدی رو به اسم Kali Rolling یعنی انتشار غلتان شروع کرد که به جای اینکه شما کالی خود را بر پایه نسخه های مختلف دبیان ایجاد کنید تنها با این روش جدیدترین بروزرسانی ها و ابزارهای تست نفوذ رو در اختیار خواهید داشت .

    This is the hidden content, please

     

    پس برای اینکه کالی خود رو بر پایه کالی رولینگ ایجاد کنید در مسیر etc/apt/source.list/ دستورات زیر رو وارد کنید:

    This is the hidden content, please

    برای (Kali Sana (Kali 2.0 دستورات زیر رو وارد کنید :

    This is the hidden content, please

    و برای (Kali moto (1.0 دستورات زیر رو وارد کنید :

    This is the hidden content, please

     

    بعد از ذخیره دستورات بالا به ترتیب دستورات زیر رو در ترمینال وارد کنید :

    This is the hidden content, please
    This is the hidden content, please
    This is the hidden content, please

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

    This is the hidden content, please

    سیستم رو یک بار restart کنید .

×
×
  • ایجاد مورد جدید...