網絡安全從入門到精通(第十章-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不能執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章