js渗透测试工具箱

js渗透测试工具箱

浏览器F12一按,渗透多少自以为固若金汤的测试站点就裸奔了。这不是工具夸张,是渗透我拿真实客户练手时最常见的开场。JS代码就堆在Sources面板里,测试像没锁门的工具保险柜。你不需要多高深的渗透技巧,只需要知道看哪儿。测试

先别急着翻代码。工具打开Console,渗透敲一行Object.keys(window)。测试这行命令能把页面暴露在全局作用域下的工具所有变量、函数、渗透对象都列出来。测试我见过有开发把API密钥直接塞在window.config里,工具还有把管理后台地址写在window.router里的。这就像把家门钥匙挂在门口地垫下面,还觉得挺隐蔽。

真正有意思的是挖接口。现在前后端分离,JS文件里全是fetch和axios调用。你不需要读完整份代码,直接搜索关键词:api、token、admin、password。很多项目组偷懒,把接口路径写死在JS里,连个环境变量都不换。上次测一个电商站,在打包后的main.js里搜到/internal/v1/user/list,直接返回了所有注册用户的手机号。那感觉,就像在垃圾堆里捡到一张没设密码的银行卡。

光看还不够,得动手改。把页面里的JS函数改掉,然后触发它。比如有个按钮点击后校验用户权限,你在Console里重新定义那个校验函数,让它永远返回true。刷新页面,绕过前端限制,直接操作后端接口。这招对付那些只做前端校验的站点,十有八九能成。有个客户觉得把删除按钮藏起来就安全了,结果我把隐藏的删除接口调出来,一条curl命令就把他们测试环境的数据库清空了。当然,是授权的。

再说说调试器。别小看断点功能,它能让你看清每一步逻辑。在可疑函数处打上断点,然后一步步执行,观察变量变化。有时候你会发现密码是明文比较的,有时候会发现token生成规则太简单——比如直接用时间戳加用户ID拼接。我遇到过一个内部系统,token就是md5(用户ID + 固定盐),盐值就写在同一个JS文件里。拿到一个合法用户的ID,就能伪造任意人的会话。

还有那些混淆过的代码,别被吓住。用浏览器自带的格式化功能,或者扔到在线反混淆工具里跑一遍。大部分混淆只是把变量名改成a、b、c,逻辑没变。真正难缠的是那种动态生成函数、用eval拼接代码的,但这类站点少之又少。多数情况下,你花十分钟格式化,就能找到那个写死在后端的备用账户。

工具再多,不如思路活。我习惯把每次测试的JS文件存下来,建立自己的关键词库。什么debug、test、backup、temp,这些词在开发阶段很常见,上线时经常忘了删。有一次在某个政府网站,搜到test关键字,点进去是个未授权的上传接口,连文件类型都没校验。我传了个jpg格式的图片,后端直接把它当脚本执行了。那一刻我深刻体会到,安全漏洞往往不是技术问题,是管理问题。

最后提醒一句,别把JS渗透想得太玄乎。它只是起点,帮你找到攻击面,真正的漏洞还得靠逻辑推理和耐心测试。浏览器是你的显微镜,JS代码是细胞切片,能不能发现病灶,取决于你愿不愿意多看几遍。下次遇到一个站点,先别急着扫描器乱打,打开F12,安安静静读一遍它的JS。你会发现,秘密都藏在那些看似平常的代码注释里。