❶ 如何通過修改burp suite 中的raw 信息進行滲透測試
剛接觸web安全的時候,非常想找到一款集成型的滲透測試工具,找來找去,最終選擇了Burp Suite,除了它功能強大之外,還有就是好用,易於上手。於是就從網上下載了一個破解版的來用,記得那時候好像是1.2版本,功能也沒有現在這么強大。在使用的過程中,慢慢發現,網上系統全量的介紹BurpSuite的書籍太少了,大多是零星、片段的講解,不成體系。後來慢慢地出現了不少介紹BurpSuite的視頻,現狀也變得越來越好。但每每遇到不知道的問題時,還是不得不搜尋BurpSuite的官方文檔和英文網頁來解決問題,也正是這些問題,慢慢讓我覺得有必要整理一套全面的BurpSuite中文教程,算是為web安全界做盡自己的一份微薄之力,也才有了你們現在看到的這一系列文章。
我給這些文章取了IT行業圖書比較通用的名稱: 《BurpSuite實戰指南》,您可以稱我為中文編寫者,文章中的內容主要源於BurpSuite官方文檔和多位國外安全大牛的經驗總結,我只是在他們的基礎上,結合我的經驗、理解和實踐,編寫成現在的中文教程。本書我也沒有出版成紙質圖書的計劃,本著IT人互聯分享的精神,放在github,做免費的電子書。於業界,算一份小小的貢獻;於自己,算一次總結和鍛煉。
以上,是為小記。
感謝您閱讀此書,閱讀過程中,如果發現錯誤的地方,歡迎發送郵件到 [email protected],感謝您的批評指正。
本書包含以下章節內容:
第一部分 Burp Suite 基礎
Burp Suite 安裝和環境配置
Burp Suite代理和瀏覽器設置
如何使用Burp Suite 代理
SSL和Proxy高級選項
如何使用Burp Target
如何使用Burp Spider
如何使用Burp Scanner
如何使用Burp Intruder
如何使用Burp Repeater
如何使用Burp Sequencer
如何使用Burp Decoder
如何使用Burp Comparer
第二部分 Burp Suite 高級
數據查找和拓展功能的使用
BurpSuite全局參數設置和使用
Burp Suite應用商店插件的使用
如何編寫自己的Burp Suite插件
第三部分 Burp Suite 綜合使用
使用Burp Suite測試Web Services服務
使用Burp, Sqlmap進行自動化SQL注入滲透測試
使用Burp、PhantomJS進行XSS檢測
使用Burp 、Radamsa進行瀏覽器fuzzing
使用Burp 、Android Killer進行安卓app滲透測試
第一章 Burp Suite 安裝和環境配置
Burp Suite是一個集成化的滲透測試工具,它集合了多種滲透測試組件,使我們自動化地或手工地能更好的完成對web應用的滲透測試和攻擊。在滲透測試中,我們使用Burp Suite將使得測試工作變得更加容易和方便,即使在不需要嫻熟的技巧的情況下,只有我們熟悉Burp Suite的使用,也使得滲透測試工作變得輕松和高效。
Burp Suite是由Java語言編寫而成,而Java自身的跨平台性,使得軟體的學習和使用更加方便。Burp Suite不像其他的自動化測試工具,它需要你手工的去配置一些參數,觸發一些自動化流程,然後它才會開始工作。
Burp Suite可執行程序是java文件類型的jar文件,免費版的可以從免費版下載地址進行下載。免費版的BurpSuite會有許多限制,很多的高級工具無法使用,如果您想使用更多的高級功能,需要付費購買專業版。專業版與免費版的主要區別有
Burp Scanner
工作空間的保存和恢復
拓展工具,如Target Analyzer, Content Discovery和 Task Scheler
本章主要講述Burp Suite的基本配置,包含如下內容:
如何從命令行啟動Burp Suite</br>
如何設置JVM內存 大小</br>
IPv6問題調試
如何從命令行啟動Burp Suite
Burp Suite是一個無需安裝軟體,下載完成後,直接從命令行啟用即可。但Burp Suite是用Java語言開發的,運行時依賴於JRE,需要提前Java可運行環境。
如果沒有配置Java環境或者不知道如何配置的童鞋請參考win7電腦上的Java環境配置 配置完Java環境之後,首先驗證Java配置是否正確,如果輸入java -version 出現下圖的結果,證明配置正確且已完成。
這時,你只要在cmd里執行java -jar /your_burpsuite_path/burpSuite.jar即可啟動Burp Suite,或者,你將Burp Suite的jar放入class_path目錄下,直接執行java -jar burpSuite.jar也可以啟動。
==注意:your_burpsuite_path為你Burp Suite所在路徑,burpSuite.jar文件名必須跟你下載的jar文件名稱一致==
如何設置JVM內存 大小
如果Java可運行環境配置正確的話,當你雙擊burpSuite.jar即可啟動軟體,這時,Burp Suite自己會自動分配最大的可用內存,具體實際分配了多少內存,默認一般為64M。當我們在滲透測試過程,如果有成千上萬個請求通過Burp Suite,這時就可能會導致Burp Suite因內存不足而崩潰,從而會丟失滲透測試過程中的相關數據,這是我們不希望看到的。因此,當我們啟動Burp Suite時,通常會指定它使用的內存大小。 一般來說,我們通常會分配2G的內存供Burp Suite使用,如果你的電腦內存足夠,可以分配4G;如果你的電腦內存足夠小,你也可以分配128M。當你給Burp Suite分配足夠多的內存時,它能做的工作也會更多。指定Burp Suite佔用內存大小的具體配置方法是在啟動腳本里添加如下命令行參數: 假設啟動腳本的名稱為burp_suite_start.bat,則該bat腳本的內容為
java -jar -Xmx2048M /your_burpsuite_path/burpsuite.jar
其中參數-Xmx指定JVM可用的最大內存,單位可以是M,也可以是G,如果是G為單位的話,則腳本內容為:
java -jar -Xmx2G /your_burpsuite_path/burpsuite.jar
更多關於JVM性能調優的知識請閱讀 Oracle JVM Tuning
IPv6問題調試
Burp Suite是不支持IPv6地址進行數據通信的,這時在cmd控制台里就會拋出如下異常
java.net.SocketException: Permission denied
同時,瀏覽器訪問時,也會出現異常
Burp proxy error: Permission denied: connect
當出現如上問題時,我們需要修改啟動腳本,添加對IPv4的指定後,重啟Burp Suite即可。
java -jar -Xmx2048M -Djava.net.preferIPv4Stack=true /your_burpsuite_path/burpsuite.jar
通過 -Djava.net.preferIPv4Stack=true參數的設置,告訴Java運行環境,使用IPv4協議棧進行數據通信,IPv6協議將會被禁止使用。 這個錯誤最常見於64位的windows操作系統上,使用了32位的JDK
第二章 Burp Suite代理和瀏覽器設置
Burp Suite代理工具是以攔截代理的方式,攔截所有通過代理的網路流量,如客戶端的請求數據、伺服器端的返回信息等。Burp Suite主要攔截http和https協議的流量,通過攔截,Burp Suite以中間人的方式,可以對客戶端請求數據、服務端返回做各種處理,以達到安全評估測試的目的。
在日常工作中,我們最常用的web客戶端就是的web瀏覽器,我們可以通過代理的設置,做到對web瀏覽器的流量攔截,並對經過Burp Suite代理的流量數據進行處理。
下面我們就分別看看IE、Firefox、Google Chrome下是如何配置Burp Suite代理的。
IE設置
當Burp Suite 啟動之後,默認分配的代理地址和埠是127.0.0.1 :8080,我們可以從Burp Suite的proxy選項卡的options上查看。如圖:
現在,我們通過如下步驟的設置即可完成IE通過Burp Suite 代理的相關配置。
啟動IE瀏覽器
點擊【工具】菜單,選擇【Internet】選項
打開【連接】選項卡,點擊【區域網設置】,進行代理設置。
在代理伺服器設置的地址輸入框中填寫127.0.0.1,埠填寫8080,點擊【確定】,完成代理伺服器的設置。
這時,IE的設置已經完成,你可以訪問 http://burp 將會看到Burp Suite的歡迎界面。
FireFox設置
與IE的設置類似,在FireFox中,我們也要進行一些參數設置,才能將FireFox瀏覽器的通信流量,通過BurpSuite代理進行傳輸。詳細的步驟如下:
啟動FireFox瀏覽器,點擊【工具】菜單,點擊【選項】。
在新打開的about:preferences#advanced窗口中,依次點擊【高級】-【網路】,我們將會看到FireFox連接網路的設置選項。
點擊【設置】,在彈出的【連接設置】對話框中,找到「http代理」,填寫127.0.0.1,埠填寫8080,最後點擊【確認】保存參數設置,完成FireFox的代理配置。
當然,FireFox瀏覽器中,可以添加FireFox的擴展組件,對代理伺服器進行管理。例如FireX Proxy、Proxy Swither都是很好用的組件,感興趣的讀者可以自己下載試用一下。
Google Chrome設置
Google Chrome使用Burp Suite作為代理伺服器的配置步驟如下:
啟動Google Chrome瀏覽器,在地址欄輸入chrome://settings/,回車後即顯示Google Chrome瀏覽器的配置界面
點擊底部的【顯示高級設置】,將顯示Google Chrome瀏覽器的高級設置。
當然,你也可以直接在搜索框中輸入「代理」,回車後將自動定位到代理伺服器設置功能。
點擊【更改代理伺服器設置】,windows系統下將會彈出IE瀏覽器的代理設置,此時,按照IE瀏覽器的設置步驟,完成代理伺服器的配置即可。
除了上述的三種常用的瀏覽器外,還有Safari瀏覽器也有不少的用戶在使用,其代理配置請點擊閱讀進行查看。
第三章 如何使用Burp Suite代理
Burp Proxy 是Burp Suite以用戶驅動測試流程功能的核心,通過代理模式,可以讓我們攔截、查看、修改所有在客戶端和服務端之間傳輸的數據。
本章主要講述以下內容:
Burp Proxy基本使用
數據攔截與控制
可選項配置Options
歷史記錄History
Burp Proxy基本使用
通過上一章的學習,我們對Burp Suite代理模式和瀏覽器代理設置有了基本的了解。Burp Proxy的使用是一個循序漸進的過程,剛開始使用時,可能並不能很快就獲取你所期望的結果,慢慢地當你熟悉了它的功能和使用方法,你就可以用它很好地對一個產品系統做安全能力評估。 一般使用Burp Proxy時,大體涉及環節如下:
首先,確認JRE已經安裝好,Burp Suite可以啟動並正常運行,且已經完成瀏覽器的代理伺服器配置。
打開Proxy功能中的Intercept選項卡,確認攔截功能為「Interception is on」狀態,如果顯示為「Intercept is off」則點擊它,打開攔截功能。
打開瀏覽器,輸入你需要訪問的URL(以http://ke..com/為例)並回車,這時你將會看到數據流量經過Burp Proxy並暫停,直到你點擊【Forward】,才會繼續傳輸下去。如果你點擊了【Drop】,則這次通過的數據將會被丟失,不再繼續處理。
當我們點擊【Forward】之後,我們將看到這次請求返回的所有數據。
當Burp Suite攔截的客戶端和伺服器交互之後,我們可以在Burp Suite的消息分析選項卡中查看這次請求的實體內容、消息頭、請求參數等信息。消息分析選項視圖主要包括以下四項:
Raw 這是視圖主要顯示web請求的raw格式,包含請求地址、http協議版本、主機頭、瀏覽器信息、Accept可接受的內容類型、字元集、編碼方式、cookie等。你可以通過手工修改這些信息,對伺服器端進行滲透測試。
params 這個視圖主要顯示客戶端請求的參數信息、包括GET或者POST請求的參數、Cookie參數。滲透人員可以通過修改這些請求參數來完成對伺服器端的滲透測試。
headers 這個視圖顯示的信息和Raw的信息類似,只不過在這個視圖中,展示得更直觀、友好。
Hex 這個視圖顯示Raw的二進制內容,你可以通過hex編輯器對請求的內容進行修改。
默認情況下,Burp Proxy只攔截請求的消息,普通文件請求如css、js、圖片是不會被攔截的,你可以修改默認的攔截選項來攔截這些靜態文件,當然,你也可以通過修改攔截的作用域、參數或者伺服器端返回的關鍵字來控制Burp Proxy的消息攔截,這些在後面的章節中我們會進一步的學習。 所有流經Burp Proxy的消息,都會在http history記錄下來,我們可以通過歷史選項卡,查看傳輸的數據內容,對交互的數據進行測試和驗證。同時,對於攔截到的消息和歷史消息,都可以通過右擊彈出菜單,發送到Burp的其他組件,如Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer、Extender,進行進一步的測試。如下圖所示:
數據攔截與控制
Burp Proxy的攔截功能主要由Intercept選項卡中的Forward、Drop、Interception is on/off、Action、Comment 以及Highlight構成,它們的功能分別是: Forward的功能是當你查看過消息或者重新編輯過消息之後,點擊此按鈕,將發送消息至伺服器端。 Drop的功能是你想丟失當前攔截的消息,不再forward到伺服器端。Interception is on表示攔截功能打開,攔截所有通過Burp Proxy的請求數據;Interception is off表示攔截功能關閉,不再攔截通過Burp Proxy的所有請求數據。 Action的功能是除了將當前請求的消息傳遞到Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer組件外,還可以做一些請求消息的修改,如改變GET或者POST請求方式、改變請求body的編碼,同時也可以改變請求消息的攔截設置,如不再攔截此主機的消息、不再攔截此IP地址的消息、不再攔截此種文件類型的消息、不再攔截此目錄的消息,也可以指定針對此消息攔截它的伺服器端返回消息。
Comment的功能是指對攔截的消息添加備注,在一次滲透測試中,你通常會遇到一連串的請求消息,為了便於區分,在某個關鍵的請求消息上,你可以添加備注信息。
Highlight的功能與Comment功能有點類似,即對當前攔截的消息設置高亮,以便於其他的請求消息相區分。
除了Intercept中可以對通過Proxy的消息進行控制外,在可選項設置選項卡Options中也有很多的功能設置也可以對流經的消息進行控制和處理。
可選項配置Options
當我們打開可選項設置選項卡Options,從界面顯示來看,主要包括以下幾大板塊(涉及https的功能不包含在本章內容里,後面會一章專門敘述):
客戶端請求消息攔截
伺服器端返回消息攔截
伺服器返回消息修改
正則表達式配置
其他配置項
客戶端請求消息攔截
客戶端請求消息攔截是指攔截客戶端發送到伺服器端消息的相關配置選項,其界面如下:
主要包含攔截規則配置、錯誤消息自動修復、自動更新Content-Length消息頭三個部分。
如果intercept request based on the follow rules的checkbox被選中,則攔截所有符合勾選按鈕下方列表中的請求規則的消息都將被攔截,攔截時,對規則的過濾是自上而下進行的。當然,我們可以根據自己的需求,通過【Up】和【Down】按鈕,調節規則所在位置和排序。同時,我們可以點擊【Add】添加一條規則,也可以選中一條規則,通過點擊【Edit】進行編輯、點擊【Remove】進行刪除。當我們點擊【Add】按鈕時,會彈出規則添加的輸入對話框,如下圖:
攔截規則添加時,共包含4個輸入項。Boolean opertor表示當前的規則與其他規則是與的方式(And)還是或的方式(Or)共存;Match type表示匹配類型,此處匹配類型可以基於域名、IP地址、協議、請求方法、URL、文件類型、參數, cookies, 頭部或者內容, 狀態碼, MIME類型, HTML頁面的title等。Match relationship表示此條規則是匹配還是不匹配Match condition輸入的關鍵字。當我們輸入這些信息,點擊【OK】按鈕,則規則即被保存。
如果Automatically fix missing的checkbox被選中,則表示在一次消息傳輸中,Burp Suite會自動修復丟失或多餘的新行。比如說,一條被修改過的請求消息,如果丟失了頭部結束的空行,Burp Suite會自動添加上;如果一次請求的消息體中,URl編碼參數中包含任何新的換行,Burp Suite將會移除。此項功能在手工修改請求消息時,為了防止錯誤,有很好的保護效果。
如果Automatically update Content-Length的checkbox被選中,則當請求的消息被修改後,Content-Length消息頭部也會自動被修改,替換為與之相對應的值。
❷ 03 burpsuite
需要JDK
環境變數配置
系統變數中新建變數JAVA_HOME,值為jdk的安裝目錄(C:\Program Files\Java\jdk1.8.0_144)
新建CLASSPATH變數,值為.;%JAVA_HOME%\lib
編輯path變數,增加C:\Program Files\Java\jdk1.8.0_144\bin
配置完成後在命令行輸入java,javac都有結果,證明jdk環境搭建成功
測試https的網站需要導入burpsuite的證書才能抓取加密的數據包,導入證書的步驟如下:
將證書保存到本地,然後在瀏覽器的證書管理處導入證書:
另外,訪問 http://127.0.0.1:代理埠也可以將burpsuite 下發的證書保存下來
proxy標簽下開啟intercept on後,每一次http請求都會被burpsuite截獲,這里設置為off。在target標簽下找到目標測試站,右鍵選擇「add to scope」
proxy標簽下開啟intercept on後,每一次http請求都會被burpsuite截獲,這里設置為off。在target標簽下找到目標測試站,右鍵選擇「add to scope」
點擊Filter,勾選以下兩個選項過濾其他網站和文件
第二種可以使用爬蟲功能先爬取目標站點再進行掃描。在target標簽下右鍵目標網站「spider this host」,啟動爬蟲功能爬去目標站點,可在spider標簽下看到運行狀態,有可能需要提交用戶名密碼的表單
爬蟲執行結束後,在target標簽下右鍵目標站點「actively scan this host」
勾選以下幾項,開始掃描
掃出的漏洞在target標簽下能看到匯總的漏洞情況以及漏洞的具體信息(其中紅色為高危漏洞,帶問號的為不確定是否存在的漏洞,需要再次驗證)
主動掃描
查看掃描詳情
掃描狀態
可以選擇導出html和xml兩種格式的報告,以html為例
burpsuite具有以下功能:
Proxy——是一個攔截HTTP/S的代理伺服器,作為一個在瀏覽器和目標應用程序之間的中間人,允許你攔截,查看,修改在兩個方向上的原始數據流。
Spider——是一個應用智能感應的網路爬蟲,它能完整的枚舉應用程序的內容和功能。
Scanner[僅限專業版]——是一個高級的工具,執行後,它能自動地發現web 應用程序的安全漏洞。
Intruder——是一個定製的高度可配置的工具,對web應用程序進行自動化攻擊,如:枚舉標識符,收集有用的數據,以及使用fuzzing 技術探測常規漏洞。
Repeater——是一個靠手動操作來補發單獨的HTTP 請求,並分析應用程序響應的工具。
Sequencer——是一個用來分析那些不可預知的應用程序會話令牌和重要數據項的隨機性的工具。
Decoder——是一個進行手動執行或對應用程序數據者智能解碼編碼的工具。
Comparer——是一個實用的工具,通常是通過一些相關的請求和響應得到兩項數據的一個可視化的「差異」。
❸ 文件上傳漏洞攻擊方法有什麼
文件上傳漏洞是什麼?怎樣防禦文件上傳漏洞攻擊?文件上傳漏洞是web安全中經常利用到的一種漏洞形式。這種類型的攻擊從大的類型上來說,是攻擊 數據與代碼分離原則 的一種攻擊。
一些web應用程序中允許上傳圖片,文本或者其他資源到指定的位置,文件上傳漏洞就是利用這些可以上傳的地方將惡意代碼植入到伺服器中,再通過url去訪問以執行代碼
造成文件上傳漏洞的原因是
對於上傳文件的後綴名(擴展名)沒有做較為嚴格的限制
對於上傳文件的MIMETYPE 沒有做檢查
許可權上沒有對於上傳的文件的文件許可權,(尤其是對於shebang類型的文件)
對於web server對於上傳文件或者指定目錄的行為沒有做限制
下面就閑話一些文件上傳漏洞的防禦方式和攻擊者的繞過方式
1.前端限制
function check(){
var filename=document.getElementById("file");
var str=filename.value.split(".");
var ext=str[str.length-1];
if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){
return true;
}else{
alert("這不是圖片!")
return false;
}
return false;
}
在表單中使用onsumbit=check()調用js函數來檢查上傳文件的擴展名。這種限制實際上沒有任何用處,任何攻擊者都可以輕而易舉的破解。只能用於對於用戶完全信任的情況下,很難稱之為一種安全措施只能稱之是一種防止用戶誤操作上傳的措施,
反制:
隨便的編輯一下頁面/用burpsuite/寫個小腳本就可以突破之,無須多言
2.檢查擴展名
顧名思義,就是在文件被上傳到服務端的時候,對於文件名的擴展名進行檢查,如果不合法,則拒絕這次上傳
在這里,還有一點是值得一提的,在檢查擴展名是否合法的時候,有兩種策略
黑名單策略,文件擴展名在黑名單中的為不合法,示例代碼
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){
echo "invalid file type";
return;
}
白名單策略,文件擴展名不在白名單中的均為不合法
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='jpg'||$postfix=='png'||$postfix=='gif'){
//save the file and do something next
} else {
echo "invalid file type";
return;
}
白名單策略是更加安全的,通過限制上傳類型為只有我們接受的類型,可以較好的保證安全,因為黑名單我們可以使用各種方法來進行注入和突破
反制
在一些 webserver 中,存在解析漏洞
1.老版本的IIS中的目錄解析漏洞,如果網站目錄中有一個 /.asp/目錄,那麼此目錄下面的一切內容都會被當作asp腳本來解析
2.老闆本的IIS中的分號漏洞:IIS在解析文件名的時候可能將分號後面的內容丟棄,那麼我們可以在上傳的時候給後面加入分號內容來避免黑名單過濾,如 a.asp;jpg
3.舊版Windows Server中存在空格和dot漏洞類似於 a.php. 和 a.php[空格] 這樣的文件名存儲後會被windows去掉點和空格,從而使得加上這兩個東西可以突破過濾,成功上傳,並且被當作php代碼來執行
4.nginx空位元組漏洞 xxx.jpg%00.php 這樣的文件名會被解析為php代碼運行
5.apache的解析漏洞,上傳如a.php.rar a.php.gif 類型的文件名,可以避免對於php文件的過濾機制,但是由於apache在解析文件名的時候是從右向左讀,如果遇到不能識別的擴展名則跳過,rar等擴展名是apache不能識別的,因此就會直接將類型識別為php,從而達到了注入php代碼的目的
3.檢查HTTP Header中的Content-Type
HTTP協議規定了上傳資源的時候在Header中加上一項文件的MIMETYPE,來識別文件類型,這個動作是由瀏覽器完成的,服務端可以檢查此類型不過這仍然是不安全的,因為HTTP header可以被發出者或者中間人任意的修改,不過加上一層防護也是可以有一定效果的
反制
使用各種各樣的工具(如burpsuite)強行篡改Header就可以,太容易將header中的
Content-Type: application/php
或者其他類型
改為
Content-Type: image/jpg
Content-Type: image/png
Content-Type: text/plain
等這些web程序允許的淚洗改附上常用的MIMETYPE表
text/plain(純文本)
text/html(HTML文檔)
text/javascript(js代碼)
application/xhtml+xml(XHTML文檔)
image/gif(GIF圖像)
image/jpeg(JPEG圖像)
image/png(PNG圖像)
video/mpeg(MPEG動畫)
application/octet-stream(二進制數據)
application/pdf(PDF文檔)
application/(編程語言) 該種語言的代碼
application/msword(Microsoft Word文件)
message/rfc822(RFC 822形式)
multipart/alternative(HTML郵件的HTML形式和純文本形式,相同內容使用不同形式表示)
application/x-www-form-urlencoded(POST方法提交的表單)
multipart/form-data(POST提交時伴隨文件上傳的表單)
4.分析文件頭內容來檢查文件類型
與方法2不同,還有一種檢查類型的方式是使用對於文件內容的驗證機制,這種方法利用的是每一個特定類型的文件都會有不太一樣的開頭或者標志位。可以通過比如php的exif_imagetype()函數,一個通過這種方法來過濾的示例代碼如下:
if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) {
echo "File is not an image";
return;
}
也可以自己編寫函數來進行識別,圖片文件通常有稱作幻數的頭位元組,我們來看一下幾種圖片文件的幻數:
(注意!下面是二進制而不是文本格式的數據)
JPG
FF D8 FF E0 00 10 4A 46 49 46
GIF
47 49 46 38 39 61
(相當於文本的GIF89a)
PNG
89 50 4E 47
通過檢查頭幾位位元組,可以分辨是否是圖片文件
如果是其他類型的二進制文件,也有響應的頭位元組,如下表
反制
給上傳腳本加上相應的幻數頭位元組就可以,php引擎會將
(一般不限制圖片文件格式的時候使用GIF的頭比較方便,因為全都是文本可列印字元。)
GIF89a
do_something();
?>
如果是其他類型的二進制文件,也有響應的頭位元組,如下表
格式
文件頭
TIFF (tif)
49492A00
Windows Bitmap (bmp)
424D
CAD (dwg)
41433130
Adobe Photoshop (psd)
38425053
Rich Text Format (rtf)
7B5C727466
MS Word/Excel (xls.or.doc)
D0CF11E0
MS Access (mdb)
5374616E64617264204A
ZIP Archive (zip),
504B0304
RAR Archive (rar),
7221
Wave (wav),
57415645
AVI (avi),
41564920
Real Media (rm),
2E524D46
MPEG (mpg),
000001BA
MPEG (mpg),
000001B3
Quicktime (mov),
6D6F6F76
Adobe Acrobat (pdf),
255044462D312E
Windows Media (asf),
3026B2758E66CF11
MIDI (mid),
4D546864
5.限制Web Server對於特定類型文件的行為
導致文件上傳漏洞的根本原因在於服務把用戶上傳的本應是數據的內容當作了代碼,一般來說,用戶上傳的內容都會被存儲到特定的一個文件夾下,比如我們很多人習慣於放在 ./upload/ 下面要防止數據被當作代碼執行,我們可以限制web server對於特定文件夾的行為。
大多數服務端軟體都可以支持用戶對於特定類型文件的行為的自定義,以Apache為例:
在默認情況下,對與 .php文件Apache會當作代碼來執行,對於 html,css,js文件,則會直接由HTTP Response交給客戶端程序對於一些資源文件,比如txt,doc,rar等等,則也會以文件下載的方式傳送的客戶端。我們希望用戶上傳的東西僅僅當作資源和數據而不能當作代碼
因此可以使用伺服器程序的介面來進行限制
以Apache為例,我們可以利用 .htaccess 文件機制來對web server行為進行限制
在這里插一句,如果不是專門的文件下載目錄,請務必關掉文件夾瀏覽的許可權,以防止嗅探和可能的越權,也是使用.htaccess文件,在其中加上一句
Options All -Indexes
即可。
禁止腳本執行有多種方式可以實現,而且分別有不同的效果,我們分別來看一下
1.指定特定擴展名的文件的處理方式,原理是指定Response的Content-Type可以加上如下幾行
AddType text/plain .pl .py .php
這種情況下,以上幾種腳本文件會被當作純文本來顯示出來,你也可以換成其他的Content-Type
2.如果要完全禁止特定擴展名的文件被訪問,用下面的幾行
Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi識別
在這種情況下,以上幾種類型的文件被訪問的時候,會返回403 Forbidden的錯誤
3.也可以強制web伺服器對於特定文件類型的處理,與第一條不同的是, 下面的方法直接強行讓apache將文件識別為你指定的類型,而第一種是讓瀏覽器
ForceType text/plain
看代碼就可以很明白的知道,符合上面正則的全部被認為是純文本,也可以繼續往裡面加入其他類型。
4.只允許訪問特定類型的文件
order deny,allow
deny from all
在一個上傳圖片的文件夾下面,就可以加上這段代碼,使得該文件夾裡面只有圖片擴展名的文件才可以被訪問,其他類型都是拒絕訪問。
這又是一個白名單的處理方案
永遠記得,白名單是最有保障的安全措施
可以通過 move_uploaded_file 函數把自己寫的.htaccess 文件上傳,覆蓋掉伺服器上的文件,來定義文件類型和執行許可權如果做到了這一點,將獲得相當大的許可權。
❹ 常用的網路安全工具有哪些
1、NMap
是一個開源且免費的安全掃描工具,可被用於安全審計和網路發現。能夠工作在Windows、Linux、HP-UX、Solaris、BSD(包括Mac OS)、以及AmigaOS上。Nmap可用於探測網路中那些可訪問的主機,檢測它們操作系統的類型和版本,正在提供的服務,以及正在使用的防火牆或數據包過濾器的信息等。由於它既帶有GUI界面,又提供命令行,因此許多網路與系統管理員經常將它運用到自己的日常工作中,其中包括:檢查開放的埠,維護服務的升級計劃,發現網路拓撲,以及監視主機與服務的正常運行時間等方面。
2、Wireshark
作為業界最好的工具之一,Wireshark可以提供免費且開源的滲透測試服務。通常,您可以把它當作網路協議分析器,以捕獲並查看目標系統與網路中的流量。它可以在Linux、Windows、Unix、Solaris、Mac OS、NetBSD、FreeBSD、以及其他操作系統上運行。Wireshark廣受教育工作者、安全專家、網路專業人員、以及開發人員的使用和喜愛。那些經由Wireshark還原的信息,可以被其圖形用戶界面(GUI)或TTY模式的TShark工具來查看。
3、Metasploit
作為一個安全項目,Metasploit可為用戶提供有關安全風險或漏洞等方面的重要信息。該開源的框架可以通過滲透測試服務,讓用戶獲悉各種應用程序、平台和操作系統上的最新漏洞,以及可以被利用的代碼。從滲透測試角度來看,Metasploit可以實現對已知漏洞的掃描,偵聽,利用,以及證據的收集。它提供可在Linux、Windows以及Apple Mac OS上運行的命令行和圖形用戶界面。雖然Metasploit是一種商業工具,但它附帶有一個開源的有限試用版。
4、Netsparker
作為一款商業化的安全測試工具,Netsparker是一個精確、自動化且易用的Web應用安全掃描程序。該工具可以被用於自動化地識別Web應用服務中的跨站點腳本(XSS)和SQL注入等安全風險。通過基於證據的掃描技術,它不僅可以生成風險報告,還能夠通過概念證明(Proof of Concept),來確認是否有誤報,並能減少手動驗證漏洞的時間。
5、Acunetix
是一款全自動化的Web漏洞掃描程序。它可以智能地檢測、識別並報告超過4500種Web應用漏洞,其中包括XSS XXE、SSRF、主機頭部注入(Host Header Injection)和SQL注入的所有變體。作為一種商業工具,Acunetix通過其DeepScan Crawler來掃描重AJAX(AJAX-heavy)客戶端類型的單頁面應用(SPA)和HTML5網站。
6、Nessus
是針對安全從業人員的漏洞評估解決方案。它能夠協助檢測和修復各種操作系統、應用程序、乃至設備上的漏洞、惡意軟體、配置錯誤、以及補丁的缺失。通過運行在Windows、Linux、Mac、Solaris上,用戶可以用它來進行IP與網站的掃描,合規性檢查,敏感數據搜索等測試。
7、W3af
作為一個免費工具,W3af是一個Web應用攻擊和審計框架。它通過搜索、識別和利用200多種已知的Web應用漏洞,來掌控目標網站的總體風險。這些漏洞包括:跨站點腳本(XSS)、SQL注入、未處理的應用錯誤、可被猜測的密鑰憑據、以及PHP錯誤配置等。W3af不但適用於Mac、Linux和Windows OS,而且提供控制台和圖形用戶界面。
8、Zed Attack Proxy
由OWASP開發的免費且開源的安全測試工具。它可以讓您在Web應用中發現一系列安全風險與漏洞。由於支持Unix/Linux、Windows和Mac OS,即使您是滲透測試的新手,也能輕松地上手該工具。
9、Burpsuite
作為一個嚴控「入侵者」掃描工具,Burpsuite被部分安全測試專家認為:「如果沒有它,滲透測試將無法開展。」雖然不是免費,但是Burpsuite提供豐富的功能。通常,人們可以在Mac OS X、Windows和Linux環境中使用它,以實現爬取內容和功能,攔截代理,以及掃描Web應用等測試目的。
10、Sqlninja
作為最好的開源滲透測試工具之一,Sqlninja可以利用Microsoft SQL Server作為後端,來檢測Web應用上的SQL注入威脅和漏洞。該自動化測試工具提供命令行界面,可以在Linux和Apple Mac OS X上被使用。Sqlninja具有包括:對遠程命令進行計數,DB指紋識別,及其檢測引擎等描述性功能。
❺ 滲透測試應該怎麼做呢
滲透測試步驟
明確目標
· 確定范圍:測試目標的范圍,ip,域名,內外網。
· 確定規則:能滲透到什麼程度,時間?能否修改上傳?能否提權等。
· 確定需求:web應用的漏洞、業務邏輯漏洞、人員許可權管理漏洞等等。
信息收集
方式:主動掃描,開放搜索等。
開放搜索:利用搜索引擎獲得,後台,未授權頁面,敏感url等。
漏洞探索
利用上一步中列出的各種系統,應用等使用相應的漏洞。
方法:
1.漏掃,awvs,IBM appscan等。
2.結合漏洞去exploit-db等位置找利用。
3.在網上尋找驗證poc。
內容:
系統漏洞:系統沒有及時打補丁
Websever漏洞:Websever配置問題
Web應用漏洞:Web應用開發問題
其它埠服務漏洞:各種21/8080(st2)/7001/22/3389
通信安全:明文傳輸,token在cookie中傳送等。
漏洞驗證
將上一步中發現的有可能可以成功利用的全部漏洞都驗證一遍,結合實際情況,搭建模擬環境進行試驗。成功後再應用於目標中。
自動化驗證:結合自動化掃描工具提供的結果
手工驗證,根據公開資源進行驗證
試驗驗證:自己搭建模擬環境進行驗證
登陸猜解:有時可以嘗試猜解一下登陸口的賬號密碼等信息
業務漏洞驗證:如發現業務漏洞,要進行驗證
公開資源的利用
信息分析
為下一步實施滲透做准備:
精準打擊:准備好上一步探測到的漏洞的exp,用來精準打擊
繞過防禦機制:是否有防火牆等設備,如何繞過
定製攻擊路徑:最佳工具路徑,根據薄弱入口,高內網許可權位置,最終目標
繞過檢測機制:是否有檢測機制,流量監控,殺毒軟體,惡意代碼檢測等
攻擊代碼:經過試驗得來的代碼,包括不限於xss代碼,sql注入語句等
獲取所需
實施攻擊:根據前幾步的結果,進行攻擊
獲取內部信息:基礎設施
進一步滲透:內網入侵,敏感目標
持續性存在:一般我們對客戶做滲透不需要。rookit,後門,添加管理賬號,駐扎手法等
清理痕跡:清理相關日誌,上傳文件等
信息整理
整理滲透工具:整理滲透過程中用到的代碼,poc,exp等
整理收集信息:整理滲透過程中收集到的一切信息
整理漏洞信息:整理滲透過程中遇到的各種漏洞,各種脆弱位置信息
形成報告
按需整理:按照之前第一步跟客戶確定好的范圍,需求來整理資料,並將資料形成報告
補充介紹:要對漏洞成因,驗證過程和帶來危害進行分析
修補建議:當然要對所有產生的問題提出合理高效安全的解決辦法
❻ 怎樣設置burpsuite攔截火狐瀏覽器所有http數據請求
方法/步驟
打開瀏覽器,點擊瀏覽器菜單欄,找到「工具」點擊 Internet選項,設置瀏覽器代理地址為127.0.0.1,埠8080
打開burpsuite確定設置的代理地址與瀏覽器一致。
打開瀏覽器,打開一個網頁,會看到打開的網頁瀏覽記錄都經過了burpsuite。
當Intercept is on時,表示已經開啟攔截功能。
在網站可輸入的地方,例如搜索,輸入「2015」,開啟burpsuite攔截功能,可看到為post請求,最後面的就是提交的數據。
右鍵選擇send to repeater或者快捷鍵ctrl+r 把攔截的數據包到repeater項中,直接修改數據,如把原本要搜索的項「2015」改為「2016」,點擊go來提交,那麼響應回來的數據就是改修後的頁面和信息。(burpsuite的抓包,攔截,修改)
❼ android如何過濾http請求
Android客戶端捕獲http請求包的方法
對於Web測試,我們可以很容易的抓取到相關的http請求包,不用什麼專業軟體,甚至瀏覽器都能幫我們完成這個功能,拿到需要的http請求連接 。
http連接對於測試同學來說, 不論做功能、性能或是安全,都是非常重要的, 他過濾了前台的因素,讓測試同學直接能對後台進行交互。
以上是http連接的重要性,基本等於廢話,下面是正題。
客戶端安全測試,同樣需要拿到http的請求包,由於客戶端的前段限制繞過比較麻煩,那麼在做安全測試的過程中,直接拿到http的請求包顯得更外重要。
有如下方法可以拿到請求的http包:
1、在不配置代理的情況下,對Android客戶端(模擬器)的數據我們可以使用wireshark或者etherpeek等網路層抓包軟體抓取,模擬器本身的數據交互是通過電腦主機的網卡進行的,所以我們通過抓包軟體抓取主機網卡的數據包,經過過濾,便可得到模擬器客戶端中的數據包,類似這樣:
訪問之後,通過wireshark過濾http請求,便可找到我們剛剛發送的請求。
當然,這是種比較麻煩的方法,不過可以更確切的看到網路包發送的內容。
另一種辦法是對模擬器配置代理,讓所有請求包可以通過外部主機的七層抓包軟體,例如fiddler ,burpsuite等所捕獲到,配置代理需要先做一次設置:類似這樣:
進 入「設置」選項之後,按照圖示設置
這里proxy 設置為10.0.2.2是android模擬器對外部主機地址的硬編碼,埠設為8888是外部主機fiddler 的監聽地址,當然,如果是burpsuite 可以設置為8080。