网络安全从入门到精通(第十章-1)变量覆盖漏洞 (修改版)

本文内容:
			~什么是变量覆盖	
			~函数解析
			~补充
每日一句:
			今天开始,有了代码审计的影子。
			这是成为大佬的必经路,大家尽量都要学会
			CNVD证书和代码审计能力是安全方面找工作制高点

一、什么是变量覆盖

	0,代码审计方式
			黑盒审计:	没有源代码,直接去测试
			白盒审计:	给你源代码,给你去测试
			灰盒审计:	有源代码,先用黑盒测试去,有问题在回头看源代码
			
		从某种角度说,脚本小子与内行渗透人员的主要区别就在于:
			是否可以进行白盒审计或者说是否会向这个方向思考
		
			
	1,定义
			指的是可以用我们的传参值替换程序原有的变量值
			例如:
				<?php
					$a = 1;
					$a = fg;		//在这就完成了覆盖,是不是很简单
					echo a;			//输出“fg”
				?>
				
	2,寻找变量覆盖
			可能会有的场景:		
				~$$使用不当									//常见
				~extract()函数使用不当						//常见
				~parse_str()函数使用不当					//常见
				~import_request_variables()函数使用不当
				~开启了全局变量注册等等

二、函数解析

	1,extract()
		作用:将数组的对应变为变量的对应
				
				//php的数组: 由 key -- value 组成
				
		例子:
				<?php
					$a = "1";
					$my_array = array("a" => "Cat","b" => "Dog");	//定义数组
					
					extract($my_array);			//启用函数
					
					echo "a = $a; b=$b"			//echo "\$a = $a; \$b = $b;";	
				?>
				输出内容:$a = Cat; $b = Dog; 		//这的变量a被成功覆盖

		补充:
				php获得GET与POST传参,都会将其转化为数组形式
		
	2,parse_str()
	作用:将字符串变成变量
	例子:
				<?php
					parse_str("name=sb&&age=60");		//启用函数
					echo $name."<br>";
					echo $age;
				?>

				输出内容:sb和60 
	
	3,符号导致(如$$)
		不仅函数会造成变量覆盖,有些符号的特殊搭配也会造成变量覆盖
		例子:
				<?php
					$a='b';
					$b='c';
					echo $$a;		$$a => $b => c
				?>
			输出结果:c
			像这种并不是开傻,只是开发为了实现某些功能,而这么写的
			比如,这个漏洞就在dede织梦的某个版本中存在。也是为了实现
			将传参变为变量,只是没有进行合适检查过滤
	
	4,一个代码审计小工具
			Seay源代码审计系统,感觉还可以,就是规则稍微有点陈旧,可以自己增加
			建议:不要依赖工具,没好处,对自己的成功不是太有利
	
	5,php一些代码
			exit与die  这样的字眼,一般不能让他触发。让他执行,下边的语句就不执行了
			
			补充一下:php的$_REQUEST
					在低版本中,接收 get与post与cookie的传参
					在高于5.2中,不接受cookie
	
	6,举例危害
			假设原本代码:
						$_a = 'phpinfo();'
						------
						很多别的功能模块
						-----
						eval($a)		//这要输出a的内容展示给用户

			因为本来这都是写死的代码,是没有办法进行改动的,所以是认为安全的。
			但是一个项目(工程)往往都是一个团队一起开发的,所以,
			如果某位开发安全意识不够。他的功能模块出现了:
					extract($_GET),且无检查过滤。
			最终的结果就是这样:
			
						$_a = 'phpinfo();'
						------
						extract($_GET)
						-----
						eval($a)
				
				这样就出现了变量覆盖漏洞。所以很多漏洞并没有多复杂
				没有无缘无故就出现的漏洞,绝大多数漏洞都是传参不可控

三、补充

	1,漏洞分类
			~事件型漏洞		:仅针对某站点
			~通用性漏洞		:一般针对某一套CMS,或者web容易,往往一打一大片
			
			~白盒审计	: 拥有源代码找漏洞 = 代码审计
			~黑盒测试	: 入侵 [黑盒测试他是有局限性的]
			
			补,白盒审计可以更好更彻底的找出漏洞
				一般挖掘SRC,想拿通用性,推荐CMS白盒审计
			
	2,CMS的通杀用处
			~可以获得CNVD原创漏洞证书
			~CMS可以说是关注资产,你可以直接换钱
			~CMS通杀可以帮你找到N个漏洞


	3,CNVD证书的一些建议
			~有没有CNVD证书是一类区分
			~但是30个CNVD证书与100个是基本没有区别的
			
			即有没有很重要,多少相对不是太重要
			
	4,出现危险函数造成漏洞的条件
			~危险函数的传参可控
			~危害函数执行需要的条件被满足
			~危险函数上边代码中的  die与exit不能执行
原创文章 61 获赞 13 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43970718/article/details/104388905