در پشتی یا بکدور (back door) اصطلاحی است که به دستکاری در کدهای برنامه با هدف دور زدن کنترلهای امنیتی (مانند پسورد و غیره) گفته میشه. با داشتن در پشتی، هکر میتونه هر وقت بخواد و بدون داشتن پسورد، به هدف دسترسی داشته باشه. برای مثال گاهی پیش میاد که یک هکر با استفاده از یک ضعف امنیتی به یک سایت نفوذ میکنه و برای اینکه بعد از بهروزرسانی یا تغییر پسورد توسط مدیر سایت، دسترسی رو از دست نده اقدام به ایجاد یک بکدور در کدهای سایت میکنه. پیش از این در مورد یافتن درهای پشتی در کدهای PHP یک مطلب نوشتم.
چند روز پیش به دلیل کاری نیاز شد به سایت وردپرس فارسی سر بزنم. وردپرس فارسی سالهاست که کار ترجمه و فارسیسازی وردپرس رو انجام میده و جایی برای ارائه پوستههای ترجمه شده و یا افزونههای فارسی هم بوده. تلاشهای زیادی برای ساده کردن استفاده از وردپرس برای کاربران فارسی کرده و مرجع مهمی برای کاربران ایرانی وردپرسه. همین نقش سایت وردپرس فارسی دلیل خوبیه برای هکرهایی که میخوان با یک تیر چند نشان بزنند. برام سوال پیش اومد که آیا پوستههای ارائه شده در این سایت امنیت لازم رو دارند یا خیر. بیشتر هم قصدم چک کردن روشهای معمول امنیتی در پوستهها بود.
اولین پوستهای که دانلود کردم برای بررسی، پوسته Modern Style بود که رتبه اول پوستههای ممتاز رو داشت. در کمال تعجب با کد ناخوانا شده در فایلی مواجه شدم که کارش نمایش خطا به مراجعه کننده به سایته وقتی که یک نوشته وجود نداشته باشه.
در تصویر بالا میبینید که تا خط ۹ همون کاری که از فایل انتظار داریم انجام میشه اما بعد از اون دو تا دستور PHP دیگه وجود داره. این دستورها برای رمزگشایی کدهایی است که پیش از این با روش برگشتپذیر base64 رمز شدهاند. هکرها از راههای زیادی برای مخفی کردن درهای پشتی استفاده میکنند. از بههم ریختگی در کد، تا استفاده از کوچکترین کدهای ممکن تا از چشم مدیر سایت دور بمونه. همچنین پسورد هم میگذارند گاهی تا توی تستهای نفوذ نشه پیدا کرد این فایلهای دستکاری شده رو.
تصویر زیر، کدهای رمزگشایی شده است.
در این مورد خاص، هم از رمز کردن کد و هم از پسورد استفاده شده. شیوه کار این در پشتی این شکلیه که وقتی قربانی این پوسته رو روی سایتش استفاده کنه، در اولین باری که یک مراجعه کننده صفحه اشتباهی رو باز کنه، صفحه خطای ۴۰۴ رو میبینه و در اون زمان، کدهای مخرب اجرا میشن.
در ابتدا یک ایمیل حاوی آدرس سایت برای هکر ایمیل میشه. حالا هکر که میدونه یک مدیر سایت از پوسته دستکاری شده استفاده میکنه، به آدرس سایت رفته و صفحه خطای ۴۰۴ رو باز میکنه. سپس میتونه با پسوردی که از قبل ست شده، دستورات دلخواهش رو توی سرور قربانی اجرا کنه.
این پسورد رمز شده هکره (به پیشنهاد آیدین، پسورد رو برای مدتی حذف میکنم که کسی آسیب نبینه):
1 | *** |
در ادامه با دستورهای شرطی متفاوت، چک میشه که هکر از کد چه کاری رو خواسته. میتونه اجرای کد باشه، دانلود یک فایل باشه و یا آپلود یک فایل روی سرور باشه. با این دستورات، هکر به راحتی اسکریپتها پیچیدهتر و کاربردیتر روی سرور بریزه که منجر به کنترل کامل سرور بشه.
با جستجوی پسورد رمزشده، متوجه شدم همین در پشتی در اسکریپت virtual freer هم وجود داشته که یکی از کابران iranphp متوجه شده و به دیگران اطلاع داده. از اونجایی که رمز پسورد هنوز در سرویسهای آنلاین و عمومی شکسته نشده، بعید میدونم کس دیگهای از همین کد استفده کرده باشه و پسورد رو تغییر نداده باشه. میشه نتیجه گرفت که کار یک نفر بوده. اسکریپت virtual freer قابلیت اتصال به درگاههای پرداخت و درگاههای واسط پرداخت داره و در تعداد زیادی از سایتهای فروش ویپیان و کارت شارژ و مانند اون استفاده شده.
پس از گزارش من در توییتر، سایت وردپرس فارسی بلافاصله لینک دانلود پوستههای مشکلدار رو غیرفعال کرد و به کاربران اطلاع داد که از این پوستهها استفاده نکنند. غیر از Modern Style پوسته P30Temp هم همین در پشتی رو داشت.
با توجه به اینکه تاریخ تغییر فایلهای حاوی در پشتی مطابق با آخرین آپدیت اعلام شده و نیز تاریخ آخرین تغییر بقیه فایلهای پوسته نبود، به این نتیجه رسیدم که قراردادن در پشتی کار طراح پوسته و مترجم نبوده و به احتمال زیاد فرد سومی با استفاده از دسترسی که داشته (ممکنه این دسترسی رو پس از هک سایت وردپرس فارسی به دستآورده بوده) این تغییرات رو انجام داده.
کسی که این در پشتی رو کار گذاشته از ایمیل infocallpro@gmail.com برای خبرگرفتن از درهای پشتی فعال استفاده میکنه. اگر جایی با این آدرس ایمیل برخورد کردید، به من اطلاع بدید تا موارد خطر احتمالی رو بررسی کنم.