突破封閉 Web 系統的技巧之旁敲側擊

FLy_鵬程萬里發表於2018-06-04

在網際網路安全服務公司乙方工作的人或者進行SRC眾測等相關滲透測試時,經常碰到客戶只給一個"xxx資訊管理系統"、"xxx平臺"之類的一個Web 登入介面的系統的連結地址,其它全憑自己造化,去找漏洞吧!

我將上面講的"需要認證後才能進入系統進行操作,但是當前沒有認證憑證"的 web 系統統一稱為"封閉的 Web 系統",本文認為閱讀人員有一定的滲透測試經驗,並將就如何突破封閉的 Web 系統,進行探討。分享自己的思路與常用技巧,歡迎同道中人一起交流思路。

注:本文有一定的攻擊性操作,僅為安全從業人員滲透測試思路交流,請在法律條規允許的範圍內進行安全測試。

《突破封閉 Web 系統的技巧》由兩篇文章組成,第一篇是 突破封閉 Web 系統的技巧之正面衝鋒 ,這是第二篇文章"旁敲側擊"。

旁敲側擊

經過我們的一陣自殺式……哦不對,字典式衝鋒,發現我們將自己意淫成管理員企圖從心裡戰勝"封閉系統"的想法失敗了。

進不去就是進不去啊,一個低危洞都沒有,看來是這系統比較安全了。

但是回頭一瞟,隔壁座位上的老王喜笑顏開,3 個高危已經輕鬆提交上去,還有 2 箇中危都不屑一看……

自己心裡想著"我真菜",然後決定徹底放棄。

直到某天,老王感覺虧欠你太多,向你娓娓道出他那天所施展的姿勢……

0x00:掃埠擴範圍

在正面衝鋒失敗後,我們應該暫時放棄"通過合法的憑證進入 Web 系統"這個想法,擴散思維,不再侷限於 Web 系統,多關注作業系統、中介軟體的層面。

埠掃描做為一項常用技術,可用 nmap、masscan、zmap 等工具進行埠探測和服務識別,不再贅述。值得注意的是:不要著急就只掃描 TCP 協議的埠,UDP協議的埠也不要放過。

掃描到一些有趣的埠和服務,就可以盡情的去玩耍了。如果有較多有可能被拿下的服務埠開放,無形中我們直接拿下伺服器的概率會大大增加。當別人還在"衝鋒"時,我們可能早就通過某不知名埠部署的其它 Web 應用系統的中介軟體漏洞進入系統了~

0x01:尋找測試域名

有些廠商在開發其 Web 系統時,可能會先單獨分配個測試域名來測試正在開發的系統,比如 "testapi.land.com"

當系統開發完成後,廠商如願以償的將安全的系統部署在域名 "api.land.com" 上,但是確忘記關閉了 "testapi.land.com"

然後,測試域名上仍然開放著 N 多埠,分別對應著不同版本的 Web 系統,儼然成為了一個天然的靶場。

0x02:微信公眾號與 APP

Web 系統進不去?去看看廠家的微信公眾號吧。

為了迎合客戶和流量,有點規模的企業都會建立自己的微信公眾號,而且安全保護的受重視程度通常遠低於 Web 系統。

Web 系統可能有複雜的圖片驗證碼,而微信公眾號可能為了使用者體驗,並沒有設定任何圖形驗證碼;

Web 系統難以發現的介面可能在瀏覽微信公眾號時的資料包中找到;

同理,如果廠家的封閉 Web 系統是面向多業務員的,那麼很可能存在某一或幾款 APP,存在同樣的登入功能,而且也比 Web 系統要疏於保護。

缺少驗證碼或可能找到一些請求介面和一些有意思的請求引數。除此之外,反編譯 APP 獲得其原始碼,梳理程式碼中所有敏感的請求介面、連線地址、關鍵認證邏輯,可能會有意外收穫。

另外,測試完安卓機上的 APP 後,如果 APP 有 IOS 版本,測下 IOS 版的 APP,說不定有意外收穫。

0x03:尋找蛛絲馬跡

最好詳細的記錄下所有有關 Web 系統的相關資訊。

這些資訊都有可能成為最後突破的方向,如伺服器作業系統型別、使用的框架或元件、使用的容器、使用的 CMS 型別、伺服器版本、開發語言、前端框架等資訊。

這部分的工具實在太多了,挑揀自己順手的用就好,比如 Firefox 外掛 wapplayer、whatweb、雲悉,其它不再贅述。

搞不定的 web 系統,說不定一個 Struts2 RCEWeblogic RCETomcat war 包部署之類的漏洞,連伺服器的許可權都拿到了。

另外,對於資訊量極少的封閉系統,右擊檢視原始碼基本成了必須要做的事,最好把能接觸到網頁,全部右擊檢視一遍網站原始碼。仔細瀏覽一遍,看看有沒有特殊的網頁註釋、特殊連結之類的,也許一條測試後臺的 ip 地址連結、放置在 json 檔案中的明文配置密碼資訊,就能讓你進入未受保護的測試系統。

最後,如果系統條件允許的話,最好用檢測普通 Web 系統的手段對封閉的 Web 系統檢測一遍。比如用主機漏洞掃描器 Nessus、web 漏洞掃描器 AWVSNetsparkerAppscan 等掃描下網站,防止遺漏重要的 Web 漏洞資訊。

0x04:何方 CMS

如果 Web 系統不是作為獨苗被單獨開發的話,那麼很可能是由已知的 CMS 或框架寫成的。知名的 CMS 在 0x03:尋找蛛絲馬跡 步驟就應該已經知道了。如果它是由沒有開放原始碼的商業化的 CMS 改造而成或者不知名的系統建成,我們還有以下幾種方式得到它的名字或者原始碼。

1、觀察頁面的特殊 css 命名規則、js 方法名等資源特徵,用搜尋引擎搜尋;

2、將有特點的頁面比如登入頁面,截圖後利用線上試圖,比對相似的系統,或者發到某群中,問下有經驗的師傅;

3、在搜尋引擎、文庫、Github、百度雲盤和其它程式碼託管、雲端儲存平臺上,搜尋目標的系統型別名,如"企業印鑑管理系統",同類系統不多的話,很容易就可以搜尋出來;如果開發者沒有安全意識,極有可能會把原始碼託管或分享在任何人都可以訪問到的平臺上,只要不遺漏此步驟,說不定就可以拿到原始碼;

4、在頁面底部或者掃描到的 REAMDE 等檔案裡如果有外包公司等名稱或首頁,可以藉此得知是哪個外包公司開發的什麼系統,尋找類似的保護較脆弱的系統,拿到原始碼。

0x05:歷史漏洞搜尋

經過我們上面的工作,我們很可能已經得知系統的名字和版本。這時候,就可以去搜尋引擎、wooyun 漏洞映象站、安全客的漏洞搜尋、cvel 漏洞庫去搜尋下 CMS 的歷史漏洞,或者廠商以前曾暴露出來的漏洞,可能會發現許多有用的資訊!

有可能一個以前暴露出來的員工弱口令稍加變形或者 xxxCMS 無條件 getshell,封閉系統的大門就徹底向我們敞開了。

0x06:大殺四方

從上文所述,我們可以看出:所謂旁敲側擊的精華思想有兩部分:

一、是規避安全措施做的很好的封閉 Web 系統,嘗試從相關的弱點系統和人著手,間接突破封閉的 Web 系統;

二、是通過各種渠道,獲得所使用系統的名字和原始碼,嘗試使用歷史漏洞或者審計原始碼,突破封閉的 Web 系統。

最後,老王也緩緩說出了他快速提交漏洞的祕密:原來在 N 月前,老王在某次滲透測試時,就通過其它網站的 wwwroot.rar 備份檔案。

獲得了和這個 Web 系統一樣的原始碼,審計一波已經得到幾個 0day,0day 才是大殺四方的利器啊!

總結

當嘗試突破封閉的 Web 系統並且正面強攻不奏效的情況下,旁敲側擊往往具有強大的殺傷力。

其中的技巧往往越猥瑣、小眾、另闢蹊徑,效果越出彩,而且技巧也遠遠不止上面提到的一小部分。

比如,針對性極強的郵件、網頁釣魚套出目標管理員的口令和密碼;在所有思路全部中斷時,去 QQ 群搜尋下 Web 系統名或者機構名,編織個巧妙的不敢輕易拒絕的謊言,進去 QQ 群后,很可能系統原始碼、預設密碼、測試帳號就全部都有了。


相關文章