T.Toosi
May 13th, 2017, 00:28
باسلام، بیش از 8 روز است exploit جدیدی توسط legalhackers.com برای وردپرس منتشر شده است که شامل وردپرس 4.7.4 هم میشود و اتکر با استفاده از این exploit همراه با مهندسی اجتماعی قادر به دریافت لینک ریست پسورد خواهد بود.
تمامی مشکلات در لاین 326 فایل wp-includes/pluggable.php شروع خواهد شد :
if ( !isset( $from_email ) ) {
$sitename = strtol ower( $_SERVER['SERVER_NAME'] );
if ( sub str( $sitename, 0, 4 ) == 'www.' ) {
$sitename = sub str( $sitename, 4 );
}
$from_email = 'wordpress@' . $sitename;
}
همانطور که مشاهده میکنید در صورت ست نبودن متغییر $from_email هاست نیم From Email توسط $_SERVER['SERVER_NAME'] دریافت و ساخته می شود، اتکر با ارسال درخواست و Host جعلی در هیدر میتواند هاست نیم From Email را تغییر دهد :
curl -H "Host: faranevis.com" http://yoursite.com/wp/wordpress/wp-login.php?action=lostpassword
و قسمت سخت ماجرا برای اتکر، سناریو های دریافت لینک ریست پسورد :
# ارسال کپی ای از ایمیل بادی توسط autoresponders که کاربران برای ایمیل های خود فعال میکنند.
# ارسال ایمیل های "ریست پسورد" متعدد برای کاربر، که در آخر کاربر برای پیگیری ایمیل را Reply کند.
Patch فایل wp-incl udes/pluggable.php
حذف :
$sitename = strt olower( $_SERVER['SERVER_NAME'] );
if ( subs tr( $sitename, 0, 4 ) == 'www.' ) {
$sitename = sub str( $sitename, 4 );
}
جایگزین :
$sitename = parse_url( network_home_url(), PHP_URL_HOST );
حذف :
$wp_email = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
جایگزین :
$wp_email = 'wordpress@' . parse_url(network_home_url(), PHP_URL_HOST);
اگر در بالا نقطه شروع مشکل را دوباره نگاه کنید کنید در صورت ست نبودن متغییر $from_email مشکلات شروع خواهد شد، که با اضافه کردن ***** زیر در وردپرس، شرط اجرا نخواهد شد و کار به استفاده از SERVER_NAME نخواهد رسید :
add_filter( 'wp_mail_from', function( $from_email ) { return 'insert@your_email.here'; } );
چک کردن هاست نیم ها برای جلوگیری از هاست نیم های فیک :
RewriteEngine On
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
تمامی مشکلات در لاین 326 فایل wp-includes/pluggable.php شروع خواهد شد :
if ( !isset( $from_email ) ) {
$sitename = strtol ower( $_SERVER['SERVER_NAME'] );
if ( sub str( $sitename, 0, 4 ) == 'www.' ) {
$sitename = sub str( $sitename, 4 );
}
$from_email = 'wordpress@' . $sitename;
}
همانطور که مشاهده میکنید در صورت ست نبودن متغییر $from_email هاست نیم From Email توسط $_SERVER['SERVER_NAME'] دریافت و ساخته می شود، اتکر با ارسال درخواست و Host جعلی در هیدر میتواند هاست نیم From Email را تغییر دهد :
curl -H "Host: faranevis.com" http://yoursite.com/wp/wordpress/wp-login.php?action=lostpassword
و قسمت سخت ماجرا برای اتکر، سناریو های دریافت لینک ریست پسورد :
# ارسال کپی ای از ایمیل بادی توسط autoresponders که کاربران برای ایمیل های خود فعال میکنند.
# ارسال ایمیل های "ریست پسورد" متعدد برای کاربر، که در آخر کاربر برای پیگیری ایمیل را Reply کند.
Patch فایل wp-incl udes/pluggable.php
حذف :
$sitename = strt olower( $_SERVER['SERVER_NAME'] );
if ( subs tr( $sitename, 0, 4 ) == 'www.' ) {
$sitename = sub str( $sitename, 4 );
}
جایگزین :
$sitename = parse_url( network_home_url(), PHP_URL_HOST );
حذف :
$wp_email = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
جایگزین :
$wp_email = 'wordpress@' . parse_url(network_home_url(), PHP_URL_HOST);
اگر در بالا نقطه شروع مشکل را دوباره نگاه کنید کنید در صورت ست نبودن متغییر $from_email مشکلات شروع خواهد شد، که با اضافه کردن ***** زیر در وردپرس، شرط اجرا نخواهد شد و کار به استفاده از SERVER_NAME نخواهد رسید :
add_filter( 'wp_mail_from', function( $from_email ) { return 'insert@your_email.here'; } );
چک کردن هاست نیم ها برای جلوگیری از هاست نیم های فیک :
RewriteEngine On
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]