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

HTTPS环境下ASP.NET SaaS应用账号密码被Wireshark明文捕获的排查与复现

问题成因分析

1. 客户端访问路径的HTTPS降级

尽管网站仅支持HTTPS,但仍存在以下可能导致登录请求走HTTP明文传输:

  • 用户访问了HTTP版本的登录页(比如手动输入http://your-domain.com,或通过缓存的旧HTTP页面进入),此时前端JS发起的登录GET请求会沿用页面的HTTP协议,直接明文传输参数。
  • 网站的HTTP转HTTPS重写规则存在遗漏:比如登录接口w.ashx未被包含在重写规则中,导致HTTP请求未被强制跳转至HTTPS。

2. 网络代理的SSL解密

用户所处网络可能部署了企业级SSL解密代理(如防火墙、上网行为管理设备):

  • 代理会要求客户端信任其根证书,然后解密客户端与服务器之间的HTTPS流量,再重新加密转发给服务器。
  • 如果用户在客户端抓包时,Wireshark已导入该代理的根证书,就能解密HTTPS流量,直接看到HTTP2头中的明文参数。这种情况下,实际传输到公网的流量仍是加密的,但客户端到代理段的流量被解密可见。

3. 前端代码的逻辑错误

ASP.NET SPA的前端JS可能存在协议处理漏洞:

  • 登录请求的URL被硬编码为HTTP(比如http://your-domain.com/w.ashx),而非使用相对路径或动态获取当前页面协议。
  • 页面加载时的协议判断逻辑失效:比如location.protocol获取错误,导致JS错误地发起HTTP请求而非HTTPS。
复现方法

针对HTTPS降级场景

  • 手动访问HTTP版本的登录页:在浏览器地址栏输入http://your-domain.com/登录页路径,输入测试账号密码后点击登录,用Wireshark抓包过滤http或http2协议,查看请求参数是否明文。
  • 检查重写规则漏洞:临时禁用HTTPS强制跳转,直接发送GET http://your-domain.com/w.ashx?username=test&password=test请求,抓包验证是否明文传输。

针对SSL解密代理场景

  • 配置客户端使用企业级SSL代理:导入代理的根证书到浏览器和Wireshark(Wireshark操作路径:编辑 > 首选项 > 协议 > SSL > RSA密钥列表,添加代理证书或服务器私钥)。
  • 发起登录请求后,在Wireshark中过滤http2协议,查看HEADERS帧中的请求参数是否明文可见。

针对前端代码错误场景

  • 本地调试时切换至HTTP环境:在ASP.NET开发服务器中设置使用HTTP而非HTTPS,加载登录页后发起登录请求,抓包验证参数是否明文。
  • 检查前端JS代码:搜索登录请求的URL生成逻辑,确认是否存在硬编码HTTP的情况,或协议动态获取是否正确(比如使用window.location.origin + '/w.ashx'而非固定HTTP地址)。
额外验证点
  • 检查服务器配置:确认所有HTTP请求都被301/302跳转至HTTPS,包括w.ashx接口。
  • 查看浏览器控制台:用户登录时,在Chrome开发者工具的网络标签中查看请求的协议(是否为HTTPS),以及请求URL是否包含明文参数。

内容的提问来源于stack exchange,提问作者user2728841

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:30:34