Files
Sec-Interview/_book/Chapter1/1-1.md
T
2025-11-08 21:00:06 +08:00

74 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 如何处理子域名爆破的泛解析问题
**1. 泛解析的探测与识别**
在进行子域名爆破之前,第一步是确定目标域名是否开启了泛解析
**操作方法:**
1. **随机生成一个不存在的子域名**:例如,`random-string-123.example.com`。这个字符串要足够随机且复杂,以确保它不可能是真实存在的子域名
2. **对其进行 DNS 查询**:使用 `ping``dig``nslookup` 等命令来查询其 IP 地址
3. **记录返回的 IP 地址**:如果返回了一个 IP 地址,那么这个地址很可能就是泛解析的地址
为了提高准确性,你可以多生成几个随机子域名并重复上述步骤。如果它们都解析到相同的 IP 地址,那么就可以确认泛解析已开启,且你已经找到了泛解析的 IP 地址
**2. 爆破过程中的泛解析过滤**
确认泛解析后,在进行子域名爆破时,你需要过滤掉所有解析到泛解析 IP 地址的结果
**操作方法:**
1. **使用专门的工具**:许多现代的子域名爆破工具,如 **Subfinder**、**Massdns**、**Amas** 等,都内置了泛解析过滤功能。它们会在爆破前自动进行泛解析检测,并在爆破过程中自动过滤掉泛解析结果
2. **手动处理(脚本化)**:如果你使用的是不具备自动过滤功能的工具,或者想自己编写脚本,可以采用以下策略:
- **第一步:获取 IP 列表**
- 运行你的爆破工具,例如 `dnsrecon``fierce`,并将所有解析出的子域名及其 IP 地址保存到一个文件中
- **第二步:过滤泛解析**
- 编写一个简单的脚本(Python、Bash 等)
- 遍历文件中的每一行数据(`子域名 IP`
- 对比每个 IP 地址,如果它等于之前探测到的泛解析 IP 地址,就将其所在的行删除或标记
- 最后,你剩下的就是非泛解析的、真实存在的子域名
**一个简单的 Python 脚本示例:**
```python
import sys
def filter_wildcard(input_file, wildcard_ip):
"""
过滤包含泛解析 IP 的子域名
"""
try:
with open(input_file, 'r') as f:
lines = f.readlines()
filtered_domains = []
for line in lines:
parts = line.strip().split()
if len(parts) >= 2:
domain, ip = parts[0], parts[1]
if ip != wildcard_ip:
filtered_domains.append(domain)
return filtered_domains
except FileNotFoundError:
print(f"Error: The file '{input_file}' was not found.")
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python filter_domains.py <input_file> <wildcard_ip>")
sys.exit(1)
input_file = sys.argv[1]
wildcard_ip = sys.argv[2]
real_domains = filter_wildcard(input_file, wildcard_ip)
print("Found the following real subdomains:")
for domain in real_domains:
print(domain)
```