اگر سایت وردپرس دارید، امنیت همیشه باید در اولویت باشد. یکی از رایج ترین آسیب پذیریهایی که سایتهای وردپرس با آن مواجه هستند، نمایش نام کاربری (Enumeration) است. زمانی اتفاق میافتد که مهاجمان سعی میکنند با سوء استفاده از ساختار سایت، نامهای کاربری معتبر را کشف کنند. هنگامی که نام های کاربری را می دانند، می توانند حملات بروت فورس یا تلاشهای فیشینگ را انجام دهند و سایت شما و کاربران آن را در معرض خطر قرار دهند.
خبر خوب این است که با استراتژیهای درست میتوان به راحتی از شمارش نام کاربری (Enumeration) جلوگیری کرد. در این مطلب، مراحلی را که توسعه دهندگان متخصص وردپرس برای توقف شمارش نام کاربری و امنیت سایتهای وردپرس دنبال میکنند، مورد بحث قرار خواهیم داد.
نمایش نام کاربری (Enumeration) وردپرس چیست؟
نمایش نام کاربری وردپرس زمانی است که مهاجمان سعی میکنند نامهای کاربری معتبری را در سایت وردپرس پیدا کنند. به طور پیشفرض، وردپرس دارای آسیبپذیریهایی است که یافتن نامهای کاربری را برای هر کسی آسان میکند. این موارد را می توان از طریق دستکاری ساده URL یا با استفاده از فرمهای ورود مورد سوء استفاده قرار داد. به عنوان مثال، یک مهاجم میتواند شماره را در URL مانند این تغییر دهد:
https://example.com/?author=1
اگر یک مهاجم به تغییر شماره در URL، مانند author=2، author=3 و غیره ادامه دهد، میتواند کشف کند که کدام صفحات وجود دارد. اگر صفحه ای وجود داشته باشد، مهاجم می داند که شماره مربوط به یک نام کاربری معتبر است.
ممکن است تعجب کنید که یک نام کاربری به تنهایی چقدر میتواند آسیب وارد کند؟ خب خیلی هنگامی که مهاجمان نامهای کاربری معتبر را میشناسند، میتوانند از آنها برای راه اندازی حملات brute force، تلاش برای مهندسی اجتماعی یا سوء استفاده مجدد از رمز عبور برای نفوذ به حسابها استفاده کنند. این امر شمارش نام کاربری را به یک تهدید مهم برای امنیت سایت شما تبدیل میکند.
تاثیر نمایش نام کاربری وردپرس
شمارش کاربران وردپرس میتواند تاثیرات جدی بر امنیت سایت شما داشته باشد. اگر یک مهاجم نام کاربری شما را به تنهایی بداند، در را به روی انواع حملاتی که میتواند وب سایت و کاربرانش را در معرض خطر قرار دهد باز میکند.
حملات Brute Force
هنگامی که مهاجم یک نام کاربری معتبر را میداند، میتواند با استفاده از بروت فورس، رمز عبور را حدس بزند. آنها این کار را با استفاده از چندین ترکیب رمز عبور مختلف انجام میدهند تا زمانی که رمز عبور صحیح پیدا شود. با نامهای کاربری معتبر، اجرای حملات brute force بسیار آسانتر و احتمال موفقیت بیشتر میشود.
فیشینگ و مهندسی اجتماعی
با نامهای کاربری معتبر، مهاجمان میتوانند سعی کنند از طریق حملات فیشینگ، کاربران را فریب دهند تا رمز عبور خود را فاش کنند. آنها ممکن است به عنوان مدیران سایت یا سایر افراد قابل اعتماد ظاهر شده و کاربران را فریب دهند تا جزئیات ورود خود را ارائه دهند.
استفاده مجدد از رمز عبور
بسیاری از افراد از رمزهای عبور در چندین سایت استفاده مجدد میکنند. اگر مهاجم یک نام کاربری معتبر در سایت وردپرس شما بداند، میتواند همان نام کاربری و رمز عبور را در پلتفرمهای دیگر آزمایش کند. این به طور بالقوه میتواند به آنها امکان دسترسی به سایر حسابها، از جمله اطلاعات شخصی یا حساس را بدهد.
افزایش سطح حمله
مهاجمان میخواهند تا حد امکان نام کاربری پیدا کنند. هرچه مهاجم بتواند نام کاربری بیشتری پیدا کند، سطح حمله آنها بزرگتر میشود. آنها می توانند تلاش خود را روی حساب های کمتری متمرکز کنند و احتمال حمله موفقیت آمیز را افزایش دهند، به خصوص اگر آن حساب ها رمز عبور ضعیفی داشته باشند.
هدف گذاری حسابهای مدیریت
اگر مهاجم یک نام کاربری ادمین را پیدا کند، میتواند سعی کند به بکاند سایت دسترسی پیدا کند. کنترل کامل وب سایت را به آنها میدهد که میتواند منجر به سرقت دادهها، تخریب وبسایت یا سایر فعالیتهای مخرب شود که می تواند به اعتبار یا عملکرد سایت شما آسیب برساند.
به طور خلاصه، شمارش نام کاربری سایت شما را در برابر طیف وسیعی از حملات آسیب پذیرتر میکند. جلوگیری از این آسیب پذیری برای حفظ امنیت سایت وردپرس شما ضروری است.
چگونه مهاجمان کاربران وردپرس را شمارش میکنند؟
مهاجمان با استفاده از برخی ویژگیها و ضعفهای سیستم به راحتی می توانند کاربران وردپرس را شمارش کنند. در این بخش چند روش متداول استفاده میشود:
۱. آدرسهای بایگانی نویسنده
وردپرس به طور خودکار برای هر کاربر یک صفحه آرشیو ایجاد میکند. یک مهاجم میتواند URL را با تغییر شماره در فرمت زیر دستکاری کند:
https://example.com/?author=1
اگر صفحه وجود داشته باشد، نشان می دهد که “author=1” مربوط به یک نام کاربری معتبر است. با افزایش تعداد، مهاجمان می توانند به سرعت سایر نام های کاربری معتبر را کشف کنند.
۲. پیام های خطای ورود
وردپرس برای نامهای کاربری نامعتبر و رمزهای عبور نادرست پیامهای خطای مختلفی می دهد. اگر کاربر نام کاربری یا رمز عبور اشتباهی را وارد کند، وردپرس پیامی مانند «نام کاربری نامعتبر» یا «گذرواژه اشتباه» را نمایش میدهد.
یک مهاجم می تواند از این برای آزمایش نامهای کاربری مختلف استفاده کند. وقتی پیام نام کاربری نامعتبر (Invalid username) را دریافت میکنند، میدانند که نام کاربری وجود ندارد. اما اگر پیام گذرواژه نادرست (Incorrect password) دریافت کنند، میدانند که نام کاربری معتبر است.
۳. XML-RPC API
وردپرس دارای یک API XML-RPC است که امکان ارتباط از راه دور را فراهم میکند. مهاجمان میتوانند از این API برای آزمایش نامهای کاربری و جمع آوری حسابهای معتبر استفاده کنند. اگرچه XML-RPC در برخی موارد مفید است، مهاجمان میتوانند از آن برای خودکار کردن شمارش نام کاربری استفاده کنند، که آن را به روشی آسان برای کشف کاربران معتبر تبدیل میکند.
۴. حدس زدن نام کاربری از فرم ورود
روش دیگر شامل تلاش مهاجمان برای حدس زدن نام کاربری به طور مستقیم از طریق فرم ورود به وردپرس است. آنها میتوانند نامهای کاربری رایج را آزمایش کنند یا ترکیبهایی را براساس اطلاعات در دسترس عموم، مانند آدرسهای ایمیل یا نامهای کاربری حسابهای رسانههای اجتماعی امتحان کنند.
۵. REST API
وردپرس همچنین دارای یک REST API است که به برنامه های خارجی اجازه میدهد تا با سایت تعامل داشته باشند. با ارسال درخواستهای خاص به API، مهاجمان می توانند کاربران را شمارش کنند. به عنوان مثال، یک مهاجم میتواند درخواستی را برای بررسی نامهای کاربری موجود به نقطه پایانی زیر ارسال کند:
https://example.com/wp-json/wp/v2/users
اگر سایت اقدامات امنیتی مناسبی نداشته باشد، این درخواست میتواند فهرستی از کاربران، از جمله نامهای کاربری، را حتی بدون نیاز به ورود به سیستم بازگرداند. این باعث میشود REST API آسیبپذیری دیگری برای شمارش نام کاربری باشد.
با استفاده از این تکنیکهای ساده، مهاجمان میتوانند به راحتی فهرستی از نامهای کاربری معتبر را جمعآوری کنند که سپس میتوانند در حملات بعدی آنها را هدف قرار دهند.
هاست وردپرس با وب سرور محبوب لایت اسپید و کش لایت اسپید باعث میشود تا سرعت لود فوق العادهای را تجربه کنید.
با خرید هاست وردپرس کانفیگ حرفهای و نظارت بر سرور به صورت پیوسته توسط تیم فنی پارسدِو انجام خواهد شد.
راه هایی برای جلوگیری از شمارش نام کاربری وردپرس
راه های زیادی وجود دارد که می توانید از نمایش نام کاربری وردپرس جلوگیری کنید و سایت خود را از حملات احتمالی ایمن کنید. ما فهرستی از روشهایی که می توانید پیاده سازی کنید تهیه کردهایم:
غیرفعال کردن بایگانی نویسنده
یکی از ساده ترین راه ها برای جلوگیری از شمارش نام کاربری از طریق URL های آرشیو نویسنده، غیرفعال کردن آرشیو نویسنده است. وردپرس به بازدیدکنندگان اجازه می دهد تا صفحات نویسنده را مشاهده کنند، که می تواند نام های کاربری را نشان دهد. با خاموش کردن این صفحات آرشیو، از استفاده مهاجمان از تکنیک ?author=1 جلوگیری می کنید.
با افزودن کد زیر به فایل functions.php تم خود می توانید این ویژگی را غیرفعال کنید:
if (is_author()) { wp_redirect(home_url()); exit; }
سفارشی کردن پیام های خطای ورود
وردپرس دارای برخی از پیامهای خطای پیش فرض برای نامهای کاربری یا رمزهای عبور نادرست است. تغییر آن پیامها مانع از آن میشود که مهاجمان بدانند نام کاربری معتبر است یا خیر. این کار تشخیص نام کاربری نادرست و رمز عبور نادرست را برای مهاجمان دشوارتر می کند.
میتوانید این کد را به فایل functions.php اضافه کنید تا پیام خطا را شخصی سازی کنید:
function no_wordpress_errors(){ return 'Invalid login details.'; } add_filter('login_errors', 'no_wordpress_errors');</p> <p dir="ltr">
محدود کردن تلاش برای ورود
جلوگیری از تلاشهای مکرر برای ورود به سیستم می تواند به کاهش حملات brute force کمک کند. با محدود کردن تلاشهای ورود به سیستم، میتوانید مهاجمان را از امتحان کردن نامهای کاربری زیادی به صورت متوالی متوقف کنید. میتوانید از افزونههایی مانند Limit Login Attempts Reloaded یا Wordfence برای محدود کردن تعداد تلاشهای ناموفق برای ورود از یک آدرس IP خاص استفاده کنید.
URL ورود به وردپرس خود را پیدا کرده و آن را برای بهبود بیشتر امنیت تغییر دهید.
XML-RPC را غیرفعال کنید
XML-RPC API را می توان برای شمارش نام کاربری استفاده کرد، بنابراین اگر از آن استفاده نمیکنید، بهتر است XML-RPC را غیرفعال کنید. می توانید کد زیر را به فایل functions.php خود اضافه کنید تا آن را غیرفعال کنید:
add_filter('xmlrpc_enabled', '__return_false');</p> <p dir="ltr">
اگر برای اهداف دیگر به XML-RPC نیاز دارید، دسترسی به آدرس های IP خاص را محدود کنید یا از افزونه های امنیتی برای کنترل استفاده از آن استفاده کنید.
دسترسی به REST API را محدود کنید
REST API یکی دیگر از بردارهای بالقوه برای شمارش نام کاربری است. اگر سایت شما به REST API نیاز ندارد، می توانید آن را غیرفعال کنید. این کد را به فایل functions.php خود اضافه کنید:
remove_action('rest_api_init', 'wp_oembed_add_discovery_links'); add_filter('rest_endpoints', function($endpoints){ if (isset($endpoints['/wp/v2/users'])) { unset($endpoints['/wp/v2/users']); } return $endpoints; });</p> <p dir="ltr">
این کار از دسترسی کاربران غیرمجاز به دادههای کاربر از طریق REST API جلوگیری میکند. اگر از REST API برای مقاصد دیگر استفاده می کنید، میتوانید دسترسی را فقط به کاربران مجاز محدود کنید.
از یک افزونه امنیتی استفاده کنید
نصب یک افزونه امنیتی می تواند به محافظت از سایت وردپرس شما در برابر بسیاری از آسیب پذیریهای رایج از جمله نمایش نام کاربری کمک کند. افزونههای محبوبی مانند Wordfence میتوانند درخواستهای مخرب را مسدود کنند، تلاشهای ورود را محدود کنند و اقدامات امنیتی بیشتری برای توقف حملات شمارش ارائه دهند.
از رمزهای عبور قوی استفاده کنید
حتی اگر این به طور مستقیم از شمارش نام کاربری جلوگیری نمیکند، استفاده از رمزهای عبور قوی برای همه حسابهای کاربری همیشه خوب است. مهاجمان ممکن است نام کاربری شما را پیدا کنند، اما نمیتوانند به حساب هایی با رمزهای عبور قوی دسترسی پیدا کنند. کاربران خود را به استفاده از رمزهای عبور طولانی و پیچیده تشویق کنید و از یک مدیر رمز عبور همراه با احراز هویت دو مرحله ای استفاده کنید.
سایت خود را به طور منظم مانیتور کنید
به طور منظم سایت خود را برای فعالیت مشکوک زیر نظر داشته باشید. این به شما کمک میکند تا تهدیدات بالقوه را زود تشخیص دهید. هشدارهایی را برای تلاش های ناموفق برای ورود به سیستم یا دسترسی غیرمجاز به فایل های مهم تنظیم کنید. ابزارهایی مانند Wordfence میتوانند به نظارت بر تلاشهای ورود به سیستم کمک کنند و محافظت بیشتری را ارائه دهند.
این استراتژی ها از شمارش نام کاربری وردپرس جلوگیری میکند. وجود امنیت قوی، شناسایی نامهای کاربری معتبر و محافظت از سایت شما را در برابر تهدیدات بیشتر برای مهاجمان سختتر میکند.
تست شمارش نام کاربری وردپرس
هنگامی که همه راهبردهای پیشگیری را آماده کردید، آنها را آزمایش کنید تا مطمئن شوید که کار میکنند. برخی از راه های آزمایش آسیب پذیری عبارتند از:
۱. بررسی آدرس های آرشیو نویسنده
سعی کنید با افزودن ?author=1، ?author=2 و غیره به URL سایت خود (به عنوان مثال، https://example.com/?author=1) به صفحات آرشیو نویسنده دسترسی پیدا کنید. اگر بایگانی نویسنده را غیرفعال کرده اید، باید به صفحه اصلی هدایت شوید یا خطای ۴۰۴ دریافت کنید. این تضمین می کند که مهاجمان نمی توانند از طریق صفحات نویسنده به نام های کاربری معتبر دسترسی پیدا کنند.
۲. آزمایش پیام های خطای ورود به سیستم
در صفحه ورود، یک ترکیب نام کاربری و رمز عبور اشتباه وارد کنید. وردپرس باید یک پیغام خطای عمومی مانند «جزئیات ورود نامعتبر» به جای اینکه مشخص کند نام کاربری یا رمز عبور اشتباه است را نمایش دهد. این کمک می کند تا تأیید کنید که پیام خطای سفارشی شما کار می کند.
۳. تلاش برای حملات Brute Force
چند تلاش ناموفق برای ورود به سیستم را امتحان کنید تا بررسی کنید که آیا محدودیت تلاش برای ورود به سیستم یا reCAPTCHA به درستی کار می کند یا خیر. پس از تعداد معینی از تلاش های ناموفق، باید از شما قفل شود یا از شما خواسته شود که یک CAPTCHA را تکمیل کنید. این به جلوگیری از حملات brute force کمک می کند.
۴. بررسی دسترسی XML-RPC
برای آزمایش اینکه آیا XML-RPC غیرفعال شده است، سعی کنید مستقیم به نقطه پایانی XML-RPC دسترسی پیدا کنید. برای مثال به آدرس زیر بروید:
https://example.com/xmlrpc.php
اگر XML-RPC غیرفعال است، باید خطای «۴۰۴ یافت نشد» یا پیامی مبنی بر در دسترس نبودن سرویس را مشاهده کنید.
۵. تست دسترسی API REST
REST API را با مراجعه به URL زیر تست کنید:
https://example.com/wp-json/wp/v2/users
اگر دسترسی به دادههای کاربر را محدود کردهاید، باید یک پیام خطایی ببینید یا به صفحه ورود هدایت شوید، که نشان میدهد کاربران غیرمجاز نمیتوانند به لیست کاربران دسترسی پیدا کنند.
۶. استفاده از ابزارهای آنلاین
همچنین میتوانید از ابزارهای تست امنیت آنلاین مانند WPScan یا Security Header برای اسکن سایت خود برای آسیبپذیریهای احتمالی، از جمله شمارش نام کاربری، استفاده کنید. این ابزارها میتوانند به شناسایی هر گونه شکاف امنیتی که ممکن است از دست داده باشید کمک کنند.
آزمایش منظم تضمین میکند که سایت وردپرس در برابر شمارش نام کاربری ایمن باقی میماند. اگر در حین آزمایش هر گونه آسیب پذیری پیدا کردید، مطمئن شوید که آنها را برطرف کنید تا از سایت خود و کاربران آن محافظت نمائید.
جمع بندی
جلوگیری از نمایش نام کاربری وردپرس برای حفظ امنیت سایت ضروری است و به محافظت در برابر حملات brute force، فیشینگ و سایر فعالیتهای مخربی که می تواند سایت و کاربران آن را به خطر بیندازد، کمک میکند. با اجرای اقداماتی مانند غیرفعال کردن آرشیو نویسندگان، سفارشی کردن پیام های خطا، محدود کردن تلاش برای ورود به سیستم و استفاده از افزونههای امنیتی، می توانید سایت خود را به طور موثر در برابر این تهدیدات ایمن کنید.