Discuz 6.x 7.x 全局过滤机制绕过漏洞

更新时间:

 许可信息:  本文采用 自由转载-非商用-非衍生-保持署名 许可协议,作者alpha1e0,转载请注明作者或出处链接。

本文分析Discuz 6.x 7.x 全局过滤机制绕过漏洞

1 discuz 6.x 7.x 的全局过滤机制

@include/common.inc.php #L29

阻止GLOBALS参数

@include/common.inc.php #L40:

伪全局机制

2 绕过全局过滤机制方法1

可以看到如果直接使用$_GET/$_POST/$_COOKIE作为参数,则绕过了全局过滤daddslashes

3 绕过全局过滤机制方法2

register_global=Onrequest_order = "GP",在cookie中提交参数则可以绕过了GLOBALS限制,且绕过了全局过滤

例如:

Cookie: GLOBALS[key]=aaa'

则,在register_globals的作用下,会立刻执行$GLOBALS[‘key’]=aaa’,从而生成了参数$key=aaa’

而在之后的伪全局中会执行$GLOBALS=array(‘key’=>’aaa'’),这种情况下是不会创建变量$key的,因为

  • $GLOBALS=xxx,不会解压参数
  • $GLOBALS[‘key’]=xxx,会解压参数

因此,最后生成了$key=aaa'$GLOBALS['key']=aaa\'


标签:

 打赏:  如果您觉得该文档有用,可以选择微信扫码打赏,谢谢
微信打赏码