وب شل یا Web Shell چیست و چه خطراتی دارد؟

0 52
۵/۵ - (۲ امتیاز)

فهرست

بسیاری شنیده می شود که یک هکر یک شل روی یک وب سایت (سرور وب سایت) آپلود کرده است یا از یک برنامه تحت وب (سرور برنامه) شل گرفته است. این جملات پس از بروز یک حمله سایبری یا تست نفوذ شنیده می شوند. در این مقاله قصد داریم در مورد وب شل یا Web Shell صحبت کنیم و بررسی کنیم اصلا شل گرفتن یعنی چه!

شل (Shell) چیست؟

شل یا Shell به معنی پوسته است. این نام از آنجایی می آید که شل در سیستم عامل به عنوان بیرونی ترین لایه حول سیستم عامل در نظر گرفته می شود. به زبان خیلی ساده، شل یک برنامه کامپیوتری است که سرویسی از سیستم عامل را در اختیار کاربر قرار می دهد. این کاربر می تواند یک انسان یا یک برنامه دیگر باشد. شل در سیستم عامل ها می توانند یا از واسط خط فرمان یا Command Line Interface (CLI) و یا از واسط کاربری گرافیکی یا Graphical User Interface (GUI) استفاده کنند. طبیعی است که شل چون یک برنامه کامپیوتری است می تواند با دسترسی های متعددی اجرا شود که جذاب ترین آن روت شل یا Root Shell است. همانطور که از نام آن مشخص است روت شل یک شل است که دارای مجوز Root می باشد.

وب شل (Web Shell) چیست؟

با توجه به توضیح کوتاهی که در مورد شل ارائه شد، وب شل یک واسط شل مانند است که دسترسی راه دور به وب سرور را محیا می کند. توجه شود که وب شل قرار نیست به لحاظ ظاهری شبیه شلی باشد که در سیستم عامل با آن کار میکنیم بلکه می توان از مرورگر وب برای کار با آن استفاده کرد. طبیعی است که وب شل نیز برنامه نویسی می شود و می توان آن را برای سرویس دهی روی سرور آپلود کرد.
وقتی یک وب شل روی یک سرور آپلود شود می گویند هکر یک شل آپلود کرده است. هرگاه از شل آپلود شده بهره برداری شود می گویند هکر شل گرفته است.
پر واضح است که شل باید به زبانی برنامه نویسی شود که با زبان برنامه اصلی هماهنگ باشد و وب سرور بتواند با آن کار کند. برای مثال اگر به یک برنامه تحت وب نوشته شده به زبان PHP سروکار دارید باید شلی که آپلود می کنید به زبان PHP‌نوشته شده باشد.
هرگاه شل دریافت شد می توان از طریق آن فرمان یا Command فرستاد و عملیاتی همچون اجرای برنامه ای دیگر، آپلود فایل (بدافزار)، دانلود فایل، ارتقا سطح دسترسی یا Privilege Escalation و… انجام داد.

چگونه شل بگیریم؟!

این بستگی به وجود آسیب پذیری در برنامه هدف و البته مهارت شما دارد. برای مثال در PHP تابع ()system یک دستور سیستمی را اجرا می کند. اگر آرگمان این تابع توسط کاربر کنترل شود یا ورودی کاربر به این تابع اعتبارسنجی نشود می توان اط ریق آن یک شل دریافت کرد. تکه کد زیر یک وب شل ساده به زبان PHP را نشان می دهد:

<?php
    if(isset($_GET['cmd']))
    {
        system($_GET['cmd']);
    }
?>

مشخص است که پارامتر cmd با متد GET از کاربر دریافت شده و در اختیار تابع ()system قرار داده می شود. بنابراین اگر مثلا cmd برابر ls باشد، محتویات دایرکتوری که کد اصلی درون آن قرار گرفته به کاربر برمیگردد.
روش های آپلود یک شل متفاوت است و بستگی به نوع آسیب پذیری موجود در برنامه هدف دارد. برخی از راه های آپلود یک شل عبارتند از:

  • Local File Inclusion (LFI) و Remote File Inclusion (RFI)
  • آسیب پذیری در آپلود فایل (مثلا آپلود روزمه روی یک وب سایت)
  • آسیب پذیری در وب سرور، فریم ورک یا سیستم مدیریت محتوا (CMS)
  • محدود نشدن دسترسی به واسط کاربری مدیر سیستم یا ادمین (Admin)

وب شل به چه دردی می خورد؟!

وب شل برای یک هکر یا متخصص تست نفوذ جذابترین مولفه است. اگر باگ بانتی (Bug Bounty) انجام داده باشید حتما متوجه شده اید که بیشترین بانتی ها سهم کسانی است که می توانند از هدف شل بگیرند. یا اگر تست نفوذ انجام داده باشید با گرفتن شل می توانید یک آسیب پذیری High Critical را گزارش کرده و رضایت مشتری را جلب کنید. برای حمله هم که مشخص است: شما یک شل در اختیار دارید که می توانید با آن هرکاری بکنید. مثلا می توانید بدافزار خود را روی سرور آپلود کنید یا اطلاعات مهم موجود روی سرور را به سرقت ببرید. حتی می توانید حملات منع سرویس یا DoS انجام دهید. می توانید از کامپیوتری که شل آن را در اختیار دارید به عنوان یک بات در یک بات نت (Botnet) یا یک سرور کنترل و فرمان C&C استفاده کنید.

سخن پایانی

در این مقاله کوتاه در مورد وب شل یا Web Shell صحبت کردیم و بررسی کردیم که وب شل چگونه می تواند برای یک هکر مفید و برای یک سازمان (وب سایت / برنامه تحت وب) خطرناک باشد. همچنین بیان کردیم که توانایی در گرفتن شل یکی از مهارت های مهم به شمار می رود که موجب می شود یک هکر یا متخصص تست نفوذ در صورت داشتن این توانایی می تواند متخصصی حرفه ای تلقی شود (البته چگونگی گرفتن شل در سطح حرفه ای بودن هکر اثر دارد).

درباره ما

ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
دوره‌های آکادمی ترجنس | courses.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence

ارسال یک پاسخ