作者:
boooooom
·
2015/08/11 10:19
0x01 背景
為什麼是以進入內網作為一個目標來討論,因為我認為站在攻擊者的角度來說攻擊的核心目標是獲取資料。而相對來說幾乎攻擊者想要的所有資料都在內網,而相對來說本身內網的安全防禦能力就幾乎為0。所以從外部尋找一個突破口進入內網是整個獲得資料的過程中最關鍵的一個環節。
那麼基於這樣一個話題本來我想去講的是到底有哪些從外圍進入內網的手段,我初步的梳理了一下,我把它們分為兩大類:合法入口和非法入口。而合法入口其實就是本身企業在給員工開放的一個從外部到企業內部的通道,這裡面主要包括vpn、mail、wifi;在vpn和mail這兩個入口來看我們看到的大部分攻擊方法主要是利用使用者名稱( http://zone.wooyun.org/content/18372) 及密碼的大資料來進行攻擊的。而wifi這一塊,我想想wifi萬能鑰匙這個就是個典型入口了( WooYun: 看我如何用wifi萬能鑰匙物理擼穿京東漫遊內網 ); 而非法入口其實利用一些部署在邊界上的應用或者主機及服務相關的漏洞;這裡面就包含著各種常見的漏洞了,我就先不在這裡細說。
而我這篇文章裡也不太想把上面所描述的所有的內容全部來細說一遍,篇幅有限不可能每個點都講的特別相信,而且很多東西我相信之前很多人都講了很多,可能我也不能講的比他們更好,於是我更想講一些大家可能沒有講或者講的比較少的東西。那麼回到主題是針對大型網際網路公司來說,那麼我認為與這樣的高手過招重要的在取其命門。所以終極問題來了,大公司的命門在哪?帶著這個終極問題我們來往下分析。
0x02 成也邊界,敗也邊界
而大公司這個命門在哪?我們知道既然要從外圍進入內網,那麼必然要做的一件事情就是跨越邊界,所有這個命門我們也就自然應該在企業的內外網邊界上來尋找。
那為什麼企業需要在內外網之間部署這樣一個邊界呢?我們只要作為一個大企業來說他會有上百甚至上千個業務線,而安全團隊或許只有幾十人,那這幾十人要保證這上千個業務線的安全,顯然如果用布點的方式肯定無法完成覆蓋的,所以企業在思考如何進行防禦的時候會選擇區域性防守。
所謂區域性防守就是把重點需要保護的業務&資料放到一個指定的區域,,讓後對這個區域進行隔離,並指定好進入這個區域的防火牆策略。然後定期對這個區域進行安全檢查。
如果這樣實施的很好,看起來一切都很完美。但是事實上並不盡人意,事實是這樣的,在企業內部通常業務部門是會比安全部門強勢的,這一點我相信大家都知道,那麼就會導致一個問題,安全部門總想著把業務圈起來,各種嚴格的策略和規範實施上去,而業務部門在業務快速迭代的背景下就會很難去嚴格執行你的策略。他們會要求你針對他特殊的業務場景來制定專門的策略,甚至部署到飛隔離區域,而且這樣的情況不在少數。如此一來安全部門需要維護的策略和規範就會越來越多。而這將直接導致策略及規範的執行越來越差。既然如此,我們都瞭解了企業防守上存在的一些問題,那麼如何去實施攻擊測試呢?
上面我們說到兩個很重要的環節,一個是制定規範並執行,一個是對規範的執行結果進行合規性檢查(安全檢測)。那麼這兩個環節可能會出現什麼樣的問題呢?一個是內網業務對外,直接脫離邊界控制;一個是合規性檢測的盲區,弱點掃描。
0x03 攻擊思路之內網業務直接對外
我們先來看一張圖:
從圖中我們可以看到當我對一個公網ip的80埠發起http請求時,他會返回一段js程式碼,這段js執行以後會直接跳轉到http://passport.oa.com/passport/... 這樣一個地址,但是我卻發現passport.oa.com這樣一個地址實際上是無法訪問的,因為他指向了一個內網IP。那這樣看起來就是一個很奇怪的問題了。為什麼訪問一個公網IP卻要跳轉到一個內網的地址,我們在仔細看這個域名的是passport.oa.com;從命名來看似乎是說oa(辦公網)的統一登陸認證地址?這意味著什麼呢?我們大膽的猜想一下,是不是因為這個公網ip對應的伺服器實際上是部署著一個內部的業務,這樣解釋起來貌似比較靠譜啊?為了驗證我的想法,我對該公司的所有C段開放http服務的IP進行了批次的探測,發現了一些同樣有意思的東西:
這個返回同樣是一段js判斷,很直接的邏輯,如果你訪問的host是指向內網(.oa.com)那麼他會跳轉到一個內部的服務地址,如果你訪問的host的是指向外網(.qq.com);那麼他會跳轉到一個外部的服務地址。那麼我接下來很簡單,只需要對這個ip進行繫結host來測試即可:
從返回內容來看確實是一個內網業務。
我們再來深入的分析一下為什麼會出現這樣一些問題,我認為大概是有如下幾種原因:
- 上線流程的問題,就是這些本來應該部署在內網的應用是如何部署到一個具有外網訪問許可權的機器上的,這在上線前的安全檢查是有問題的。
- 機器網路許可權的管理的問題,也許這個機器申請了一個短期的外網許可權,但是到期了並未下線,導致其他人在使用這個伺服器的時候都也許不知道這個機器具備外網許可權。
0x04 內網業務對外的漏洞挖掘
首先需要獲取攻擊目標企業的資產資訊,即Ip及域名資訊;然後透過獲取到的外網域名及IP資訊獲取banner資訊。然後透過判斷返回banner資訊的特徵來判斷該IP/域名是否存在內網業務對外的問題,具體的一些特徵資訊主要有如下幾點:
返回的headers裡面的特徵,比如Location欄位內容直接跳轉到內網ip及域名。
返回的body裡面的特徵:body裡面包含內網ip或者域名;或者一些關鍵字,比如title裡帶內部xxx系統等等
除此之外甚至可以考慮對一些內部的常用域名強行繫結公網ip進行列舉。然後還是透過回去回包的特徵來判斷。
相關案例:
WooYun: 騰訊某內部業務對外存在多個sql注入(少量qq賬號密碼洩露base64的)
WooYun: 從一個phpinfo到一次半途而廢的騰訊內網漫遊之旅
0x05 攻擊思路之弱點掃描
弱點掃描是一個典型的企業合規性檢測的盲區,即備份檔案、測試程式碼檔案的檢測。這個完全依賴於字典的暴力列舉來進行檢測。通常一些開發的測試檔案,運維的備份檔案spider是無法抓取到的,只能靠字典來暴力列舉,那麼在進行黑盒的安全檢測的時候就會出現兩個問題:
- 暴力列舉的字典有限,倒不是說企業寫不出很長的字典,而是說企業在進行掃描的時候需要週期性的掃描幾千上萬個域名、ip;那麼如果字典檔案太大的話必然導致掃描週期很長,佔用過多資源。
- 一些測試檔案沒有明顯的漏洞特徵,需要輔助人工判斷,大企業目標太多不可能過多的人工參與,從而導致漏報。
那麼基於以上兩個硬傷,攻擊者可以先對目標企業的域名及ip進行一輪字典的列舉,字典可以儘量大,因為攻擊者其實不需要太多的考慮掃描時間,可以慢慢跑,然後對掃描結果的判斷時可以寫一些寬鬆的策略,比如只要判斷某個檔案是否存在,且返回內容就幾個位元組,或者存在一些敏感的關鍵字,比如內部系統、測試的陣列結構等等就先記下來,然後輔助一些人工的判斷。當然在人工判斷的時候也是有技巧的,比如你可以一次在一個頁面iframe 50個潛在目標來進行肉眼+經驗的識別。
下面給一些案例,就是透過這種方式發現的:
http://wooyun.org/bugs/wooyun-2015-092833
http://wooyun.org/bugs/wooyun-2015-0122949
0x06 寫在最後
對於一個大型網際網路公司來說,其實並不是因為他們安全做的不夠好,而是守需要考慮的是一個面,而攻只需要一個點,對一個點進行深入的挖掘,一定可以找到突破口,而本身企業的安全建設其實也是一直在提高攻擊門檻,並不是無懈可擊。
而不管是對於攻擊者還是防守者來說,本身對於安全問題的發現能力是決定著這場持久的攻防戰中最核心的決定因素,正是如此,大家可以對tangscan有一些期待,希望聯合所有白帽子的力量,tangscan能夠擁有最強的安全問題的發現能力。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!