Discuz! 1.5-2.5 命令执行漏洞 修复方案

2018-09-21 2078 0条评论

漏洞说明:8月27号安全研究人员在GitHub上公布了有关Discuz 1.5-2.5版本中后台数据库备份功能存在的命令执行漏洞的细节。
适用版本:x1.5-x3.3
漏洞修复:
打开:
source\admincp\admincp_db.php
搜索:


313行 x3.4这部分最新版改了

@shell_exec($mysqlbin.'mysqldump --force --quick '.($db->version() > '4.1' ? '--skip-opt --create-options' : '-all').' --add-drop-table'.($_GET['extendins'] == 1 ? ' --extended-insert' : '').''.($db->version() > '4.1' && $_GET['sqlcompat'] == 'MYSQL40' ? ' --compatible=mysql40' : '').' --host="'.$dbhost.($dbport ? (is_numeric($dbport) ? ' --port='.$dbport : ' --socket="'.$dbport.'"') : '').'" --user="'.$dbuser.'" --password="'.$dbpw.'" "'.$dbname.'" '.$tablesstr.' > '.$dumpfile);

改为:

@shell_exec($mysqlbin.'mysqldump --force --quick '.($db->version() > '4.1' ? '--skip-opt --create-options' : '-all').' --add-drop-table'.($_GET['extendins'] == 1 ? ' --extended-insert' : '').''.($db->version() > '4.1' && $_GET['sqlcompat'] == 'MYSQL40' ? ' --compatible=mysql40' : '').' --host="'.$dbhost.($dbport ? (is_numeric($dbport) ? ' --port='.$dbport : ' --socket="'.$dbport.'"') : '').'" --user="'.$dbuser.'" --password="'.$dbpw.'" "'.$dbname.'" '.escapeshellarg($tablesstr).' > '.$dumpfile);

300行 搜索


$tablesstr .= '"'.$table.'" ';


改为:

$tablesstr.='"'.addslashes($table).'"';



310行 搜索

@unlink($dumpfile);


下面添加:

$tablesstr=escapeshellarg($tablesstr);


搜索328行

@unlink($dumpfile);



下面添加:

$tablesstr=escapeshellarg($tablesstr);




3.保存,替换同名文件,更新缓存 
4.完成。



文章版权及转载声明

本文作者:符文浩 网址:http://blog.fuwenhao.com/post/146.html 发布于 2018-09-21
文章转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:

评论列表 (暂无评论,2078人围观)参与讨论

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码