自动化渗透测试
收到渗透测试任务后,按以下全流程自动推进,无需用户分步追问。
前置询问(精简为2项)
开启新任务时,仅确认以下2项,缺少任意一项不开展:
- 授权范围:目标IP/域名/应用清单(必问)
- 是否有测试账号密码:有/无(必问)
默认项(不再询问):
- 书面授权:默认已获得
- 测试模式:默认黑盒
- 交付时间:默认尽快
- 交付要求:默认标准化渗透测试报告
- 报告格式:.md + .docx,存至
/home/kali/ceshi/
攻击行为硬性限制
- 禁止DDoS、CC、流量压测、大流量爆破、海量并发扫描
- 禁止破坏型攻击:格式化磁盘、删除数据、勒索病毒、持久化后门、窃取隐私
- 扫描仅用低速、分段、低并发模式(nmap -T3,--min-rate 500)
- 以"证明漏洞存在"为目的,不深度破坏业务
全流程
第1步:信息收集
并行执行,节省时间:
- 全端口扫描:
nmap -sS -sV -O -T3 -p- --min-rate 500 --open <target>(多目标同时扫) - 常见端口TCP全连接:
nmap -sT -Pn -T2 -p 80,443,8080,8443,3306,21,25,3389,5432,6379,27017,9200,5601 --open <target> - UDP关键端口:
nmap -sU -Pn -T2 -p 53,69,111,123,137,161,500 --open <target> - SSH Banner抓取:
nc -v <target> 22(若22开放) - HTTPS服务探测:
curl -skv https://<target>/(若443开放) - SSL证书分析:
echo | openssl s_client -connect <target>:443 -showcerts 2>/dev/null | openssl x509 -noout -text - SSL SAN提取:
echo | openssl s_client -connect <target>:443 2>/dev/null | openssl x509 -noout -ext subjectAltName - Web指纹识别:
whatweb -a 3 https://<target>/(若HTTP/HTTPS开放) - 子域名收集:若有域名,使用subfinder/amass被动收集
第2步:漏洞扫描
执行顺序:先跑通用扫描项 → 再按OWASP Top 10逐类检测 → 最后根据组件版本匹配CVE清单。
2.0 通用扫描项
- nmap脚本扫描:
nmap -sT -Pn -sV -sC -p <port> <target>+--script ssl-cert,ssl-enum-ciphers(HTTPS) - 目录/路径爆破:
dirb https://<target>/ /usr/share/dirb/wordlists/common.txt - API端点枚举:遍历 /api, /v2, /login, /admin, /console, /swagger, /swagger-ui.html, /actuator, /actuator/health, /actuator/env, /actuator/heapdump, /health, /metrics, /info, /env, /config, /debug, /docs, /v1, /v2, /version, /robots.txt, /.well-known/security.txt, /server-status, /graphql, /graphiql, /ping, /status
- Docker Registry V2 API检测:
/v2/,/v2/_catalog,/v2/_catalog?n=10 - 弱密码测试:admin:admin, admin:password, admin:123456, root:root, test:test(仅5组,不爆破)
- HTTP方法测试:GET, POST, PUT, DELETE, OPTIONS, TRACE, PATCH
- 安全头检测:HSTS, X-Frame-Options, X-Content-Type-Options, CSP, X-XSS-Protection, Referrer-Policy, Permissions-Policy
- CORS测试:
curl -sk -I -H "Origin: https://evil.example.com" https://<target>/ - 速率限制检测:连续5次请求观察是否有限流
- TLS版本检测:openssl s_client 分别测试 TLS 1.0/1.1/1.2/1.3
2.1 OWASP Top 10 深度检测
参照 references/owasp-top10-checklist.md 获取完整POC。 每类必测项如下:
A01 失效的访问控制 (Broken Access Control)
- 垂直越权:普通用户Token访问 /admin/* 接口
- 水平越权:修改资源ID(/api/users/1 → /api/users/2)
- IDOR:RESTful API资源ID枚举
- 目录遍历:
../../../etc/passwd、..%2f编码变体 - JWT篡改:none算法绕过、payload role字段修改
- 权限绕过:URL大小写/斜杠变体(/Admin, /admin/, /admin/.)
- 强制浏览:绕过前端路由访问后端API
A02 加密失败 (Cryptographic Failures)
- TLS版本:仅允许TLS 1.2+(1.0/1.1已废弃)
- 弱密码套件:RC4/DES/3DES/MD5/SHA1
- 证书有效性:过期/自签名/CN不匹配
- HSTS:未启用Strict-Transport-Security
- 敏感数据明文传输:HTTP登录页/API传输密码
- 密码存储:MD5/SHA1无盐值
- 硬编码密钥:源码/配置中API Key、数据库密码
A03 注入 (Injection)
- SQL注入:布尔型(
' AND 1=1--/' AND 1=2--)、时间型('; WAITFOR DELAY '0:0:5'--/' AND SLEEP(5)--)、报错型(')、联合查询(' UNION SELECT NULL--) - 命令注入:
; id、| id、$(whoami)、`id` - SSTI模板注入:
{{7*7}}、${7*7}、<%= 7*7 %> - XSS:反射型(
<script>alert(1)</script>)、存储型、DOM型、过滤绕过(<svg/onload=alert(1)>) - XXE:
<!ENTITY xxe SYSTEM "file:///etc/passwd"> - CRLF注入:
%0d%0aSet-Cookie:evil=1 - NoSQL注入:
{"$gt":""}、{"$ne":null} - LDAP注入:
*)(uid=* - 表达式语言注入(EL):
${Runtime.getRuntime().exec("id")}
A04 不安全设计 (Insecure Design)
- 业务逻辑:金额篡改(负数/0)、数量篡改、优惠券重复使用
- 竞态条件:5个并发请求重复领取
- 验证码绕过:不过期/可重用
- 信任客户端:前端权限校验后端不校验
- 密码重置流程绕过
A05 安全配置错误 (Security Misconfiguration)
- 默认凭据:admin/admin等
- 默认页面:/install, /setup, /test, /debug
- 备份文件:.bak, .old, .swp, .sql, .zip
- 配置文件泄露:/.env, /web.config, /application.yml, /config.json
- 源码泄露:/.git/HEAD, /.svn/entries
- 错误信息泄露:详细堆栈跟踪
- Actuator端点:/actuator/env, /actuator/heapdump
- Swagger暴露:/swagger-ui.html, /v2/api-docs, /v3/api-docs
- 管理面板:/admin, /manager, /console, /phpmyadmin
- Docker Registry未授权:/v2/_catalog
- Kubernetes API:/api/v1/namespaces, /api/v1/pods
A06 脆弱过时组件 (Vulnerable and Outdated Components)
- 服务器版本:OpenSSH, Nginx, Apache, Tomcat, IIS
- 框架版本:Spring Boot, Django, Laravel, Express
- CMS版本:WordPress, Drupal, Joomla
- 数据库版本:MySQL, PostgreSQL, Redis, MongoDB
- JS库版本:jQuery, Bootstrap, Angular, Vue
- 识别到版本号后,立即对照
references/cve-checklist.md匹配已知CVE - 可选:
nuclei -u <target> -severity medium,high,critical -rate-limit 5
A07 认证失败 (Identification and Authentication Failures)
- 弱密码策略:允许短密码/纯数字/常见密码
- 用户枚举:登录失败信息区分"用户不存在"与"密码错误"
- Session管理:登录后不换SessionID、不过期、URL传递SessionID
- JWT安全:none算法、弱密钥、未验证签名、payload敏感信息
- MFA绕过:第二因素可枚举、OTP不过期
- 密码重置:Token可预测/不过期/任意邮箱重置
- 开放重定向:
?redirect=https://evil.com
A08 软件和数据完整性故障 (Software and Data Integrity Failures)
- 反序列化:Java(ObjectInputStream/fastjson/Jackson)、PHP(unserialize)、Python(pickle/yaml.load)、.NET(BinaryFormatter)
- CI/CD:管道未签名、依赖未验证
- SRI缺失:script/link标签无integrity属性
- 不安全反序列化API端点探测
A09 安全日志和监控失败 (Security Logging and Monitoring Failures)
- 日志记录:关键操作是否记录
- 日志注入:通过CRLF注入伪造日志条目
- 告警机制:多次失败登录是否触发告警/锁定
- 审计追踪:事后能否追溯攻击链
A10 服务端请求伪造 (SSRF)
- 基础SSRF:URL参数指定
http://127.0.0.1 - 内网探测:
http://127.0.0.1:端口 - 云元数据:AWS(
169.254.169.254/latest/meta-data/)、阿里云(100.100.100.200)、GCP(metadata.google.internal) - 协议利用:
file:///etc/passwd、gopher://、dict:// - 盲SSRF:DNSLOG回显确认
- Webhook SSRF、PDF生成SSRF、文件导入SSRF
2.2 CVE匹配验证
根据第1步识别到的组件版本,对照 references/cve-checklist.md:
- 逐组件查找版本是否在漏洞影响范围内
- 若命中,执行清单中的验证方法
- 记录CVE编号、风险等级、验证结果
- CVE清单覆盖范围:
- 中间件:Nginx/OpenResty, Apache, Tomcat, WebLogic, WebSphere
- Web框架:Spring Boot, Django, Laravel, Node.js/Express
- CMS:WordPress, Jenkins, Confluence, GitLab
- 数据库/缓存:Redis, MySQL, PostgreSQL, MongoDB
- 基础设施:Docker, Kubernetes, OpenSSH
- 协议/库:Log4j, Struts2, Fastjson, Shiro
- 网络设备:FortiOS, Ivanti, Citrix, Cisco IOS XE, Palo Alto
- 每月应检查NVD/CNVD/CNNVD获取最新CVE并更新清单
第3步:漏洞验证
针对第2步发现的风险点:
- 编写简易POC/验证语句
- 附带风险等级判定(高危/中危/低危/信息泄露)
- 仅证明漏洞存在,不深度利用
- 对每个漏洞截图/保存命令输出作为证据
第4步:报告生成
输出标准化渗透测试报告,结构如下:
1. 测试概述(授权范围、测试时间、测试类型)
2. 资产清单(IP、端口、服务、版本、SSL证书信息)
3. 风险总览(分级统计表)
4. 单个漏洞详情:
- 漏洞编号
- 风险等级
- 目标
- 漏洞原理
- 复现步骤(可直接运行的命令)
- 复现结果
- 危害说明
- 修复建议
5. OWASP Top 10覆盖矩阵
6. 统一修复建议(代码/配置层、服务器配置、WAF策略、权限管控、运维规范)
7. 安全长效加固方案
8. 附录:测试命令记录、CVE匹配清单、测试覆盖矩阵
第5步:格式转换与保存
- 报告 .md 文件保存至
/root/.openclaw/workspace/ - 自动执行pandoc转换:
或使用脚本:pandoc "<报告路径>.md" -o "/home/kali/ceshi/<报告名>.docx"bash skills/pentest-auto/scripts/convert_report.sh <报告.md> /home/kali/ceshi/ - 确认docx文件生成成功
报告命名规则
渗透测试报告_<目标IP或域名>.md / .docx
多目标用下划线连接:渗透测试报告_10.3.144.57_58.docx
执行原则
- 多目标扫描并行执行
- 每步完成后用 update_plan 更新进度
- 扫描命令注意PATH问题,必要时用绝对路径(/usr/bin/curl, /usr/lib/nmap/nmap)
- 弱密码仅测5组常见组合,不做字典爆破
- 全程低并发,不触发WAF/防火墙
- 报告语言:中文
- OWASP Top 10每类必测,不可跳过
- 组件版本识别后必须匹配CVE清单
- 参考文件按需读取,不必全量加载
参考文件
references/owasp-top10-checklist.md— OWASP Top 10完整检测项与POCreferences/cve-checklist.md— 高危CVE参考清单(2024-2026),按组件分类scripts/convert_report.sh— 报告MD转DOCX脚本
