1.Windows WPAD 简介
WPAD全称Web Proxy Auto-Discovery Protocol,也就是WEB代理自动发现协议(这里的代理就是我们在渗透中常用BURP的时候修改的代理设置)。它的作用是让局域网浏览器自动发现内网中的代理服务器,并且自动设置成该代理进行连接企业内网或者互联网。若系统开启了WPAD,那么主机就会在当前连接的局域网中去寻找代理服务器,找到之后会在代理服务器中下载PAC(Proxy Auto-Config)的配置文件(其实我们在日常中经常能看见当我们使用SSR的时候就会看见PAC自动模式),这个PAC文件会定义用户在访问什么地址的时候,使用什么代理进行访问,举一个常见易懂的例子,有些公司会对访问谷歌浏览器有一定的需求,那么他们就会搭建一个代理服务器,里面的PAC文件就会配置当访问谷歌浏览器的时候web代理自动使用到那个代理服务器上,同时浏览器将下载并解析该文件,将相应的代理服务器设置到浏览器中。
2.WPAD实现方式
我们前面说过主机会在当前连接的局域网中自动寻找代理服务器,它的实现方式主要分为两种。
(1)DHCP
在DHCP服务器中,DHCP服务器的252选项是被当作查询或者注册使用的指针,我们可以在DHCP服务器中添加一个用于查找WPAD主机的252项,内容是部署在WPAD主机上的PAC文件的URL,当客户端Web浏览器要访问某个地址时,Web浏览器会向DHCP服务器发送DHCP INFORM数据包来查询PAC文件的位置,DHCP服务器收到请求以后会返回DHCP ACK数据包进行响应,其中包含了选项和配置列表,在这些返回选项中的252选项就是代理自动配置文件的位置,Web浏览器就可以执行下载PAC文件请求。如图1-1所示,这是以DHCP的方式获取PAC示意图。
目前大多数内网中已经不再使用DHCP服务器对客户端的WPAD进行配置,而是逐渐采用较为简单的DNS服务器方式。
(2)DNS
第二种是目前使用最广泛的方式,通过DNS方式实现WPAD的原理是:先由Web浏览器向DNS服务器发起WPAD X查询,DNS服务器接收到查询请求后返回提供WPAD主机的IP地址,Web浏览器通过该IP的80端口下载wpad.dat(浏览器配置用文件)和wspad.dat(防火墙配置用文件)以实现自动配置。例如:用户的计算机网络名称为test.xx.example.com,浏览器将依次尝试下列URL,以期成功在客户端的域中找到一个代理配置文件。如图1-2所示。
3.PAC文件内容
PAC文件最主要的作用是可以控制浏览器如何处理使用HTTP/HTTPS的流量,其实在每个PAC文件中都会包含一个FindProxyForURL函数,用来定义Web浏览器是直接将流量发送到Internet,还是将流量发送到代理服务器的规则,以下是PAC文件的具体配置内容。
代码语言:bash复制function FindProxyForURL(url, host) {
if (shExpMatch(host, "*.example.com"))
{
return "DIRECT";
}
if (isInNet(host, "10.0.0.0", "255.255.248.0"))
{
return "PROXY fastproxy.example.com:8080";
}
return "PROXY proxy.example.com:8080; DIRECT";
}
1)shExpMatch将尝试将主机名或URL与指定的shell表达式匹配,如果匹配则返回true。
2)isInNet 此函数判断主机名的IP地址,如果在指定的子网内则返回true。如果传递了主机名,该函数会将主机名解析为IP地址。
代码语言:bash复制 if (shExpMatch(host, "*.example.com"))
{
return "DIRECT";
}
3)如果在host中匹配到了.example.com,就会返回true,DIRECT的意思是直连,那么这句话就是:如果访问了.example.com的URL那么就会直接连接,不走代理。
代码语言:bash复制 if (isInNet(host, "10.0.0.0", "255.255.248.0"))
{
return "PROXY fastproxy.example.com:8080";
}
4)如果host在指定的IP范围内,那么就会通过代理fastproxy.example.com:8080进行访问。
我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!