漏洞挖掘與工具

漏洞挖掘與工具

1 人贊了文章

一、漏洞挖掘心理學

  1. 安全的木桶理論

找到最薄弱的那個點;

  1. 有一個漏洞的站點,很可能還會有更多的漏洞

開發人員的安全意識問題;

  1. 存在於一個站點的漏洞,還可能存在於其他站點

業務的代碼復用;

通用型漏洞(wordpress插件漏洞,Discuz 更新不及時);

  1. 修復了的漏洞不一定就全部修復完整了

指哪修哪;

繞過修復;

  1. 學會找掃描器掃不到/其他白帽子難發現的漏洞

需要深度交互/認證;

存儲XSS/CSRF/越權/邏輯漏洞;

  1. 挖掘漏洞的過程

通常需要先找到危險函數,然後回溯函數的調用過程,最終看在整個調用的過程中用戶是否有可能控制輸入;

  1. 繞waf的一般思路

1). 預處理利用:即設法繞過 WAF的輸入驗證,比如 HTTP頭( X-Originating-IP 、XForwarded-For 、X-Remote-IP 、 X-Remote-Addr)的處理,就曾多次被用於繞過公司WAF 的SQL 注入防護,或者 HTTP方法頭 GET/POST 的篡改、換行符的處理等等方式;

2). 致阻斷失配:利用前後端數據處理的差異,使得無法匹配到黑名單里的規則,通常結合一些參數污染、字元編碼、注釋符等多種方式繞過;

3). 規則集繞過:通過暴力枚舉出 WAF的攔截規則,或者逆向 WAF程序獲取規則,然後再設法繞過。

  1. 許可權與繞過思路

二、常用的瀏覽器插件(Firefox)

  1. Firebug

強大的網站調試工具,同時可以用來簡單抓包

  1. Tamper data

抓包修改功能

  1. Hackbar

手工測試SQL注入/XSS的利器,有編碼功能

  1. LiveHttpHeader

抓包工具,使用方便,常用於測試CSRF

三、常用的WEB安全工具

  1. AWVS

全能的Web安全漏洞掃描器,並附帶有很多實用的工具

如果電腦本身需要通過代理訪問外網,那麼也需要設置下 application settings--application updates 設置 proxy server

  1. NetSparker

對SQL注入,XSS,LFI等漏洞掃描效果不錯的漏洞掃描器

  1. BurpSuite

功能全面,個人常用於暴破,抓包,CSRF測試等等

需要設置瀏覽器代理為8080,才能捕獲數據包,抓取https 包需要瀏覽器訪問 http://burp 下載證書並導入。

有時電腦本身需要設置代理才能訪問外網,則需要設置 Burp options--connections--upstream proxy servers

  1. Layer

子域名/IP段收集,同時可過濾過出存活主機

  1. Fiddler

常用的抓包工具,有XSS自動化掃描插件

打開fiddle,默認會設置瀏覽器的代理為fiddle 監聽的8888埠,而fiddle 自己則從系統代理出口(也可以自己設置一個代理如 http=10.2.2.1:80)出去;需要設置一下才會攔截數據包,否則只是快照一下。

注意:pc 端軟體發出的http/https請求也會被捕獲,但私有協議(即應用層自定義包體)是抓不到的,可以用wireshark 抓到此類的包。

客戶端軟體發出的http/https請求有兩種情況。一種類似內嵌了一個瀏覽器來解析html、執行js事件等,比如一個功能點,進來的原始頁面(抓包)中可以搜到此功能點的一些關鍵字,往往就是以內嵌瀏覽器的方式執行js 來完成此功能,直接把入口頁面複製到瀏覽器訪問,然後console 搜索keyword。

另一種是客戶端直接請求的服務端cgi,這在進來的原始頁面(甚至沒有入口)是找不到功能點的關鍵字的。

  1. Sqlmap.py

資料庫注入神器

  1. 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

cobra

phpstan

Source_Code_Analysis_Tools

源代碼審計(針對第三方庫依賴)

retire.js

OSSIndex

DependencyCheck

bundler-audit

security-checker

dawnscanner

scancode-toolkit

五、一些雜項

  1. 修復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 功能就可以使用了。

  1. 爬蟲

爬蟲最基本的功能就是從一個頁面進入,獲取到url,再進一步遞歸訪問此頁面的所有url,遞歸多少次可以稱為層數。

url基本存在形式:在本域以標籤形式嵌入/拼接、在本域內以事件類被調用、在外域被以事件類調用

手工正向查找(chrome):

進入某頁面,inspect 某標籤、查看某標籤綁定的事件(可以在 console search event keyword)

進入某頁面,觸發某些按鍵,觀察 Network 一欄發出的請求,注意看 refer 是否是當前頁面

進入某頁面,打開抓包軟體,觸發某些按鍵,觀察發出的請求

反向驗證查找與正向查找類似,但可以更便捷,進入某頁面,直接在 console search url keyword

對於完全沒有入口,沒有被調用,或者被調用時需要一些前置步驟的情況,爬蟲是沒辦法爬到此url 的。

在f12 出來的左側第二欄有個 toggle device toolbar 可以模擬客戶端訪問網頁的請求(即修改了user-agent等欄位),此時某些網站會跳到為手機客戶端訪問的網頁,如 fun.qq.com/m/ 或者 m.fun.qq.com 等形式。

  1. burpsuite 顯示界面亂碼問題
  • 如果是中文亂碼的話,解決方法:options->display->font 調成微軟雅黑等中文字體就可以。
  • linux下中文亂碼,沒有微軟xx字體,下載文泉驛字體,即可解決。
  1. 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 返回的數據一般比較少,往往只是一些狀態信息。

  1. 客戶端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 時先不要掛代理,否則可能下不動。

  1. 外網代理掃描和埠掃描

網路設備就只有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:針對大腦移植體的致命攻擊,可黑掉一個人的大腦
專業視角 | 利用態勢感知幫助組織「看見業務、看懂威脅、看透風險、輔助決策」

TAG:網路安全 | 漏洞挖掘 | 信息安全 |