در دنیای امروزی، امنیت وب و تست نفوذ به یکی از اصولیترین قسمتهای تضمین امنیت سیستمها و اطلاعات تبدیل شدهاند. اگر به دنبال شروع یک مسیر حرفهای در زمینه تست نفوذ و امنیت وب هستید، مصاحبهی شغلی ابتدایی میتواند گامی مهم در این مسیر باشد. در این راهنما، به شما تنها کمک نمیکنیم تا با سوالات معمولی مصاحبه آشنا شوید، بلکه پاسخهایی که از شما انتظار میرود را نیز ارائه میدهیم. با مطالعهی این مقاله، به بهبود آمادگی خود برای مصاحبه و ورود به دنیای تست نفوذ وب نزدیکتر خواهید شد. از مباحث فنی تا مهارتهای ارتباطی، همهی جنبههای مهم را پوشش میدهیم تا شما به خود اطمینان داشته باشید و در مصاحبه بهترین عملکرد را ارائه دهید.
توجه بفرمایید کلیه جواب هایی که من دادم پیشنهادی می باشد :»)تست نفوذ وب یک فرآیند ارزیابی حملات شناخته شده روی وب جهت ارزیابی و شناسایی حملات و بررسی شرایط بعد از اکسپلویت و نتایج کلی در قالب یک گزارش تست نفوذ می باشد.
بلک باکس blackbox یا جعبه سیاه نوعی از تست نفوذ می باشد که هیچ اطلاعاتی در مورد هدف وجود ندارد
گری باکس gray box یا جعبه خاکستری گاهی اوقات پیش می آید یک سری اطلاعات اولیه مثل یوزر و پسورد پنل یا بایپس کردن waf را برای شما تسهیل می کنند.
وایت باکس یا whitebox یا جعبه سفید نوع ارزیابی که شما به کدهای دسترسی دارید و می توانید آسیب پذیری را از کد پیدا کنید.
مشخص کردن Scope قبل از قرارداد فی ما بین می باشد که ما بین شرکت تست نفوذ و کارفرما بسته می شود و در این قرار داد دامنه ها ساب دامنه و ای پی هایی که باید تست شوند ذکر شده است.
لیستی از مهم ترین یا خطرناک ترین آسیب پذیری ها می باشد. بله SQL injection ، XSS ، broken authentication.
5. فرض کنید سایتی آسیب پذیری SQLI دارد چه مراحلی برای کشف و اکسپلویت انجام می دهید چند ابزار نام ببرید.
اول به صورت دستی چک میکنم از تک کت ‘ و operand های sql استفاده میکنم برای تشخیص اگر error base باشد. اگر time base و blind باشد از burp و sqlmap کمک میکنم
پیلودهای SQLI برای تشخیص آسیب پذیر بودن یا نبودن را تست میکنم معمولا برای اینکار از intruder burp suite استفاده می کنم تا سریع تر بررسی کنم.
همچنین از SQLMAP برای تست کردن استفاده می کنم و پارامتر آسیب پذیر را با * مشخص میکنم.
بله، tamper یک سری اسکریپت می باشد که نوع درخواست ما را تغییر می دهد تا web application firewall آن را بلاک نکند
Between,base64encode,charencode,space2randomblan
حمله ای است که هکر اسکریپت مخرب را روی صفحه وبی که یوزرها آن را مشاهده می کنند تزریق کند.برای جلوگیری باید input validation و output encode داشت.
یک حمله که هکر برازر browser یوزر را مجاب می کند یک عملیات ناخواسته را انجام دهد مثل تعویض پسورد.برای تست باید یک اسکریپت برای یک عملیات نوشت و تست کرد. جهت جلوگیری از چندین روش میشه استفاده کرد: استفاده از
csrf token
Same site cookies
Check referer header
و ...
File extension change
Shell.php1
Mime type change
image/jpeg
Case sensitive change
shell.Php1
Htaccess
AddType application/x-httpd-php .shell
وقتی پسورد دیفالت یا ضعیف داشته باشه برنامه آپدیت شده نباشند یا بشه بنر گربینگ کرد سرویس ها اینا همه misconfiguration security issues محسوب می شوند. برای چک کردن این موارد به صورت دستی و ابزارهای اتومات میشه چک کرد. Nmap hydra burp suite و...
یک حمله می باشد که هکر یک یک المنت روی صفحه قرار دارد برای فریب که در صورت که کلیک کرد عملی بدون authentication authorization انجام شود
برای جلوگیری از این حمله می توان از csp یا x-frame option header استفاده می کنند.
برای تست user authentication تمامی متدهای احراز هویت مختلف تست می کنم تا چک کنم ببینم بدون احراز هویت امکان دسترسی وجود دارد یا نه.
برای چک کردن session management از توکن های تولید شده استفاده می کنم و چک می کنم ببینم expire می شند یا نه اگر expire بشند قابل استفاده هستند یا نه
ابزارهای Burp suite, sqlmap, Nikto. Acunetix, Netsparker
آسیب پذیری که موجب افشا شدن اطلاعات یا دسترسی بدون اجازه به اطلاعات را می دهد.
یکی از روش ها برای چک تو تنظیمات پروفایل، صفحه سفارش می گردم و بعد شروع به تغییر id می کنم تا ببینم توانایی دسترسی به پروفایل ها یا اطلاعات دیگران را دارم یا نه که اگر بتونم ادمین بشم privilege escalation رخ داده است.
آسیب پذیری که اجازه تزریق کد را به سرور می دهد و کدها مستقیم روی سرور اجرا میشود وقتی که ورودی چک نشود و همان ورودی مستقیم روی سرور اجرا شود. معمولا input ها را چک میکنم ولی بیشتر جاهای که اپلودر دارد شل اپلود را چک میکنم.
وقتی اطلاعات از قبیل پسورد اطلاعات شخصی کاربران مثل عکس پاسپورت بدون احراز هویت و تعیین سطح دسترسی در دسترس هست.
برای تست code review میکنم، فایل های روی سرور را فاز میکنم، API چک میکنم، به دنبال elastic میگردم اگر بدون پسورد یا دیفالت پسورد بود بتونم دسترسی به دیتا پیدا کنم.
معمولا به دو شکل سمت کلاینت و سرور
برای کلاینت از سمت browser می توان راحت دور زد
سمت سرور ممکن است waf جلوگیری کند یا یک سری قوانین برای جلوگیری از تزریق sql باشد که با تغییرات در درخواست سعی به دور زدن میکنم.
حمله Xml external entity نوعی از حمله می باشد به علت آسیب پذیری پارسر xml می باشد که توسط آن می توان به اطلاعات دسترسی داشت یا درخواست بدون دسترسی را انجام داد.
تکنیک های Input validation, white list, update xml parser جزوری از روش های جلوگیری می باشد.
برای تست API موارد احراز هویت، input validation، output encoding تا ببینم error handling دارد یا اطلاعات سرور را می دهد همچنین کلیه حملات sqli xss csrf را چک می کنم.
حمله Server side request forgery یک حمله هست که به هکر اجازه می دهد به یک سرور داخلی یا یک سرور خارجی دیگر درخواست ایجاد کند. برای جلوگیری از آن روش های input validation whitelisting و محدود کردن درخواست بین سرورها را انجام می دهم.
قبل از شروع به کار در مورد بیزینس که قرار تست کنم مطالعه می کنم نحوه کار کرد گردش کار و پراسس های مختلف در هر مرحله بعد شروع به نوشتم سناریو برای دور زدن هر بخش و رد شدن می کنم با توجه به هر بزینس سناریوها نفوذ متفاوت می باشد.
گزارش چند بخشی می کنم مدیریت، فنی تحلیل آسیب پذیری و سعی می کنم خیلی واضع و ساده در بخش مدیریت تمام ریسک ها را توضیح بدهم و از آوردن اصطلاحات فنی خودداری میکنم ولی در بخش فنی به صورت کامل با جزییات از روش هایی که برای تست استفاده کردم و نتایجی که بدست آوردم poc آسیب پذیری را قرار می دهم همچنین برای تمامی آسیب پذیری هایی که کشف کردم روش های mitigation و prevention را برای تیم فنی قرار می دهم.
بله، برنامه ریزی زمان و تخصص برای درک معماری، سرویس ها، حملات امکان پذیر و برای سرعت بخشیدن اول تمرکز میزارم به حساس ترین قسمت ها در معماری و پیاده سازی ان حملات و تمامی فعالیت ها را اتومات با اسکریپت انجام می دهم البته تا جایی که امکان پذیر باشد!
حملات injection از نوع blind و nosql سطح پیچیده تری از sqli هستند معمولا برای تست blind از Boolean blind استفاده میکنم و همچنین اگر time based جواب بدهد از آن استفاده می کنم.
حمله Nosql injection بخطر اینکه ساختار دیتابیس فرق دارد نحوه اکسپلویت ها با هم فرق دارد و از پیلود های دیگر برای تست آن باید استفاده کنم.
برای blind sqli از sqlmap فقط برای دیتابیس traditional بکار میاد.
برای nosql injection از nosqlmap، arachni و nuclei استفاده میکنم.
بله زیاد، معمولا سعی می کنم تکنیک های character encoding، obfuscation یا http request smuggling را تست کنم اگر این متدها را جواب ندهد که معمولا جواب می دهد بخش های دیگر چک میکنم وقت زیاد روی اون پرتال خاص نمیزارم سعی میکنم روی sub های بدون waf تایم بزارم
عملیات Serialize کردن و deserialize کردن روی object ها اولی به معنای تبدیل متن به json xml و بعدی برعکس اگر هکر بتواند پیلود مخرب تزریق کند می تواند حملات RCE, injection, privilege escalation یا data tampering انجام دهد. ابزار Owasp dependency check یکی از ابزارها برای تست می باشد.همچنین در صورت دسترسی به کد از SonarQube استفاده می کنم.
5. آیا تجربه تست نفوذ روی برنامه های وب سمت کلاینتی مثل SPA Angular React را داشتید؟ روند تستتان را شرح دهید.
معمولا وقتی با SPA مواجه میشم به صورت دستی و با ابزار تست ها رو انجام میدهم
در صورت دسترسی به کد به دنبال input validation، authentication، data storage و library میگردم و تمرکز روی آسیب پذیری های xss csrf هست
ابزارهایی که به کار میبرم owasp zap و Arachni هست.
برای ارزیابی API از ابزارهای postman یا burp suite استفاده می کنم. در مرحله اول endpoint را کشف می کنم سپس پارامترها و ارزیابی احراز هویت چک میکنم. بعد از این موارد سراغ این می روم که آیا تعیین سطح دسترسی انجام می شود یا نه . بیشتر این موارد با fuzzing کردن تست می کنم.
برای اینکار من همیشه چندین یوزر میسازم و چند پروفایل را با firefox میسازم و همزمان چک می گیرم فرآیند ها رو تا بتوانم race conditions بدست بیاورم.
برای دور زدن معمولا از user enumeration و brute force و exploit logic falws روی احراز هویت را تست میگیرم.
ابزار evilginx2 یکی از ابزارها برای اینکار هست اگر از شما اسم ابزار پرسید.
در معماری میکروسرویس من هر کدام به صورت جداگانه ارزیابی می کنم چون نوع سرویس دادن آن ها با هم متفاوت است بالطبع امکان وجود آسیب پذیری روی هر کدام وجود دارد. تعداد میکروسرویس بعضی مواقع بسیار زیاد بوده ولی همه تک به تک چک کردم و روی چند تا اول آسیب پذیری در نیورده بودم ولی بعد از چند آسیب پذیری در آوردم.
بله مواردی که چک میکنم permission ، IAM roles و بررسی روی اینکه داده های حساس افشا می کنه یا نه
12. برای تست نفوذ API های منطبق بر GraphQL از چه روش هایی استفاده می کنید؟ چطور آسیب پذیری ها که کشف کردید را چک کردید؟
من اسکما GraphQL را بررسی میکنم سپس حملات injection و تعیین سطح دسترسی و access control را چک میکنم. نکته ممکنه بپرسه Access control با authorization مگه فرق داره؟ خود Access control شامل identification authentication و authorization میشه ولی خود authorization زیر مجموعه Access control گیج نشید!
من سمت کلاینت ترافیک شبکه را چک می کنم و درخواست را با debugging tools جهت دور زدن تغییر می دهم یا از burp suite برای چک کردن دور زدن آن ها استفاده می کنم.
بله وقتی از یک یوزر دامین معتبر پیدا می کنم برای privilege escalation یا دسترسی به یوزرهای دیگه سعی می کنم از طرف اون یوزر به کارمندهای دیگه میل بفرستم درخواست اجرا برنامه یا اطلاعات حساس کنم بیش از 70 درصد مواقع موفق بودم چون اصلا کسی دابل چک نکرده و اون 30 درصد ایباکس ایمیل چک نکردند!
از پیلودهای xxe برای فرخوانی dtd یا Document Type Definition استفاده می کنم تا ببینم اطلاعات حساس را به من می دهد یا ایا می توانم دستکاریش بکنم یا نه.
File extension change
Shell.php1
Shell.jpg.php
Shell.php%00.jpg
Shell.php:.jpg
Shell.php;.jpg
Mime type change
image/jpeg
Case sensitive change
shell.Php1
Htaccess
AddType application/x-httpd-php .shell
من برای تست websocket از fuzzing استفاده می کنم تا ببینم امکان injection یا دسترسی غیر مجاز وجود دارد یا نه. برای تست از ابزارهای burp suite یا owasp zap استفاده می کنم
یکی از روش ها برای چک تو تنظیمات پروفایل، صفحه سفارش می گردم و بعد شروع به تغییر id می کنم تا ببینم توانایی دسترسی به پروفایل ها یا اطلاعات دیگران را دارم یا نه که اگر بتونم ادمین بشم privilege escalation رخ داده است.
من به صورت دستی و یا با اسکریپت با توجه به حجم کار تست را انجام می دهم.
من تمرکز را روی افزونه های cms میزارم چون بیشترین آسیب پذیری ها رو سمت extension ها پیدا کردم تا core cms و با Waplyzer extension را پیدا می کنم و با توجه به نوع ورژن اول آسیب پذیری عمومی چک میکنم و اگر تایم داشته باشم در صورت دسترسی به کد، کد آن را ارزیابی می کنم.
20. با چه روشی مکانسیم های Authentication و Authorization در برنامه های موبایلی که با یک وب سرویس کار می کنند تست می گیرید؟
من برای تست برنامه های موبایلی روی API تمرکز می کنم. و همچنین برای تست سعی به مهندسی معکوس apk می کنم تا بتونم به صورت static نیز تست بگیرم.
من معمولا برای گزارش نویسی از word استفاده میکنم و template شخصی و تمامی آسیب پذیری ها را لیست می کنم و شماره گزاری می کنم تا قابل دسترس باشد. همچنین گاه ها پیش می آید برای ارایه گزارش از visio و powerpoint استفاده میکنم.
در طی تست هر آسیب پذیری که کشف کنم لیست می کنم بر اساس شدت خطر آسیب پذیری و در حین تست گزارش تکمیل میکنم تا گزارش نویسی من زمان زیادی نگیرد. همچنین نکات نوع گزارش مدیریتی و فنی را رعایت می کنم و طبق قرار داد poc ها و روش های جلوگیری کاهش مخاطره را در گزارش قید می کنم.