├── 1.png └── README.md /1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kk12-30/vue_scan/14209138a1445144792cde6052ca4c1549826b81/1.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue未授权接口扫描工具 2 | 3 |

4 | Python Version 5 | Platform 6 |

7 | 8 | ## 功能介绍 9 | 10 | 这是一个用于扫描Vue框架前台泄露的未授权目录接口的图形化工具。该工具可以帮助安全测试人员快速发现Vue应用中可能存在的未授权访问漏洞,提高渗透测试效率。 11 | 12 | ![image](1.png) 13 | 14 | ### 主要功能 15 | 16 | 1. **JS文件爬取**:支持爬取指定网站的前端JS文件URL,自动处理相对路径和绝对路径 17 | 2. **路由路径提取**:支持从JS文件中提取Vue路由接口路径,识别多种路由定义格式 18 | 3. **接口测试**:支持对提取的接口进行逐一测试访问,检测未授权访问漏洞 19 | 4. **响应分析**:显示接口访问的响应包大小和内容,便于判断是否存在未授权访问 20 | 5. **自定义验证**:支持自定义URL验证,灵活应对不同场景 21 | 6. **高级渲染**:支持使用Playwright进行页面渲染,更准确地检测SPA应用 22 | 23 | ## 使用方法 24 | 25 | ### 环境要求 26 | 27 | - Python 3.6+ 28 | - PyQt5 及相关依赖 29 | - requests 30 | - BeautifulSoup4 31 | - Playwright 32 | - 需存在路径“C:\Program Files\Google\Chrome\Application\chrome.exe” 33 | 34 | ### 安装依赖 35 | 36 | ```bash 37 | # 安装基本依赖 38 | pip install -r requirements.txt 39 | ``` 40 | 41 | ### 运行程序 42 | 43 | ```bash 44 | vue_scan.exe 45 | ``` 46 | 47 | ### 使用步骤 48 | 49 | 1. **爬取JS文件**: 50 | - 在"初始URL"输入框中输入目标网站URL(例如:http://example.com/) 51 | - 点击"Get-JS"按钮爬取该网站的所有JS文件URL 52 | 53 | 2. **提取路径**: 54 | - JS文件爬取完成后,点击"getPath"按钮从JS文件中提取Vue路由路径 55 | 56 | 3. **测试路径**: 57 | - 在"自定义URL"输入框中输入要测试的基础URL(建议在URL后面加上#号,例如:https://www.example.com/#/) 58 | - 点击"测试路径"按钮对所有提取的路径进行测试 59 | 60 | 4. **查看结果**: 61 | - 在"测试结果"标签页中查看每个路径的测试结果,包括响应大小和内容 62 | - 通过比较响应大小和内容,判断是否存在未授权访问 63 | 64 | 5. **单独验证URL**: 65 | - 在"自定义URL"输入框中输入完整的URL 66 | - 点击"verify"按钮进行验证 67 | 68 | ## 注意事项 69 | 70 | - Vue应用的URL通常包含#号(例如:https://example.com/#/) 71 | - 响应包大小相似可能表示接口访问返回的是原来的前台登录界面,即不存在未授权访问 72 | - 通过响应内容可以更直观地判断页面是否成功跳转 73 | 74 | ## 原理说明 75 | 76 | Vue框架的路由信息通常在JS文件中以`path: '/xxx'`的格式存在。本工具通过正则表达式提取这些路径,然后拼接到基础URL后进行访问测试,通过分析响应内容和大小来判断是否存在未授权访问。 77 | --------------------------------------------------------------------------------