看到這個我因為baidu又出現了0day了?利用類似這樣的子網域名稱可以繞過白名單? 通過自己測試發現沒辦法「重現」。於是我想起了以前在hi群討論過的 關於heart牛在baidu彈了1年多的jj的那個問題 :
當時在hi群討論的時候,有人說是「時間遺忘攻擊」,也有人說是「儲存不動」導致的,其實我認為他們這些只是看到的「表象」,沒有看到漏洞產生的「實質」,我們先看看這個應用程式裡,變數與函式的關係,在《高階php應用程式漏洞審核技術》一文的前面有一段這樣的敘述:
[web應用程式漏洞查詢基本上是圍繞兩個元素展開:變數與函式。也就是說一漏洞的利用必須把你提交的惡意**通過變數經過n次變數轉換傳遞,最終傳遞給目標函式執行,還記得ms那句經典的名言嗎?「一切輸入都是有害的」。這句話只強調了變數輸入,很多程式設計師把「輸入」理解為只是gpc[$_get,$_post,$_cookie],但是變數在傳遞過程產生了n多的變化。導致很多過濾只是個「紙老虎」!我們換句話來描敘下**安全:「一切進入函式的變數是有害的」]
過程類似如下:
外部變數--->n次內部變數轉換--->進入函式【實現功能】
在「n次內部變數轉換」的過程 還包括「變數的儲存與提取」:
外部變數--①-->n次內部變數轉換--②-->資料庫[變數的儲存與提取]--②-->n次內部變數轉換--③-->進入函式【實現功能】
我們以baidu為例子來分析下修補的方法:
①就是傳統理解的「一切輸入都是有害的」,也是現在主流的方法。baibu的處理也是這樣的,在輸入段過濾,然後就後面的就不處理了,現在問題裡面牽扯到了乙個「時間」因素,在baidu在①處過濾前,攻擊者的**已經當到了②與③之間的」資料庫」裡了,然後baidu在①處過濾後,資料庫裡的**然後被提取出來進入函式導致漏洞繼續.......
那麼我們應該怎麼理解和防禦這個問題呢?我們的理解應該是前面提到的:「一切進入函式的變數是有害的」,所以我們的防禦:「進入函式前那剎那的防禦才是王道」。
大風在hi群裡談論這個問題的時候提到了乙個補救的方案:
大風懸鈴 16:52:59
輸出防禦+資料庫檢查歷史資料
大風懸鈴 16:53:09
or,輸入防禦+檢查歷史資料
就不談效率的問題上,大風這些方案還是違背了「剎那」規則的。而且「資料庫檢查歷史資料 」這個是有缺陷的,比如資料的儲存還在變數傳遞的過程,表現的方式是很難**的,最起碼的就是編碼了,可能在資料庫裡的資料是urldecode base64等常見編碼,根本就沒有什麼「特徵**」,而且從資料庫裡select出來的變數又要經過n次的轉換和呼叫.這些都是不可以預料的.....
以上都是對於防禦者來談的,那麼對於攻擊者有什麼啟示沒呢?是的那就是「測試用的poc需要預留攻擊介面」比如heart牛如果1年前他預留了乙個『介面』,那麼現在也不是簡單的彈jj了!!!!!
對於這樣的攻擊其實有很多例子,比如我之前的blog文《我在qqmail上放了*個後門》,其實對於「預留攻擊介面」這是一種攻擊思路,不單單用在本文的例子,還有可能誕生很多的精彩故事?
期待你的精彩故事! :)
當你在搜尋框按下enter的一剎那發生了什麼?
現在,讓我們開始向網路通訊的世界邁出第一步。類似 這樣的 被稱為url 統一資源定位符 其中http是協議名稱,www是網路服務標識,baidu.com是網域名稱。要找資源必然要先找有該資源的地方,網域名稱就是這個地方的代號,這個地方被人們稱為伺服器 一種專門用於響應服務請求,並處理的計算機 區分計...
那一年的我們 那一年我們
那一年的我們 那一年我們很有錢 那一年我們好像很有錢 走進宿舍樓的時候會買一包爸爸都捨不得抽的煙 那一年我們好像很有錢 你會在櫃檯前挑半天的化妝品 可媽媽用的最多的 化妝品 卻是年復一年陪伴她的透明皂和洗滌靈 那一年我們好像很有錢 冷天出門就叫計程車 而爸媽上班卻頂著凜冽的寒風騎著自行車 那一年我們...
下雨的那一幕
昨天又下雨了,看著車窗外的水珠,從上往下,乙個乙個的下落。當乙個水珠下落過程中遇到另外乙個水珠的時候,它們結合在一起往下落。兮兮,這一幕看過很多多年了,那麼熟悉,那麼親切,心中莫名的興奮和失落中伴隨著些許憂傷。活了很多年了,有些事情不能夠忘記,還是被水珠結伴下落那一刻感動,它們比獨自下落時快了很多。...