《Metasploit滲透測試魔鬼訓練營》等書已經對滲透測試的步驟流程劃分得比較合理透徹了,但感受在屢次通讀該類書藉以後仍總感受不得要領----要對一臺給定的主機進行滲透仍是不懂到底該如何着手。想來主要是存在如下兩個問題。php
第一個是在滲透操做系統時,最爲關鍵的從漏洞分析到滲透攻擊這一步很難跨越。由於按書中漏洞分析基本只有openvas等漏洞掃描器一條途徑,漏洞利用只有Metasploit搜索一條途徑;而漏洞掃描器掃出漏洞Metasploit中又正好有利用模塊更是少之又少。html
第二個是在滲透web系統時,仍是和其餘不少書藉同樣只講漏洞,而並不能很明確地指出面對一個web系統我怎麼知道在哪我應該檢測哪些漏洞。前端
本文一是確定和總結如今主流的滲透測試的步驟,二是拓展滲透操做系統時從漏洞分析到滲透攻擊的途徑,三是指出滲透web系統可採用「功能--功能對應檢測點」這種觸發式滲透方式。linux
另外可參考SecWiki安全思惟導圖:https://github.com/SecWiki/sec-chartgit
操做系統類漏洞通常都是大神們經過代碼審計/逆向分析挖掘的漏洞,這須要高深的知識儲備,對於通常的滲透而言利用已知漏洞便可,不用也不要本身去挖掘這類漏洞。而查找操做系統類漏洞關鍵的操做就是肯定端口後邊的軟件及軟件版本,而後得用獲得的軟件名+軟件版本到各漏洞庫去查找其存在的漏洞乃至exp。這裏不妨稱之爲「服務版本號漏洞檢索法」。github
好比假設咱們探測到8080端口爲tomcat監聽,版本號爲8.5.14web
http://www.cvedetails.com/version-search.phpsql
這樣咱們就找到了tomcat 8.5.14版本存在的幾個漏洞,後邊以CVE-2017-12617爲例shell
https://www.cvedetails.com/數據庫
http://cve.mitre.org/cve/search_cve_list.html
在上邊已經可看到CVE-2017-12617對應的exploit-db和metasploit中的exp連接
https://www.rapid7.com/db/modules/
https://www.exploit-db.com/search/
web系統也能夠利用現成的漏洞,如各種CMS的漏洞(好比ecshop)、各種插件的漏洞(好比wordpress的各種插件漏洞)、各種框架的漏洞(好比struts反序列化)、各種中間件漏洞(好比weblogic反序列化),這類漏洞在確認web系統使用了該CMS、該插件、該框架、該中間件以後和操做系統類漏洞同樣到各漏洞庫去找利用方式便可。web滲透更多地是本身去挖掘出其存在的漏洞。
web漏洞我個個喜歡分爲業務邏輯漏洞和技術型漏洞兩類,業務邏輯漏洞的定性是每套系統都有本身實現無統一的漏洞簽名沒法使用通用掃描器發現的漏洞,技術型漏洞的定性是因一致的實現或使用一致的第三方組件致使有相對統一的漏洞簽名可使用通用掃描器發現的漏洞(其實看下也沒分得那麼清還沒想得很清楚)。
不少教程都是東一榔頭西一棒槌講各種漏洞也講得挺清楚,但要去滲透時總感受一是給定一類漏洞不知道能夠去哪些位置找二是給定一個位置又不知道可能會存在哪些漏洞。結合本身的經驗我以爲能夠本身構建一個「功能----功能對應檢測點」的表,之後本身去滲透只要看到web系統有某個功能就去檢測其對應檢測點便可。這裏暫且稱之爲「功能觸發式檢測法」。
網站真實IP--站長、nslookup、dig、www.cz88.net、tcroute
操做系統--TTL、index.PHP、訪問不存在頁面
網站語言--index等一衆頁面的後綴、respone包頭
服務器--訪問不存在頁面、respone包頭、whatweb
數據庫--注入報錯、telnet端口
主機端口--Nmap、arp_swwep、portscan
子域名查詢--subdomain.chaxun.la
網站CMS--Power By、site+「CMS」;百度」xxx CMS漏洞「
攻擊面解析--awvs等爬蟲式發現頁面、御劍/dirb等暴破式發現隱藏頁面、若是是某種標準協議則查看協議查找隱藏接口或隱藏參數
階段 | 功能 | 功能對應檢測點 |
身份認證 | 用戶註冊 | 是否能夠重複註冊 |
身份認證 | 密碼修改 | 修改密碼邏輯是否有問題 |
身份認證 | 密碼重置 | 重置密碼邏輯是否有問題 |
身份認證 | 短信驗證碼 | 短信炸彈 |
身份認證 | 短信驗證碼 | 短信驗證碼是否可暴破 |
身份認證 | 圖片驗證碼 | 驗證碼是否可重複使用 |
身份認證 | 登陸 | 登陸邏輯是否有問題 |
身份認證 | 用戶憑證存儲 | 登陸憑證是否存在localStore或sessionStore中 |
會話管理 | 登陸 | 會話ID生成機制是否有問題 |
會話管理 | 登陸 | 是否有超時自動退出機制 |
會話管理 | 退出 | 退出後會話ID是否真的失效 |
訪問控制 | 用戶信息查看 | 是否能夠水平越權訪問其餘用戶頁面 |
訪問控制 | 具備管理員界面 | 是否能夠垂直越權訪問管理員頁面 |
訪問控制 | 具備管理員接口 | 普通用戶直接發包是否也會響應 |
業務邏輯 | 購買 | 修改價格後端是否會再次校驗 |
業務邏輯 | 多步功能 | 可否跳過其中某些步 |
業務邏輯 | 請求次數限制 | 服務端如何限制是否能夠繞過 |
業務邏輯 | 好友查詢類 | 查詢本身好友是否把好友的密碼等都返回來 |
功能 | 功能對應檢測點 | 測試基本代碼 | 相關工具 |
從數據庫讀取數據 | 是否存在sql注入 | and '1' ='1 | sqlmap |
用戶輸入被返回前端頁面 | 是否存在xss | <script>alert('1')</script> | awvs等 |
功能使用的是請求/響應模式 | 是否存在csrf | awvs等 | |
文件上傳 | 是否有文件類型、大小限制 | ||
文件下載 | 是否存在目錄遍歷 | ../etc/passwd | |
文件瀏覽 | 是否存在目錄遍歷 | ../etc/passwd | |
調用系統命令 | 是否存在命令注入 | ;cat /etc/passwd | |
重定向 | 是否存在重定向注入 | ||
參數 | 參數超長是否會致使溢出 | 01234567890123456789 | |
參數 | 參數有特殊字符是否會致使程序報錯 | ||
參數 | 參數缺失是否會致使程序報錯 |
原理:利用軟件的解析錯誤溢出執行裝於文件中的exp
browser_autopwd模塊構造網頁自勸溢出攻擊瀏覽器
ms10_087模塊配置生成畸型文件弄到靶機打開
adobe_cooltype_sing生成畸型pdf攻擊adobe
利用msfvenom生成各平臺的包含了payload的木馬
利用setoolkit製做鉤魚網站或有畸形文件的郵件
UitraISO+Hacksaw製做木馬啓動盤
拿着姓名/手機/郵箱等到各網站搜一圈看註冊信息
Airmom-ng假冒ap,並利用karma架設假冒服務
所謂後滲透就是拿到主機shell後,提權/清除日誌/增長更穩定後門/內網滲透等工做
Meterpreter能夠理解爲是windows的cmd,linux的shell
日誌--C:\Windows\System32\winevt\Logs、/var/log