��_�. Burp Suite 规则:自动识别并标记伪静态 ⻚面(Passive Scanner) Burp Suite 规则:自动识别并标记伪静态⻚面 (Passive Scanner) 用途:在 Burp Proxy / Spider 过程中,自动检测 .html ⻚面是否为伪静态,并高亮提醒 标签: #BurpSuite #伪静态 #自动化 #信息收集 关联笔记:[[13_0.静态、伪静态、动态网站:一眼识别,避免渗透误判]][[13_1.📝 补充笔记 1:伪静态 网站自动识别脚本(Python)]] 🧠 原理说明 通过 被动扫描(Passive Scan) 检查 HTTP 响应: ● URL 以 .html 结尾 但响应中包含 CMS 特征 或 动态行为痕迹 → 自动添加 Issue:“疑似伪静态网站(实际为动态系 ● 统)” ⚙ 配置步骤(使用 Burp Suite BApp Store 或自定义) 方法一:使用现成 BApp(推荐)
- 打开 Burp → BApp Store
- 搜索关键词: CMS Detector 、 Technology Detection
- 安装如: Wappalyzer(识别前端/后端技术栈) ○ Software Vulnerability Scanner ○
- 这些插件会自动标记 WordPress、Z-Blog 等,即使 URL 是 .html 360
方法二:自定义 Passive Scanner Rule(高级) 路径: Dashboard → Options → Extensions → Add (Python) 使用以下脚本逻辑(需 Jython 环境): python 编辑 361
1 # burp_pseudo_static_detector.py 2 from burp import IBurpExtender, IScannerCheck, IScanIssue 3 from java.net import URL 4 5 class BurpExtender(IBurpExtender, IScannerCheck): 6 def registerExtenderCallbacks(self, callbacks): 7 self._callbacks = callbacks 8 self._helpers = callbacks.getHelpers() 9 callbacks.setExtensionName(“Pseudo-Static Detector”) 10 callbacks.registerScannerCheck(self) 11 12 def doPassiveScan(self, baseRequestResponse): 13 url = baseRequestResponse.getHttpService().toString() 14 request_info = self._helpers.analyzeRequest(baseRequestResponse) 15 response_info = self._helpers.analyzeResponse(baseRequestResponse. getResponse()) 16 response_body = baseRequestResponse.getResponse()[response_info.ge tBodyOffset():].tostring() 17 18 # 判断是否 .html 结尾 19 if not url.lower().endswith(‘.html’): 20 return None 21 22 # 检查是否含 CMS 特征 23 cms_keywords = [ 24 ‘zblog’, ‘wordpress’, ‘dedecms’, ‘thinkphp’, 25 ‘/zb_system/’, ‘wp-login.php’, ‘Powered by’ 26 ] 27 if any(kw in response_body.lower() for kw in cms_keywords): 28 issue = CustomScanIssue( 29 baseRequestResponse.getHttpService(), 30 request_info.getUrl(), 31 [baseRequestResponse], 32 “疑似伪静态网站”, 33 “该 .html ⻚面包含 CMS 特征,实际为动态系统,可能存在后台或漏 洞。”, 34 “Medium” 35 ) 36 return [issue] 37 return None 38 39 def doActiveScan(self, baseRequestResponse, insertionPoint): return No ne 40 def consolidateDuplicateIssues(self, existingIssue, newIssue): return -1 41 42 class CustomScanIssue(IScanIssue): 362
43 def init(self, httpService, url, httpMessages, name, detail, sever ity): 44 self._httpService = httpService 45 self._url = url 46 self._httpMessages = httpMessages 47 self._name = name 48 self._detail = detail 49 self._severity = severity 50 51 def getUrl(self): return self._url 52 def getIssueName(self): return self._name 53 def getIssueType(self): return 0 54 def getSeverity(self): return self._severity 55 def getConfidence(self): return “Certain” 56 def getIssueBackground(self): return None 57 def getRemediationBackground(self): return None 58 def getIssueDetail(self): return self._detail 59 def getRemediationDetail(self): return None 60 def getHttpMessages(self): return self._httpMessages 61 def getHttpService(self): return self._httpService 💡 效果:在 Target / Site map 中,伪静态⻚面会显示⻩色警告图标! ✅ 使用建议 在项目初期开启此规则,避免遗漏高价值目标 ● 结合 手动验证:点击 Issue 查看具体特征 ● 📝 补充笔记 4:Nuclei 识别模板 —— 批量检测伪静态 CMS Nuclei 模板:快速识别伪静态网站背后的 CMS 系统 用途:对大量目标批量检测是否为伪静态 + 识别具体 CMS 类型 标签: #Nuclei #伪静态 #CMS识别 #自动化渗透 关联笔记:[[静态、伪静态、动态网站:一眼识别,避免渗透误判]] 363
🧩 模板原理 Nuclei 通过发送请求并匹配 响应中的指纹特征,即使 URL 是 .html ,也能识别出背后的真实 CMS。 📄 自定义 Nuclei 模板(保存为 ) pseudo-static-cms-detect.yaml yaml 编辑 364
1 id: pseudo-static-cms-detect 2 3 info: 4 name: Pseudo-Static CMS Detector 5 author: yourname 6 severity: info 7 description: Detect if a .html page is actually a dynamic CMS (pseudo-st atic) 8 tags: cms, pseudo-static, fingerprint 9 10 requests: 11 - method: GET 12 path: 13 - “{{BaseURL}}” 14 15 matchers-condition: and 16 matchers: 17 - type: word 18 part: url 19 words: 20 - “.html” 21 22 - type: word 23 part: body 24 condition: or 25 words: 26 - ‘<meta name=“generator” content=“WordPress’ 27 - ‘/zb_system/admin/’ 28 - ‘Powered by Z-Blog’ 29 - ‘DedeCMS’ 30 - ‘ThinkPHP’ 31 - ‘window.wpData’ 32 - ‘phome_ecms_’ 33 - ‘e/class/’ 34 - ‘PageAdmin’ 35 36 extractors: 37 - type: regex 38 part: body 39 group: 1 40 regex: 41 - ’(?i)<meta name=“generator” content=”([^”]+)”’ 42 - ’(?i)Powered by ([^<]+)’ 365
▶ 使用方法
- 保存模板到 Nuclei 目录: bash 编辑 1 mkdir -p ~/.config/nuclei/templates/custom/ 2 cp pseudo-static-cms-detect.yaml ~/.config/nuclei/templates/custom/
- 运行检测: bash 编辑 1 # 单个目标 2 nuclei -u https://blog.example.com/post/123.html -t ~/.config/nuclei/templa tes/custom/pseudo-static-cms-detect.yaml 3 4 # 批量目标(从文件读取) 5 nuclei -l targets.txt -t custom/pseudo-static-cms-detect.yaml
- 输出示例: text 编辑 1 [pseudo-static-cms-detect] https://blog.site/post/hello.html [WordPress] 2 [pseudo-static-cms-detect] https://news.com/article/2024/1.html [Z-Blog] 🔍 进阶技巧 将此模板加入你的 信息收集流水线 ● ● 配合 http/cms-detect.yaml (Nuclei 内置)一起使用 对输出结果按 CMS 类型分类,针对性爆破后台 ● 📌 渗透口诀 “Nuclei 一跑,CMS 现形; 伪静态⻢甲,秒变活靶子。” 📎 Obsidian 整合建议 366
将这两篇笔记保存为: [[13_0.静态、伪静态、动态网站:一眼识别,避免渗透误判]][[13_2. Burp Suite 规则:自动识别并标记 伪静态⻚面(Passive Scanner)]] 并在主笔记中添加链接: markdown 编辑 1 - 自动化识别工具: 2 - [[Burp Suite 伪静态识别规则]] 3 - [[Nuclei 伪静态 CMS 识别模板]] 打上统一标签: #Web架构识别 #自动化 ,便于全局检索。 [[]] 367
��_�.📝 补充笔记 �:伪静态网站自动识别脚本 (Python) 伪静态网站识别脚本:快速判断 背后是否是动 .html 态系统 用途:在信息收集阶段,批量检测目标是否为“伪静态”(即动态网站伪装) 标签: #伪静态 #自动化 #信息收集 #渗透测试 关联笔记:[[13_0.静态、伪静态、动态网站:一眼识别,避免渗透误判]][[13_2. Burp Suite 规则:自 动识别并标记伪静态⻚面(Passive Scanner)]] 🧠 核心原理 通过以下特征综合判断:
- URL 以 .html 结尾
- 响应中包含 CMS 特征(如 WordPress、Z-Blog 关键词)
- 返回 非纯静态 404(说明由后端生成)
- 存在 Cookie / Session / 动态响应头 🛠 脚本代码(保存为 ) detect_pseudo_static.py python 编辑 368
1 import requests 2 import re 3 from urllib.parse import urljoin 4 5 def is_pseudo_static(url): 6 """ 7 判断一个 .html ⻚面是否为伪静态(即动态生成) 8 """ 9 try: 10 # 访问目标⻚面 11 resp = requests.get(url, timeout=10, verify=False) 12 content = resp.text 13 headers = resp.headers 14 15 # 特征 1: 检查是否含常⻅ CMS 关键词 16 cms_patterns = [ 17 r’<meta name=“generator” content=“WordPress’, 18 r’zblog’, 19 r’dedecms’, 20 r’thinkphp’, 21 r’Powered by.*Discuz’, 22 r’<!—.*CMS’, 23 r’window.wpData’, 24 r’/zb_system/’, 25 r’/dede/’, 26 ] 27 for pattern in cms_patterns: 28 if re.search(pattern, content, re.I): 29 return True, “Detected CMS keyword” 30 31 # 特征 2: 检查响应头是否含后端标识 32 backend_headers = [‘X-Powered-By’, ‘Server’, ‘Set-Cookie’] 33 for h in backend_headers: 34 if h in headers: 35 if ‘Apache’ not in headers[h] and ‘nginx’ not in headers [h].lower(): 36 return True, f”Dynamic header: {h}={headers[h]}” 37 38 # 特征 3: 尝试访问一个不存在的 .html ⻚面 39 fake_url = urljoin(url, “nonexist_12345.html”) 40 fake_resp = requests.get(fake_url, timeout=8, verify=False) 41 if fake_resp.status_code == 200: 42 # 返回 200 但内容含“未找到” → 很可能是 CMS 的自定义 404 43 if re.search(r’(not found|404|不存在)’, fake_resp.text, re.I): 44 return True, “Custom 404 page (likely CMS)” 45 46 # 特征 4: ⻚面含交互功能(评论、登录等) 369
47 interactive_keywords = [‘comment’, ‘login’, ‘submit’, ‘form’, ‘use r’] 48 if any(kw in content.lower() for kw in interactive_keywords): 49 return True, “Interactive elements detected” 50 51 return False, “Likely static” 52 53 except Exception as e: 54 return None, f”Error: {str(e)}” 55 56 57
=== 使用示例 ===
58 if name == “main”: 59 test_urls = [ 60 “https://example-blog.com/post/123.html”, 61 “https://static-site.net/about.html”, 62 “https://news.site/article/2024/hello.html” 63 ] 64 65 for url in test_urls: 66 is_dynamic, reason = is_pseudo_static(url) 67 status = ”✅ Pseudo-Static (Dynamic)” if is_dynamic else ”❌ Likel y Static” 68 print(f”[{status}] {url} → {reason}”) ✅ 使用建议 集成到你的信息收集流程(如配合子域名爆破结果) ● 对疑似博客、新闻站、企业站优先检测 ● 输出结果可导入到 Obsidian 表格中做标记 ● ⚠ 注意事项 ● 需安装 requests : pip install requests ● 部分站点有反爬,建议加 User-Agent 和延时 不能 100% 准确,需结合人工验证 ● 370
📝 补充笔记 2:常⻅伪静态 CMS 后台路径字典 伪静态 CMS 后台路径速查表:从 找到真正的 .html 入口 用途:当确认目标为伪静态网站后,快速定位管理后台 标签: #伪静态 #CMS #后台路径 #渗透测试 关联笔记:[[静态、伪静态、动态网站:一眼识别,避免渗透误判]] 🔑 核心思路 伪静态网站前端 URL 是假的,但后台路径通常是固定的。 即使前台是 post/123.html ,后台很可能仍是 /admin.php 或 /zb_system/admin/ 。 🗂 常⻅ CMS 后台路径清单 CMS 系统 默认后台路径 备用路径 特征文件 Z-Blog /zb_system/admi /admin/ , /logi zb_users/ , c_op n/ n/ tion.php WordPress /wp-login.php /wp-admin/ , /lo wp-config.php.b gin/ ak (泄露⻛险) DedeCMS /dede/ /admin/ , /manag data/common.in e/ c.php ThinkPHP 无固定后台(常自研) /admin.php , /ma runtime/ , think nager/ php/library/ 帝国CMS /e/admin/ /admin/ e/class/ , phome ecms (数据库前 缀) 371
PageAdmin /e/master/ /admin/ web.config (ASP .NET) Typecho /admin/ /login/ config.inc.php 💡 技巧:即使前台开启伪静态,后台通常不会重写! 🔍 通用后台路径(适用于未知 CMS) txt 编辑 1 /admin/ 2 /login/ 3 /manage/ 4 /console/ 5 /dashboard/ 6 /manager/ 7 /system/ 8 /back/ 9 /portal/ ✅ 建议使用 Burp Suite Intruder 或 ffuf 批量探测: bash 编辑 1 ffuf -u https://target.com/FUZZ -w common_admin_paths.txt -fc 404 🛡 防御者视⻆:如何隐藏后台? ● 修改默认路径(如 /zb_system/admin/ → /my_secret_2024/ ) 启用 IP 白名单 + 二次认证 ● 后台路径不对外暴露(仅内网访问) ● 372
📌 渗透口诀 “前台伪静态,后台走老路; 扫不到入口,CMS 也白搭。” 📎 如何在 Obsidian 中使用?
- 将这两篇笔记保存为: ○ 伪静态网站识别脚本.md ○ 常⻅伪静态 CMS 后台路径字典.md
- 在主笔记 [[13_0.静态、伪静态、动态网站:一眼识别,避免渗透误判]] 中添加链接: markdown 编 辑 1 - 自动化识别:[[伪静态网站识别脚本]] 2 - 后台路径速查:[[常⻅伪静态 CMS 后台路径字典]]
- 打上统一标签: #Web架构识别 ,便于全局搜索 373
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时






