当前位置: 首页 > article >正文

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)

http://www.kler.cn/a/500726.html

相关文章:

  • 31_搭建Redis分片集群
  • HTML5实现好看的中秋节网页源码
  • 计算机视觉算法实战——打电话行为检测
  • Windows下Dll在Unity中使用的一般方式
  • 运维高级课作业一
  • MeCo——给预训练数据增加源信息,就能减少33%的训练量并且提升效果
  • MYSQL-创建数据库 CREATE DATABASE (十一)
  • 蠕虫病毒会给服务器造成哪些危害?
  • vue3后台系统动态路由实现
  • centos 搭建nginx+配置域名+windows访问
  • Vue 开发者的 React 实战指南:性能优化篇
  • 【Ubuntu与Linux操作系统:九、Shell编程】
  • Perl语言的编程范式
  • 简历整理YH
  • Django 社团管理系统的设计与实现
  • SpringBoot项目实战(39)--Beetl网页HTML文件中静态图片及CSS、JS文件的引用和展示
  • 如何在Go语言开发中实现高性能的分布式日志收集
  • 【微服务】面试 2、服务雪崩
  • 【网络】:网络编程套接字
  • 《机器学习》集成学习之随机森林
  • 双因素身份验证技术在NPI区域邮件安全管控上的解决思路
  • Java Web开发基础:HTML的深度解析与应用