如何扫描网站查找zip、php文件实现phishing kit提取
钓鱼站点文件扫描方案解答
核心问题答复
- 关于是否可使用wordlist做URL暴力枚举:完全可以,这也是目前批量捞取phishing kit的主流方案之一,但不能直接套用通用web目录扫描字典,需要针对钓鱼场景做定制。
- 优先收集公开披露的phishing kit常见路径、命名特征生成专用字典,重点覆盖备份文件、后台面板、上传接口、压缩包类路径,这类定向字典的命中率远高于通用目录字典。
- 枚举过程重点过滤状态码:200(文件存在可直接访问)、403(路径存在但禁止列目录)可标记为有效结果,直接跳过返回404的路径降低无效请求;同时需要控制请求频率、随机化UA,避免被钓鱼站的WAF拦截IP。
- 纯枚举效率偏低,建议搭配轻量爬虫逻辑同步提取页面内所有引用的资源路径,包括a标签href、script/src、link/href、form/action、JS代码中硬编码的路径,这类显式引用的路径不需要枚举就能直接拿到,能大幅提升扫描效率。
原有Python代码失效原因
你之前写的代码仅能提取当前页面<a>标签中href属性以指定后缀结尾的链接,存在多个硬伤,完全无法覆盖phishing kit的发现场景:
- 路径拼接逻辑错误:无论href是相对路径、绝对路径还是带域名的完整URL,都直接在输入URL后拼接
/和href值,会生成大量类似https://sec-livri-fy.net/scms/index.php/xxx.php的无效路径。 - 匹配逻辑过于死板:仅匹配href值完全以目标后缀结尾的链接,会漏掉带查询参数的php文件(比如
upload.php?r=login),也无法提取其他标签中引用的目标后缀文件。 - 无任何异常容错:遇到请求超时、页面返回非HTML内容、被WAF拦截的情况时,代码会直接抛出异常中断运行。
- 覆盖范围极窄:仅能抓取当前页面中显式挂出的跳转链接,没有入口的隐藏压缩包、后台php文件完全无法被发现,这也是代码运行达不到预期的核心原因。
修正后的基础实现代码
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin from urllib.parse import urlparse url = 'https://sec-livri-fy.net/scms/index.php' ext_list = ['php', 'zip'] headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } def extract_target_files(url, ext_list): try: resp = requests.get(url, headers=headers, timeout=10, verify=False) # 跳过非文本类响应 if 'text/html' not in resp.headers.get('Content-Type', ''): return [] soup = BeautifulSoup(resp.text, 'html.parser') found = set() # 提取所有带链接属性的标签 tag_attr_map = [ ('a', 'href'), ('script', 'src'), ('link', 'href'), ('form', 'action'), ('iframe', 'src') ] for tag, attr in tag_attr_map: for node in soup.find_all(tag): path = node.get(attr) if not path: continue # 自动拼接为完整URL full_url = urljoin(url, path) # 跳过外站资源 if urlparse(full_url).netloc != urlparse(url).netloc: continue # 去掉查询参数判断后缀 path_no_query = full_url.split('?')[0] for ext in ext_list: if path_no_query.endswith(f'.{ext}'): found.add(full_url) return list(found) except Exception as e: print(f"扫描{url}出错: {str(e)}") return [] for file in extract_target_files(url, ext_list): print(file)
注意:所有扫描、样本下载操作请在隔离沙箱环境中执行,避免钓鱼样本感染本地设备;操作需符合相关法律法规要求,仅可用于安全分析用途。
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

