Python渗透测试入门实战
字数 1273 2025-08-18 11:39:11

Python渗透测试入门实战教学文档

第一章 Python安全开发简介

1.1 课程概述

本课程专注于使用Python进行安全工具开发、漏洞POC编写、框架搭建和渗透测试工具开发。主要内容包括:

  • POC工具使用
  • 简单扫描器开发
  • Web安全工具编写
  • 漏洞利用程序开发

第二章 Python安全编程基础

2.1 Python正则表达式

正则表达式在安全领域的应用:

  • 日志分析
  • 数据提取
  • 模式匹配
  • 敏感信息检测

关键正则表达式语法:

  • \d 匹配数字
  • \w 匹配字母数字下划线
  • .* 贪婪匹配
  • .*? 非贪婪匹配
  • ^ 行首
  • $ 行尾
  • | 或操作

2.2 Python爬虫之request库

Requests库是HTTP请求的核心工具:

import requests

# GET请求
response = requests.get('http://example.com')

# POST请求
data = {'key': 'value'}
response = requests.post('http://example.com', data=data)

# 处理响应
print(response.status_code)
print(response.text)
print(response.headers)

安全相关功能:

  • 自定义User-Agent
  • 设置代理
  • 处理Cookie
  • SSL证书验证

第三章 Python爬虫实践

3.1 爬虫之初识BeautifulSoup

BeautifulSoup用于HTML解析:

from bs4 import BeautifulSoup
import requests

html = requests.get('http://example.com').text
soup = BeautifulSoup(html, 'html.parser')

# 查找元素
titles = soup.find_all('h1')
links = soup.find_all('a', href=True)

安全应用场景:

  • 网站目录结构分析
  • 敏感信息收集
  • 漏洞检测

3.2 exploitdb爬虫实战

开发exploitdb爬虫的关键步骤:

  1. 分析exploitdb网站结构
  2. 设计爬取策略
  3. 实现漏洞信息提取
  4. 存储结果

示例代码框架:

def crawl_exploitdb():
    base_url = "https://www.exploit-db.com/"
    session = requests.Session()
    
    # 登录/认证处理
    # 爬取漏洞列表
    # 解析漏洞详情
    # 存储到数据库或文件

第四章 Python网络编程实践

4.1 Socket通信原理

Python socket编程基础:

import socket

# 创建TCP socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接服务器
s.connect(('example.com', 80))

# 发送数据
s.send(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')

# 接收数据
data = s.recv(1024)

安全应用:

  • 自定义协议实现
  • 网络嗅探
  • 中间人攻击工具

4.2 实战端口扫描工具编写

端口扫描器实现要点:

def port_scan(target, port):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)
        result = s.connect_ex((target, port))
        if result == 0:
            print(f"Port {port} is open")
        s.close()
    except Exception as e:
        pass

# 多线程扫描实现
import threading
for port in range(1, 1024):
    thread = threading.Thread(target=port_scan, args=(target, port))
    thread.start()

优化方向:

  • 多线程/异步IO
  • 服务指纹识别
  • 扫描速度控制

第五章 Python实战Web安全工具

5.1 WEB目录扫描工具编写

目录扫描器核心功能:

def dir_scan(url, wordlist):
    with open(wordlist, 'r') as f:
        paths = f.readlines()
    
    for path in paths:
        path = path.strip()
        target = f"{url}/{path}"
        try:
            response = requests.get(target)
            if response.status_code == 200:
                print(f"Found: {target}")
        except:
            pass

增强功能:

  • 404页面识别
  • 递归扫描
  • 结果分类存储

5.2 SQL注入工具简单编写

SQL注入检测工具基础实现:

def sql_injection_test(url, param):
    test_payloads = [
        "'",
        '"',
        "' OR '1'='1",
        '" OR "1"="1'
    ]
    
    for payload in test_payloads:
        data = {param: payload}
        response = requests.get(url, params=data)
        if "error" in response.text.lower() or "syntax" in response.text.lower():
            print(f"Possible SQLi vulnerability with payload: {payload}")

高级功能:

  • 布尔型盲注检测
  • 时间型盲注检测
  • 自动化利用

5.3 指纹识别

Web应用指纹识别技术:

def fingerprint(url):
    # 检查特定文件
    checks = {
        'WordPress': '/wp-admin/',
        'Drupal': '/sites/default/',
        'Joomla': '/administrator/'
    }
    
    for app, path in checks.items():
        response = requests.get(url + path)
        if response.status_code == 200:
            print(f"Detected: {app}")

识别维度:

  • HTTP头信息
  • Cookie特征
  • 特定文件/目录
  • 页面内容特征

第六章 Python漏洞利用程序编写

6.1 Pocsute漏洞POC框架介绍

POC框架设计要点:

  1. 统一接口规范
  2. 模块化设计
  3. 结果报告系统
  4. 并发控制

示例POC类结构:

class BasePOC:
    def __init__(self):
        self.name = ""
        self.desc = ""
    
    def verify(self, target):
        raise NotImplementedError
        
    def exploit(self, target):
        raise NotImplementedError

class ExamplePOC(BasePOC):
    def __init__(self):
        super().__init__()
        self.name = "Example Vulnerability"
        
    def verify(self, target):
        # 验证逻辑
        pass

6.2 Python漏洞SQL注入模块编写

SQL注入POC开发步骤:

  1. 漏洞分析
  2. 构造检测payload
  3. 实现验证逻辑
  4. 错误处理
  5. 结果报告

示例实现:

class SQLiPOC(BasePOC):
    def __init__(self):
        super().__init__()
        self.name = "Generic SQL Injection"
        
    def verify(self, url, param):
        payload = f"{param}=1' AND 1=CONVERT(int,@@version)--"
        try:
            response = requests.get(url, params={param: payload})
            if "Conversion failed" in response.text:
                return True
        except:
            pass
        return False

适合人群

本课程适合以下安全专业人员:

  • 安全工程师
  • 安全运维工程师
  • 代码审计工程师
  • 信息安全专业技术人员

关键知识点总结

  1. Python在安全领域的四大应用方向:工具开发、POC编写、框架搭建、渗透测试
  2. 正则表达式在安全分析中的核心作用
  3. Requests库作为HTTP交互的基础工具
  4. BeautifulSoup在Web信息收集中的应用
  5. Socket编程实现网络工具开发
  6. 端口扫描器的多线程实现
  7. Web目录扫描和指纹识别技术
  8. SQL注入检测的原理与实现
  9. POC框架的设计理念
  10. 漏洞利用模块的开发方法
Python渗透测试入门实战教学文档 第一章 Python安全开发简介 1.1 课程概述 本课程专注于使用Python进行安全工具开发、漏洞POC编写、框架搭建和渗透测试工具开发。主要内容包括: POC工具使用 简单扫描器开发 Web安全工具编写 漏洞利用程序开发 第二章 Python安全编程基础 2.1 Python正则表达式 正则表达式在安全领域的应用: 日志分析 数据提取 模式匹配 敏感信息检测 关键正则表达式语法: \d 匹配数字 \w 匹配字母数字下划线 .* 贪婪匹配 .*? 非贪婪匹配 ^ 行首 $ 行尾 | 或操作 2.2 Python爬虫之request库 Requests库是HTTP请求的核心工具: 安全相关功能: 自定义User-Agent 设置代理 处理Cookie SSL证书验证 第三章 Python爬虫实践 3.1 爬虫之初识BeautifulSoup BeautifulSoup用于HTML解析: 安全应用场景: 网站目录结构分析 敏感信息收集 漏洞检测 3.2 exploitdb爬虫实战 开发exploitdb爬虫的关键步骤: 分析exploitdb网站结构 设计爬取策略 实现漏洞信息提取 存储结果 示例代码框架: 第四章 Python网络编程实践 4.1 Socket通信原理 Python socket编程基础: 安全应用: 自定义协议实现 网络嗅探 中间人攻击工具 4.2 实战端口扫描工具编写 端口扫描器实现要点: 优化方向: 多线程/异步IO 服务指纹识别 扫描速度控制 第五章 Python实战Web安全工具 5.1 WEB目录扫描工具编写 目录扫描器核心功能: 增强功能: 404页面识别 递归扫描 结果分类存储 5.2 SQL注入工具简单编写 SQL注入检测工具基础实现: 高级功能: 布尔型盲注检测 时间型盲注检测 自动化利用 5.3 指纹识别 Web应用指纹识别技术: 识别维度: HTTP头信息 Cookie特征 特定文件/目录 页面内容特征 第六章 Python漏洞利用程序编写 6.1 Pocsute漏洞POC框架介绍 POC框架设计要点: 统一接口规范 模块化设计 结果报告系统 并发控制 示例POC类结构: 6.2 Python漏洞SQL注入模块编写 SQL注入POC开发步骤: 漏洞分析 构造检测payload 实现验证逻辑 错误处理 结果报告 示例实现: 适合人群 本课程适合以下安全专业人员: 安全工程师 安全运维工程师 代码审计工程师 信息安全专业技术人员 关键知识点总结 Python在安全领域的四大应用方向:工具开发、POC编写、框架搭建、渗透测试 正则表达式在安全分析中的核心作用 Requests库作为HTTP交互的基础工具 BeautifulSoup在Web信息收集中的应用 Socket编程实现网络工具开发 端口扫描器的多线程实现 Web目录扫描和指纹识别技术 SQL注入检测的原理与实现 POC框架的设计理念 漏洞利用模块的开发方法