鄭昀 創建於2015/4/10 最后更新於2015/4/28
關鍵詞:
Web安全、系統安全、社工、社會工程學、弱密碼、github、svn
本文檔適用人員:廣義的技術人員
提綱:
- 堡壘是從內部攻破的
- 員工無知者無畏
- 運維配置暴露細節
- 后台不設防
- 常犯常新,屢戰屢敗
- 處處留心皆學問
0x00. 背景:
技術團隊
第一忙於業務邏輯,第二大量新人涌入,會把過去大家在安全上栽的跟頭重新趟一遍,因此該做的培訓咱還得做,該說的經驗教訓還得說,一次不行就兩次,兩次不行三次,重復再重復。
0x01. 堡壘是從內部攻破的:
一次成功的入侵滲透,並不需要是什么高危漏洞,幾個普普通通的中等漏洞,搭配一次社會工程學行動,就可以搞定。
一個公司成千上萬人,往少里說也有 80% 的人安全意識淡薄,有耐心的攻擊者會盯好幾年,窮盡各種招數,沒有攻不進去的堡壘。
員工無知者無畏
大多數員工都圖省事兒,公司郵箱以及其他內部 IT 系統都用簡單密碼甚至空密碼,好些個知名 IT 系統也不對此做任何限制(甚至是專業企業級軟件制造商出品的IT系統)。
案例一,烏雲漏洞報告:重置某東任意內部郵箱用戶密碼
漏洞提交時間:
2013-10-26
原理:
公司做得越來越大的時候,總會出現那么幾個安全意識薄弱的人員(俗稱豬一樣的隊友),他們往往會做出一些讓人無法理解的事情,比如:他會毫不猶豫地雙擊運行郵件內的 EXE 附件,或者使用跟用戶名一樣的密碼,或者用戶名+當前年份的密碼。
實施步驟:
1)通過社會工程學神器
theharvester 工具,和 baidu/google 搜索引擎,收集所有關於某東員工的信息;
2)找到了可用的登錄接口驗證口令 ,https://mail.....com/owa/auth/logon.aspx,某東的郵件服務使用了微軟的 Exchange 服務,並無驗證碼限制,可以直接 Fuzz;
注:
Fuzz 指的是用隨機壞數據攻擊一個程序,然后等着觀察哪里遭到了破壞。
3)成功 Fuzz 出某個用戶的密碼,再結合 Exchange 的通訊錄功能,導出所有用戶名列表;
4)是的,現階段,你已經擁有了所有某東員工的聯系信息列表 。
重復使用 Fuzz 規則,測試后回顯找到了 2865 名員工的密碼,均為弱口令。
更有甚者,互聯網開發人員還會主動暴露自家機密。每家知名公司都有這么幾個沒心沒肺的人,在開源社區泄露源碼或敏感信息:
……幾乎每個大公司都報過這個漏洞。
開源社區暴露了郵箱用戶名密碼之后,又會怎么樣?后果很可怕。
案例二,烏雲漏洞報告:一次成功地漫游某東內部網絡的過程
漏洞提交時間:
2014-04-03
后果:
1)郵箱里找到了 VPN 登錄方式:

圖1 某東VPN郵件截圖
2)撥 VPN 登 3389 進入堡壘機:

圖2 某東堡壘機登錄截圖
3)進入堡壘機,看瀏覽器歷史記錄,找到了各種高大上的管理系統:

圖3 某東內部各種應用入口
4)還找到了執行 SQL 刷庫的地方%#&……

圖4 某東執行SQL的內部界面
總結一下:
以 github 為首的版本控制信息泄漏:
由於 github 支持強大的搜索語法,可以很方便地搜索到一些常規搜索引擎無法搜索到的內容,如搜索內部項目、密碼、密鑰等。
還可以通過 github 來查找代碼安全問題,如輸入規則:extension:php mysql_query $_GET,可以搜索到大量包含 mysql_query $_GET 的請求,可以有針對性地進行代碼審計。
當你把自己的項目代碼上傳到 github 時,看看配置文件里是不是有不能說的秘密,思量一下后果。
運維配置暴露細節
生產環境配置不當,加上開源系統層出不窮的漏洞,敏感信息輕輕松松泄露,經常坑爹的服務有 Resin-doc、SVN、git……
案例三,烏雲漏洞報告:某公司源碼泄露導致配置信息泄漏
漏洞提交時間:
2011年
原理:
Caucho Resin 是一款 Web 應用服務器,它自帶一個 resin-doc app,這個破玩意兒在 Resin 3.0 上有一個漏洞,可以被當成一個后門。
Resin 的某個 CGI 程序實現上存在輸入驗證漏洞,遠程攻擊者可能利用此漏洞讀取 Web 主目錄下的任意文件,包括 JSP 源碼或類文件。如果系統中安裝了 resin-doc 就可能讀取 Web 主目錄中的所有文件,包括類文件,然后可以反編譯這些文件瀏覽 Java 源代碼。
實施步驟:
2011年時,你可以訪問這樣的路徑:
http://www.....com
/resin-doc/viewfile/
?file=index.jsp。
攻擊者可以設置 resin-doc 外的上下文路徑,讀取其他 Web 目錄的任意文件:
http://localhost/resin-doc/viewfile/?contextpath=/otherwebapp&servletpath=&file=WEB-INF/web.xml。
如果運維不強制規范上線部署 Resin 時一律刪除 resin-doc app,那么類似的悲劇還會繼續發生,如:
因為你有可能部署一個低版本 Resin。
SVN 的隱藏目錄問題,各家也遇到過。
案例四,烏雲漏洞報告:某財經網某處SVN泄露
漏洞提交時間:
2014-11-19
原理:
發布流程不規范的情況下,代碼上線時,Java/PHP等都特別容易帶入 SVN 隱藏目錄。
在 svn 1.6 以下版本,通過訪問 .entries,可以下載到 svn 里的代碼。在 svn 1.7 之后的版本,通過訪問 .svn/wc.db,對應的 metasploit 模塊也是有利用程序的。
實施步驟:
http://service.....com.cn/
.svn/entries
就是這么簡單。
這名白帽子還總結了兩點危害:
1.泄露 svn 地址和用戶信息,通過爆破可控制 svn 權限;
2.可以獲取截止到上一次 svn 操作的網站源碼。
git
在 google 里搜索關鍵詞 *".git" intitle:"Index of",還可以進一步找到 git 暴露在外的站點。
phpinfo
生產環境里,phpinfo 也隨便放,視搜索引擎為無物?
后台不設防
Elastic Search 官方的控制台本身沒有訪問控制,一般來說大家都會僅限內網訪問,但咱家在這上面也吃過虧。
案例五,烏雲漏洞報告:某站ElasticSearch遠程命令執行
漏洞提交時間:
2015-03-05
原理:
es 控制台內網域名本來是有防火牆策略的,但某天調整策略時子網掩碼誤操作寫錯了,導致外網可以訪問到 es 控制台。
剛好 ES 自己爆了一個高危安全漏洞(CVE-2015-1427),該漏洞可導致遠程代碼執行,危害極大。倆事兒撞一塊了。

圖5 es漏洞利用截圖
幸好是白帽子找出來的。
0x02. 小結:
不一定非要出高危漏洞,白帽子就可以用社工+中等漏洞攻進來,開發、測試、運維,都要認真,前面這些環節不認真,就得等漏洞爆出來后再認真了。
參考文獻:
1,百度QA,
將Fuzz進行到底;
2,2014,烏雲知識庫,
fuzzing XSS filter;
3,2014,烏雲知識庫,
被忽視的開發安全問題;
4,2006,
模糊測試;
-EOF-