1、前期偵查php
爲了減小和目標系統的交互(防止觸發報警),建議將目標站點鏡像一份到本地web
httrack(鏡像網站到本地) ====> 根據引導填入相關信息便可,使用很是簡單瀏覽器
2、掃描安全
掃描分兩種:一種是主動掃描,一種是截斷代理服務器
3、掃描工具cookie
* Nikto(弱點掃描,輸出結果所有爲弱點項)多線程
perl語言開發的開源web安全掃描器併發
掃描軟件版本分佈式
搜索存在安全隱患的文件(好比系統管理員將後臺代碼打包備份後忘了刪留在web目錄下的打包文件等可能泄露隱私的文件)工具
服務器配置漏洞
WEB Application層面的安全隱患
避免404誤判原理:Nikto會先隨機向目標請求若干類型的隨機確定不存在的文件,來獲取不一樣擴展名的文件404的真實返回內容,這樣在掃描時收到404後會和收集到的真實404庫進行對比,能匹配到則爲真404,不然爲假404
(注意:不少服務器不遵照RFC標準,對於不存在的對象也會返回200,)(能夠使用 -no404 參數關閉該功能)
使用說明:
nikto -host https://www.baidu.com ====> 常規掃描方法
nikto -host https://www.google.com -useproxy http://localhost:1080 ====> 代理掃描方法
在掃描的時候能夠輸入如下值來與Nikto交互:
空格 =返回當前掃描狀態
v -顯示掃描過程的詳細信息
d -顯示掃描過程的巨詳細信息
e -顯示錯誤信息
p -顯示進程信息
r -顯示重定向信息
c -顯示cookie信息
a -顯示認證信息
q -退出
N -下一臺主機
P -暫停
Nikto默認不支持自動輸入用戶名密碼登陸,想要掃描登陸後的頁面能夠使用cookie的方式。 修改配置文件裏的'#STATIC-COOKIE='能夠實現帶cookie掃描
例: STATIC-COOKIE="PHPSESSID"="3804689b6bbfe8729681b0b8d547b1d0";"security"="low"
配置文件路徑:
/etc/nikto.conf
* Vega
JAVA編寫的開源web掃描器
支持主動掃描和截斷代理
支持爬站、處理表單、注入測試
支持SSL:http://vega/ca.crt
。
。
。
* Skipfish(經測試此工具極其牛逼,才300多K能夠作到這個程度,google就是牛逼)
C語言編寫
google開發的實驗性的主動web安全評估工具
遞歸爬網
基於字典的探測
速度較快
多線程掃描
啓發式自動內容識別
誤報率低
用法:
Usage: skipfish [ options ... ] -W wordlist -o output_dir start_url [ start_url2 ... ]
例:
skipfish -o result http://172.20.163.44/dvwa/ ====>注意:默認不管指什麼路徑skipfish都會從根路徑開始掃
-I:只檢查包含'string'的URL
-X:不檢查包含'string'的URL
-K:不對指定參數進行Fuzz測試
-D:跨站點爬另一個域 ====>若是被掃描目標沒有連接鏈到另一個域名則不會主動去掃,默認爬到不是目標的域名不掃
-l:每秒最大請求數
-m:每一個IP最大併發鏈接數
--config:指定配置文件
skipfish -o result @存儲URL文件 ====> 能夠經過@方式讀取存放有待掃描URL文件來實現同時掃描多個目標
skipfish -o result -S complet.wl -W a.wl http://172.20.163.44 ====> 默認只掃描超連接能鏈接到的地方,能夠經過-W的方式加字典來爬取隱藏的目錄及文件
(能夠經過'dpkg -L skipfish | grep wl'查看wl字典文件路徑) (-W能夠自動補充字典,當碰到字典裏沒有的會寫入這個文件,供下次掃描使用)
身份認證:
1、提交表單
skipfish -o result --auth-form '須要密碼的URL' --auth-user '用戶名' --auth-pass '密碼' --auth-verify-url '登錄成功後的URL'
(注意:若是程序不能自動找到用戶名填寫位置則需手工添加'--auth-form-target 表單名稱'告訴程序具體是哪一個表單,
以及手工添加'--auth-user-field 表單中的位置'/'--auth-pass-fields 表單中的位置'告訴程序應該填在該表單的哪一個位置裏,
表單名稱以及表單位置經過F12後點擊表單位置便可在源代碼中看到)
舉例:
skipfish -o result112 --auth-form http://172.20.163.44/dvwa/login.php --auth-form-target http://172.20.163.44/dvwa/login.php
--auth-user-field username --auth-user admin --auth-pass-field password --auth-pass password --auth-verify-url http://172.20.163.44/dvwa/index.php -I dvwa http://172.20.163.44/dvwa/
(注意:不知爲啥表單名稱和登錄URL同樣,表單名稱提取自"<form action='login.php' method='post'>==$0"中的'login.php',姑且認爲表單名就是路徑+action的值吧)
2、cookie登錄
skipfish -C 'cookie' -o test http://172.20.163.44 ===> cookie有多個值時要用多個'-C'來填充
舉例:
skipfish -o bb -I dvwa -C "PHPSESSID=3804689b6bbfe8729681b0b8d547b1d0" -C "security=low" http://172.20.163.44/dvwa/
* Arachni(支持分佈式掃描,感受很是產品化的一個東西,特別適合企業使用)
特色:能夠向其餘主機安裝agent,實現統一管理、分佈式掃描,安裝簡單
安裝:
http://www.arachni-scanner.com/download/
解壓出來後在該文件夾下的bin目錄裏執行arachni_web便可開啓web端口
agent運行命令: ./arachni_rpcd --address=服務器IP --port=本地監聽端口 --nickname=test1
agent分組運行命令: ./arachni_rpcd --address=服務器IP --neighour=你要和誰在一組就寫誰的IP:PORT,第一個agent確定是以單個形式註冊的,剩餘的纔是和第一個建組 --nickname=test2
小技巧:php由於是服務端腳本語言,因此它的代碼不會在瀏覽器被執行,要想打印出php腳本代碼,只需在路徑後加上'?-s'便可
例:http://172.20.163.44/dvwa/login.php?-s