
हाल ही में WP Time Capsule < 1.21.16 पर एक प्रमाणीकरण बायपास (https://www.webarxsecurity.com/vulnerability-infinitewp-client-wp-time-capsule/) खोजा गया था। यह PoC साबित करता है कि यह समस्या कैसे काम करती है और इसका शोषण कैसे किया जा सकता है।
हाल ही में WP Time Capsule < 1.21.16 में एक प्रमाणीकरण बायपास खोजा गया था (https://www.webarxsecurity.com/vulnerability-infinitewp-client-wp-time-capsule/)। यह PoC दिखाता है कि यह समस्या कैसे काम करती है और इसका फायदा कैसे उठाया जा सकता है।
यह POC दो अलग-अलग विकल्प प्रदान करता है:
poc.py http://127.0.0.1/
poc.py http://127.0.0.1 shell
फ़ंक्शन decode_server_request_wptc(), जो wptc-cron-functions.php के अंदर है और Wptc_Init कंस्ट्रक्टर द्वारा कॉल किया जाता है, बॉडी पर भेजे गए अनुरोधों को डीकोड करते समय किसी भी प्रकार की विशेषाधिकार जाँच नहीं करता है:
if( !empty($HTTP_RAW_POST_DATA_LOCAL)
&& strpos($HTTP_RAW_POST_DATA_LOCAL, 'IWP_JSON_PREFIX') !== false ){
wptc_log('', "--------IWP_JSON_PREFIX--coming------");
wp_cookie_constants();
wptc_login_as_admin();
}
यह केवल जाँचता है कि किसी भी POST अनुरोध की बॉडी में स्ट्रिंग IWP_JSON_PREFIX मौजूद है, यदि ऐसा है, तो यह निम्न विधियों को कॉल करता है:
wp_cookie_constants();
wptc_login_as_admin();
wptc_login_as_admin() सभी एडमिन उपयोगकर्ताओं को प्राप्त करता है, पहले उपयोगकर्ता को निकालता है और उस उपयोगकर्ता नाम के लिए एक कुकी लौटाता है।
function wptc_login_as_admin(){
wptc_log(func_get_args(), "--------" . __FUNCTION__ . "--------");
wptc_define_admin_constants();
if( !function_exists('is_user_logged_in') ){
include_once( ABSPATH . 'wp-includes/pluggable.php' );
}
if(is_user_logged_in()){
return ;
}
$admins = get_users(array('role' => 'administrator'));
foreach ($admins as $admin) {
$user = $admin;
break;
}
if (isset($user) && isset($user->ID)) {
wp_set_current_user($user->ID);
// Compatibility with All In One Security
update_user_meta($user->ID, 'last_login_time', current_time('mysql'));
}
if(!defined('SECURE_AUTH_COOKIE')){
return;
}
$isHTTPS = (bool)is_ssl();
if($isHTTPS){
wp_set_auth_cookie($user->ID);
} else{
wp_set_auth_cookie($user->ID, false, false);
wp_set_auth_cookie($user->ID, false, true);
}
}
इस परीक्षण के लिए हमने उपयोग किया:
इसमें शामिल चरण:
