Linux web资产收集
安装 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.resolver
def 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:
pass
except dns.resolver.NoNameservers:
print("无法解析域名的名称服务器。")
return subdomains
if __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 time
def 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:
pass
finally:
sock.close()
return open_ports
if __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 requests
def directory_enumeration(url, wordlist):
print(f"正在枚举 {url} 的目录和文件...")
found_directories = []
for directory in wordlist:
full_url = url + "/" + directory
try:
response = requests.get(full_url)
if response.status_code == 200:
found_directories.append(directory)
except requests.RequestException as e:
print(f"请求 {full_url} 出错: {e}")
continue
return found_directories
if __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)