تست برنامه وب در AWS: راهنمای جامع

بررسی اجمالی
امنیت برنامه های وب مهم است، زیرا داده ها باید یکپارچه، محرمانه و در دسترس نگهداری شوند. در روزگار کنونی که تهدید سایبری در حال افزایش است، ایمن سازی برنامه های کاربردی وب در برابر آسیب پذیری ها برای اطمینان از همه موارد فوق مهم است. تست نفوذ فعال است و آسیبپذیریها را میتوان قبل از وقوع هرگونه سوءاستفاده از سوی عوامل مخرب پیدا کرد و برطرف کرد.
هدف
هدف این راهنما ارائه یک نقشه راه جامع برای خوانندگان ما در مورد رایج ترین آسیب پذیری ها در برنامه های کاربردی وب، آشنایی آنها با ابزارها و سرویس های موجود در AWS، نحوه پنت کردن یک برنامه وب و اطمینان از انجام تمام اقدامات امنیتی است. بیرون با پیروی از این راهنما، انجام یک آزمون کامل، کشف شکاف های امنیتی و اعمال طرح های اصلاحی موثر امکان پذیر خواهد بود.
آشنایی با امنیت برنامه های وب
آسیب پذیری های رایج
برنامه های کاربردی وب با انواع مختلفی از آسیب پذیری ها مواجه هستند که مهاجمان از آنها برای ایجاد دسترسی غیرمجاز، سرقت داده ها و سایر اشکال آسیب های غیرمجاز سوء استفاده می کنند. مهم ترین خطرات امنیتی برنامه های وب را می توان با استفاده از استاندارد OWASP Top 10 تعیین کرد. در طول این کار، با برخی از آسیب پذیری های رایج آشنا می شویم.
تزریق SQL به مهاجم اجازه می دهد تا از طریق فیلدهای ورودی، کوئری های دلخواه SQL را در پایگاه داده اجرا کند.
- اسکریپت بین سایتی [XSS]:
از طریق این آسیبپذیری، اسکریپتهای مضر به صفحات وب تزریق میشوند و پس از آن توسط دیگران مشاهده میشوند.
- جعل درخواست بین سایتی:
کاربر مجبور است در یک برنامه وب که در آن وارد شده است اقدامات ناخواسته را انجام دهد.
- غیر ایمن سازی نامطمئن:
این آسیب پذیری برای سوء استفاده از منطق برنامه با دستکاری اشیاء سریالی استفاده می شود.
- پیکربندی اشتباه امنیتی:
این شامل پیکربندیهای پیشفرض ناامن، پیکربندیهای ناقص، و همچنین سوءاستفاده از حسابها و اعتبارنامههای پیشفرض میشود.
بهترین شیوه های امنیتی
برای ایمن سازی برنامه های کاربردی وب از چنین آسیب پذیری هایی، باید برخی از بهترین شیوه های امنیتی را دنبال کنیم که به شرح زیر است:
برای جلوگیری از معرفی آسیبپذیریهای امنیتی در طول توسعه، استانداردهای کدگذاری امن را پیادهسازی کنید.
- اعتبار سنجی و پاکسازی ورودی:
برای جلوگیری از حملات تزریق، تمام ورودیهای کاربر را تأیید و ضدعفونی کنید.
- مدیریت صحیح جلسات:
مدیریت جلسه ایمن برای جلوگیری از ربودن جلسه و مسائل مربوط به رفع جلسه.
- ارزیابی امنیتی منظم:
ارزیابی و بررسی امنیتی منظم به طوری که در صورت یافتن هر گونه آسیب پذیری بتوان از آن مراقبت کرد.
همه نرم افزارها، کتابخانه ها و وابستگی ها را با آخرین وصله های امنیتی به روز نگه دارید.
تنظیم محیط
راه اندازی حساب AWS
برای شروع فرآیند پنتست، ابتدا باید محیط AWS خود را راه اندازی کنیم. ما باید یک حساب AWS آماده کنیم، نقش ها و مجوزهای IAM را تنظیم کنیم و در نهایت یک محیط آزمایشی راه اندازی کنیم.
مراحل کنسول:
- کنسول مدیریت AWS را باز کنید کنسول مدیریت AWS را باز کنید و با نام کاربری و رمز عبور خود وارد شوید.
- یک کاربر IAM جدید ایجاد کنید اکنون به سرویس IAM خواهیم رفت. در زیر سرویس IAM روی گزینه «کاربران» کلیک کنید و سپس روی گزینه «افزودن کاربر» کلیک کنید. نام کاربری را برای کاربر تنظیم کنید. به عنوان مثال نام کاربری را به عنوان PentestUser ارائه دهید. نوع دسترسی برای ارائه به کاربر را انتخاب کنید، در اینجا دسترسی برنامهای و دسترسی کنسول مدیریت AWS را انتخاب میکنیم.
- MFA به کاربر IAM برای امنیت بیشتر، MFA را در حالت فعال قرار دهید.
- یک نقش جدید با خط مشی مناسب ایجاد کنید حالا یک نقش جدید با خط مشی های مناسب ایجاد کنید. در اینجا نقش AdministratorAccess را می گیریم.
مراحل CLI:
- رابط خط فرمان AWS را نصب کنید
pip install awscli
- پیکربندی AWS CLI: AWS CLI را با اعتبار خود پیکربندی کنید
configure
aws iam create-user --user-name PentestUser
- خط مشی AdministratorAccess را به کاربر ضمیمه کنید
aws iam attach-user-policy --user-name PentestUser --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
راه اندازی یک محیط تست
برای انجام پنتست ها، باید یک محیط آزمایش کنترل شده داشته باشید که در آن بتوانید از آسیب پذیری ها به طور ایمن و بدون تأثیر بر سیستم های تولید سوء استفاده کنید.
مراحل کنسول:
- کنسول مدیریت AWS را باز کنید و به سرویس EC2 بروید، روی “راه اندازی نمونه” کلیک کنید.
- یک تصویر ماشین آمازون (AMI) را از لیست انتخاب کنید – به عنوان مثال، Amazon Linux 2.
- یا یک گروه امنیتی جدید ایجاد کنید یا از یک گروه امنیتی موجود استفاده کنید که امکان ترافیک HTTP (پورت 80) و HTTPS (پورت 443) را فراهم می کند.
- هنگامی که نمونه در حال اجرا است، با استفاده از SSH به آن متصل شوید.
- هنگامی که نمونه اجرا می شود، یک وب سرور (به عنوان مثال، Apache) را نصب کنید و یک نمونه برنامه وب آسیب پذیر را مستقر کنید – به عنوان مثال، DVWA.
مراحل CLI:
aws ec2 run-instances --image-id ami-xxxx --count 1 --instance-type t2.micro --key-name MyKeyPair
- پیکربندی گروه امنیتی
aws ec2 authorize-security-group-ingress --group-id sg-xxxx --protocol tcp --port 80 --cidr 0.0.0.0/0
- از SSH برای اتصال به نمونه و راه اندازی وب سرور استفاده کنید.
ابزارهایی برای Pentesting
ابزارهای AWS
AWS ابزارهای زیر را ارائه می دهد که باید برای پنتست استفاده شود:
این یک سرویس ارزیابی امنیتی خودکار است که به بهبود امنیت و انطباق برنامههای مستقر در AWS کمک میکند.
- AWS WAF (فایروال برنامه وب):
به محافظت از برنامههای کاربردی وب در برابر سوء استفادههای رایج وب که میتوانند بر در دسترس بودن برنامه تأثیر بگذارند، امنیت را به خطر بیاندازند، یا منابع بیش از حد را مصرف کنند، کمک میکند.
این ابزار حاکمیت، انطباق، و حسابرسی عملیاتی و ریسک حساب AWS شما را امکان پذیر می کند.
این امر نظارت و قابلیت مشاهده را برای منابع و برنامه های AWS شما فراهم می کند.
ابزارهای شخص ثالث
جدا از ابزارهای بومی AWS، پنتست کامل به ابزارهای شخص ثالث زیر نیاز دارد:
یک پلت فرم یکپارچه برای انجام تست های امنیتی برنامه های کاربردی وب.
یک اسکنر امنیتی برنامه وب منبع باز.
ابزار کاوش شبکه و اسکنر امنیتی.
یک چارچوب تست نفوذ که به تیم های امنیتی کمک می کند تا آسیب پذیری ها را تأیید کنند و ارزیابی های امنیتی را مدیریت کنند.
برگزاری پنتست
شناسایی
این اولین گام در pentesting است که در آن اطلاعاتی در مورد برنامه مورد نظر جمع آوری می کنید.
مراحل کنسول:
- فعالیتهای حساب AWS خود را نظارت و ثبت کنید تا بتوانید فعالیتهای بالقوه غیرمجاز یا مخرب را شناسایی کنید.
- ارزیابی های آسیب پذیری را برای نمونه های خود انجام دهید.
مراحل CLI:
- از Nmap برای اسکن پورت ها و خدمات باز استفاده کنید:
nmap -A -T4
- از AWS CLI برای بررسی گزارشهای CloudTrail برای هرگونه فعالیت مشکوک استفاده کنید.
اسکن آسیب پذیری
هنگامی که اطلاعاتی در اختیار دارید، وظیفه بعدی شناسایی آسیب پذیری های برنامه است.
مراحل کنسول:
- AWS Inspector را راه اندازی و اجرا کنید تا آسیب پذیری های موجود در نمونه های خود را شناسایی کنید.
- از برنامه خود در برابر سوء استفاده های رایج وب محافظت کنید.
مراحل CLI:
aws inspector start-assessment-run --assessment-template-arn arn:aws:inspector:us-west-2:123456789012:template/0-7LbK4XrK
- نتایج ارزیابی را تجزیه و تحلیل کنید.
بهره برداری
اگر آسیبپذیریها شناسایی شوند، قدم بعدی استفاده از آسیبپذیریها برای درک تأثیر است.
مراحل کنسول:
- یافتههای بازرس AWS و همچنین سایر موارد را در کنسول مدیریت AWS مشاهده کنید.
- برای تایید آسیب پذیری ها، بهره برداری ایمن را در یک محیط کنترل شده انجام دهید.
مراحل CLI:
- از دستورات Metasploit برای بهره برداری از آسیب پذیری های شناسایی شده استفاده کنید.
- برای ارزیابی تأثیر، بارهایی را در برابر برنامه هدف اجرا کنید.
گزارش و اصلاح
مستندسازی یافته ها
تمام یافته ها را مستند کنید پس از آزمون، تمام یافته ها باید مستند شده و گزارش مفصلی تهیه شود.
مراحل کنسول:
- ایجاد گزارش از AWS Inspector و سایر ابزارها.
- یک گزارش ساختاریافته از تمام یافتهها ایجاد کنید، که شامل تصاویر، گزارشها و شواهد است.
مراحل CLI:
- یافته ها را از AWS Inspector صادر کنید
aws inspector get-findings --assessment-run-arn arn:aws:inspector:us-west-2:123456789012:run/0-7LbK4XrK
استراتژی های اصلاح
پس از درک یافته ها، برخی از استراتژی های کاهش را اجرا کنید.
مراحل کنسول:
با استفاده از AWS Systems Manager، وصلهها و بهروزرسانیها را برای نمونههای خود اعمال کنید.
- گروه های امنیتی و نقش های IAM خود را به روز کنید:
نقش ها را به روز کنید تا از اصل کمترین امتیاز پیروی کنید.
مراحل CLI:
- از AWS Systems Manager برای بهروزرسانی نمونهها استفاده کنید
aws ssm send-command --document-name "AWS-RunPatchBaseline" --targets "Key=instanceIds,Values="
بهترین شیوه ها و انطباق
بهترین شیوه های امنیتی
بهترین شیوه های امنیتی را برای دستیابی به حداکثر امنیت برنامه های وب خود در طولانی مدت پیاده سازی کنید.
- ارزیابی های امنیتی منظم:
ارزیابی های امنیتی را به طور منظم برای شناسایی و رفع آسیب پذیری های جدید انجام دهید.
- نظارت مستمر و ثبت گزارش:
از AWS CloudWatch و CloudTrail برای نظارت مستمر و ثبت فعالیتها استفاده کنید.
استانداردهای انطباق
به استانداردها و قوانین مطابقت صنعت مانند PCI-DSS، HIPAA و GDPR پایبند باشید.
- PCI-DSS: اجرای کنترل های امنیتی برای محافظت از داده های دارندگان کارت.
- HIPAA: از حریم خصوصی و امنیت در مورد اطلاعات بهداشتی اطمینان حاصل کنید.
- GDPR: از داده های شخصی و حریم خصوصی شهروندان اتحادیه اروپا محافظت کنید.
منابع و مطالعه بیشتر
اسناد AWS
در حال حاضر، شما باید آماده باشید تا به پیش بروید و رفتار کنید.