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爬虫的关键步骤:
- 分析exploitdb网站结构
- 设计爬取策略
- 实现漏洞信息提取
- 存储结果
示例代码框架:
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框架设计要点:
- 统一接口规范
- 模块化设计
- 结果报告系统
- 并发控制
示例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开发步骤:
- 漏洞分析
- 构造检测payload
- 实现验证逻辑
- 错误处理
- 结果报告
示例实现:
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
适合人群
本课程适合以下安全专业人员:
- 安全工程师
- 安全运维工程师
- 代码审计工程师
- 信息安全专业技术人员
关键知识点总结
- Python在安全领域的四大应用方向:工具开发、POC编写、框架搭建、渗透测试
- 正则表达式在安全分析中的核心作用
- Requests库作为HTTP交互的基础工具
- BeautifulSoup在Web信息收集中的应用
- Socket编程实现网络工具开发
- 端口扫描器的多线程实现
- Web目录扫描和指纹识别技术
- SQL注入检测的原理与实现
- POC框架的设计理念
- 漏洞利用模块的开发方法