随着网络安全的重要性日益凸显,如何快速准确地识别网站技术栈、发现敏感文件和备份文件、扫描端口及服务信息,成为安全研究与渗透测试的关键环节。本文结合课堂笔记内容,详细介绍多种工具和技术的应用,辅以完整代码示例及运行结果,帮助读者从零开始掌握Web信息探测与分析的实操方法。
目录
-
1. Web指纹识别:判断网站技术栈 -
2. 扫描网站敏感文件与备份 -
3. 网站敏感文件扫描与端口信息资产管理工具 -
4. 端口扫描工具实用技巧 -
5. 大规模IP及端口扫描实战
Web指纹识别:判断网站技术栈
原理简介
网站指纹识别通过分析HTTP响应头、页面源代码特征、公开的JavaScript脚本、Cookies名称、URL路径等信息,推断网站使用的CMS(如WordPress、Drupal)、开发语言(PHP、Java、.NET等)、框架(Django、Spring等)及版本。
推荐工具
-
• 云溪Web指纹项目:一个开源指纹库,收录了大量网站指纹信息 -
• 本地Web指纹识别工具:支持自定义指纹库,适合批量扫描和自动化
代码示例:使用Python和requests
结合指纹库实现简单指纹识别
import requests
# 简单的指纹库示例
fingerprints = {
"wp-content": "WordPress",
"Joomla!": "Joomla",
"Drupal.settings": "Drupal",
"X-Powered-By": {
"PHP": "PHP",
"ASP.NET": "ASP.NET"
}
}
defdetect_technology(url):
try:
resp = requests.get(url, timeout=5)
content = resp.text
headers = resp.headers
for key, tech in fingerprints.items():
ifisinstance(tech, dict):
for header_key, header_tech in tech.items():
if header_key in headers.get(key, ""):
return header_tech
else:
if key in content:
return tech
return"Unknown"
except Exception as e:
returnf"Error: {e}"
if __name__ == "__main__":
test_url = "http://example.com"
result = detect_technology(test_url)
print(f"网站 {test_url} 使用的技术栈判定为: {result}")
运行结果示例
网站 http://example.com 使用的技术栈判定为: Unknown
注: 真实应用需结合更丰富的指纹库和多维度分析,云溪Web指纹库可作为强大补充。
扫描网站敏感文件与备份
目标
扫描网站根目录及其子目录下,常见的敏感文件和备份文件,如:
-
• 登录后台页面: /admin/
,/login/
-
• 未受保护的上传接口: /upload.php
-
• 数据库备份文件: *.sql
,*.bak
实操示例:使用requests
和多线程扫描敏感文件
import requests
from concurrent.futures import ThreadPoolExecutor
# 常见敏感文件路径字典
sensitive_paths = [
"/admin/", "/login.php", "/upload.php", "/backup.sql",
"/database.bak", "/config.php.bak", "/.git/config"
]
defcheck_path(base_url, path):
url = base_url.rstrip("/") + path
try:
resp = requests.get(url, timeout=3)
if resp.status_code == 200:
print(f"[+] 发现敏感文件或目录:{url}")
return url
except Exception:
pass
returnNone
defscan_sensitive_files(base_url):
with ThreadPoolExecutor(max_workers=10) as executor:
results = executor.map(lambda p: check_path(base_url, p), sensitive_paths)
found = [r for r in results if r]
ifnot found:
print("[-] 未发现敏感文件")
return found
if __name__ == "__main__":
target = "http://example.com"
scan_sensitive_files(target)
运行结果示例
[-] 未发现敏感文件
或
[+] 发现敏感文件或目录:http://example.com/admin/
[+] 发现敏感文件或目录:http://example.com/backup.sql
结合自动化扫描工具,能有效发现未授权访问的敏感资源。
网站敏感文件扫描与端口信息资产管理工具
功能介绍
-
• 根据域名自动生成IR(信息资源)文件 -
• 批量扫描数百万URL -
• 多线程扫描提高效率 -
• 将扫描结果写入文本文件,方便后续分析
示例:批量扫描域名并写入结果
import requests
from concurrent.futures import ThreadPoolExecutor
defscan_domain(domain):
url = f"http://{domain}/admin/"
try:
resp = requests.get(url, timeout=3)
if resp.status_code == 200:
returnf"{domain} 存在后台登录页"
except:
pass
returnNone
defbatch_scan(domains_file, output_file):
withopen(domains_file, "r") as f:
domains = f.read().splitlines()
with ThreadPoolExecutor(max_workers=50) as executor:
results = executor.map(scan_domain, domains)
withopen(output_file, "w", encoding="utf-8") as out_f:
for result in results:
if result:
print(result)
out_f.write(result + "n")
if __name__ == "__main__":
batch_scan("domains.txt", "scan_results.txt")
端口扫描工具实用技巧
目标
-
• 定义扫描范围(单个IP、IP段、域名) -
• 指定端口集合(如常见端口21,22,80,443) -
• 设置扫描线程数提升速度 -
• 保存扫描结果为文本文件
示例:使用Python的socket
进行端口扫描
import socket
from concurrent.futures import ThreadPoolExecutor
defscan_port(ip, port):
s = socket.socket()
s.settimeout(1)
try:
s.connect((ip, port))
print(f"[+] {ip}:{port} 开放")
s.close()
return (port, True)
except:
return (port, False)
defscan_ports(ip, ports):
with ThreadPoolExecutor(max_workers=100) as executor:
futures = {executor.submit(scan_port, ip, port): port for port in ports}
open_ports = []
for future in futures:
port, is_open = future.result()
if is_open:
open_ports.append(port)
return open_ports
if __name__ == "__main__":
target_ip = "192.168.1.1"
port_list = [21, 22, 80, 443, 3306]
open_ports = scan_ports(target_ip, port_list)
print(f"{target_ip} 开放端口:{open_ports}")
运行示例
[+] 192.168.1.1:22 开放
[+] 192.168.1.1:80 开放
192.168.1.1 开放端口:[22, 80]
大规模IP及端口扫描实战
工具介绍
-
• 自编批量扫描器:支持批量IP和端口扫描,抓取网页头信息、服务类型、状态码等 -
• HPHV1.0工具:由知名安全研究者SN大神开发,快速获取IP响应头信息
自编扫描器核心示例(伪代码)
defbatch_scan_ip_ports(ip_list, port_list):
for ip in ip_list:
for port in port_list:
# 异步或多线程扫描端口
# 获取响应头及服务信息
pass
# 结果保存到文件
运行步骤
-
1. 导入IP列表(如 ips.txt
) -
2. 设置目标端口集合(如80,443,8080等) -
3. 启动扫描任务 -
4. 导出扫描结果,进行安全分析
总结
本文结合课堂内容,深入讲解了如何通过Web指纹技术识别网站技术栈,如何扫描网站敏感文件及备份,如何高效管理海量URL和端口扫描任务,以及如何利用端口扫描工具精准获取目标服务信息。通过以上代码示例和技巧,安全研究人员和开发者能更有效地进行安全检测与风险评估。
温馨提示:请务必遵守法律法规,确保有合法授权后方可进行扫描检测,避免引起法律风险。
关 注 有 礼
欢迎关注公众号:网络安全者
原文始发于微信公众号(网络安全者):2025渗透测试零基础学习 -- Web信息探测与分析技术
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论