漏洞挖掘與工具
1 人贊了文章
一、漏洞挖掘心理學
- 安全的木桶理論
找到最薄弱的那個點;
- 有一個漏洞的站點,很可能還會有更多的漏洞
開發人員的安全意識問題;
- 存在於一個站點的漏洞,還可能存在於其他站點
業務的代碼復用;
通用型漏洞(wordpress插件漏洞,Discuz 更新不及時);
- 修復了的漏洞不一定就全部修復完整了
指哪修哪;
繞過修復;
- 學會找掃描器掃不到/其他白帽子難發現的漏洞
需要深度交互/認證;
存儲XSS/CSRF/越權/邏輯漏洞;
- 挖掘漏洞的過程
通常需要先找到危險函數,然後回溯函數的調用過程,最終看在整個調用的過程中用戶是否有可能控制輸入;
- 繞waf的一般思路
1). 預處理利用:即設法繞過 WAF的輸入驗證,比如 HTTP頭( X-Originating-IP 、XForwarded-For 、X-Remote-IP 、 X-Remote-Addr)的處理,就曾多次被用於繞過公司WAF 的SQL 注入防護,或者 HTTP方法頭 GET/POST 的篡改、換行符的處理等等方式;
2). 致阻斷失配:利用前後端數據處理的差異,使得無法匹配到黑名單里的規則,通常結合一些參數污染、字元編碼、注釋符等多種方式繞過;
3). 規則集繞過:通過暴力枚舉出 WAF的攔截規則,或者逆向 WAF程序獲取規則,然後再設法繞過。
- 許可權與繞過思路
二、常用的瀏覽器插件(Firefox)
- Firebug
強大的網站調試工具,同時可以用來簡單抓包
- Tamper data
抓包修改功能
- Hackbar
手工測試SQL注入/XSS的利器,有編碼功能
- LiveHttpHeader
抓包工具,使用方便,常用於測試CSRF
三、常用的WEB安全工具
- AWVS
全能的Web安全漏洞掃描器,並附帶有很多實用的工具
如果電腦本身需要通過代理訪問外網,那麼也需要設置下 application settings--application updates 設置 proxy server
- NetSparker
對SQL注入,XSS,LFI等漏洞掃描效果不錯的漏洞掃描器
- BurpSuite
功能全面,個人常用於暴破,抓包,CSRF測試等等
需要設置瀏覽器代理為8080,才能捕獲數據包,抓取https 包需要瀏覽器訪問 http://burp 下載證書並導入。
有時電腦本身需要設置代理才能訪問外網,則需要設置 Burp options--connections--upstream proxy servers
- Layer
子域名/IP段收集,同時可過濾過出存活主機
- Fiddler
常用的抓包工具,有XSS自動化掃描插件
打開fiddle,默認會設置瀏覽器的代理為fiddle 監聽的8888埠,而fiddle 自己則從系統代理出口(也可以自己設置一個代理如 http=10.2.2.1:80)出去;需要設置一下才會攔截數據包,否則只是快照一下。
注意:pc 端軟體發出的http/https請求也會被捕獲,但私有協議(即應用層自定義包體)是抓不到的,可以用wireshark 抓到此類的包。
客戶端軟體發出的http/https請求有兩種情況。一種類似內嵌了一個瀏覽器來解析html、執行js事件等,比如一個功能點,進來的原始頁面(抓包)中可以搜到此功能點的一些關鍵字,往往就是以內嵌瀏覽器的方式執行js 來完成此功能,直接把入口頁面複製到瀏覽器訪問,然後console 搜索keyword。
另一種是客戶端直接請求的服務端cgi,這在進來的原始頁面(甚至沒有入口)是找不到功能點的關鍵字的。
- Sqlmap.py
資料庫注入神器
- owasp 漏洞掃描全集Vulnerability_Scanning_Tools
四、github安全類repo 收集子域名爆破
subDomainsBrute
Sublist3r
subbrute
altdns
wydomain
主機指紋,第三方應用發現
whatweb
bannerscan
wyportmap
wafw00f
目錄爆破,文件發現
dirsearch
OpenDoor
DirBuster
filebuster
敏感文件、信息泄漏
BBScan
GitHack
htpwdScan
Sreg
weakfilescan
GitPrey
弱口令掃描
F-Scrack
cupp
資料庫注入
sqli-hunter
源代碼審計(僅針對開發本身)
BadCode
cobraphpstan
Source_Code_Analysis_Tools源代碼審計(針對第三方庫依賴)
retire.js
OSSIndexDependencyCheckbundler-auditsecurity-checkerdawnscannerscancode-toolkit五、一些雜項
- 修復Firefox 的Live HTTP headers 無法 replay 的問題:
在firfox 地址欄輸入:about:support,然後進入配置文件夾
找到Live HTTP headers插件的目錄,我的在~/.mozilla/firefox/df0j3s9g.default/extensions/{8f8fe09b-0bd3-4470-bc1b-8cad42b8203a}/chrome,可以看到有livehttpheaders.jar這樣一個文件,用解壓工具打開,進入content 目錄,找到 LiveHTTPReplay.js,解壓此文件,並修改。大概在32行左右,修改:
document.getElementById("livehttpheaders.replay.headers").value = args[4];
替換為:
document.getElementById("livehttpheaders.replay.headers").value = args[4] + "If-Modified-Since: *
";
修改完成後,繼續用解壓工具打開剛才的 livehttpheaders.jar,將修改後的LiveHTTPReplay.js 替換 livehttpheaders.jar 里的 LiveHTTPReplay.js,由於文件被修改,導致 jar 簽名改變,高級版本的 firefox 會禁止載入 livehttpHeaders,對此可以 在Firefox 配置編輯器 (about:config 頁面)中,更改首選項 xpinstall.signatures.required 為 false 即可。完成後重啟 Firfox,replay 功能就可以使用了。
- 爬蟲
爬蟲最基本的功能就是從一個頁面進入,獲取到url,再進一步遞歸訪問此頁面的所有url,遞歸多少次可以稱為層數。
url基本存在形式:在本域以標籤形式嵌入/拼接、在本域內以事件類被調用、在外域被以事件類調用
手工正向查找(chrome):
進入某頁面,inspect 某標籤、查看某標籤綁定的事件(可以在 console search event keyword)
進入某頁面,觸發某些按鍵,觀察 Network 一欄發出的請求,注意看 refer 是否是當前頁面
進入某頁面,打開抓包軟體,觸發某些按鍵,觀察發出的請求
反向驗證查找與正向查找類似,但可以更便捷,進入某頁面,直接在 console search url keyword
對於完全沒有入口,沒有被調用,或者被調用時需要一些前置步驟的情況,爬蟲是沒辦法爬到此url 的。
在f12 出來的左側第二欄有個 toggle device toolbar 可以模擬客戶端訪問網頁的請求(即修改了user-agent等欄位),此時某些網站會跳到為手機客戶端訪問的網頁,如 http://fun.qq.com/m/ 或者 http://m.fun.qq.com 等形式。
- burpsuite 顯示界面亂碼問題
- 如果是中文亂碼的話,解決方法:options->display->font 調成微軟雅黑等中文字體就可以。
- linux下中文亂碼,沒有微軟xx字體,下載文泉驛字體,即可解決。
- js 調試
在瀏覽器(chrome)產生跳轉的情況下,第一次返回的內容可能看不到,這時候藉助抓包工具就能看到每次請求的返回情況,當然也可以在請求的瞬間按下ESC 鍵,停在第一次請求返回的頁面上,然後在 source 那裡設置下斷點,F5 刷新一下,就可以跟蹤調試了。preserve log 選中時有可能部分請求返回的數據沒有顯示出來。
console 左側有個豎立的省略號,點開有個search 功能很好用,可以查找到 source 裡面的關鍵詞,即當前頁面引用的所有js 文本都可以搜索到,對於查找ajax、事件類等才會拼接發起請求的 url 有很大幫助,同時觀察下Network 一欄發出的請求。
如果想自己本地改js 代碼調試,最好 ctrl+s 保存 Html 後瀏覽器打開文件進行調試。
注意:form action、Location header、js 中window.location.href 等最終請求時瀏覽器地址欄會變化;而 ajax 請求時地址欄不會變化,ajax 返回的數據一般比較少,往往只是一些狀態信息。
- 客戶端app 抓包
1).筆記本電腦和手機連的同個wifi,筆記本開著 burp 監聽 8888 埠,手機點擊連接的wifi,高級設置中設置代理為筆記本ip:8888,這樣手機的網路請求也會先通過 burp。
2).筆記本電腦自己使用獵豹wifi 等軟體開啟一個wifi,手機連接此wifi,且把代理設置為此wifiip:8888
同理,抓不到私有協議的包,抓取https的包需要手機訪問 http://筆記本ip:8888 導入證書,不同設備需要重新導入證書(一般在設置--安全選項),有些手機暫時不支持der 格式,只能識別cer 格式,使用火狐瀏覽器轉,導入並導出下 adb push 到手機目錄就可以了。
3). 在 android 手機上安裝 google chrome 瀏覽器,開啟 usb 調試選項,在 桌面版chrome 輸入 chrome://inspect/ 可以看到 列出來的設備如 Che2-UL00 #DU2WKN14BS004912,以及此設備通過谷歌瀏覽器正在訪問的網頁,點擊 inspect 就可以在電腦上調試手機訪問的頁面。
tips:下載app 時先不要掛代理,否則可能下不動。
- 外網代理掃描和埠掃描
網路設備就只有acl控制,沒有iptables類似的功能,不能把埠封掉,只能對ip做許可權控制。
網路做了acl控制,但是埠依然開放;nmap udp掃描會發個空udp包,如果響應icmp的回包,說明埠開放,所以做好控制,namp依然會掃出來。
影響:網路設備也存在被入侵的風險,黑客可能通過網路設備入侵到內網。
解決方法:
網路設備應當用獨立與nmap的高危埠掃描模塊,開發單獨模塊獨立掃描。
網路設備主要是udp協議掃描出來的,分為ntp和snmp服務;
a)ntp服務可用ntpdata命令執行檢測
b)snmp可用snmpwalk命令執行檢測
代理掃描:從外網ip 通過代理請求 內網web頁面,如果能夠獲取頁面內容說明代理能夠訪問內網,存在風險
推薦閱讀:
※NO.22 信息安全 求職 跳槽
※Sqli-Labs注入靶機實戰演練
※滲透測試神器之PowerShell入門必備
※Brainjacking:針對大腦移植體的致命攻擊,可黑掉一個人的大腦
※專業視角 | 利用態勢感知幫助組織「看見業務、看懂威脅、看透風險、輔助決策」