網絡安全進階篇(十一章-1) 0day審計思路(上)

本文內容:
	~代碼審計得思路
	~實戰文章分析
	~總結
	
每日一句:
	當排除了所有的可能,剩下的無論是多不可能也是真相。

自新手篇後,好久沒有更新。最近很忙,一直沒有時間來寫寫文章。
但是大家放心,一有時間的話,即更新進階篇或者其他的文章。
不多說,開始正題

一、代碼審計得思路

1,滲透測試的核心
		滲透測試的核心 ---> 找漏洞 ---> 找有危害的bug ---> 
	
2,爲什麼存在bug?
		~開發人員技術不過關 
		~不同功能(版本)之間的銜接問題
		~公司有人得罪了開發
	
3,安全不能孤立
		用戶的體驗性與安全性是成反比的
		不能因爲體驗性放棄安全,也不可能因爲安全性放棄體驗性
		這就需要尋找最合適的平衡點
	
	所有有一點是確定的,那就是因爲體驗性的存在,安全問題也一定存在

4,代碼審計的核心
		~核心在於通過源代碼,知道代碼如何運行,然後根據代碼執行中可能產生
			的問題來尋找漏洞
		
		~代碼審計一半泛指白盒審計,但是要記住,通用型漏洞,例如CMS通殺漏洞
			其實也可以通過本地搭建後,純黑盒測試也能找到。只不過是白盒測試
			更爲全面,也更容易找到漏洞

5,代碼審計思路
		~全文通讀
			一般從index.html文件切入,因爲這是系統的入口
			
			需要有一定的代碼能力,但是強烈建議有時間一定要全文審計
			一個老版本的CMS,只有這樣才能瞭解開發是怎麼寫一個網站的,
			正所謂,知己知彼,方能百戰不殆
			
			~代碼能力怎麼樣時,纔可以審計呢?
				沒有統一的說法,隨時都可以。
				能力好,審計的快點,效率高一些
				能力差,審計的慢點,效率低一些,
				且審計代碼的過程也是學習的過程(看不懂的函數就百度)
				
				多提一句,第一個審計的cms時間可能會很長,1個月都正常
				但是之後的就輕鬆多了
				
				建議代碼能力強點在去審計,不然很容易“從入門到放棄”
		
		~敏感函數定位
			掌握住可以存在危險函數的地方  反推
			
			比如我們之前的文章:文件包含、變量覆蓋都提到很多危險函數,
				如include,這時直接去找這個函數。再看看有哪些地方的這個函數
				是我們可以控制的。然後想辦法使程序運行到我們可以控制的地方
			
6,個人建議
		本着一個關鍵點出發,黑盒與白盒並不是從對立的	(即灰盒測試)
			對新人來說,你去黑盒審計一個地方是否存在sql注入,可能很難測試出,
				若是黑盒測試這就結束了 但是,這時候我們可以去審計源碼
			去找你注入點的代碼,也許能明白爲什麼sql注入沒注入出,
			是被轉義了,還是沒有閉合呢,還是有其他的問題呢
			然後見招拆招,或者根據CMS特別的參數就可以完成sql注入了

7,滲透測試的步驟(思路)
		~正常來說先是信息收集 ---> 擴大攻擊面積 ---> 攻擊
		
		~但是有源碼了,還收集什麼信息,直接幹。具體:
			找網站功能點(看看什麼函數控制,什麼傳參控制)
			
		然後黑盒測試:
			試試SQL注入、xss、csrf、xxe、ssrf、文件上傳
			
			深入測試一些邏輯漏洞:驗證碼找回、密碼找回、支付漏洞、越權等等
		
		白盒有:
			變量覆蓋、文件包含、反序列化
			
			進一步思考爲什麼黑盒沒有測試成功?
				是過濾? 		--->  過濾規則  --->  能否繞過
				是傳參不對?	--->  傳參經過了什麼處理  -->  能否繞過

二、實戰文章分析

0,以一個CMS爲例

1,劃分功能模塊(比如:)
	~安裝
			~重複安裝(覆蓋原數據庫內容);可以進入後臺Getshell
					很多網站提倡,站庫分離,即網站與數據庫不在同一臺機器
					重複安裝時,可以將數據庫外連到我們公開的數據庫。
					自定義管理員賬戶密碼後,直接登陸後臺
					//需要一個公網服務器
			~雙引號解析,直接寫shell
					注意,雙引號解析只會發生在php5.5以上的版本
	~前臺
			~用戶註冊
					可能存在的危害
						~sql注入
						~存儲型xss
						~邏輯錯誤可爆破用戶名
					
					標準的註冊處理頁面功能:
						~接受傳參
						~過濾傳參
						~插入數據庫
						
					如何審計?
						正常註冊,提交,抓包,
						~看看請求包內容。(主要是我們填寫的信息那)
						~看看提交給誰處理(找處理頁面)
						~看看有沒有標識符(一般和我們填寫信息在一起)
								一個php文件可能有幾個功能塊,標識符的作用就是調用哪個功能
								
								然後去標識符功能那看看,功能的代碼(作用)
								
								假設功能是,接受傳參,插入數據庫
								//沒有過濾參數或者可以繞過過濾
								
								測試,值得一提的是。流程:
									~先正常註冊看看行不行
									~在註冊含有惡意代碼的語句
									
									如果正常都註冊不成功,可以試試改變php版本
						
						~擴大攻擊威力
							比如註冊的地方存在xss,你登錄後僅僅彈你自己是沒什麼大危害的。
							一般的管理員都可以訪問用戶列表,你可以登錄管理員
							訪問用戶列表,假如直接彈框。即你這個危害可以從前臺打到後臺
							恭喜你可以去審計得到一個CNVD證書,一個存儲型xss一般中危跑不了
						
						~擴大攻擊面積
							當打出xss的時候,思考會不會也可以打出sql注入
							
							填寫註冊信息的時候,加上'")#這四個符號試試閉合
							
							發現註冊成功,沒有危害,黑盒測試到這就終止了
							
							但是白盒可以,去看看源代碼怎麼過濾的或用seay審計
							
							找到具體的防護手段,可以思考如何繞過
							
							例如碰到魔術引號,用寬字節,注意bp不能插入漢字
							且%df是經過url編碼的,post傳參的話也是不行
							
							綜上,可以寫a',去將a對應hex(16進制)61改爲df
							
							發送修改的數據包,網站報錯,即存在注入
							
							繼續打危害:
							
							可以用updatexml()並補充對應格式,最後加註釋打出報錯注入
							
							對應格式可以通過seay抓到
							
							若一直執行失敗,可以先將語句直接丟到數據庫執行,若沒問題,則說明cms有所防護(關閉了錯誤回顯)
							
							此刻兩個路:盲注(每次驗證碼會變)、有經驗去尋找關閉回顯怎麼來的
							
							兩條路都不易,所以新姿勢:能否一次插入多條數據?
							
							insert into 表名(id,name,pw,email) values (15,'admin123',md5('admin123'),[email protected]'),
							//注意這個a的hex改爲gf
							
							//從這開始,開始插入的語句,要避免引號出現
							(100,0x自己name的16進制,md5(123456),(select databaase()))#
							
							將這兩句話插入後,我們登錄剛剛註冊的用戶,看看郵箱處,是不是數據庫的名稱
							
							若是,直接構建一個獲取管理員賬戶密碼的語句
							
							ok,到這又一個漏洞搞定
					
						~擴大攻擊面積之邏輯錯誤爆破用戶名 
							在注入時,經常會提示,你的用戶名已經被使用的情況
							
							可以註冊,抓取註冊語句,通過返回狀態碼批量爆破用戶名
							
			~用戶登錄
					可能存在的危害	
						~寬字節注入 - 萬能密碼
						~cookie未加密
						
					如何審計?
						登錄處,結合bp和seay看看能否繞
						
						注意要用一個真存在的用戶名去測試,很多cms會檢測你的
						用戶名不存在的話,連密碼都不校驗了
						
						一般or 1=1#的語句放到密碼處,用戶名使用存在的
						
			修改資料
					~存儲型xss
					~sql注入
					~文件上傳
	~後臺

2,防禦機制
		內網比外網弱
		後臺比前臺弱
			拿下後臺後可以進行,
			後臺寫文件,或者getshell的方法。拿下目標服務器
			但是代價很大,授權不到位就會進去

三、總結

1,如何提高自己的代碼審計能力
		~看文章,關於代碼審計漏洞的文章且復現
		~看CNVD,看CNVD公式xxxCMS存在xxx漏洞,然後復現
		~自己去進行挖掘,可以先灰盒 在定位危險函數 再復現

2,一些注意的點
		~有些時候的過濾檢測是前端的,可以正常輸入信息,抓包,修改
		
		~一個地方有xss,基本也會有其他的一些漏洞如sql注入
		
		~搭建的cms出現一些問題的時候,記得去百度或者谷歌一下
			也許一個小小的改動就可以正常使用
			
		~白盒審計可以藉助工具,如Seay(監控數據庫的功能很常用)
		
		~抓包修改後提示驗證碼錯誤,可以右擊驗證碼,複製鏈接,網頁打開,
			用這個新的驗證碼將包內驗證碼一併替換
			
		~在bp中a'改hex,一定要放到最後做,不然會發生一些莫名其妙的問題
		
		~記得復原環境,親自測試一遍
			blueCms號稱最適合新手的cms,大家可以去找找,搭建一下練練手
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章