㈠ 如何進行Web滲透測試
什麼是滲透測試?
滲透測試,是滲透測試工程師完全模擬黑客可能使用的攻擊技術和漏洞發現技術,對目標網路、主機、應用的安全作深入的探測,發現系統最脆弱的環節。
如何進行Web滲透測試?
完整web滲透測試框架當需要測試的web應用數以千計,就有必要建立一套完整的安全測試框架,流程的最高目標是要保證交付給客戶的安全測試服務質量。
1、立項:項目建立,時間安排,人力分配,目標制定,廠商介面人確定;
系統分析&威脅分析:針對具體的web應用,分析系統架構、使用的組件、對外提供的介面等,以STRIDE為威脅模型進行對應的安全威脅分析,輸出安全威脅分析表,重點關注top3威脅;
制定測試用例:根據威脅分析的結果制定對應的測試用例,測試用例按照模板輸出,具備可執行性;
測試執行&漏洞挖掘:測試用例執行&發散測試,挖掘對應的安全問題or漏洞;
問題修復&回歸測試:指導客戶應用開發方修復安全問題or漏洞,並進行回歸測試,確保安全問題or漏洞得到修復,並且沒有引入新的安全問題;
項目總結評審:項目過程總結,輸出文檔評審,相關文檔歸檔。
2、Web應用的滲透測試流程
主要分為3個階段,分別是:信息收集→漏洞發現→漏洞利用,下面仔細分析一下各個階段流程:
一、信息收集
在信息收集階段,我們需要盡量多的收集關於目標web應用的各種信息,比如:腳本語言的類型、伺服器的類型、目錄的結構、使用的開源軟體、資料庫類型、所有鏈接頁面,用到的框架等
腳本語言的類型:常見的腳本語言的類型包括:php、asp、aspx、jsp等
測試方法:
1 爬取網站所有鏈接,查看後綴
2 直接訪問一個不存在頁面後面加不同的後綴測試
3 查看robots.txt,查看後綴
伺服器的類型:常見的web伺服器包括:apache、tomcat、IIS、ngnix等
測試方法:
1 查看header,判斷伺服器類型
2 根據報錯信息判斷
3 根據默認頁面判斷
目錄的結構:了解更多的目錄,可能發現更多的弱點,如:目錄瀏覽、代碼泄漏等。
測試方法
1 使用字典枚舉目錄
2 使用爬蟲爬取整個網站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
使用的開源軟體:我們如果知道了目標使用的開源軟體,我們可以查找相關的軟體的漏洞直接對網站進行測試。
測試方法
指紋識別(網路上有很多開源的指紋識別工具)
資料庫類型:對於不同的資料庫有不同的測試方法。
測試方法
1 使應用程序報錯,查看報錯信息
2 掃描伺服器的資料庫埠(沒做NAT且防火牆不過濾時有效)
所有鏈接頁面:這個跟前面的獲取目錄結構類似,但是這個不只是獲取網站的所有功能頁面,有時候還可以獲取到管理員備份的源碼。
測試方法
1 使用字典枚舉頁面
2 使用爬蟲爬取整個網站,或者使用google等搜索引擎獲取
3 查看robots.txt是否泄漏
用到的框架:很多網站都利用開源的框架來快速開發網站,所以收集網站的框架信息也是非常關鍵的。
測試方法
指紋識別(網路上有很多開源的指紋識別工具)
二、漏洞發現
在這個階段我們在做測試的時候要對症下葯,不能盲目的去掃描,首先要確定目標應用是否使用的是公開的開源軟體,開源框架等、然後在做深一度的漏洞掃描。
關於開源軟體的漏洞發現
開源的軟體:常見的開源軟體有wordpress、phpbb、dedecms等
開源的框架:常見的開源框架有Struts2、 Spring MVC、ThinkPHP等
中間件伺服器:常見的中間件伺服器有jboss、tomcat、Weblogic等
資料庫服務:常見的資料庫服務mssql、mysql、oracle、redis、sybase、MongoDB、DB2等
對於開源軟體的測試方法
1 通過指紋識別軟體判斷開源軟體的版本信息,針對不同的版本信息去開放的漏洞資料庫查找相應版本的漏洞進行測試
2 對於默認的後台登錄頁、資料庫服務埠認證等入口可以進行簡單的暴力破解、默認口令嘗試等操作
3 使用開源的漏洞發現工具對其進行漏洞掃描,如:WPScan
關於自主開發的應用
手動測試:這個階段,我們需要手工測試所有與用戶交互的功能,比如:留言、登入、下單、退出、退貨、付款等操作
軟體掃描:使用免費的軟體掃描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp關鍵點
代碼安全之上傳文件
代碼安全之文件包含
代碼安全之SSRF
邏輯漏洞之密碼重置
邏輯漏洞之支付漏洞
邏輯漏洞之越權訪問
平台安全之中間件安全
三、漏洞利用
針對不同的弱點有不同的漏洞利用方式,需要的知識點也比較多。一般這個階段包括兩種方式,一種是手工測試,一種是工具測試
手工測試
手工測試是通過客戶端或伺服器訪問目標服務,手工向目標程序發送特殊的數據,包括有效的和無效的輸入,觀察目標的狀態、對各種輸入的反應,根據結果來發現問題的漏洞檢測技術。手工測試不需要額外的輔助工具,可由測試者獨立完成,實現起來比較簡單。但這種方法高度依賴於測試者,需要測試者對目標比較了解。手工測試可用於Web應用程序、瀏覽器及其他需要用戶交互的程序。
這種方式對於有特殊過濾等操作,或者網路上沒有成型的利用工具的時候可以使用。
工具測試
網路上有很多好用的免費利用工具,比如針對sql注入的sqlmap、針對軟體漏洞的matesploit等。
㈡ djanog 框架開發的網頁怎麼測試
別的機子能訪問嗎?能訪問就直接查看吧,不用圖形界面你肯定不能訪問的的。
㈢ 怎樣從0開始搭建一個測試框架
自動化測試框架
,簡稱GTF,因為這個框架現在還屬於開發階段,很多事都是言之過早。我會持續將我在架構過程中的想法寫下來。供自己和大家一起分享。
這些想法,並不屬於我一個人,我工作中的同事們給了我很大的幫助。
今天這一篇主要說明架構方面的考慮。
在現有的提供自動化測試解決方案的產品很多,包括:Robot,TestComplete,WinRunner等等。我只接觸過這些,公司里也進行過很大的嘗試,但是結果往往總是不竟如人意。
這中間,排除那些人員方面的原因,也總結這些自動化工具
,在使用過程中的不方便的地方:
1. 定位控制項不方便。標准控制項還好,非標准控制項就只能靠很多非正常方法去獲取。而且,控制項的識別往往和界面布局相關。
3. 代碼維護不方便。由於在編寫過程中,大量的和界面相關的代碼,導致最後在需求變更的時候,代碼的維護,成為軟體測試人員的負擔。
針對這些情況,我們經過討論,何不自己做一個軟體測試框架。當然了,這是基於我們的豐富的知識積累的決策。大家不需要關心這個決策的情況。不過,可以多關注一些我們在做的過程中的分析結果。
通過分析流行的軟體測試框架,有多種方式:
第一、最典型的就是消息驅動,自動化工具通過腳本錄制和編寫,保存為測試腳本。在回放的過程中,將這些腳本轉換成為Windows消息,發送給我們應用程序的窗體和各種控制項。
這種方式的好處在於,自動化工具和應用程序之間能夠做到完全的隔離。但是,由於使用了Windows消息,它也擁有了一個非常致命的缺點。那就是消息隊列的非同步性與程序的順序性之間的矛盾。很多消息發送給了應用程序,但是應用程序的處理可能已經和消息隊列錯位了。有一些關於代碼的時間片等待,就是因為這個問題。
另外,就是由於完全的隔離,對於操縱控制項數據的能力大大降低。畢竟,擁有大量數據的控制項都不是標准控制項。
第二、嵌入式
。TestComplete就是這類工具。它有支持不同語言的版本。大概思路,就是在程序編譯的時候,注入自己的控制項代理。腳本的回放,直接可以通過代理,操縱到應用程序。
可惜的是,這類軟體開發的時候,更多的是考慮平台的兼容性。對於特有平台上的支持不是十分完美。特別是對自定義控制項(比如Delphi中,除了VCL的標准控制項)支持也沒有做到最好。不過,我這里必須承認,TC的內部實現機制可能十分強大,我不能窺探所有。如果有人清晰,可以指點一二。
針對上面的兩種,我們想到的第三種方式:一體式。這種方式中,通過給程序在打包的過程中,添加額外的框架代碼,使得程序自動提供控制項的訪問方式。自動化的模塊也會作為軟體測試程序的一部分運行。
應用程序在執行腳本的時候,自動通過腳本
,控制各控制項界面的顯示和關閉。它應該是第二種方式的變種。但是由於是自己實現的,所以在對各類自定義控制項支持的都非常好。
針對一開始提出的幾個自動化測試的難題,我們提出了,自動封裝窗體上所有控制項的概念(這些概念後面會詳細介紹),對於軟體測試人員,只要關心真正的業務操作流程。而業務流程中涉及到的控制項,已經為他們自動提供好。這樣,腳本也自然只成了業務流程的腳本。其復雜度也就大大降下來了。
如果要推薦2個工具的話,我就推薦澤眾軟體公司的
自動化測試工具AutoRunner和測試管理工具Testcenter
,用這2個軟體合作可以很好的進行自動化測試與對測試用例進行管理。
㈣ 怎麼通過外部檢測到網站是ThinkPHP框架開發的
在tp3.1和3.2中的App.class.PHP中有這樣一段代碼:
<?php
if(!$mole) {
if('' == CONTROLLER_NAME) {
header("Content-type:image/png");
exit(base64_decode(App::logo()));
}
// 是否定義Empty控制器
$mole = A('Empty');
if(!$mole){
E(L('_CONTROLLER_NOT_EXIST_').':'.CONTROLLER_NAME);
}
}
?>
比如http://www.gaokaopai.com/-index.html
會輸出tp的logo.從而知道該網站用的是tp框架
㈤ 如何搭建自己的自動化測試框架
這段時間一直在為公司內部開發
自動化測試框架
,簡稱GTF,因為這個框架現在還屬於開發階段,很多事都是言之過早。我會持續將我在架構過程中的想法寫下來。供自己和大家一起分享。
這些想法,並不屬於我一個人,我工作中的同事們給了我很大的幫助。
今天這一篇主要說明架構方面的考慮。
在現有的提供自動化測試解決方案的產品很多,包括:Robot,TestComplete,WinRunner等等。我只接觸過這些,公司里也進行過很大的嘗試,但是結果往往總是不竟如人意。
這中間,排除那些人員方面的原因,也總結這些自動化工具
,在使用過程中的不方便的地方:
1. 定位控制項不方便。標准控制項還好,非標准控制項就只能靠很多非正常方法去獲取。而且,控制項的識別往往和界面布局相關。
3. 代碼維護不方便。由於在編寫過程中,大量的和界面相關的代碼,導致最後在需求變更的時候,代碼的維護,成為軟體測試人員的負擔。
針對這些情況,我們經過討論,何不自己做一個軟體測試框架。當然了,這是基於我們的豐富的知識積累的決策。大家不需要關心這個決策的情況。不過,可以多關注一些我們在做的過程中的分析結果。
通過分析流行的軟體測試框架,有多種方式:
第一、最典型的就是消息驅動,自動化工具通過腳本錄制和編寫,保存為測試腳本。在回放的過程中,將這些腳本轉換成為Windows消息,發送給我們應用程序的窗體和各種控制項。
這種方式的好處在於,自動化工具和應用程序之間能夠做到完全的隔離。但是,由於使用了Windows消息,它也擁有了一個非常致命的缺點。那就是消息隊列的非同步性與程序的順序性之間的矛盾。很多消息發送給了應用程序,但是應用程序的處理可能已經和消息隊列錯位了。有一些關於代碼的時間片等待,就是因為這個問題。
另外,就是由於完全的隔離,對於操縱控制項數據的能力大大降低。畢竟,擁有大量數據的控制項都不是標准控制項。
第二、嵌入式
。TestComplete就是這類工具。它有支持不同語言的版本。大概思路,就是在程序編譯的時候,注入自己的控制項代理。腳本的回放,直接可以通過代理,操縱到應用程序。
可惜的是,這類軟體開發的時候,更多的是考慮平台的兼容性。對於特有平台上的支持不是十分完美。特別是對自定義控制項(比如Delphi中,除了VCL的標准控制項)支持也沒有做到最好。不過,我這里必須承認,TC的內部實現機制可能十分強大,我不能窺探所有。如果有人清晰,可以指點一二。
針對上面的兩種,我們想到的第三種方式:一體式。這種方式中,通過給程序在打包的過程中,添加額外的框架代碼,使得程序自動提供控制項的訪問方式。自動化的模塊也會作為軟體測試程序的一部分運行。
應用程序在執行腳本的時候,自動通過腳本
,控制各控制項界面的顯示和關閉。它應該是第二種方式的變種。但是由於是自己實現的,所以在對各類自定義控制項支持的都非常好。
針對一開始提出的幾個自動化測試的難題,我們提出了,自動封裝窗體上所有控制項的概念(這些概念後面會詳細介紹),對於軟體測試人員,只要關心真正的業務操作流程。而業務流程中涉及到的控制項,已經為他們自動提供好。這樣,腳本也自然只成了業務流程的腳本。其復雜度也就大大降下來了。
如果要推薦2個工具的話,我就推薦澤眾軟體公司的
自動化測試工具AutoRunner和測試管理工具Testcenter
,用這2個軟體合作可以很好的進行自動化測試與對測試用例進行管理。
㈥ 如何構建結構良好的測試框架
這段時間一直在為公司內部開發
自動化測試框架
,簡稱GTF,因為這個框架現在還屬於開發階段,很多事都是言之過早。我會持續將我在架構過程中的想法寫下來。供自己和大家一起分享。
這些想法,並不屬於我一個人,我工作中的同事們給了我很大的幫助。
今天這一篇主要說明架構方面的考慮。
在現有的提供自動化測試解決方案的產品很多,包括:Robot,TestComplete,WinRunner等等。我只接觸過這些,公司里也進行過很大的嘗試,但是結果往往總是不竟如人意。
這中間,排除那些人員方面的原因,也總結這些自動化工具
,在使用過程中的不方便的地方:
1. 定位控制項不方便。標准控制項還好,非標准控制項就只能靠很多非正常方法去獲取。而且,控制項的識別往往和界面布局相關。
3. 代碼維護不方便。由於在編寫過程中,大量的和界面相關的代碼,導致最後在需求變更的時候,代碼的維護,成為軟體測試人員的負擔。
針對這些情況,我們經過討論,何不自己做一個軟體測試框架。當然了,這是基於我們的豐富的知識積累的決策。大家不需要關心這個決策的情況。不過,可以多關注一些我們在做的過程中的分析結果。
通過分析流行的軟體測試框架,有多種方式:
第一、最典型的就是消息驅動,自動化工具通過腳本錄制和編寫,保存為測試腳本。在回放的過程中,將這些腳本轉換成為Windows消息,發送給我們應用程序的窗體和各種控制項。
這種方式的好處在於,自動化工具和應用程序之間能夠做到完全的隔離。但是,由於使用了Windows消息,它也擁有了一個非常致命的缺點。那就是消息隊列的非同步性與程序的順序性之間的矛盾。很多消息發送給了應用程序,但是應用程序的處理可能已經和消息隊列錯位了。有一些關於代碼的時間片等待,就是因為這個問題。
另外,就是由於完全的隔離,對於操縱控制項數據的能力大大降低。畢竟,擁有大量數據的控制項都不是標准控制項。
㈦ 什麼是測試框架
測試框架總體而言可以參考軟體開發框架來構建,下面是從軟體開發框架原則中對應提取的測試框架的屬性:
1、測試框架是測試開發過程中提取特定領域測試方法共性部分形成的體系結構;
(軟體框架是軟體開發過程中提取特定領域軟體的共性部分形成的體系結構)
2、測試框架的作用:在其基礎上重用測試設計原則和測試經驗,調整部分內容便可滿足需求,可提高測試用例設計開發質量,降低成本,縮短時間;
3、不同測試技術領域有不同的測試框架類型;
4、測試框架不是一個現成可用的系統,是一個半成品,需要測試工程師基於它結合自己的測試對象知識轉化成自己的測試用例;
5、測試框架是提供給測試人員開發相應領域測試用例的測試分析設計工具;
6、測試框架不是測試用例集,而是通用的,具有一般性的系統主體部分。測試人員像做填空一樣,根據具體業務完成特定應用系統中與眾不同的特殊部分;
7、測試設計模式的思想(等價類/邊界值)在測試框架中進行應用。
以上為個人總結體會,不一定正確,但我開發的測試框架卻是的確滿足了以上7個屬性來實現的。
㈧ 如何查看網站是否採用了struts2框架
你可以看網站鏈接url裡面的內容,如果是XXX.action結尾或直接XXX?參數1=XXX,應該就是stuts2。
Struts是Apache軟體基金會贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,並在2004年3月成為ASF的頂級項目。它通過採用Java Servlet/JSP技術,實現了基於Java EE Web應用的Model-View-Controller設計模式的應用框架,是MVC經典設計模式中的一個經典產品。
Struts2引入了幾個新的框架特性:從邏輯中分離出橫切關注點的攔截器、減少或者消除配置文件、貫穿整個框架的強大表達式語言、支持可變更和可重用的基於MVC模式的標簽API,
Struts2充分利用了從其它MVC框架學到的經驗和教訓,使得 Struts2框架更加清晰靈活。
Struts 2提供了對MVC的一個清晰的實現,這一實現包含了很多參與對所以請求進行處理的關鍵組件,如:攔截器、OGNL表達式語言、堆棧。
㈨ 如何檢測Web網站使用的是什麼JS框架
想看使用了什麼js框架,肯定是根據網站的源碼來分析,或者使用F12查看。
㈩ SSH框架搭建的網站怎麼進行單元測試,用什麼工具
現在還是SSH框架,有點過時了吧!如果你的開發平台是MyEclipse,可以裝一個Junit插件,運用插件進行單元測試。步驟:1、通過源代碼整理代碼邏輯,畫出流程圖;2、設計單元測試用例;3、依據用例編寫單元測試代碼;4、執行單元測試代碼;5、分析結果。