首页 > 其他分享 >在 .NET 下,Fiddler 不再抓取 Web Service 流量问题

在 .NET 下,Fiddler 不再抓取 Web Service 流量问题

时间:2024-07-22 17:40:02浏览次数:17  
标签:Web Fiddler netsh Service winhttp 代理 WinHTTP proxy

在 .NET 下,Fiddler 不再抓取 Web Service 流量问题

问题现象

原来的一个应用中,需要访问 SOAP 服务。在原来的 .NET Framework 版本中,使用 Fiddler 是可以抓取到访问这个 Web Service 的 SOAP 流量的。在迁移到 .NET 之后, Fiddler 就不能再抓取到 SOAP 流量了。

问题分析

Fiddler 通过将自己设置为 WinINET 网络的代理。

在 .NET 环境下,使用了 WCF dotnet-svcutil tool for .NET Core 来生成 Web 服务的客户端代理。

WCF 本身使用 WinHTTP 的网络,而不是 WinINET

WinHTTP 主要被设计用于基于服务器的场景,这些服务器应用使用 HTTP 通讯。

而 WinINet 主要被设计用于桌面应用作为 HTTP 的客户端的场景。WinINet 提供一些用于用户凭据接口的操作,例如收集用户的凭据。在一些场景下,它可以显式网络的错误信息,或者弹出连接网络的窗口。如果你在后台服务上使用它,或者在无人值守的应用上使用它,但是不能处理这些弹出的交互窗口,它就会阻塞你的应用。这就是为什么服务器端不应该使用 WinINet 的原因,除非你确认用户会坐在计算机前面进行交互,可以处理类似 "Setup connection" 之类的对话或者错误信息。

所以,需要将 WinHTTP 网络的代理配置为 Fiddler 所支持的代理。

解决方案

Fiddler 默认已经将代理设置到系统的 WinINet 上,这个代理就是浏览器中使用的代理。所以,我们既可以直接将浏览器的代理同步到 WinHTTP 网络上,也可以手工配置它的代理。

对所有应用使用 IE 的代理配置

在 Windows 上,浏览器的代理被称为 ie 的代理。可以使用下面的方式将它同步到 WinHTTP 上。

使用 netsh winhttp import proxy source=ie 可以将 IE 的代理配置应用到 WinHTTP 网络上。

C:\windows\system32>netsh winhttp import proxy source =ie

Current WinHTTP proxy settings:

    Proxy Server(s) :  http=127.0.0.1:8888;https=127.0.0.1:8888
    Bypass List     :  <-loopback>

检查 WinHTTP 网络代理设置

使用 netsh winhttp show proxy 来检查当前的代理配置。

> netsh winhttp show proxy

Current WinHTTP proxy settings:

    Direct access (no proxy server).

在有代理存在的时候,可以看到当前的代理配置。

> netsh winhttp show proxy

Current WinHTTP proxy settings:

    Proxy Server(s) :  127.0.0.1:8888
    Bypass List     :  (none)

配置 WinHTTP 网络代理

可以手工设置 WinHTTP 使用的代理,使用 netsh winhttp set proxy 配置网络代理。

>netsh winhttp set proxy 127.0.0.1:8888

Current WinHTTP proxy settings:

    Proxy Server(s) :  127.0.0.1:8888
    Bypass List     :  (none

重置 WinHTTP 代理

使用 netsh winhttp reset proxy 命令重置 WinHTTP 网络的代理。

>netsh winhttp reset proxy

Current WinHTTP proxy settings:

    Direct access (no proxy server).

抓取的数据示例

正确配置 WinHTTP 网络的代理之后,就可以使用 Fiddler 抓取到 SOAP 访问的流量。下面是访问 SSRS 服务的一个简单实例。

请求示例

POST http://sample.com/ReportServer/ReportService2010.asmx HTTP/1.1
Host: sample.com
Cache-Control: no-cache, max-age=0
SOAPAction: "http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer/FindItems"
Expect: 100-continue
Accept-Encoding: gzip, deflate
Content-Type: text/xml; charset=utf-8
Content-Length: 551

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <FindItems xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer">
         <Folder>/Sample</Folder>
         <BooleanOperator>And</BooleanOperator>
         <SearchOptions/>
         <SearchConditions>
            <SearchCondition>
               <Condition>Equals</Condition>
               <Values>
                  <Value>SampleReport</Value></Values>
                  <Name>Name</Name>
            </SearchCondition>
         </SearchConditions>
      </FindItems>
   </s:Body>
</s:Envelope>

响应

HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Length: 1684
Content-Type: text/xml; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
X-AspNet-Version: 4.0.30319
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Date: Mon, 22 Jul 2024 02:54:55 GMT

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Header>
      <ServerInfoHeader xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer">
         <ReportServerVersionNumber>2018.160.1115.96</ReportServerVersionNumber>
         <ReportServerEdition>Standard</ReportServerEdition>
         <ReportServerVersion>Microsoft SQL Server Reporting Services Version 16.0.1115.96</ReportServerVersion>
         <ReportServerDateTime>2024-07-22T10:54:55</ReportServerDateTime>
         <ReportServerTimeZoneInfo>
            <Bias>-480</Bias>
            <StandardBias>0</StandardBias>
            <StandardDate>
               <year>0</year>
               <month>0</month>
               <dayOfWeek>0</dayOfWeek>
               <day>0</day>
               <hour>0</hour>
               <minute>0</minute>
               <second>0</second>
               <milliseconds>0</milliseconds>
            </StandardDate>
            <DaylightBias>-60</DaylightBias>
            <DaylightDate>
               <year>0</year>
               <month>0</month>
               <dayOfWeek>0</dayOfWeek>
               <day>0</day>
               <hour>0</hour>
               <minute>0</minute>
               <second>0</second>
               <milliseconds>0</milliseconds>
            </DaylightDate>
         </ReportServerTimeZoneInfo>
      </ServerInfoHeader>
   </soap:Header>
   <soap:Body>
      <FindItemsResponse xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/03/01/ReportServer">
         <Items>
            <CatalogItem>
               <ID>de678150-93d4-4270-ac77-df1d8098f170</ID>
               <Name>SampleReport</Name>
               <Path>/SampleReport</Path>
               <TypeName>Report</TypeName>
               <Size>1381492</Size>
               <CreationDate>2024-06-24T15:24:53.877</CreationDate>
               <ModifiedDate>2024-06-24T15:24:53.877</ModifiedDate>
               <CreatedBy>XXXXX</CreatedBy>
               <ModifiedBy>XXXXXX</ModifiedBy>
               <ItemMetadata />
            </CatalogItem>
         </Items>
      </FindItemsResponse>
   </soap:Body>
</soap:Envelope>

参考

标签:Web,Fiddler,netsh,Service,winhttp,代理,WinHTTP,proxy
From: https://www.cnblogs.com/haogj/p/18315820

相关文章

  • 【Web】ImaginaryCTF 2024 部分题解
    目录journalcrystalsP2CreadmeTheAmazingRacejournal简单的assert命令拼接payload:?file=test','..')===true||system("echo`tac/flag-cARdaInFg6dD10uWQQgm.txt`")||strpos('testcrystalsdocker-compose.yml里让服务报错读到泄露的hos......
  • 现代Web开发的JavaScript核心概念
    在当今的Web开发中,JavaScript不仅是一种优势,更是必不可少的工具。它不断带来新功能、新术语和新概念,使Web应用程序更加互动、高效和用户友好。无论你是刚刚踏上Web开发之路,还是想提升自己的技能,掌握JavaScript的基本术语都是至关重要的。在这篇综合指南中,我们将探讨每......
  • Acunetix v24.7 (Linux, Windows) - Web 应用程序安全测试
    Acunetixv24.7(Linux,Windows)-Web应用程序安全测试Acunetix|WebApplicationSecurityScanner请访问原文链接:https://sysin.org/blog/acunetix/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org重要提示AcunetixPremium现在使用日历化版本命名。请注意,从......
  • Web前端WebRTC攻略-媒体协商与SDP简析(转载)
    1.媒体协商在音视频通讯场景中,由于两端之间所支持的音视频编解码、传输协议、传输的速率,都需要进行彼此通知对方。我们把一个1对1的音视频通讯,比喻成双方互送快递包裹的过程。首先这里有很多问题,双方要彼此告知对方后,才能寄送包裹。比如:*我不知道包裹要寄给谁?(我要和谁建立通......
  • web3py 强制事务保持挂起状态
    几个月前,我环顾Etherscan,看到一些账户有待处理的交易,在检查其数据时,它有一个指向开发人员电报的链接。我认为这是一个非常巧妙的营销理念,因为待处理的交易交易将位于帐户交易列表的顶部。关于如何在Python上复制此内容有什么想法吗?我只需要指导,因为我不知道如何使交易......
  • 【CTF入门】BUUCTF Web刷题
    【CTF入门】BUUCTFWeb刷题[极客大挑战2019]EasySQL打开网站,我们看到这个页面:又是SQL注入,做吐了,按思路来能输入的地方都是注入点,我们尝试注入:获得flag考点:SQL注入[极客大挑战2019]Havefun打开网站,我们看到这个页面:我们看不出什么信息,首先观察一下网站的源码,我们在底......
  • JavaWeb MyBatis案例
    JAVAWEBMyBatis视频学习笔记MyBatis案例1环境准备1.1数据库准备1.2准备一个Brand实体类1.3准备测试用例1.4安装MyBatisX插件2编写接口2.1编写查询所有2.1.1编写Mapper接口2.1.2编写SQL映射文件2.1.3编写测试语句完成测试2.1.4BugFix2.2查看详情2.2.1编......
  • 封禁 NetBIOS Session Service 和 SMB 服务(特别是旧版本的SMB)可能是出于安全性考虑。
    封禁NetBIOSSessionService和SMB服务(特别是旧版本的SMB)可能是出于安全性考虑。这两种服务在过去的实现中存在一些安全漏洞和风险,特别是在现代网络环境中,这些风险可能会被利用来进行攻击或者未经授权的访问。下面是一些常见的安全考虑:中间人攻击:未加密的NetBIOS和旧版本......
  • 基于WebGoat平台的SQL注入攻击
    目录引言一、安装好JAVA二、下载并运行WebGoat三、注册并登录WebGoat四、模拟攻击1.第九题2.第十题3.第十一题4.第十二题5.第十三题五、思考体会1.举例说明SQL 注入攻击发生的原因。2.从信息的CIA三要素(机密性、完整性、可用性)出发,举例说明SQL 注入攻击......
  • MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件
    MiniAuth一个轻量ASP.NETCoreIdentityWeb后台管理中间插件「一行代码」为「新、旧项目」添加Identity系统跟用户、权限管理网页后台系统开箱即用,避免打掉重写或是严重耦合情况Github:https://github.com/mini-software/MiniAuth,Gitee:https://gitee.com/shps9510......