
در این بخش از دوره آموزشی تست نفوذ سطح متوسط که برگرفته از دوره SEC642 می باشد به آشنایی با WordPress به عنوان یکی از سیستم های مدیریت محتوا می پردازیم.
آشنایی با WordPress
وردپرس یک پلتفرم متن باز وبلاگ نویسی است. مالکیت و نگهداری آن توسط Automattic و همچنین جامعه وردپرس انجام میشود. زمانی که اینترنت نسبتا نوپا بود، وردپرس زندگی خود را به عنوان یک پلتفرم وبلاگ نویسی آغاز کرد. گفته میشود که شبکه وردپرس در حدود ۳۰ درصد از اینترنت را در اختیار دارد. شمارنده دانلود وردپرس از سال ۲۰۱۹ بیش از ۶۰ میلیون دانلود را منعکس میکند.
ما به بررسی این مساله میپردازیم که چگونه میتوانیم از وردپرس به شیوهای پیشرفته برای دستیابی به دسترسی کامل به سیستم استفاده کنیم.
WordPress Design and Architecture
وردپرس به خاطر نصب ۵ دقیقهای خود معروف است. فرآیند نصب به ما این بینش را میدهد که چگونه میتوانیم برای حمله به تاسیسات وردپرس آماده شویم. بهترین روش این است که آزمایش کنندگان نفوذ ابتدا وردپرس را بر روی سیستم خود نصب نموده و سپس به دنبال شناسایی آسیبپذیریهای موجود در وردپرس و اکسپلویت نمودن آن باشند. برای نصب وردپرس، موارد زیر حداقل الزامات سیستم هستند:
• وب سروری که قادر به اجرای PHP یا ارسال PHP باشد. آپاچی و Nginx برای این منظور مناسب میباشند. با این حال، استفاده ازIIS از طریق فیلترهای IIS PHP ISAPI نیز امکان پذیر است.
• در حال حاضر PHP نسخه 7 حداقل PHP پشتیبانی شده توسط وردپرس است.
• نیازمندی دیگر، وجود یک پایگاه داده است که MySQL یا MariaDB برای این منظور مناسب میباشند.
مثالهای بسیاری وجود دارند و راهحلهای استقرار تک کلیکی برای وردپرس را فراهم میکنند که نمونه ای از آن استفاده قالبهای آماده Docker میباشد. خود وردپرس از یک ساختار توسعه نسبتا قدیمی استفاده میکند که از معماری چارچوب “مدرن” برای MVC یاORM استفاده نمیکند. برخی از این ویژگیها، بهرهبرداری سادهتر از سیستم را ممکن میسازند.
WordPress Plugin Architecture
پلاگینهای وردپرس یکی از اجزای قدرتمند وردپرس هستند. در حالی که استفاده از این پلاگینها بسیار مفید بوده و قابلیتهای بسیاری را در اختیار توسعه دهنده وردپرس قرار میدهد، این موضوع یک شمشیر دولبه است.
بهرهبرداری از یک پلاگین میتواند یک آسیبپذیری در سراسر سیستم را ایجاد کند.
WordPress Themes
وردپرس همچنین دارای تمهای مختلف است. این تمها به گونهای طراحی شدهاند که فقط یک تصویر برداری مجدد (re-skinning) از وب سایت باشند. تمها میتوانند رفتار کلی یک سایت وردپرس را تغییر دهند؛ آنها بسیار محبوب هستند زیرا تمها میتوانند پلتفرم وبلاگ نویسی وردپرس را به یک سیستم خرید اینترنتی، یک وبسایت تجارت الکترونیک، یک برنامه تبلیغاتی یک صفحهای، یک صفحه اول شرکت، یک پلتفرم رسانههای اجتماعی و غیره تبدیل کنند. با این حال، تمها تنها مجموعهای از JavaScript، CSS و تصاویر نیستند، بلکه شامل عملکرد اصلی PHP برای انجام این نوع از مولفهها نیز میباشند.
تمها، به خودی خود، به شدت آسیبپذیر هستند، زیرا شامل همان باگهای اپلیکیشن هستند که یک برنامه وب Front End استاندارد دارد. تمهای اصلی و Third Partyوردپرس ممکن است دارای آسیبپذیریهای XSS، CSRF و دیگر باگها باشند. نکته ویرانکننده این است که این تمها به طور کلی در سراسر اینترنت نصب و استفاده میشوند. لازم به ذکر است که برخی از این سیستمها هرگز به روز نمیشوند. باید به این نکته توجه داشت که یک وب سایت وردپرس با آسیبپذیریXSS میتواند برای راهاندازی حملات علیه سایتهای دیگر نیز مورد استفاده قرار گیرد.
themes , functions.php , plugins , and the architecture
درک اینکه کد PHP کجا قرار دارد و چه چیزی را میتوانید و چه چیزی را نباید تغییر دهید مهم است. مکانهای زیادی در وردپرس وجود دارد که در آن اصلاح کد در سیستم، کل سایت را دچار مشکل نماید. این میتواند برای هدف خطرناک بوده و پیامدهای متعددی داشته باشد. تست نفوذگران باید مراقب این فایلها بوده و به مدیران سایت اجازه دهند که بدانند چه کاری انجام دادهاند و یا تغییرات صورت گرفته است.
موارد متعددی وجود دارند که ما در این بخش پوشش خواهیم داد، مانند این که چه فایلهایی برای ویرایش امن هستند، چه فایلهایی برای وارد کردن عملکرد یا کد جدید امن هستند و چه فایلهایی میتوانند به عنوان یک ریدایرکت عمل کنند. در اینجا مثالی از فایلی را نشان میدهیم که میتواند برای فعال کردن عملکرد جدید مورد استفاده قرار گیرد. این فایل، فایل عملکردی (Function File) است که در تمها یافت میشود. این فایل از لحاظ فنی لازم نیست وجود داشته باشد، اما هر کسی میتواند یک فایل متنی ساده در یک دایرکتوری تم با نام function.php ایجاد کند و وردپرس از آن استفاده خواهد کرد. توصیف مربوط به Function File را میتوان در وب سایت کدپلکس وردپرس پیدا کرد و باید توجه داشت که این فایل ویژگیهای بسیار خاصی دارد.
codex.wordpress.org/Functions_File_Explained
Plugin and Theme Loading
شکل زیر یک مثال مفهومی از چگونگی عملکرد کل سیستم وردپرس به عنوان یک مجموعه آبشاری از اسناد PHP را نشان میدهد که یکی در دیگری گنجانده شدهاند. در حالی که هیچ چیز ذاتا اشتباهی در این نوع طراحی در یک برنامه PHP موروثی وجود ندارد، مهم است که به ترتیب عملیاتی که در آن آیتمها بارگذاری میشوند و اینکه کدام فایلها برای ویرایش تزریق ایمن هستند، توجه کنیم.

wp-load.php نقطه ورود برای همه سیستمهای وردپرس بدون در نظر گرفتن ورود به سیستم از نقطهنظر کاربر یا مدیر است. wp-load.php هرگز نباید آسیب ببیند.
wp-config.php فایل تنظیمات اولیه است که برای پیکربندی سایت استفاده میشود. مواردی مانند Connection String پایگاهداده در اینجا قرار دارند. دیدن نصب کننده یا متصل شوندههای مختلف که میخواهند این پرونده را اصلاح کنند کاملا رایج است. ویرایش این فایل به صورت صحیح مشکلی ایجاد نمیکند.
wp-entings.php فایلی است که توسط سیستم تغییر میکند. چیزی که در این فایل یافت میشود شامل مواردی مانند فعال بودن یا غیرفعال بودن پلاگینها، فعال یا غیرفعال بودن تم ها، کدام فایل function.php فراخوانی شده است و در نهایت شامل یک فراخوان برای راه اندازی بقیه سیستم وردپرس است.
صفحات مدیریت یک فراخوانی ویژه را برای admin _ init بارگذاری خواهند کرد، در حالی که صفحات کاربر شروع به ارائه Template و تم ها خواهند کرد. درک رابطه بین تمام این بخشها به ما کمک خواهد کرد تا تعیین کنیم که چگونه میتوان Plugin ها را پنهان نموده، تم ها را تغییر داده و یا مواردی از این دست را انجام داد.
“backdooring functions.php”
ویرایشگر تم وردپرس، که در پنل ادمین در هسته سیستم وردپرس قرار دارد، معمولا از غیرفعال نمیشود. ادیتور تمها میتواند به کاربر اجازه دهد تا به طور مستقیم فایلهای تم از جمله function.php را ویرایش و اصلاح کند. function.php را میتوان مورد سو استفاده قرار داد تا به عنوان یک Backdoor، امکان ورود به یک سیستم را برای ما فراهم کند. یک مهاجم میتواند function.php را تغییر دهد تا یک Backdoor را در قسمت Head صفحه وب اجرا کند. انجام این کار، به ما اجازه خواهد داد که موارد زیر را اجرا کنیم:
• در بدنه اصلی صفحه حضور نداشته باشید تا از نشان دادن مستقیم به شخصی که سعی دارد Backdoor را ببیند بدون اینکه درک درستی از Web Exploitationداشته باشد، جلوگیری کنید.
• برای یک کاربر معمولی قابلتوجه نیست
در زیر خلاصهای از یک تابع است که میتوانیم آن را برای منظور فوق به function.php اضافه کنیم.

Theme Editor
مهم است توجه داشته باشید که وقتی شما در حال ویرایش تمها در وردپرس هستید، ممکن است چندین فایل function.php وجود داشته باشد که مورد استفاده قرار میگیرند. اگر شما درک درستی از این موضوع ندارید، حمله اولیه شما ممکن است به عنوان function.php parent کار نکند. ویرایشگر تم به شما اجازه خواهد داد تا هر دوی این فایلها را پیدا کنید. برای یادگیری بیشتر در مورد چگونگی ایجاد و استفاده از Child Themes، میتوانید اطلاعاتی را در نشانی اینترنتی زیر پیدا کنید:
developer.wordpress.org/themes/advanced-topics/child-themes/
Child Theme ها همیشه با ساختار دایرکتوری مشابه مسیر زیر قرار دارند:
/wordpress/wp-content/themes/(themename)-child