漏洞挖掘过程中特殊情况下python基础库的使用
字数 1379 2025-08-23 18:31:18

Python基础库在受限环境下的漏洞挖掘技巧

前言

在渗透测试或漏洞挖掘过程中,经常会遇到可以在线运行代码但权限受限的平台。这些平台通常会对高危操作(如直接执行系统命令)进行限制。本文将详细介绍如何利用Python基础库在受限环境下实现文件读取、目录遍历、内网探测等操作,从而绕过限制进行漏洞挖掘。

文件读取技术

基本文件读取

在受限环境中,直接调用系统命令可能被禁止,但文件操作通常是被允许的。可以使用Python内置的open()函数读取系统文件:

file = open('/etc/passwd', 'r')
try:
    text = file.read()
    print(text)
finally:
    file.close()

这段代码可以成功读取/etc/passwd文件内容,获取系统用户信息。

安全注意事项

  • 使用try-finally确保文件句柄被正确关闭
  • 考虑使用with语句简化代码并自动处理文件关闭
with open('/etc/passwd', 'r') as file:
    print(file.read())

目录遍历技术

使用os.listdir()

要读取其他文件,首先需要知道目录结构。可以使用os.listdir()函数列出目录内容:

import os

def file_name_listdir(file_dir):
    for files in os.listdir(file_dir):
        print("files", files)

file_name_listdir("/")

功能说明

  • 可以列出指定目录下的所有文件和子目录
  • 适用于递归遍历整个文件系统
  • 可以配合文件读取功能获取敏感文件内容

内网探测技术

端口扫描实现

在受限环境中,虽然不能直接执行系统命令,但可以使用Python的socket库进行网络探测:

import socket
import ipaddress

def scan_port(host, port, timeout=1):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.settimeout(timeout)
    try:
        client_socket.connect((host, port))
        print(f"Port {port} is open on {host}")
        return True
    except socket.timeout:
        return False
    except socket.error:
        print(f"Port {port} on {host} is closed")
        return True
    finally:
        client_socket.close()

def port_scanner(target_network, target_ports, timeout=1):
    for ip in ipaddress.IPv4Network(target_network, strict=False):
        current_ip = str(ip)
        for port in target_ports:
            if not scan_port(current_ip, port, timeout):
                break

if __name__ == "__main__":
    target_network = "192.168.0.1/24"
    target_ports = range(1, 2)
    port_scanner(target_network, target_ports)

技术要点

  1. 主机存活探测

    • 通过尝试连接TCP端口判断主机是否存活
    • 即使端口关闭也说明主机存活(返回True)
    • 只有超时才认为主机不存活(返回False)
  2. 网络扫描优化

    • 使用ipaddress模块处理IP范围
    • 设置合理的超时时间提高扫描效率
    • 遇到超时立即跳过当前IP
  3. 端口扫描

    • 可以指定任意端口范围
    • 支持批量扫描整个网段

HTTP/HTTPS请求构造

基本HTTP请求

通过socket可以构造原始的HTTP请求:

import socket

def send_http_request():
    server_address = ('192.168.0.1', 80)
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        client_socket.connect(server_address)
        request_data = "GET / HTTP/1.1\r\nHost: 192.168.0.1\r\n\r\n"
        client_socket.sendall(request_data.encode())
        response_data = client_socket.recv(1024)
        print("Response from server:\n", response_data.decode())
    except Exception as e:
        print(f"Error: {e}")
    finally:
        client_socket.close()

HTTPS请求实现

使用ssl模块可以建立加密连接:

import socket
import ssl

def send_https_request():
    server_address = ('192.168.0.1', 443)
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        client_socket.connect(server_address)
        ssl_socket = ssl.wrap_socket(client_socket, ssl_version=ssl.PROTOCOL_TLS)
        request_data = "GET / HTTP/1.1\r\nHost: 192.168.0.1\r\n\r\n"
        ssl_socket.sendall(request_data.encode())
        response_data = ssl_socket.recv(1024)
        print("Response from server:\n", response_data.decode())
    except Exception as e:
        print(f"Error: {e}")
    finally:
        client_socket.close()

请求构造技巧

  1. 请求头构造

    • 必须包含Host头部
    • 每行以\r\n结束
    • 请求结束需要额外的\r\n
  2. 响应处理

    • 可以分多次接收大响应
    • 解码响应内容时注意字符编码
  3. 扩展功能

    • 可以构造POST请求提交数据
    • 可以设置自定义请求头
    • 可以处理Cookie和Session

综合应用场景

内网渗透流程

  1. 信息收集

    • 读取系统配置文件
    • 列出目录结构寻找敏感文件
  2. 内网探测

    • 扫描内网存活主机
    • 识别开放服务端口
  3. 服务利用

    • 对发现的服务构造特定请求
    • 尝试利用已知漏洞
  4. 横向移动

    • 获取凭证后尝试其他主机
    • 通过中间件进一步渗透

防御规避技巧

  1. 降低检测率

    • 增加操作间隔时间
    • 限制扫描范围和速度
    • 使用随机化参数
  2. 权限维持

    • 写入计划任务或启动项
    • 创建隐藏用户或后门
  3. 数据外传

    • 使用DNS或ICMP隧道
    • 分块传输敏感数据

防御建议

  1. 沙箱限制

    • 限制Python可用模块
    • 监控文件系统操作
    • 阻止原始套接字创建
  2. 网络防护

    • 实施严格的网络隔离
    • 监控异常内网连接
    • 限制出站连接
  3. 日志审计

    • 记录所有代码执行行为
    • 分析异常文件访问模式
    • 监控端口扫描行为

总结

在受限环境中,通过巧妙利用Python基础库可以实现:

  • 文件系统操作(读取、遍历)
  • 网络探测(主机发现、端口扫描)
  • 服务交互(HTTP/HTTPS请求)

这些技术组合使用可以绕过许多安全限制,进行有效的漏洞挖掘和内网渗透。防御方需要采取多层次的安全措施来防范此类攻击。

Python基础库在受限环境下的漏洞挖掘技巧 前言 在渗透测试或漏洞挖掘过程中,经常会遇到可以在线运行代码但权限受限的平台。这些平台通常会对高危操作(如直接执行系统命令)进行限制。本文将详细介绍如何利用Python基础库在受限环境下实现文件读取、目录遍历、内网探测等操作,从而绕过限制进行漏洞挖掘。 文件读取技术 基本文件读取 在受限环境中,直接调用系统命令可能被禁止,但文件操作通常是被允许的。可以使用Python内置的 open() 函数读取系统文件: 这段代码可以成功读取 /etc/passwd 文件内容,获取系统用户信息。 安全注意事项 使用 try-finally 确保文件句柄被正确关闭 考虑使用 with 语句简化代码并自动处理文件关闭 目录遍历技术 使用os.listdir() 要读取其他文件,首先需要知道目录结构。可以使用 os.listdir() 函数列出目录内容: 功能说明 可以列出指定目录下的所有文件和子目录 适用于递归遍历整个文件系统 可以配合文件读取功能获取敏感文件内容 内网探测技术 端口扫描实现 在受限环境中,虽然不能直接执行系统命令,但可以使用Python的 socket 库进行网络探测: 技术要点 主机存活探测 : 通过尝试连接TCP端口判断主机是否存活 即使端口关闭也说明主机存活(返回True) 只有超时才认为主机不存活(返回False) 网络扫描优化 : 使用 ipaddress 模块处理IP范围 设置合理的超时时间提高扫描效率 遇到超时立即跳过当前IP 端口扫描 : 可以指定任意端口范围 支持批量扫描整个网段 HTTP/HTTPS请求构造 基本HTTP请求 通过 socket 可以构造原始的HTTP请求: HTTPS请求实现 使用 ssl 模块可以建立加密连接: 请求构造技巧 请求头构造 : 必须包含 Host 头部 每行以 \r\n 结束 请求结束需要额外的 \r\n 响应处理 : 可以分多次接收大响应 解码响应内容时注意字符编码 扩展功能 : 可以构造POST请求提交数据 可以设置自定义请求头 可以处理Cookie和Session 综合应用场景 内网渗透流程 信息收集 : 读取系统配置文件 列出目录结构寻找敏感文件 内网探测 : 扫描内网存活主机 识别开放服务端口 服务利用 : 对发现的服务构造特定请求 尝试利用已知漏洞 横向移动 : 获取凭证后尝试其他主机 通过中间件进一步渗透 防御规避技巧 降低检测率 : 增加操作间隔时间 限制扫描范围和速度 使用随机化参数 权限维持 : 写入计划任务或启动项 创建隐藏用户或后门 数据外传 : 使用DNS或ICMP隧道 分块传输敏感数据 防御建议 沙箱限制 : 限制Python可用模块 监控文件系统操作 阻止原始套接字创建 网络防护 : 实施严格的网络隔离 监控异常内网连接 限制出站连接 日志审计 : 记录所有代码执行行为 分析异常文件访问模式 监控端口扫描行为 总结 在受限环境中,通过巧妙利用Python基础库可以实现: 文件系统操作(读取、遍历) 网络探测(主机发现、端口扫描) 服务交互(HTTP/HTTPS请求) 这些技术组合使用可以绕过许多安全限制,进行有效的漏洞挖掘和内网渗透。防御方需要采取多层次的安全措施来防范此类攻击。