همانند وردپرس، کتابخانه هایش نیز روز به روز محبوب تر می شوند. هم توسعه دهندگان تازه کار و هم باتجربه ها قالب هاو افزونه هایی را طراحی می کنند، که دسته بندی های متنوعی را ایجاد می کند. با وجود اینکه این تنوع برای جامعه ورد پرس سودمند است، طبیعت تولید انبوه می تواند به خطاهای کد و آسیب پذیری منتج شود. حتی قالب های ویژه نیز مشکلات امنیتی دارند. ما اغلب کدهایی را می بینیم که با اهداف خوب اما بدون در نظر گرفتن اقدامات امنیتی ساخته شده اند. به همین دلیل، بسیاری از مردم اغلب زمانی که به علت هک شدن وبسایتشان ، شروع به دریافت شکایات از کاربران خود می کنند، تعجب می کنند.
در طی یک روال بررسی پاکسازی، ما مشکلی را در یک اسکریپت PHP داخل قالب یافتیم که از قابلیت های ایمیل استفاده می کرد. در حالی که بسیاری از قالب ها شامل قابلیت های ایمیل می شوند، این یکی شدیدا دردسر ساز بود زیرا این اسکریپت بدون هیچ گونه کنترل امنیتی یا پیشگیری از دسترسی مستقیم نوشته شده بود. بدون استفاده از توابع امنیتی مناسب در جای خود، این اسکریپت به راحتی می تواند به سوء استفاده از امکانات ایمیل و ارسال انبوه هرزنامه ها بپردازد. در ادامه مطلب ارسال ایمیل های اسپم در وردپرس هک شده با ما باشید:
اسکریپتی که شناسایی کردیم جزئی از یک قالب ویژه وردپرس است. این قطعه کوچکی از اسکریپت است ( بدون توضیحات ):
همانطور که می بینید، این کد با اطلاعات فراهم شده از طریق پارامترهای POST اقدام به ارسال ایمیل می کند. باوجود اینکه این قطعه کد با این هدف طراحی شده است که به عنوان جزئی از قالب کارکند اما به راحتی می تواند به عنوان یک اسکریپت مستقل تمام کنترل های امنیتی را که در فایل های دیگر قالب به کار رفته است را دور بزند.
پس از بررسی بیشتر، متوجه شدیم که مهاجمان به مدت طولانی از این مشکل امنیتی بهره بردند. فقدان کنترل های امنیتی در این فایل خاص اجازه می دهد تا مهاجمان به راحتی ایمیل های خود را همانطور که می خواهند فقط با محدودیت تنظیمات سرور ارسال کنند.
ترسمان بیهوده نبود،این کد به طور انحصاری فقط در یک قالب استفاده نشده بود. این اسکریپت را در تمام قالب های مختلف توسعه یافته توسط آن شرکت پیدا کردیم.
این مشکل ( که در فایل functions/theme-mail.php قرار گرفته است) ، در نسخه های قدیمی این قالب های ویژه یافت می شود:
عواقب استفاده از این نسخه های قدیمی، تعلیق وب سایت شما توسط شرکت میزبانی وب و قرار گرفتن در لیست سیاه سرور ایمیل خواهد بود.
اگر قطعه کد زیر را در داخل قالب وردپرس خود دیدید، ما به شدت توصیه می کنیم کد زیر را بعد از بازکردن تگ های PHP اضافه کنید تا از دسترسی مستقیم به فایل ها و بهره برداری های بیشتر جلوگیری کنید.
if ( basename($_SERVER['PHP_SELF']) == basename(_FILE_) ) die('Access Denied');
اگر توسعه دهنده ی قالب یا افزونه هستید و آنها شامل فایل هایی می شوند که نباید در خارج از قالب یا افزونه اصلی استفاده شوند، از این ترفند استفاده کنید تا از دسترسی مستقیم به فایل ها جلوگیری شود.
این مقاله تنها یکی از مشکلات امنیتی که توسط کدهای ضعیف برنامه نویسی ایجاد شده است را نشان می دهد. توسعه دهندگان افزونها و قالب ها همیشه باید به یاد داشته باشند حتی اگر نرم افزار آنها محبوبیت کمی داشته باشد نیز، هکرها بلافاصله شروع به دنبال راه هایی برای سوء استفاده از آن می گردند. همچنین کاربران وردپرس باید این ضعف های امنیتی را در ذهن داشته باشند و از اقدامات پیشگیرانه استفاده کنند.