安装 Sublist3r(需要先安装 Python):
在 Linux 系统中,通过命令克隆 Sublist3r 的代码仓库
git clone https://github.com/aboul3la/Sublist3r.git
进入 Sublist3r 目录后,使用命令安装所需的 Python 库
pip install -r requirements.txt
使用 Sublist3r 收集子域名:
运行命令(将example.com替换为目标域名)来收集子域名
python sublist3r.py -d example.com
代码实现方式(使用 Python 的 dnspython 库)
import dns.resolverdef subdomain_enumeration(domain):subdomains = []try:# 尝试查询域名的NS记录(名称服务器记录)answers = dns.resolver.resolve(domain, 'NS')for rdata in answers:nameserver = str(rdata.target)try:# 对于每个名称服务器,尝试查询A记录(主机地址记录)来获取子域名对应的IP地址subdomain_answers = dns.resolver.resolve(domain, 'A', raise_on_no_answer=False)for subdomain_rdata in subdomain_answers:subdomain = str(subdomain_rdata.address)subdomains.append(subdomain)except dns.resolver.NoAnswer:passexcept dns.resolver.NoNameservers:print("无法解析域名的名称服务器。")return subdomainsif __name__ == "__main__":domain = input("请输入要收集子域名的域名:")subdomains_found = subdomain_enumeration(domain)print("找到的子域名:")for subdomain in subdomains_found:print(subdomain)
端口扫描
使用工具方式(以 Nmap 为例)
安装 Nmap:
在大多数 Linux 发行版中,可以通过包管理器安装。例如,在 Ubuntu 中使用命令
sudo apt-get install nmap
在 CentOS 中使用
sudo yum install nmap
使用 Nmap 扫描端口:
运行(将example.com替换为目标主机名或 IP 地址)来扫描开放的端口并获取服务版本信息
nmap -p -sV -sS -T4 example.com
其中-p指定端口范围(如果不指定则扫描常用端口),-sV用于版本探测,-sS是 TCP SYN 扫描方式,-T4是扫描速度选项。
代码实现方式(使用 Python 的 socket 库)
import socket
import timedef port_scan(target, ports):print(f"正在扫描 {target} 的端口...")open_ports = []for port in ports:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(1)try:result = sock.connect_ex((target, port))if result == 0:open_ports.append(port)except socket.error:passfinally:sock.close()return open_portsif __name__ == "__main__":target = input("请输入要扫描端口的目标IP地址:")ports_to_scan = range(1, 1025) # 扫描1 - 1024端口start_time = time.time()open_ports_result = port_scan(target, ports_to_scan)end_time = time.time()print(f"扫描完成,耗时 {end_time - start_time} 秒。")print("开放的端口:")for port in open_ports_result:print(port)
Web 目录和文件枚举
使用工具方式(以 Dirb 为例)
安装 Dirb:
在 Ubuntu 中,可以使用命令安装
sudo apt-get install dirb
在 CentOS 中可以通过yum(如果有对应的软件源)或者从源码编译安装。
使用 Dirb 枚举目录和文件:
运行命令(将example.com替换为目标网站地址,后面的字典文件路径可以根据实际情况更换)来扫描网站的目录和文件。
dirb http://example.com /usr/share/dirb/wordlists/common.txt
代码实现方式(使用 Python 的 requests 库)
import requestsdef directory_enumeration(url, wordlist):print(f"正在枚举 {url} 的目录和文件...")found_directories = []for directory in wordlist:full_url = url + "/" + directorytry:response = requests.get(full_url)if response.status_code == 200:found_directories.append(directory)except requests.RequestException as e:print(f"请求 {full_url} 出错: {e}")continuereturn found_directoriesif __name__ == "__main__":target_url = input("请输入要枚举目录和文件的目标网站地址:")wordlist_file = input("请输入字典文件路径:")with open(wordlist_file, 'r') as f:wordlist = [line.strip() for line in f.readlines()]found_directories_result = directory_enumeration(target_url, wordlist)print("找到的目录和文件:")for directory in found_directories_result:print(directory)