网络安全零基础入门(第十章-1)变量覆盖漏洞

  • 每日一句:若想成为大佬,必须具有一定的代码审计能力
         从今天开始,正式走上代码审计的道路
  • 本篇内容:什么是变量覆盖
         函数解析
         补充

一、什么是变量覆盖

1.代码审计方式
    黑盒审计: 没有源代码,直接去测试
    白盒审计: 给你源代码,去测试
    灰盒审计: 有源代码,先用黑盒测去试,有问题再回头看源代码
    
    从某种角度说,脚本小子与内行渗透人员的主要区别就在于:
    是否可以进行白盒审计或者说是否会向这个方向思考
    
2.定义
    指的是可以用我们的传参值替换程序原有的变量值
    例如:

		  <?php
		    $a = 1;
			  $a = fg;	   //在这就完成了覆盖,是不是很简单
			  echo a;      //输出“fg”
		  ?>

3.寻找变量覆盖
    可能会有的场景:
      ~$$使用不当   //常见
      
      ~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=zhangsan&&age=60");	//启用函数
				echo $name."<br>";
				echo $age;
			 ?>
			  输出内容:zhangsan和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();'
        -------
        很多别的功能模块
         -------
      //这要输出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不能执行

四、总结

  • 若想成为大佬,代码审计能力一定要牢固
  • CNVD和代码审计能力很重要
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值