نوشته‌ها

هک وردپرس با URL Injection

سلام خدمت شما

مدتی است که بسیاری از سایت‌های وردپرسی دچار مشکل مشابهی میشن که اینجا لازم دیدم توضیحی در مورد این مشکل و نحوه رفع اون برای دوستان عزیز قرار بدم.

اخیرا مدیران سایت‌های مختلف ایمیل میزنن و بیان می‌کنند که یکسری لینک چینی و ژاپنی در گوگل برای سایتشون ثبت شده و با این عنوان که سایتمون رو هک کردن ابراز نگرانی می‌کنند.

URL injection

این بدین معنی است که هکر در سایت شما صفحاتی ساخته که معمولا شامل کلمات و لینک‌های اسپم است. بعضی اوقات این صفحات جدید شامل کدهایی هستند که کارهای مخصوصی انجام می‌دهند. به عنوان مثال کاربران، سایت شما را به سایت‌های دیگر منتقل می‌کنند یا به وب سرور شما صدمه می‌زنند و اینجاست که می‌گوییم هک شدن وردپرس با URL injection اتفاق افتاده است.

هکرها معمولا این تغییرات را از راه‌های زیر انجام می‌دهند:

  • داشتن دسترسی به یکی از پوشه‌های موجود در سرور یا هاست؛ به عنوان مثال ممکن است به یکی از پوشه‌های هاست خود بصورت کاملا ناخواسته دسترسی کاربر را داده‌اید.
  • استفاده از نسخه‌های قدیمی وردپرس و سوء استفاده هکر از باگ‌های امنیتی موجود در این نسخه‌ها
  • هک کردن افزونه‌های third-party که در سایت خود نصب کرده‌اید؛ مثل افزونه‌های شمارش تعداد بازدید سایت.

چگونه متوجه وجود این اسپم شویم؟

با بررسی حساب Google Search Console این مورد مشخص می‌شود زیرا تعداد صفحات ایندکس شده به طور قابل توجهی افزایش میابد.

همچنین قسمت پیام‌های Search Console را نیز بررسی کردیم اما چیزی مشاهده نشد و عجیب به نظر می‌رسید. در این حالت مثلا باید پیام “سایت شما ممکن است هک شده باشد” را دریافت می‌کردیم.

روش دیگه جستجو در گوکل به صورت زیر است: 

site:yourwebsite.com

هک وردپرس با URL Injection

چگونه مشکل ساخت آدرس‌ های جعلی در وردپرس را حل کردیم؟

اولین کاری که باید انجام داد، حذف افزونه مخرب است که این لینک‌ها را ایجاد کرده بود. چندین افزونه هستند که اسپم‌ها را شناسایی و حذف می‌کنند؛ افزونه‌های محبوبی مثل WP Spam Shield، WordFence و Sucuri.

پاک کردن اسپم از ایندکس گوگل

روش اول : ممکن است شما هم به فکر استفاده از ابزار Remove URLs در Google Search Console باشید اما نه تنها حذف این لینک‌ها به اندازه ایندکس شدن آن‌ها زمان بر است، بلکه گوگل آن‌ها را به صورت موقتی پاک می‌کند (۹۰ روز). و تا این زمان هک شدن وردپرس با URL injection ادامه دارد. اما راه‌حل بعدی بهتر به نظر می‌رسد.

روش دوم :

  1. همه ی URL های اسپم را از نتایج گوگل دانلود کنید.
  • اگر نتیجه‌های اسپم زیادی دارید، می‌توانید افزونه گوگل کروم به نام Infinite Scroll add-on  را نصب کنید. این افزونه به شما اجازه می‌دهد تا با یک کلیک به صفحه آخر نتایج بروید تا بتوانید تمامی نتیجه‌های گوگل را مشاهده کنید.
  • می‌توانید از افزونه Link Klipper نیز برای دانلود نتایج سایت در گوگل استفاده کنید. قطعا این راه خیلی راحت تر از کپی کردن تک تک نتایج است.
  1. کلمه‌ای که در صفحات اسپم شده تکرار شده است را پیدا کنید و آن را جلوی site:yourwebsite.com قرار دهید و عبارت را در گوگل جستجو کنید. مثل عبارت site:yourwebsite.com dating
  2. به نتایج انتهایی بروید.
  3. هنگامی که تمامی نتیجه‌ها بارگذاری شدند، راست کلیک کنید و Link Klipper را انتخاب کنید و روی Extract all links کلیک کنید. در این حالت یک فایل اکسل ساخته می‌شود.
  4. فایل اکسل را باز کنید و نتایج را براساس a to z مرتب کنید. سپس آن لینک‌هایی که مربوط به سایت شما است و لینک سایت شما در آن قرار دارد را کپی کنید. لینک‌های دیگر را نادیده بگیرید.
  5. شما با کمک افزونه yoast seo نیز می‌توانید نقشه سایت خود را کامل بسازید.
  6. یک نام مشخص برای فایل XML خود بگذارید. حال فایل را در روت سایت خود (در پوشه public_html) آپلود کنید تا آدرس دسترسی به آن چیزی شبیه به website.com/sitemap-name.xml باشد.
  7. حال به Google Search Console بروید و از قسمت crawl و sitemaps، sitemap جدید را به گوگل معرفی کنید.
  8. صفحه را دوباره باز کنید؛ می‌بینید که وضعیت sitemap به حالت submitted در می‌آید.
  9. اگر بیش از ۱۰۰۰ آدرس‌ های جعلی در وردپرس دارید، بعید است که بتوانید همه آن‌ها را در یک اقدام دانلود کنید. پس مجبورید این مراحل را برای بقیه لینک‌ها در روز بعدی انجام دهید.
  • لینک‌های اسپم را از نتایج جستجوی گوگل دانلود کنید و هر بار آن را به همان فایل اکسل اول اضافه کنید.
  • هر بار که لینک جدید اضافه می‌کنید، روی دکمه Remove duplicates در اکسل کلیک کنید تا جایی که تعداد لینک‌ها با آدرس‌ های جعلی در وردپرس موجود در نتایج گوگل برابر شود.
  • فایل sitemap جدید را در گوگل دوباره ثبت کنید.
 
تست امنیت وردپرس با WPSeku

تست امنیت وردپرس با WPSeku

تست امنیت وردپرس با WPSeku

وردپرس یک سیستم مدیریت محتوا (CMS) آزاد و متن باز است که توسط میلیون ها نفر از سراسر جهان برای اجرای وبلاگ ها و وب سایت های کاملا کاربردی مورد استفاده قرار می گیرد. از آنجایی که این CMS بیشتر مورد استفاده قرار می گیرد، حفره‌های امنیتی بیشتری هم روزانه در مورد این سیستم مدیریت محتوا منتشر می‌شود.

با این حال، اگر ما از شیوه های بهترین شیوه ها امنیتی صحیح استفاده کنیم، این مشکلات امنیتی را می توان حل کرد. در این ویدئو ما به شما نحوه استفاده از WPSeku، اسکنر آسیب‌پذیری وردپرس در لینوکس را آموزش می‌دهیم که می تواند برای پیدا کردن حفره های امنیتی وردپرس جلوگیری از این تهدیدات بسیار موثر باشد.

WPSeku یک اسکنر آسیب پذیری وردپرس است که با استفاده از پایتون نوشته شده است، می توان از آن برای اسکن وردپرس جهت یافتن مشکلات امنیتی استفاده کرد.

کامندهای ابزار:

Usage: ./wpseku.py [--target|-t] http://localhost

-t --target Target URL (eg: http://localhost)
-x --xss Testing XSS vulns
-s --sql Testing SQL vulns
-l --lfi Testing LFI vulns
-q --query Testable parameters (eg: "id=1&test=1")
-b --brute Bruteforce login via xmlrpc
-u --user Set username, default=admin
-p --proxy Set proxy, (host:port)
-m --method Set method (GET/POST)
-c --cookie Set cookies
-w --wordlist Set wordlist
-a --agent Set user-agent
-r --redirect Redirect target url, default=True
-h --help Show this help and exit

امنیت در سایت های وردپرسی

ایمن بودن یا نبودن وردپرس و از سوالاتی است که همچینان با گذشت چندین سال جوابی ۱۰۰% برای آن پیدا نشده است.برخی وردپرس را ضعیف ترین سیستم مدیریت محتوا می نامند و عده ای دیگر معتقدند که با پیاده سازی روش های صحیح امکان مدیریت بهتر و افزایش ایمنی آن وجود دارد.

امنیت در سایت های وردپرسی

در این مقاله قصد داریم ایمن بودن یا نبودن وردپرس را مورد ارزیابی موشکافانه قرار دهیم.

قبل از شروع هر کاری بهتر است از سرویس trend گوگل به ادرس https://trends.google.com/trends/ استفاده کنیم تا میزان جستجو کاربران پیرامون سیستم مدیریت محتواهای مختلف را بررسی کنیم.

در گام اول ۳ کلمه wordpress , joomla و drupal را در دنیا و در ۵ سال گذشته مورد ارزیابی قرار دادیم.نتایج نشان میدهند در طی ۵ سال گذشته جستجو برای کلمه drupal تغییر چشم گیری نداشته اما جستجو برای joomla و wordpress تغییرات عمده ای را نشان می دهد ، به نحوی که در سال های پیشین جستجو برای joomla بسیار بیشتر بوده است اما با گذشت زمان جای خود را به کلمه wordpress داده است.

همین کار را این بار برای کلمات وردپرس ، جوملا و دروپال و مخصوص کشورعزیزمان ایران انجام دادیم.جالب است که نتایج دقیقا مثل قبل بود.

امنیت در سایت های وردپرسی

پس می توان نتیجه گرفت طی سالیان گذشته جوملا از محبوبیت بیشتری برخوردار بوده است ، اما الان جای خود را به وردپرس داده است.

افزایش محبوبیت وردپرس را می توان افزایش theme ها ، plugin ها و از همه مهم تر open source بودن وردپرس دانست.البته محبوب بودن واستفاده بیشتر نشان دهنده برتری وردپرس نیست.چون اگر به این شکل در نظر بگیریم که پراید در کشورمان بیشتر استفاده می شود پس در نتیجه بهتراست ، یک آنالیز ۱۰۰% اشتباه است.

اما برای این که مقایسه ما رنگ و بوی امنیت داشته باشد بهتراست وضعیت اکسپلویت های ثبت شده برای این cms ها در وب سایت های ثبت اکسپلویتی همچون exploit-db.com را بررسی کنیم.

در این وب سایت اکسپلویت های مختلف در زمینه هک سایت ، هک سیستم های شخصی و … منتشر می شود و به عنوان مرجع وب سایت های ثبت اکسپلویت دنیا شناخته می شود.

لازم است بدانید که اکسپلویت در واقع همانند یک دفترچه راهنما عمل می کند که هم نفوذگران و هم امنیت کاران از آن استفاده می کنند.نفوذگر با استفاده از اکسپلویت به کار نفوذ می پردازد و امنیت کار با استفاده از آن مباحث امنیتی را پیاده می کند.

اکسپلویت همانند یک چاقو عمل می کند که می تواند در دست یک پزشک و یا در دست یک انسان با افکار پلید باشد ، این که چطور از آن استفاده شود بسته به شخصیت فرد دارد.

با جستجو پیرامون اکسپلویت های ثبت شده برای این cms ها نتایج قابل توجهی را به دست آوردیم.تعداد اکسپلویت هایی که برای جوملا منتشر شده بود بسیار زیاد بود و این در حالی است که برای وردپرس اندکی کمتر و برای دروپال بسیار بسیار کمتر بود.

به صورت حدودی برای وردپرس در مقایسه با دروپال ۱۰۰ برابر اکسپلویت داشتیم.البته به خوبی می دانیم که میزان استفاده از دروپال در مقایسه با وردپرس هم تقریبا به همین مقدار است.یعنی سایت هایی که با ورردپرس ساخته می شوند در مقایسه با سایت هایی که از دروپال استفاده می کنند صدها برابر است و شاید کمی طبیعی باشد که نفوذگران به دنبال کشف حفره های امنیتی برای وردپرس باشند تا دروپال ، اما به هر حال چیزی که مشخص است، آن است که امنیت دروپال از وردپرس و وردپرس از جوملا بالاتر است.

همیشه یکسری اشتباهات ساده و پیش پا افتاده امنیت یک سایت وردپرسی را به خطر می اندازد که در اینجا مواردی را بررسی می کنیم.

مورد اول نام گذاری نادرست برای نام دیتابیس ، نام کاربری و رمز عبور سایت است.در زمان نصب وردپرس از شما نامی را برای دیتابیس می خواهد که بسیاری از افراد متاسفانه از نام هایی همچون wordpress , site , password و … استفاده می کنند که این مورد کار نفوذگر را بسیار آسان می کند.همین مشکلات را در بحث قرار دادن نام کاربری و رمزعبور هم داریم.بسیاری از افراد از نام خودشان ، نام سایت ، نام شهر و موارد این چنینی به عنوان نام کاربری استفاده می کنند که کمک بزرگی به نفوذگران است.

مورد دوم عدم به روزرسانی به موقع است.باور کنید به روزرسانی هایی که منتشر می شود برای زیبایی نیست.بسیاری از افراد به دلایل خنده دار همچون از بین نرفتن حجم اینترنت ، از به روزرسانی های منتشر شده برای پلاگین ها استفاده نمی کنند.لازم است بدانید این به روزرسانی ها در ۹۵ درصد مواقع برای رفع یک مشکل امنیتی منتشر شده اند و در صورتی که از آن ها استفاده نکنید ، وب سایت خود را تبدیل به یک طعمه برای نفوذگران کرده اید.

مورد سوم عدم استفاده از تصاویر امنیتی است که در واقع به صورت پیش فرض در وردپرس تعریف نشده اند.نیاز است که در بخش هایی که از سایت خصوصا صفحه ورود به بخش مدیریت سایت از گوگل کپچا یا همان ریکپچا استفاده کنید تا از این طریق جلوی نوع خاصی از حملات را که در مقاله ای جدا به صورت کامل به آن ها می پردازیم بگیرید.

این افزونه را می توان از طریق مخازن وردپرس به صورت رایگان دریافت و استفاده نمود.

مورد چهارم استفاده از wp-login.php به عنوان صفحه مدیریت سایت است که در وردپرس به صورت پیش فرض تعیین شده است و همان طور که شما از آن اطلاع دارید ، نفوذگران نیز به خوبی با خبر هستند.پس پیشنهاد می کنیم در اولین فرصت این صفحه را تغییر نام داده و در جهت افزایش امنیت وب سایت وردپرسی خود اقدام کنید.

مورد پنجم مربوط به ۲ مشکل پیش فرض در وردپرس است.اول آن که با اضافه کردن عبارت ?author=1 در ادامه آدرس سایت نام کاربری مدیر سایت مشخص می شود و دوم این که در صفحه مدیریت وردپرس (wp-login.php) ، با وارد کردن نام کاربری و رمز عبور نادرست پیغام اشتباه وارد کردن نام کاربری را می دهد اما زمانی که فقط رمزعبور را اشتباه وارد می کنید ارور تغییر می کند و به ما می گوید رمز عبور استفاده شده برای نام کاربری x اشتباه است ، یعنی غیر مستقیم به ما می گوید که نام کاربری درست است و فقط رمز عبور را اشتباه وارد کرده اید.

این اطلاعات بسیار ارزشمند هستند و نباید به این سادگی در اختیار افراد دیگر قرار گیرند.برای رفع این مشکل افزونه هایی در نظر گرفته شده است پس نیاز نیست نگران باشید.

اگر به بحث تامین امنیت وب سایت وردپرسی خودتان علاقه مند هستید پیشنهاد می کنم از این دوره آموزشی استفاده کنید.

https://faranesh.com/network-security/14871-wordpress-security-2-professional

همچنین اگر از علاقه مندان مطالعه کتاب هستید.می توانید از این کتاب نیز بهره ببرید

https://www.ketabrah.ir/%DA%A9%D8%AA%D8%A7%D8%A8-%D8%AA%D8%A7%D9%85%DB%8C%D9%86-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%AF%D8%B1-%D9%88%D8%B1%D8%AF%D9%BE%D8%B1%D8%B3/book/18254

پس همون طور که متوجه شدید وردپرس مشکلات امنیتی مختلفی را به صورت پیش فرض داراست.اما اگر مدت کوتاهی روی آن زمان بگذارید می توانید همه آنها را برطرف کرده و سایتی ایمن داشته باشید.

بهروز منصوری

 

دانلود مقاله