漏洞概述
discus支持多种缓存方式(redis,memcache),而一般情况下,大多数都会将redis或memcache安装在本地,而且默认安装的redis是可以直接访问的,不需要账号密码,这里就有一个潜在的问题,如果discuz的安全性得不到保证,存在ssrf,那么有几率导致ssrf操作redis从而修改缓存注入我们自己的代码。
漏洞详情如果discuz启用后台的缓存,具体在“全局”—>”内存优化”中,默认这里是不启用的,要修改和启用缓存,我们需要修改discuz中config/config_golbal.php文件,修改里面关于redis的设置。当启用了redis后,discuz会将缓存存放在$_G中。

接下来我们来分析具体代码 source\class\discuz\discuz_application.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | private function _init_setting() {
if ( $this ->init_setting) {
if ( empty ( $this -> var [ 'setting' ])) {
$this ->cachelist[] = 'setting' ;
}
if ( empty ( $this -> var [ 'style' ])) {
$this ->cachelist[] = 'style_default' ;
}
if (!isset( $this -> var [ 'cache' ][ 'cronnextrun' ])) {
$this ->cachelist[] = 'cronnextrun' ;
}
.hottip{font-size:12px; color:#999999; border:1px solid #dcdcdc; background-color:#f9f9f9; padding:6px 10px; margin:14px 0px;}
|
|