最近倡萌頻繁收到阿里云的兩個漏洞提示,相信很多使用阿里云服務(wù)器的朋友也會收到:
- WordPress 后臺插件更新模塊任意目錄遍歷導(dǎo)致DOS漏洞
- WordPress IP驗證不當漏洞
修復(fù)這兩個漏洞的最直接的辦法就是馬上升級到 WordPress 4.6.1 版本即可!
下面還是簡單說說這兩個漏洞,以及不升級4.6.1時應(yīng)該如何手動修復(fù)。
漏洞1:WordPress 后臺插件更新模塊任意目錄遍歷導(dǎo)致DOS漏洞
描述
wordpress后臺文件/wp-admin/includes/ajax-actions.php中,對代碼插件路徑的輸入?yún)?shù)plugin未進行正確的規(guī)范化轉(zhuǎn)義,導(dǎo)致黑客可傳入特殊路徑,造成拒絕服務(wù)。
修復(fù)方法
wordpress 4.5.4版本:
打開WordPress后臺文件/wp-admin/includes/ajax-actions.php,大概在3077行左右找到以下代碼:
$plugin = urldecode( $_POST['plugin'] );
在它的下面添加一行:
$plugin = plugin_basename( sanitize_text_field( wp_unslash( $_POST['plugin'] ) ) );
至此,修改保存上傳覆蓋后即可成功修復(fù)WordPress 4.5.4版本的WordPress后臺插件更新模塊任意目錄遍歷導(dǎo)致DOS漏洞。
wordpress 4.5.4版本以下:
WordPress 4.5.4版本以下的,除了要按照WordPress 4.5.4版本的辦法修復(fù)之外,還需要繼續(xù)進行以下兩個步驟的操作(PS:如果某版本的以下2點中的代碼已經(jīng)跟修復(fù)后一樣的就不用修改了):
1、在/wp-admin/includes/ajax-actions.php文件中搜索找以下代碼:
if ( $plugin_update_data === true ) {
wp_send_json_error( $status );
}
直接修改為:
if ( $plugin_update_data === true ) {
$status['error'] = __( 'Plugin update failed.' );
wp_send_json_error( $status );
}
2、在/wp-admin/includes/ajax-actions.php文件中搜索找以下代碼:
if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
$status['error'] = $wp_filesystem->errors->get_error_message();
}
wp_send_json_error( $status );
}
}
直接修改為:
if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
$status['error'] = $wp_filesystem->errors->get_error_message();
}
wp_send_json_error( $status );
} else {
// An unhandled error occured
$status['error'] = __( 'Plugin update failed.' );
wp_send_json_error( $status );
}
}
至此,修改保存上傳覆蓋后即可成功修復(fù)WordPress 4.5.4版本以下的WordPress后臺插件更新模塊任意目錄遍歷導(dǎo)致DOS漏洞。
漏洞2:WordPress IP驗證不當漏洞
描述
wordpress /wp-includes/http.php文件中的wp_http_validate_url函數(shù)對輸入IP驗證不當,導(dǎo)致黑客可構(gòu)造類似于012.10.10.10這樣的畸形IP繞過驗證,進行SSRF
修復(fù)方法
找到/wp-includes/http.php這個文件,大概在文件465行:
$same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] );
修改為:
if ( isset( $parsed_home['host'] ) ) {
$same_host = ( strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] ) || 'localhost' === strtolower( $parsed_url['host'] ) );
} else {
$same_host = false;
}
修改保存上傳覆蓋后即可成功修復(fù)IP驗證不當漏洞。
特別提示
修復(fù)后,一定要到阿里云后臺“重新驗證”或“忽略”漏洞,否則還是會一直發(fā)送信息的!
參考:




