戏弄IIS服务器取乐竟获刑
速览
有人通过戏弄IIS服务器获取乐趣,最终面临法律制裁。
AI 深度解读
羞辱 IIS 服务器:为了乐趣与牢狱之灾
背景
在网络安全领域,IIS(Internet Information Services)作为微软推出的 Web 服务器软件,长期因其配置不当和安全漏洞而成为渗透测试和漏洞赏金猎人(Bug Bounty Hunters)眼中的“肥肉”。尽管 IIS 在企业环境中广泛使用,但其历史遗留问题、复杂的配置选项以及对旧版协议的支持,使其往往成为攻击者的首选目标。
本文源自 Hacker News 社区的一篇技术分享,作者以幽默且略带挑衅的口吻(标题译为“羞辱 IIS 服务器:为了乐趣与牢狱之灾”),详细阐述了在漏洞赏金活动中如何系统性地发现、侦察并利用 IIS 服务器。文章不仅涵盖了从 Shodan 搜索到 Google Dorking 的被动侦察手段,还深入探讨了 HTTPAPI 2.0 404 错误的利用、IIS 8.3 短文件名枚举(Tilde Enumeration)的高级技巧,以及如何利用 LLM、GitHub 搜索和 Google BigQuery 等现代工具来破解短文件名对应的真实文件名。
核心内容
1. 寻找 IIS 服务器:从被动侦察开始
在接触目标之前,利用现有的互联网索引数据是最高效的方法。
-
Shodan 搜索引擎技巧: 利用 Shodan 的高级查询语法,可以精准定位与目标组织相关的 IIS 服务器。例如:
ssl:"target.com" http.title:"IIS":查找 SSL 证书或页面标题包含 "IIS" 的服务器。ssl.cert.subject.CN:"target.com" http.title:"IIS":通过证书通用名称匹配。org:"target" http.title:"IIS":通过组织名称匹配。 这些查询有助于发现被遗忘的测试服务器、管理面板或内部工具。此外,还可以结合 Fofa、Censys、Netlas 等平台进行交叉验证。
-
Google Dorking(Google 黑客语法): 利用 Google 的索引能力,通过特定的搜索指令定位 IIS 痕迹:
site:target.com intitle:"IIS Windows Server":查找标题中包含 IIS 字样的页面。site:target.com inurl:aspnet_client:aspnet_client文件夹是 IIS 运行 ASP.NET 应用的典型特征。site:target.com ext:aspx | ext:ashx | ext:asmx:查找 ASP.NET 相关扩展名的页面。site:target.com intext:"Microsoft-IIS" | intext:"X-Powered-By: ASP.NET":通过响应内容或头部特征匹配。site:target.com inurl:_vti_bin:这是 FrontPage 扩展的典型路径,强烈暗示 IIS 的存在。- 通配符技巧:使用
site:*.target.com或site:*.*.target.com可以挖掘出深层嵌套的子域名,这些子域名往往包含开发或测试环境,容易被常规枚举遗漏。
-
主动技术指纹识别: 通过发送原始 HTTP 请求检查响应头是最直接的确认方式:
- 使用
nc或openssl s_client发送请求,观察响应头中是否包含Server: Microsoft-IIS/10.0或X-Powered-By: ASP.NET。 - 对于大规模扫描,推荐使用
httpx或Nuclei等工具批量检测并过滤 IIS 目标。
- 使用
2. 发现 IIS 后的初步侦察
一旦确认目标为 IIS 服务器,首要任务是收集尽可能多的信息,尤其是那些服务器“免费”泄露的信息。
- 内部 IP 地址泄露:
在某些 IIS 配置(特别是 Exchange 或 OWA 前端)中,发送
HTTP/1.0请求可能会触发服务器返回内部 IP 地址。- 示例:
curl -v --http1.0 http://example.com - 响应中可能出现
Location: https://192.168.5.237/owa/以及X-FEServer: NHEXCHANGE2016头部。 - 这不仅泄露了内部网络结构,还揭示了后端 Exchange 服务器的内部主机名,为后续攻击提供线索。
- 示例:
3. 利用阶段(Pwn Time)
Nuclei 模板自动化
在手动侦察的同时,可以使用 Nuclei 工具批量扫描已知的 IIS 漏洞和配置错误。
- 命令示例:
nuclei -l iis-targets.txt -tags microsoft,windows,asp,aspx,iis,azure,config,exposure -silent - 这能自动化处理繁琐的已知漏洞检测,让攻击者专注于更复杂的逻辑漏洞。
破解 HTTPAPI 2.0 404 错误
许多 IIS 服务器在收到非绑定域名的请求时,会返回通用的 HTTPAPI 2.0 404 错误。这并不意味着服务器为空,而是表明请求的 Host 头与服务器绑定的虚拟主机不匹配。
- 解决方案 1:检查 SSL 证书。通过浏览器访问或查看证书详情,获取
Subject或SAN字段中的主机名。 - 解决方案 2:暴力破解虚拟主机。使用
ffuf等工具,结合Host头字典进行暴力破解。- 命令示例:
ffuf -u https://TARGET_IP/ -H "Host: FUZZ.target.com" -w vhosts.txt -fs 0 - 一旦命中正确的主机名,服务器将返回真实的应用程序界面。
- 命令示例:
IIS 波浪号(Tilde)枚举:被低估的利器
IIS 继承自 DOS 的 8.3 文件名格式,允许通过短文件名(Short Name)枚举文件和目录,即使目录列表功能已禁用。
- 工具:
shortscan或 Burp Suite 的 IIS Tilde Enumeration Scanner。 - 输出示例:
WEB~1.CON(对应web.config),SITEBA~1.ZIP(对应某个以 siteba 开头的 zip 文件)。 - 核心挑战:如何将短文件名(如
SITEBA~1.ZIP)还原为完整的真实文件名?
4. 还原短文件名的现代技巧
这是文章的核心亮点,展示了如何利用现代数据源解决传统枚举难题。
-
使用 LLM(大语言模型): 通过提示词让 LLM 根据短文件名片段生成可能的完整文件名列表。
- 提示词示例:“基于片段
SITEBA,生成可能的完整文件名,仅包含字母数字字符,确保片段是完整文件名的子串。” - 优点:速度快,能生成创意性猜测。
- 提示词示例:“基于片段
-
GitHub Dorking(代码搜索): GitHub 是一个巨大的真实文件名数据库。通过搜索以短文件名前缀开头且扩展名匹配的文件,可以找到现实世界中存在的文件名。
- 手动搜索:在 GitHub 代码搜索中使用
path:/siteba*.zip等语法。 - 自动化工具:
GSNW(GitHub Short Name Wordlist):通过脚本抓取 GitHub 搜索结果生成词表。GitHub-IIS-Shortname-Generator:专门用于生成短文件名对应的真实文件名列表。shortnameguesser:结合多种数据源生成针对性词表。
- 手动搜索:在 GitHub 代码搜索中使用
-
使用 Google BigQuery: 这是一种更高级、更彻底的方法,灵感来自 Assetnote 的研究。
- 原理:利用 Google BigQuery 公开的 GitHub 数据集,在整个 GitHub 代码库中搜索匹配短文件名模式的文件路径。
- 查询示例:
SELECT DISTINCT path FROM `bigquery-public-data.github_repos.files` WHERE REGEXP_CONTAINS(path, r'(?
