ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

渗透测试常用书签整理:信息收集、漏洞整理与加密解密工作台

渗透测试常用书签整理:信息收集、漏洞整理与加密解密工作台 简介这份书签整理面向渗透测试初学者与安全从业者围绕信息收集、漏洞整理、渗透工具、加密解密四类高频场景把日常测试中反复用到的站点与工具入口集中收纳解决手动记录零散、检索效率低的问题。资源包共1个文件为单个html书签文件压缩后约3KB体量轻便导入浏览器即可直接使用无需额外安装或配置。目前已有255人学习下载说明其在安全学习圈中具备一定参考价值。书签按功能模块归类信息收集部分覆盖资产测绘与子域探测入口漏洞整理部分便于快速查阅漏洞库与公告渗透工具部分汇集常用测试平台加密解密部分则提供编码转换与加解密辅助站点整体结构清晰适合在授权测试与学习环境中按需取用帮助读者减少重复搜索、把精力集中在分析判断上。1. 渗透测试常用书签整理从信息收集到加密解密的浏览器工作台做渗透测试的人浏览器书签栏往往比本地工具目录还乱。信息收集阶段要开 Whois、DNS 查询、证书透明度、子域枚举、指纹识别漏洞整理阶段要翻 CVE、Exploit-DB、厂商公告、补丁对比渗透工具阶段要调在线编码、反弹 Shell 生成、Payload 混淆加密解密阶段还要做哈希识别、JWT 解析、Base64 多层嵌套还原。每次接新项目光找入口就耗掉半小时这就是把书签整理成体系的价值。这篇笔记讲的是如何把「渗透测试常用书签」做成一个可维护、可迁移、可协作的本地工作台而不是简单收藏一堆网址。它解决的是重复检索、入口分散、团队交接断层三个问题适合刚入行的渗透测试工程师、做 Windows 主机信息收集的运维安全人员以及正在跟 Kali Linux 渗透测试系列课程、需要把零散工具串成流程的学员。下面按信息收集、漏洞整理、渗透工具、加密解密四条线拆开讲每条线都给可抄的配置和踩过的坑。2. 信息收集类书签从域名到 Windows 主机指纹的入口编排信息收集是渗透测试里最容易被低估的环节。很多人一上来就掏扫描器结果目标资产都没摸清扫出来的结果全是噪音。书签整理的第一步是把信息收集拆成「被动收集」和「主动探测」两层被动层优先主动层控制频率。这样做的原因是被动查询不接触目标不会触发告警主动探测一旦并发过高轻则被封 IP重则被对方安全团队盯上。2.1 被动信息收集书签的四个分组我一般把被动收集书签分成四组每组对应一个浏览器文件夹命名统一用英文前缀加中文说明方便搜索。分组名用途典型入口类型01-DNS与域名Whois、DNS 历史、证书透明度域名注册信息、子域枚举02-IP与资产IP 归属、ASN、旁站查询反查同 IP 站点、C 段03-指纹与组件CMS 识别、中间件版本指纹库、组件特征04-泄露与历史公开泄露、网页快照历史页面、代码片段分组之后每个书签的标题不要只写网站名要写成「动作 对象 备注」。比如不要写「某 DNS 站」要写「DNS-查A记录-主域名」。这样在地址栏输入DNS就能过滤出整组比翻文件夹快得多。这个习惯是从 Kali Linux 渗透测试系列课程里学来的后来在实战中越用越顺手。2.2 用浏览器书签做子域枚举的最小工作流子域枚举是信息收集的核心动作。常见做法是先用证书透明度日志拿一批再用字典爆破补一批最后用 DNS 解析验证存活。书签在这里的作用不是替代工具而是把「查询入口」和「结果验证入口」放在同一屏。下面这段 Python 脚本用来把证书透明度日志返回的子域去重、排序并生成一个可直接导入浏览器书签的 HTML 文件。这样每次项目结束子域列表就沉淀成一份可复用的书签。import json import html # 假设从证书透明度日志接口拿到的原始数据已存为 crt_raw.json with open(crt_raw.json, r, encodingutf-8) as f: data json.load(f) subdomains set() for entry in data: # name_value 字段可能包含多个换行分隔的域名 for name in entry.get(name_value, ).split(\n): name name.strip().lower() if name and not name.startswith(*): subdomains.add(name) # 去重后排序保证书签顺序稳定 sorted_subs sorted(subdomains) # 生成 Netscape 书签格式可直接被 Chrome/Firefox 导入 lines [ !DOCTYPE NETSCAPE-Bookmark-file-1, META HTTP-EQUIVContent-Type CONTENTtext/html; charsetUTF-8, TITLEBookmarks/TITLE, H1Bookmarks/H1, DLp, DTH3子域枚举结果/H3, DLp, ] for sub in sorted_subs: # 每个子域生成一个书签URL 用 http 占位实际使用时替换协议 lines.append(f DTA HREFhttp://{html.escape(sub)}{html.escape(sub)}/A) lines.append( /DLp) lines.append(/DLp) with open(subdomains_bookmarks.html, w, encodingutf-8) as f: f.write(\n.join(lines)) print(f生成 {len(sorted_subs)} 条子域书签)逻辑说明脚本读取证书透明度日志的 JSON 结果提取name_value字段过滤通配符域名去重排序后输出 Netscape 书签格式。参数说明crt_raw.json是原始数据文件字段名name_value是常见证书日志接口的返回结构如果你的数据源字段不同改这一处即可。生成的subdomains_bookmarks.html在浏览器书签管理里选择「导入书签」就能用。提示导入前先确认子域数量超过两千条建议按主域拆成多个文件否则浏览器书签栏会卡。2.3 Windows 主机信息收集的书签清单Windows 主机信息收集是内网渗透的起点。书签在这里要覆盖三类入口系统信息查询、域信息查询、补丁与版本对照。常见做法是把这些入口按「命令 在线对照」配对比如本地跑systeminfo书签里放补丁编号对照页本地跑net user /domain书签里放域用户枚举说明页。我一般会建一个「Windows主机信息收集」文件夹里面放这些书签系统版本与补丁对照、域控识别特征、共享枚举说明、计划任务查询语法、注册表自启动位置。每个书签标题写成「Win-补丁对照-按KB查」这种格式。这样在内网里没法联网查资料时至少知道该记哪些字段出来之后按书签补查。3. 漏洞整理类书签把 CVE、Exploit-DB 和厂商公告串成一条线漏洞整理不是把 CVE 编号收藏起来就完事。真正有用的是「从组件版本到可利用漏洞」的快速映射。很多渗透测试实战里拿到一个中间件版本号能不能在五分钟内判断它有没有公开利用直接决定这次测试的深度。书签整理的目标就是压缩这五分钟。3.1 漏洞库书签的三层结构我把漏洞整理书签分成三层第一层是通用漏洞库第二层是厂商公告第三层是利用代码库。三层之间用命名前缀区分搜索时输入VULN出第一层输入VENDOR出第二层输入EXP出第三层。层级前缀用途更新频率通用漏洞库VULNCVE 详情、CVSS 评分每日厂商公告VENDOR官方补丁说明、影响版本按厂商利用代码库EXP公开 PoC、利用脚本每周这样分层的理由是通用漏洞库更新快但信息浅厂商公告信息准但分散利用代码库最接近实战但质量参差。三层对照才能判断一个漏洞是「理论存在」还是「真能打」。3.2 用脚本把 CVE 列表转成可检索书签手工整理 CVE 书签效率太低。下面这段 Python 脚本读取一份 CVE 编号列表生成带搜索链接的书签文件。每个书签指向通用漏洞库的搜索页标题里带上 CVE 编号和简短描述。import html # cve_list.txt 每行一个 CVE 编号可附带描述用逗号分隔 cve_entries [] with open(cve_list.txt, r, encodingutf-8) as f: for line in f: line line.strip() if not line: continue parts line.split(,, 1) cve_id parts[0].strip() desc parts[1].strip() if len(parts) 1 else cve_entries.append((cve_id, desc)) lines [ !DOCTYPE NETSCAPE-Bookmark-file-1, META HTTP-EQUIVContent-Type CONTENTtext/html; charsetUTF-8, TITLEBookmarks/TITLE, H1Bookmarks/H1, DLp, DTH3漏洞整理-CVE/H3, DLp, ] for cve_id, desc in cve_entries: # 搜索链接用通用查询参数实际使用时按需替换 url fhttps://example-cve-search.local/?q{cve_id} title f{cve_id} {desc}.strip() lines.append(f DTA HREF{html.escape(url)}{html.escape(title)}/A) lines.append( /DLp) lines.append(/DLp) with open(cve_bookmarks.html, w, encodingutf-8) as f: f.write(\n.join(lines)) print(f生成 {len(cve_entries)} 条 CVE 书签)逻辑说明脚本按行读取 CVE 列表逗号前是编号逗号后是描述生成 Netscape 书签格式。参数说明cve_list.txt每行格式为CVE-2024-XXXX,组件名 版本 简要描述url里的搜索地址按你实际使用的漏洞库替换不要照抄示例域名。生成的文件同样通过浏览器导入。注意CVE 编号和描述要人工核对一遍脚本只做格式转换不做事实校验。曾经有一次把测试用的假编号导进去结果实战时查了半天查不到血泪经验。3.3 厂商公告书签的维护节奏厂商公告书签最容易过期。我的做法是每月固定花二十分钟把常用厂商的安全公告页检查一遍失效的删掉改版的更新链接。书签标题里带上「最后核对日期」比如「VENDOR-某中间件公告-202501」。这样一眼就能看出哪些很久没维护。对于渗透测试工程师学习来说维护书签本身就是一种漏洞情报训练。你会在更新过程中发现某个组件最近公告变多这往往意味着它正在被集中研究实战中遇到就要多留个心眼。4. 渗透工具类书签在线工具与本地工具的衔接方式渗透工具书签的核心矛盾是在线工具方便但不可控本地工具可控但部署麻烦。书签整理要解决的是「什么时候用在线什么时候切本地」。我的原则是涉及目标敏感数据的操作一律本地纯格式转换和编码可以用在线。这条线划清楚能避免很多数据泄露风险。4.1 在线工具书签的分类与取舍在线工具我按功能分成四类编码转换、哈希处理、Payload 生成、网络查询。每类建一个文件夹标题前缀分别是TOOL-ENC、TOOL-HASH、TOOL-PAYLOAD、TOOL-NET。分类前缀可用场景禁用场景编码转换TOOL-ENC公开样本格式转换含目标数据的编码哈希处理TOOL-HASH算法识别、批量计算真实口令哈希Payload 生成TOOL-PAYLOAD学习语法、生成模板直接用于实战目标网络查询TOOL-NET公开 IP 归属查询内网 IP 查询这张表的用法是每次打开在线工具前先看它属于哪一类再对照禁用场景。如果操作内容落在禁用场景里就切本地工具。这个习惯看起来麻烦但能挡住大部分「手滑把数据贴到在线站」的事故。4.2 本地工具书签的启动协议本地工具有个痛点装了一堆用的时候想不起命令。我的做法是给每个常用本地工具建一个书签URL 用file://指向本地的速查笔记而不是指向工具本身。比如书签标题「TOOL-LOCAL-nmap速查」URL 指向本地 Markdown 文件。这样点开就是命令示例不用再翻文档。下面这段 Bash 脚本用来生成这类本地速查书签的 HTML 文件。它扫描一个笔记目录把每个.md文件转成一条书签。#!/bin/bash # 生成本地工具速查书签 NOTES_DIR$HOME/pentest-notes OUTPUT$HOME/tool_bookmarks.html cat $OUTPUT HEADER !DOCTYPE NETSCAPE-Bookmark-file-1 META HTTP-EQUIVContent-Type CONTENTtext/html; charsetUTF-8 TITLEBookmarks/TITLE H1Bookmarks/H1 DLp DTH3渗透工具-本地速查/H3 DLp HEADER # 遍历笔记目录只处理 .md 文件 find $NOTES_DIR -maxdepth 1 -name *.md | sort | while read -r file; do filename$(basename $file .md) # 标题用文件名URL 用 file:// 协议指向本地文件 echo DTA HREF\file://$file\TOOL-LOCAL-$filename/A $OUTPUT done cat $OUTPUT FOOTER /DLp /DLp FOOTER echo 生成完成$OUTPUT逻辑说明脚本先写入书签文件头然后遍历$HOME/pentest-notes下的 Markdown 文件每个文件生成一条file://书签最后写入文件尾。参数说明NOTES_DIR改成你自己的笔记目录maxdepth 1表示只扫描当前层不递归避免书签过多。生成的文件导入浏览器后点书签直接打开本地笔记。提示file://书签在部分浏览器里需要手动允许本地文件访问导入后先点一条测试。4.3 工具书签和 Kali Linux 渗透测试系列的配合如果你在跟 Kali Linux 高级渗透测试这类课程书签可以按课程模块建文件夹每个模块放「课程命令速查 对应在线文档 本地工具笔记」三条书签。这样学的时候一条线走下来不用在终端和浏览器之间反复切。我自己的习惯是每学完一个模块就把这个模块的书签整理一遍删掉不再用的补上实战中发现的入口。这个动作坚持下来书签栏就是一份个人化的渗透测试知识地图。5. 加密解密类书签哈希识别、JWT 解析与多层编码还原加密解密在渗透测试里出现的频率比想象中高。拿到一个哈希要判断算法拿到一个 Token 要解析结构拿到一串乱码要判断是不是多层 Base64。书签整理的目标是遇到编码数据时能在三十秒内找到对应的识别和还原入口。5.1 哈希识别书签的排列逻辑哈希识别书签按「长度 字符集」排列。因为判断哈希算法的第一步就是看长度和字符组成所以书签标题直接写成「HASH-32位十六进制」「HASH-40位十六进制」这种格式。搜索时输入HASH-32就能直接定位。长度字符集常见算法书签标题示例32十六进制MD5HASH-32位十六进制-MD540十六进制SHA1HASH-40位十六进制-SHA164十六进制SHA256HASH-64位十六进制-SHA256可变Base64多种HASH-Base64-先解码再判断这张表放在书签文件夹的说明里每次遇到哈希先对照。常见做法是先看长度再看字符集最后用在线识别工具确认。但要注意真实口令哈希不要贴到在线工具用本地脚本判断。5.2 JWT 解析与多层编码还原的书签工作流JWT 解析是加密解密里最高频的操作之一。书签要覆盖三步解析 Header、解析 Payload、验证签名算法。我一般放三条书签一条指向本地 JWT 解析脚本一条指向算法说明页一条指向签名验证注意事项。多层编码还原更考验书签组织。常见的是 Base64 套 Base64 再套 URL 编码。我的做法是建一个「ENC-多层还原」文件夹里面放本地还原脚本的书签和常见编码特征对照表。下面这段 Python 脚本用来递归还原多层 Base64 和 URL 编码。import base64 import urllib.parse import re def try_base64_decode(s): 尝试 Base64 解码失败返回 None try: # 补齐 padding padded s * (-len(s) % 4) decoded base64.b64decode(padded).decode(utf-8, errorsignore) # 只接受可打印字符占比高的结果 printable sum(1 for c in decoded if c.isprintable()) if printable / max(len(decoded), 1) 0.8: return decoded except Exception: pass return None def try_url_decode(s): 尝试 URL 解码无变化返回 None decoded urllib.parse.unquote(s) return decoded if decoded ! s else None def recursive_decode(s, max_depth5): 递归还原多层编码 for depth in range(max_depth): changed False b64 try_base64_decode(s) if b64: print(f[{depth}] Base64 解码 - {b64[:80]}) s b64 changed True url try_url_decode(s) if url: print(f[{depth}] URL 解码 - {url[:80]}) s url changed True if not changed: break return s # 示例多层嵌套的编码字符串 sample YUhSMGNITTZMeTl0WlhsdmJtVXVZMjl0 result recursive_decode(sample) print(最终结果, result)逻辑说明脚本定义了两个解码函数try_base64_decode做 Base64 解码并检查可打印字符比例try_url_decode做 URL 解码。recursive_decode循环调用两者直到没有变化或达到最大深度。参数说明max_depth控制递归层数默认 5 层防止死循环可打印字符比例阈值 0.8 是经验值太低会误判二进制数据。这个脚本适合处理实战中遇到的嵌套编码。注意递归解码时如果遇到压缩数据或加密数据脚本会停在那一层。这时候要人工判断是不是需要先解压或先找密钥不要硬套。5.3 加密解密书签的更新与验证加密解密领域的工具和算法相对稳定但网站会失效。我的做法是每季度验证一次书签可用性重点检查在线解析工具。验证方法是用一个已知的测试样本走一遍完整流程看每一步是否还能正常返回结果。这个习惯是从一次实战翻车里总结出来的——当时依赖的一个在线解析站突然改版导致现场卡了十分钟。6. 书签工作台的同步、备份与实战验证技巧书签整理到最后要解决的是「怎么不丢」和「怎么验证有用」。我见过太多人整理完书签换台机器就全没了或者整理完从来不用。这一章讲三个具体技巧同步方案的选择、备份文件的版本管理、以及用一次模拟演练验证书签工作台是否真的能提速。6.1 书签同步的三种方案对比同步方案没有绝对优劣看你的使用场景。下面这张表对比三种常见做法。方案优点缺点适用场景浏览器账号同步零配置、自动依赖账号、跨浏览器差个人单设备书签文件手动导入导出可控、可版本管理需手动操作多设备、团队自建书签服务完全可控、可协作需维护团队协作我一般用第二种加 Git 版本管理。把导出的书签 HTML 文件放进一个 Git 仓库每次整理完提交一次。这样既有历史记录又能随时回滚。团队协作时仓库共享每个人导入同一份文件入口就统一了。6.2 用 Git 管理书签备份文件具体操作是在浏览器里导出书签为 HTML放到仓库目录提交。下面是一段 Bash 脚本用来做每日自动备份和提交。#!/bin/bash # 书签每日备份脚本 BOOKMARK_SRC$HOME/bookmarks_export.html REPO_DIR$HOME/bookmark-repo # 检查源文件是否存在 if [ ! -f $BOOKMARK_SRC ]; then echo 未找到书签导出文件$BOOKMARK_SRC exit 1 fi # 复制到仓库目录按日期命名 cp $BOOKMARK_SRC $REPO_DIR/bookmarks_$(date %Y%m%d).html # 进入仓库提交 cd $REPO_DIR || exit 1 git add . git commit -m 书签备份 $(date %Y-%m-%d) || echo 无变更跳过提交 echo 备份完成逻辑说明脚本把浏览器导出的书签文件复制到 Git 仓库按日期命名然后提交。参数说明BOOKMARK_SRC是浏览器导出路径不同浏览器不同需要手动确认REPO_DIR是仓库目录。这个脚本可以加到定时任务里每天跑一次。提示书签文件里可能包含内网地址和项目名称提交到远程仓库前先确认仓库权限或者用本地仓库。6.3 用一次模拟演练验证书签工作台整理完书签怎么知道它有用我的方法是做一次模拟演练拿一个自己完全陌生的公开目标比如一个开源项目的官网只允许用书签里的入口记录从零到完成信息收集、漏洞初筛、编码识别的时间。如果时间比平时短说明书签有效如果某个环节卡住说明缺入口补上。这个演练我一般每季度做一次每次换一个目标类型。做过几次之后书签栏里留下的都是真正用过的入口那些「看起来有用但从来没用」的书签会被自然淘汰。这个习惯帮我省下了大量现场找入口的时间也让我对渗透测试实战的节奏更有把握。最后说一个我自己的教训书签整理最大的坑不是整理得不够全而是整理完不维护。我曾经花了一个周末整理了两百多条书签结果三个月没更新再用的时候一半链接失效。后来改成每月花二十分钟维护反而比一次性大整理更管用。希望帮到你。本文还有配套的精品资源点击获取
返回列表