本文是為了揭示那些被忽視的開發安全問題,主要針對基礎設施部署環境基礎解決方案包括(內部、外部、云環境)。
github
版本控制工具:
持續集成工具:
aws config files:
客戶端配置工具:
elasticsearch:
內存數據庫:
版本控制工具:
github支持較為較為強大的搜索語法,通過這些搜索語法,通過github可以搜索到一些常規方法無法搜索的內容,如搜索內部項目、密碼,ssh私鑰等。 Conviso Research and Development Team編寫了個較為詳細的github語法搜索文章,可以通過http://blog.conviso.com.br/2013/06/github-hacking-for-fun-and-sensitive.html 查閱。 如搜索mysqldump 備份的sql文件,可使用extension:mysqldump sql來搜索。

另外還可以通過github來查找代碼安全問題,如輸入規則:extension:php mysql_query $_GET,可以搜索到大量包含mysql_query $_GET的請求,可以有針對性的進行代碼審計。

git 娛樂:
github 是否能讓我們冒充其他用戶呢?讓我們試下成為linus,通過郵件組收集下大神的郵箱信息。

通過github 可以搜索到linus的commit記錄。

結果linus大神的commit記錄出現在了我們的repo源。

該問題后的總結,審計誰可以訪問到你的repos,啟用github雙因素認證。
如果.git文件夾可以被外網,攻擊者可以通過.git下載所有的代碼,當前前提是目錄可被遍歷,如果能遍歷可以簡單的獲取到源代碼。

接著執行。

通過在google中輸入查詢語句,*".git" intitle:"Index of”,可以找到幾條記錄。

通過Google找到了一臺配置錯誤的機器,看我們可以訪問到.git目錄

上邊這些代碼,都可以被我們下載到。如果目錄沒有開放遍歷,可以檢測.git/config

使用dvcs-pillage or dvs-ripper 下載源代碼,dvcs-pillage 也支持HG和GZR文件格式。 .git 泄漏你可以獲取哪些東西呢,包括配置文件,源代碼,開發者姓名、公鑰、郵箱地址等,repo記錄,漏洞漏洞刪除的修復記錄、密碼、私鑰等信息,wordpress配置文件,站點數據庫備份在.git,會話密鑰等。
在svn1.6之前的版本,通過訪問.entries,可以下載到svn里的代碼,比如案例: WooYun: 樂視某分站源碼泄漏
在metasploit里有利用程序,對應的利用模塊是:
auxiliary/scanner/http/svn_scanner。
在svn1.7之后的版本,通過訪問.svn/wc.db,對應的metasploit模塊也是有利用程序的,對應的modules是:
auxiliary/scanner/http/svn_wcdb_scanner。
通過google 搜索關鍵字,powered by gitlist,可以看到可以搜索到的記錄數為: 897,000 條結果。

在gitlist 4.0及之前版本存在遠程代碼執行漏洞,漏洞CVE版本號為CVE-2014-4511,該漏洞利用方式為:””whoami,通過執行該命令可以導致gitlist出現知名錯誤。

在2014年6月29號的時候, 該文章對這個遠程代碼執行漏洞進行了詳細講解并且給出了漏洞利用代碼。
博客地址:http://hatriot.github.io/blog/2014/06/29/gitlist-rce/ 通過該利用程序可以將php木馬寫入到gitlist目錄中,從而獲取權限服務器

利用代碼:

利用方式:

hudson是jenkins的前身,是基于Java開發的一種持續集成工具,用于監控程序重復的工作,Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使持續集成變成可能。
通過Google Hacking方法,講hundon輸入到shodan中進行搜索,可以發現大量使用hundon的服務器如,hundson搜索結果。

jenkins搜索結果。

在Jenkins如果缺少認證,可以訪問/view/ALL/newJob來新建一個build然后執行惡意代碼如下圖:


另外也可以使用metasploit來進行滲透測試。


通過metasploit來進行利用,可以獲取目標服務器權限。

參考:https://www.pentestgeek.com/2014/06/13/hacking-jenkins-servers-with-no-password/ 把邪惡的東西放在/vagrant/.git/hooks/post-commit并等待用戶提交一些代碼,從用戶掛載/vagrant目錄開始,鉤子就一直在運行,即使用戶銷毀了VM。
在kickstart中有3種辦法重置用戶密碼,1、安裝過程中 2、在kickstart文件加密的哈希" rootpw --iscrypted" 3、在kickstart文件明文" rootpw --plaintext"
舉個例子


aws config files:
AWS 命令行界面 (CLI) 是用于管理 AWS 服務的統一工具。只通過一個工具進行下載和配置,您可以使用命令行控制多個 AWS 服務并利用腳本來自動執行這些服務。
aws使用aws商店以明文存儲hiddle申請,這是典型的特權訪問。


客戶端配置工具:
Chef是由Ruby與Erlang寫成的配置管理軟件,它以一種純Ruby的領域專用語言(DSL)保存系統配置“食譜(recipes)”或“做飯書(cookbooks)”。
Chef由Opscode公司開發,并在Apache協議版本2.0下開源發布。Chef可在主從式架構之下運行,亦可在名為“chef-solo”的集成配置之下運行。
通過shodanhq來搜索下“chef server" 可以找到較多運行該服務的服務器。

通過查看chef上可以看到登錄的帳號密碼,即可完成登錄,可以看到較多敏感信息!所以一定要記得修改默認密碼。

knife 是一個chef命令行實用工具,可以加密及存儲數據包憑證,使用方法例如:


chef/knife 加密數據包:


Vagrant:
你知道如何修改你的ssh keys嗎?Vagrant有默認證書,并且sudo不需要密碼,可以使用metasploit來掃描默認key,如圖:



elasticsearch:
elasticSearch是一個基于Lucene構建的開源,分布式,RESTful搜索引擎。設計用于云計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
elasticsearch 本身沒有訪問控制,任何通過http api搜索es中存儲的結果,可以用put請求來update存儲結果。elasticsearch早與1.2.0版本中存在遠程代碼執行漏洞,cve版本號為:CVE-2014-3120
elasticsearch啟動默認端口為9200,可以看到集群版本信息如圖:

使用metasploit溢出存在漏洞的集群,成功獲取權限。

內存數據庫:
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)
redis沒有加密方式,監聽6379 tcp端口,默認redis如果沒有指向監聽內網地址,而對外開放,外網攻擊者可以直接訪問該數據庫。
通過shodan來搜索redis:6379 關鍵字,可以獲取大量redis信息:

隨機找一條,可以正常登錄,redis-cli 可以指向需要連接的redis ip地址。

memcache:
memcache 是一種分布式緩存服務器,和通常使用的非分布式的ecache不同,memcache需要獨立的服務器支撐,客戶端通過配置IP地址和端口號(默認11211)與之連接并使用API進行數據的緩存操作。
memcached未作IP限制導致緩存數據可被攻擊者控制,可被攻擊者控制,通過連接上后可獲取敏感信息,如圖:

通過這些案例,讓我們知道,其實安全問題不止來源于web問題,安全問題更來自于運維安全,運維和運維安全的好弱是衡量一個公司安全的基礎!