身為一位資深技術工作者,我經常需要評估各種網路安全工具。今天,我想分享我對 ProjectDiscovery 的 Nuclei 和 Katana 的深入研究,並展示如何結合 Bash 指令碼,開發更強大的網頁安全測試流程。
Nuclei:精準鎖定已知漏洞
Nuclei 是一款功能強大的漏洞掃描器,它利用範本比對快速識別目標系統中的已知漏洞和錯誤組態。它也支援模糊測試,可挖掘 XSS 和 SQL 注入等常見漏洞。
以下流程圖説明 Nuclei 的掃描流程:
graph LR A[設定目標] --> B{選擇範本}; B -- 已知漏洞 --> C[漏洞掃描]; B -- 模糊測試 --> D[模糊測試]; C --> E[輸出結果]; D --> E;
實際操作範例:
nuclei -u target.com -t vulnerabilities/
-u
指定目標網址 target.com
,-t
指定漏洞範本目錄 vulnerabilities/
。Nuclei 會根據範本掃描目標並輸出結果。我個人偏好將常用的範本整理成一個目錄,方便快速呼叫。
Katana:網頁應用程式爬蟲利器
Katana 是一款專為網頁應用程式設計的爬蟲工具,能有效爬取網站並列印所有發現的 URL。
katana -u target.com
-u
指定目標網址 target.com
。Katana 會自動爬取網站並輸出所有找到的 URL。這對於後續的深度測試非常有用。
Bash 管道:串聯工具,效率倍增
Bash 的管道功能可以串聯多個命令,實作更複雜的功能。以下是如何結合 Katana 和 Nuclei 進行更全面的網頁安全測試:
katana -u target.com | nuclei -t fuzzing/
Katana 爬取 target.com
後,將 URL 列表透過管道傳遞給 Nuclei。Nuclei 使用模糊測試範本掃描每個 URL,找出潛在漏洞。這個組合技讓我能快速發現目標網站的潛在風險。
使用者代理設定:避免被封鎖
設定使用者代理可以避免被目標網站封鎖。
katana -u target.com -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
-H
增加自定義 User-Agent
標頭。我通常會使用一些常見的瀏覽器 User-Agent,以避免被識別為爬蟲。
結合其他工具:擴充套件測試範圍
Bash 管道可以與其他工具結合,例如 httpx 和 dirsearch。
echo 10.2.10.1 | naabu -silent -p 4712,5005,5555,8080,8090,8111 | httpx -silent | dirsearch --stdin --full-url -q -o dirsearch.csv --format=csv
naabu
掃描指定 IP 和連線埠,httpx
驗證可存取的 URL,dirsearch
進行目錄爆破,結果儲存到 CSV 檔案。這是我常用的組合,可以快速發現目標伺服器上的隱藏目錄。
Awk 過濾:精準篩選結果
awk
可以根據特定條件篩選資料。
awk -F',' '$2 == 200 || $2 == 302 {print $0}' dirsearch.csv
以逗號為分隔符,篩選出 HTTP 狀態碼為 200 或 302 的 URL。這可以幫助我快速找到有效的網頁連結。
善用 Nuclei、Katana 和 Bash 的技巧,能有效提升網頁安全測試的效率和覆寫範圍。在我的實務經驗中,這些工具和技巧幫助我發現許多潛在的網路安全問題。
Bash 資料處理技巧視覺化
為了更清晰地展現 Bash 資料處理流程,我製作了以下
graph LR A[資料輸入] --> B{壓縮}; B -- gzip --> C[壓縮檔案]; A --> D{加密}; D -- openssl --> E[加密檔案]; A --> F{編碼}; F -- HTML 編碼 --> G[編碼資料];
圖表説明:此圖表展示了 Bash 中常用的資料處理流程,包含壓縮、加密和編碼。
透過這些技巧,即使在資源有限的環境下,也能有效處理各種資料格式,提升滲透測試效率。
身為一個資深滲透測試工作者,我經常需要在各種網路環境中快速與有效地找出系統漏洞。我的秘訣就在於巧妙結合 Bash、Nmap 和 Masscan 等工具,開發一套高效的滲透測試流程。以下,我將分享我的實戰經驗,帶您逐步掌握這些關鍵技巧。
善用 tmux 開發高效滲透測試環境
在開始實際操作之前,先來看看 tmux 這個不可或缺的工具。它可以讓您在 SSH 連線中斷時,仍能保持工作會話和程式的持續執行,這對於遠端滲透測試至關重要。
建立 tmux session 非常簡單:tmux new -s [session name]
。如果您與他人共用系統,建議設定名稱以示區分。
tmux 主要透過快捷鍵操作,預設字首鍵為 Ctrl + b
。例如,Ctrl + b
+ d
可從 session detach,之後使用 tmux a -t [session name]
重新連線。其他常用快捷鍵包括:
Ctrl + b
+c
:建立新視窗Ctrl + b
+,
:重新命名視窗Ctrl + b
+n
:切換到下一個視窗Ctrl + b
+[window number]
:切換到指定視窗
graph LR A[tmux session] --> B(視窗 1*) A --> C(視窗 2)
圖表説明: 這個圖表展示了一個 tmux session,包含兩個視窗,其中視窗 1 為當前活動視窗。
Nmap 基礎掃描技巧
Bash 雖然可以進行基本的連線埠掃描,但在專業的網路滲透測試中,Nmap 才是首選工具。以下是最基本的 Nmap 掃描指令:
nmap 10.2.10.0/24
這個指令使用 TCP connect scan (-sT
) 掃描 10.2.10.0/24 網段的常用連線埠,不執行服務版本偵測。
若要掃描 UDP ports,則需加上 -sU
引數:
sudo nmap -sU 10.2.10.0/24
這個指令與前一個指令類別似,但改為掃描 UDP ports。UDP 掃描通常需要 root 許可權。
為了取得更詳細的資訊,我建議使用 -sV
取得服務版本資訊,-sC
執行預設 Nmap 指令碼,以及 -oA
將結果儲存到檔案中。
Masscan 快速掃描技術
Masscan 是一款以速度著稱的連線埠掃描器,可在短時間內掃描大範圍的網路。雖然 Nmap 功能更豐富,但 Masscan 在速度方面更具優勢。
以下是一個 Masscan 基本掃描範例:
masscan 10.0.0.0/8 -p80,443
這個指令掃描 10.0.0.0/8 網段的 80 和 443 連線埠。
在大型網路中,我經常使用 Masscan 快速找出活躍主機,再將結果提供給 Nmap 等工具進行更深入的掃描。
sudo masscan -p 22,445 --open -oL masscan.lst -iL target_ips.txt --rate=5000
這個指令掃描 target_ips.txt
檔案中指定的網段,檢查 22 和 445 連線埠是否開放,並將結果以列表格式儲存到 masscan.lst
。--rate=5000
設定每秒傳送 5,000 個 TCP SYN 封包,需要根據網路環境調整。
Bash 處理掃描結果
Masscan 的輸出結果通常需要進一步處理才能有效利用。以下指令可從 masscan.lst
中篩選出活躍主機的 IP 位址:
awk '$1 == "open" { print $4 }' masscan.lst | sort -uV > livehosts.txt
這個指令使用 awk
篩選 masscan.lst
檔案中第一欄為 “open” 的行,並印出第四欄(IP 位址)。接著使用 sort -uV
去除重複 IP 並依版本號排序,最後將結果儲存到 livehosts.txt
。
tee 命令記錄終端機活動
我習慣使用 tee
命令記錄每個終端機指令的輸出,方便日後查閲和分析。
nmap -p- 192.168.1.1 | tee logs/nmap-full-scan-192.168.1.1.log
這個指令執行 Nmap 掃描,並將輸出同時顯示在終端機和儲存到指定的日誌檔案中。
要附加到現有檔案,請使用 tee -a
選項。
本文分享了我常用的 Bash、Nmap 和 Masscan 滲透測試技巧,希望能幫助您提升效率,更有效地發現目標系統的弱點。熟練運用這些工具和技巧,將使您在滲透測試領域更加得心應手。
graph LR A[Bash] --> B{Nmap} A --> C{Masscan} B --> D(掃描結果) C --> D D --> E[後續分析]
圖表説明: 這個圖表展示了 Bash、Nmap 和 Masscan 在滲透測試流程中的關係。Bash 作為協調中心,控制 Nmap 和 Masscan 進行掃描,並將掃描結果用於後續分析。
在網路安全領域,SMB(伺服器訊息區塊)協定的安全性一直備受關注。SMB空會話漏洞是一種常見與危險的漏洞,允許攻擊者在未經授權的情況下存取敏感資訊。本文將探討SMB空會話漏洞的原理和利用方式,並結合netexec
工具進行實際操作演練。
首先,我們利用SMB空會話列舉SMB分享。以下指令碼示範如何使用netexec
工具達成此目的:
netexec smb 10.2.10.0/24 -u a -p '' --shares
netexec smb
: 指示netexec
使用SMB協定。10.2.10.0/24
: 目標網路範圍。-u a -p ''
: 使用任意使用者名稱a
和空密碼。--shares
: 指定列舉SMB分享。
graph LR A[netexec smb] --> B(目標網路); B --> C[指定使用者名稱和空密碼]; C --> D{列舉SMB分享};
此流程圖簡潔地呈現了netexec
指令碼的執行流程,從指定SMB協定到列舉分享。
透過分析指令碼輸出,我們可以識別具有讀寫許可權的分享資料夾。我個人的經驗是,連線到這些分享資料夾往往能發現敏感資訊,例如包含密碼的檔案。
接下來,我們嘗試利用SMB空會話列舉使用者。執行以下指令碼:
netexec smb 10.2.10.0/24 -u a -p '' --users
此指令碼與前一個指令碼的主要差異在於將--shares
替換為--users
,從而實作列舉使用者的功能。
如果列舉使用者失敗,可以嘗試使用空使用者名稱再次執行指令碼:
netexec smb 10.2.10.0/24 -u '' -p '' --users
這裡使用空使用者名稱和空密碼嘗試連線。
為什麼指定無效使用者名稱的兩種方法會有不同的結果?這與netexec
工具所使用的函式庫驗證Microsoft Windows SMB分享的機制有關。
利用列舉出的使用者名稱,我們可以進一步使用netexec
進行密碼噴灑攻擊。然而,在某些情況下,我們甚至不需要進行密碼噴灑。仔細檢查使用者描述欄位,有時會意外發現洩露的使用者密碼。許多系統管理員往往忽略了空會話和非特權使用者也能存取這些資訊的風險。
最後,我們使用netexec
驗證獲得的憑證:
netexec smb 10.2.10.0/24 -u samwell.tarly -p 'P@$$wOrd'
此指令碼使用已知的使用者名稱和密碼嘗試連線目標系統,驗證憑證的有效性。 總而言之,SMB空會話漏洞是一個不容忽視的安全風險。透過瞭解其原理和利用方式,我們可以更好地防範此類別攻擊,保障系統安全。