Discuz! 6.x/7.x 全局变量防御绕过漏洞

受影响产品:

Discuz! 6.x/7.x 

漏洞描述:

由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致Discuz! 6.x/7.x 全局变量防御绕过漏洞

include/global.func.php代码里:

function daddslashes($string, $force = 0) {
	!defined(‘MAGIC_QUOTES_GPC‘) && define(‘MAGIC_QUOTES_GPC‘, get_magic_quotes_gpc());
	if(!MAGIC_QUOTES_GPC || $force) {
		if(is_array($string)) {
			foreach($string as $key => $val) {
				$string[$key] = daddslashes($val, $force);
			}
		} else {
			$string = addslashes($string);
		}
	}
	return $string;
}

include/common.inc.php里:

foreach(array(‘_COOKIE‘, ‘_POST‘, ‘_GET‘) as $_request) {
	foreach($$_request as $_key => $_value) {
		$_key{0} != ‘_‘ && $$_key = daddslashes($_value);
	}
}

模拟register_globals功能的代码,在GPC为off时会调用addslashes()函数处理变量值,但是如果直接使用$_GET/$_POST/$_COOKIE这样的变量,这个就不起作用了,然而dz的源码里直接使用$_GET/$_POST/$_COOKIE的地方很少,存在漏洞的地方更加少:(

不过还有其他的绕过方法,在register_globals=on下通过提交GLOBALS变量就可以绕过上面的代码了.为了防止这种情况,dz中有如下代码:

if (isset($_REQUEST[‘GLOBALS‘]) OR isset($_FILES[‘GLOBALS‘])) {
	exit(‘Request tainting attempted.‘);
}

这样就没法提交GLOBALS变量了么?

$_REQUEST这个超全局变量的值受php.ini中request_order的影响,在最新的php5.3.x系列中,request_order默认值为GP,也就是说默认配置下$_REQUEST只包含$_GET和$_POST,而不包括$_COOKIE,那么我们就可以通过COOKIE来提交GLOBALS变量了
时间: 2024-08-03 14:02:59

Discuz! 6.x/7.x 全局变量防御绕过漏洞的相关文章

Discuz! 6.x/7.x 全局变量防御绕过导致命令执行

漏洞概述: 由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致Discuz! 6.x/7.x 全局变量防御绕过漏洞. 漏洞分析: include/global.func.php代码里: 1 2 3 4 5 6 7 8 9 10 11 12 13 function daddslashes($string, $force = 0) { !defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC',

ThinkSNS 防御绕过思路

ThinkSNS 防御绕过思路(union select 真正的无限制sql注射) public function bulkDoFollow() {        // 安全过滤    $res = $this->_follow_model->bulkDoFollow($this->mid, t($_POST['fids']));    $this->ajaxReturn($res, $this->_follow_model->getError(), false !==

Python 实现 Discuz论坛附件下载权限绕过漏洞

背景:最近压力有些大,想玩点游戏放松下,去Mac论坛下载,发现需要各种权限,于是蛋疼了. 所以,上网查了discuz! x3.1破解,手动替换,发现出现“链接已过期”.所以写了下面程序. 0.将下列代码复制到你的python IDE中. 1.先进网页,chrome浏览器查看网页元素,替换正则表达式内内容. 2.刷新你要下载的页面,右键复制下载链接 url = ‘你复制的链接’ 3.运行python,你的IDE里面就会打印出真实下载地址. 运行环境:python3.5 操作系统:macpro 20

SQL注入防御绕过——二次编码之干掉反斜杠

SQL注入防御绕过--二次编码 01 背景知识 一.为什么要进行URL编码 通常如果一样东西需要编码,说明这样东西并不适合传输.对于URL来说,编码主要是为了避免引发歧义与混乱.例如,URL参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/?name=abc&pwd=123如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和= 符号进行转义,也就是对其进行编码.对于URL编码的深入研

Web渗透:PHP字符编码绕过漏洞总结

其实这东西国内少数黑客早已知道,只不过没有共享公布而已.有些人是不愿共享,宁愿烂在地里,另外的一些则是用来牟利. 该漏洞最早2006年被国外用来讨论数据库字符集设为GBK时,0xbf27本身不是一个有效的GBK字符,但经过 addslashes() 转换后变为0xbf5c27,前面的0xbf5c是个有 效的GBK字符,所以0xbf5c27会被当作一个字符0xbf5c和一个单引号来处理,结果漏洞就触发了. mysql_real_escape_string() 也存在相同的问题,只不过相比 adds

Android WebView File域同源策略绕过漏洞浅析

0x00 我们首先讲一个webView这个方法的作用: webView.getSettings().setAllowFileAccessFromFileURLs(false); 为了讲解这个方法,我们还是看一个实际的例子.代码地址还是参考https://github.com/jltxgcy/AppVulnerability/tree/master/WebViewFileDemo. 代码如下,和Android WebView远程代码执行漏洞简析一文中的代码主要区别在于这次加载的attack_fil

YS修改用户绑定手机号码功能存在逻辑绕过漏洞,不需要旧手机号码即可绑定新手机号码【高】

YS修改用户绑定手机号码功能存在逻辑绕过漏洞,不需要旧手机号码即可绑定新手机号码[高] 问题描述:          此问题可作为以上横向越权漏洞问题的延伸,假设横向漏洞已修补,用户登录后的随机session id是作为用户身份的唯一标识,此时,用户虽然无法修改其他人的手机绑定号码,却可以修改自己绑定的手机号码,即不需要旧手机号也能重新绑定新的手机号. 测试步骤: 1.  开启burp拦截代理,并启用http请求拦截功能. 2.  假设测试账户当前绑定的手机号码如下图所示: 3.  在"用户注册

Discuz!7.2 faq.php文件SQL注入漏洞分析及利用实战

[antian365.com] simeon 最近网上公开了Discuz!7.2版本faq.php文件SQL注入0day,通过对文件漏洞分析以及实战测试,效果不错,公开利用exp的利用需要对SQL语句以及数据库等相当了解,在某些情况下需要多种技术配合才能最终攻克目标,下面就漏洞代码以及实战利用等进行探讨,对获取管理员密码的利用,uc_key获取webshell,插件导入获取Webshell等进行探讨. 1. faq.php文件SQL注入漏洞代码分析 本次存在漏洞的文件为faq.php,打开该文件

Discuz!X 3.4 前台任意文件删除漏洞复现

Discuz!X 3.4 前台任意文件删除漏洞复现 参考链接: http://www.freebuf.com/vuls/149904.html http://www.freebuf.com/articles/system/149810.html http://mp.weixin.qq.com/s?srcid=0930uM1OtfeAsXwHRrfZBIyo&scene=23&mid=2650942631&sn=12a3c55807768f12fcd1b306fdf775d8&