網站滲透測試原理及詳細過程
零、前言
一、簡介
二、制定實施方案
三、具體操作過程
四、生成報告
五、測試過程中的風險及規避
參考資料
FAQ集
滲透測試在未得到被測試方授權之前依據某些地區法律規定是違法行為。 這裡我們提供的所有滲透測試方法均為(假設為)合法的評估服務,也就是通常所說的道德黑客行為(Ethical hacking),因此我們這裡的所有讀者應當都是Ethical Hackers,如果您還不是,那麼我希望您到過這裡後會成為他們中的一員 ;)
這裡,我還想對大家說一些話:滲透測試重在實踐,您需要一顆永不言敗的心和一個有著活躍思維的大腦。不是說您將這一份文件COPY到您網站上或者儲存到本地電腦您就會了,即使您將它打印出來沾點辣椒醬吃了也不行,您一定要根據文件一步一步練習才行。而且測試重在用腦,千萬別拿上一兩個本文中提到的工具一陣亂搞,我敢保證:網際網路的安全不為因為這樣而更安全。祝您好運。。。
- 什麼叫滲透測試?
滲透測試最簡單直接的解釋就是:完全站在攻擊者角度對目標系統進行的安全性測試過程。 - 進行滲透測試的目的?
瞭解當前系統的安全性、瞭解攻擊者可能利用的途徑。它能夠讓管理人員非常直觀的瞭解當前系統所面臨的問題。為什麼說叫直觀呢?就像Mitnick書裡面提到的那樣,安全管理(在這裡我們改一下,改成安全評估工作)需要做到面面俱到才算成功,而一位黑客(滲透測試)只要能通過一點進入系統進行破壞,他就算是很成功的了。 - 滲透測試是否等同於風險評估?
不是,你可以暫時理解成滲透測試屬於風險評估的一部分。事實上,風險評估遠比滲透測試複雜的多,它除滲透測試外還要加上資產識別,風險分析,除此之外,也還包括了人工審查以及後期的優化部分(可選)。 - 已經進行了安全審查,還需要滲透測試嗎?
如果我對您說:嘿,中國的現有太空理論技術通過計算機演算已經能夠證明中國完全有能力實現宇航員太空漫步了,沒必要再發射神8了。您能接受嗎? - 滲透測試是否就是黑盒測試?
否,很多技術人員對這個問題都存在這個錯誤的理解。滲透測試不只是要模擬外部黑客的入侵,同時,防止內部人員的有意識(無意識)攻擊也是很有必要的。這時,安全測試人員可以被告之包括程式碼片段來內的有關於系統的一些資訊。這時,它就滿足灰盒甚至白盒測試。 - 滲透測試涉及哪些內容?
技術層面主要包括網路裝置,主機,資料庫,應用系統。另外可以考慮加入社會工程學(入侵的藝術/THE ART OF INTRUSION)。 - 滲透測試有哪些不足之處?
主要是投入高,風險高。而且必須是專業的Ethical Hackers才能相信輸出的最終結果。 - 你說的那麼好,為什麼滲透測試工作在中國開展的不是很火熱呢?
我只能說:會的,一定會的。滲透測試的關鍵在於沒法證明你的測試結果就是完善的。使用者不知道花了錢證明了系統有問題以後,自己的安全等級到了一個什麼程式。但是很顯然,使用者是相信一個專業且經驗豐富的安全團隊的,這個在中國問題比較嚴重。在我接觸了一些大型的安全公司進行的一些滲透測試過程來看,測試人員的水平是對不住開的那些價格的,而且從測試過程到結果報表上來看也是不負責的。我估計在三年以後,這種情況會有所改觀,到時一方面安全人員的技術力量有很大程度的改觀,另一方面各企業對滲透測試會有一個比較深刻的理解,也會將其做為一種IT審計的方式加入到開發流程中去。滲透測試的專業化、商業化會越來越成熟。
實施方案應當由測試方與客戶之間進行溝通協商。一開始測試方提供一份簡單的問卷調查瞭解客戶對測試的基本接收情況。內容包括但不限於如下:
- 目標系統介紹、重點保護物件及特性。
- 是否允許資料破壞?
- 是否允許阻斷業務正常執行?
- 測試之前是否應當知會相關部門介面人?
- 接入方式?外網和內網?
- 測試是發現問題就算成功,還是儘可能的發現多的問題?
- 滲透過程是否需要考慮社會工程?
- 。。。
在得到客戶反饋後,由測試方書寫實施方案初稿並提交給客戶,由客戶進行稽核。在稽核完成後,客戶應當對測試方進行書面委託授權。這裡,兩部分文件分別應當包含如下內容:
- 實施方案部分:
... - 書面委託授權部分:
...
1、資訊收集過程
- 網路資訊收集:
在這一部還不會直接對被測目標進行掃描,應當先從網路上搜索一些相關資訊,包括Google Hacking, Whois查詢, DNS等資訊(如果考慮進行社會工程學的話,這裡還可以相應從郵件列表/新聞組中獲取目標系統中一些邊緣資訊如內部員工帳號組成,身份識別方式,郵件聯絡地址等)。1.使用whois查詢目標域名的DNS伺服器
2.nslookup
>set type=all
><domain>
>server <ns server>
>set q=all
>ls -d <domain>Google hacking 中常用的一些語法描述
1.搜尋指定站點關鍵字site。你可以搜尋具體的站點如site:www.nosec.org。使用site:nosec.org可以搜尋該域名下的所有子域名的頁面。甚至可以使用site:org.cn來搜尋中國政府部門的網站。
2.搜尋在URL網址中的關鍵字inurl。比如你想搜尋帶引數的站點,你可以嘗試用inurl:asp?id=
3.搜尋在網頁標題中的關鍵字intitle。如果你想搜尋一些登陸後臺,你可以嘗試使用intitle:"admin login" - 目標系統資訊收集:
通過上面一步,我們應當可以簡單的描繪出目標系統的網路結構,如公司網路所在區域,子公司IP地址分佈,VPN接入地址等。這裡特別要注意一些比較偏門的HOST名稱地址,如一些backup開頭或者temp開關的域名很可能就是一臺備份伺服器,其安全性很可能做的不夠。
從獲取的地址列表中進行系統判斷,瞭解其組織架構及作業系統使用情況。最常用的方法的是目標所有IP網段掃描。 - 埠/服務資訊收集:
這一部分已經可以開始直接的掃描操作,涉及的工具包括:nmap,thc-amap1.我最常使用的引數
nmap -sS -p1-10000 -n -P0 -oX filename.xml --open -T5 <ip address> - 應用資訊收集:httprint,SIPSCAN,smap
- 這裡有必要將SNMP拿出來單獨說一下,因為目前許多運營商、大型企業內部網路的維護臺通過SNMP進行資料傳輸,大部分情況是使用了預設口令的,撐死改了private口令。這樣,攻擊者可以通過它收集到很多有效資訊。snmp-gui,HiliSoft MIB Browser,mibsearch,net-snmp都是一些很好的資源。
2、漏洞掃描
這一步主要針對具體系統目標進行。如通過第一步的資訊收集,已經得到了目標系統的IP地址分佈及對應的域名,並且我們已經通過一些分析過濾出少許的幾個攻擊目標,這時,我們就可以針對它們進行有針對性的漏洞掃描。這裡有幾個方面可以進行:
針對系統層面的工具有:ISS, Nessus, SSS, Retina, 天鏡, 極光
針對VOIP方面的工具有:PROTOS c07 sip(在測試中直接用這個工具轟等於找死)以及c07 h225, Sivus, sipsak等。
事實上,每個滲透測試團隊或多或少都會有自己的測試工具包,在漏洞掃描這一塊針對具體應用的工具也比較個性化。
3、漏洞利用
有時候,通過服務/應用掃描後,我們可以跳過漏洞掃描部分,直接到漏洞利用。因為很多情況下我們根據目標服務/應用的版本就可以到一些安全網站上獲取針對該目標系統的漏洞利用程式碼,如milw0rm, securityfocus,packetstormsecurity等網站,上面都對應有搜尋模組。實在沒有,我們也可以嘗試在GOOGLE上搜索“應用名稱 exploit”、“應用名稱 vulnerability”等關鍵字。
當然,大部分情況下你都可以不這麼麻煩,網路中有一些工具可供我們使用,最著名的當屬metasploit了,它是一個開源免費的漏洞利用攻擊平臺。其他的多說無益,您就看它從榜上無名到衝進前五(top 100)這一點來說,也能大概瞭解到它的威力了。除此之外,如果您(您們公司)有足夠的moeny用於購買商用軟體的話,CORE IMPACT是相當值得考慮的,雖然說價格很高,但是它卻是被業界公認在滲透測試方面的泰山北斗,基本上測試全自動。如果您覺得還是接受不了,那麼您可以去購買CANVAS,據說有不少0DAY,不過它跟metasploit一樣,是需要手動進行測試的。最後還有一個需要提及一下的Exploitation_Framework,它相當於一個漏洞利用程式碼管理工具,方便進行不同語言,不同平臺的利用程式碼收集,把它也放在這裡是因為它本身也維護了一個exploit庫,大家參考著也能使用。
在針對資料庫方面的工具有:
資料庫 工具列表 Oracle(1521埠): 目前主要存在以下方面的安全問題:1、TNS監聽程式攻擊(sid資訊洩露,停止服務等)
2、預設賬號(default password list)
3、SQL INJECTION(這個與傳統的意思還不太一樣)
4、緩衝區溢位,現在比較少了。 thc-orakel, tnscmd, oscanner, Getsids, TNSLSNR, lsnrcheck, OAT, Checkpwd, orabf MS Sql Server(1433、1434埠) Mysql(3306埠) DB2(523、50000、50001、50002、50003埠) db2utils Informix(1526、1528埠)
在針對Web伺服器方面的工具有:
WEB伺服器 工具列表 IIS IISPUTSCANNER Tomcat 想起/admin和/manager管理目錄了嗎?另外,目錄列表也是Tomcat伺服器中最常見的問題。比如5.*版本中的http://127.0.0.1/;index.jsphttp://www.example.com/foo/"../manager/html
http://www.example.com:8080/examples/servlets/servlet/CookieExample?cookiename=HAHA&cookievalue=%5C%22FOO%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2F%3B
http://www.example.com:8080/servlets-examples/servlet/CookieExample?cookiename=BLOCKER&cookievalue=%5C%22A%3D%27%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2Fservlets-examples%2Fservlet+%3B JBOSS jboss的漏洞很少,老版本中8083埠有%符號的漏洞:
GET %. HTTP/1.0可以獲取物理路徑資訊,
GET %server.policy HTTP/1.0可以獲取安全策略配置文件。
你也可以直接訪問GET %org/xxx/lib.class來獲取編譯好的java程式,再使用一些反編譯工具還原原始碼。 Apache Resin http://victim/C:%5C/
http://victim/resin-doc/viewfile/?file=index.jsp
http://victim/resin-doc/viewfile/?contextpath=/otherwebapp&servletpath=&file=WEB-INF/web.xml
http://victim/resin-doc/viewfile/?contextpath=/&servletpath=&file=WEB-INF/classes/com/webapp/app/target.class
http://victim/[path]/[device].[extension]
http://victim/%20.."web-inf
http://victim/%20
http://victim/[path]/%20.xtp WebLogic
Web安全測試主要圍繞幾塊進行:
- Information Gathering:也就是一般的資訊洩漏,包括異常情況下的路徑洩漏、檔案歸檔查詢等
- Business logic testing:業務邏輯處理攻擊,很多情況下用於進行業務繞過或者欺騙等等
- Authentication Testing:有無驗證碼、有無次數限制等,總之就是看能不能暴力破解或者說容不容易通過認證,比較直接的就是“預設口令”或者弱口令了
- Session Management Testing:會話管理攻擊在COOKIE攜帶認證資訊時最有效
- Data Validation Testing:資料驗證最好理解了,就是SQL Injection和Cross Site Script等等
目前網上能夠找到許多能夠用於進行Web測試的工具,根據不同的功能分主要有:
- 列舉(Enumeration): DirBuster, http-dir-enum, wget
- 基於代理測試類工具:paros, webscarab, Burp Suite
這一部分值得一提的是,很多滲透測試團隊都有著自己的測試工具甚至是0DAY程式碼,最常見的是SQL注入工具,現網開發的注入工具(如NBSI等)目前都是針對中小企業或者是個人站點/資料庫進行的,針對大型目標系統使用的一些相對比較偏門的資料庫系統(如INFORMIX,DB2)等,基本上還不涉及或者說還不夠深入。這時各滲透測試團隊就開發了滿足自身使用習慣的測試工具。
在針對無線環境的攻擊有:WifiZoo
4、許可權提升
在前面的一些工作中,你或許已經得到了一些控制權限,但是對於進一步攻擊來說卻還是不夠。例如:你可能很容易的能夠獲取Oracle資料庫的訪問許可權,或者是得到了UNIX(AIX,HP-UX,SUNOS)的一個基本賬號許可權,但是當你想進行進一步的滲透測試的時候問題就來了。你發現你沒有足夠的許可權開啟一些密碼儲存檔案、你沒有辦法安裝一個SNIFFER、你甚至沒有許可權執行一些很基本的命令。這時候你自然而然的就會想到許可權提升這個途徑了。
目前一些企業對於補丁管理是存在很大一部分問題的,他們可能壓根就沒有想過對一些伺服器或者應用進行補丁更新,或者是延時更新。這時候就是滲透測試人員的好機會了。經驗之談:有一般許可權的Oracle賬號或者AIX賬號基本上等於root,因為這就是現實生活。
5、密碼破解
有時候,目標系統任何方面的配置都是無懈可擊的,但是並不是說就完全沒辦法進入。最簡單的說,一個缺少密碼完全策略的論證系統就等於你安裝了一個不能關閉的防盜門。很多情況下,一些安全技術研究人員對此不屑一顧,但是無數次的安全事故結果證明,往往破壞力最大的攻擊起源於最小的弱點,例如弱口令、目錄列表、SQL注入繞過論證等等。所以說,對於一些專門的安全技術研究人員來說,這一塊意義不大,但是對於一個ethical hacker來說,這一步驟是有必要而且絕大部分情況下是必須的。;)
>hydra.exe -L users.txt -P passwords.txt -o test.txt -s 2121 ftp
目前網路中有一種資源被利用的很廣泛,那就是rainbow table技術,說白了也就是一個HASH對應表,有一些網站提供了該種服務,對外宣稱儲存空間大於多少G,像rainbowcrack更是對外宣稱其資料量已經大於1.3T。
針對此種方式對外提供線上服務的有:
當然,有些單機破解軟體還是必不可少的:Ophcrack,rainbowcrack(國人開發,贊一個),cain,L0phtCrack(破解Windows密碼),John the Ripper(破解UNIX/LINUX)密碼,當然,還少不了一個FindPass...
在滲透測試過程中,一旦有機會接觸一些OFFICE文件,且被加了密的話,那麼,rixler是您馬上要去的地方,他們提供的OFFICE密碼套件能在瞬間開啟OFFICE文件(2007中我沒有試過,大家有機會測試的話請給我發一份測試結果說明,謝謝)。看來微軟有理由來個補丁什麼的了。對於企業來說,您可以考慮使用鐵卷或者RMS了。
6、日誌清除
It is not necessary actually.
7、進一步滲透
攻入了DMZ區一般情況下我們也不會獲取多少用價值的資訊。為了進一步鞏固戰果,我們需要進行進一步的內網滲透。到這一步就真的算是無所不用其及。最常用且最有效的方式就是Sniff抓包(可以加上ARP欺騙)。當然,最簡單的你可以翻翻已入侵機器上的一些檔案,很可能就包含了你需要的一些連線帳號。比如說你入侵了一臺Web伺服器,那麼絕大部分情況下你可以在頁面的程式碼或者某個配置檔案中找到連線資料庫的帳號。你也可以開啟一些日誌檔案看一看。
除此之外,你可以直接回到第二步漏洞掃描來進行。
四、生成報告報告中應當包含:
- 薄弱點列表清單(按照嚴重等級排序)
- 薄弱點詳細描述(利用方法)
- 解決方法建議
- 參與人員/測試時間/內網/外網
在測試過程中無可避免的可能會發生很多可預見和不可預見的風險,測試方必須提供規避措施以免對系統造成重大的影響。以下一些可供參考:
1. 不執行任何可能引起業務中斷的攻擊(包括資源耗竭型DoS,畸形報文攻擊,資料破壞)。
2. 測試驗證時間放在業務量最小的時間進行。
3. 測試執行前確保相關資料進行備份。
4. 所有測試在執行前和維護人員進行溝通確認。
5. 在測試過程中出現異常情況時立即停止測試並及時恢復系統。
6. 對原始業務系統進行一個完全的映象環境,在映象環境上進行滲透測試。