You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何扫描网站查找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的发现场景:

  1. 路径拼接逻辑错误:无论href是相对路径、绝对路径还是带域名的完整URL,都直接在输入URL后拼接/和href值,会生成大量类似https://sec-livri-fy.net/scms/index.php/xxx.php的无效路径。
  2. 匹配逻辑过于死板:仅匹配href值完全以目标后缀结尾的链接,会漏掉带查询参数的php文件(比如upload.php?r=login),也无法提取其他标签中引用的目标后缀文件。
  3. 无任何异常容错:遇到请求超时、页面返回非HTML内容、被WAF拦截的情况时,代码会直接抛出异常中断运行。
  4. 覆盖范围极窄:仅能抓取当前页面中显式挂出的跳转链接,没有入口的隐藏压缩包、后台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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:06:26