Windows 安全基础——Windows WPAD篇

Windows 安全基础——Windows WPAD篇

WPAD全称Web Proxy Auto-Discovery Protocol, 也就是Web代理自动发现协议。(这里的代理就是我们在渗透中使用BURP的时候修改的代理设置。)它的作用是让局域网浏览器自动发现内网中的代理服务器,并且自动设置成该代理来连接企业内网或者互联网。

若系统开启了WPAD,那么主机就会在当前连接的局域网中寻找代理服务器,找到之后再代理服务器中下载PAC(Proxy Auto-Config,代理自动配置)文件。这个PAC文件会定义用户在访问什么地址的时候使用什么代理。

1. WPAD实现方式

主机会在当前连接的局域网中自动寻找代理服务器,而它的实现方式主要有两种。

(1)DHCP

在DCHP服务器中,252选项是被用于查询或者注册的指针。可以在DHCP服务器中添加一个用于查找WPAD主机的252选项,内容是部署在WPAD主机上的PAC文件的URL。当客户端Web浏览器要访问某个地址时,Web浏览器会向DHCP服务器发送DHCP INFORM数据包来查询PAC文件的位置, DHCP服务器收到请求后会返回DHCP ACK数据包(其中包含选项和配置列表)进行响应。在这些返回选项中的252选项就是代理自动配置文件的位置,Web浏览器就可以据此执行下载PAC文件请求。下图是以DHCP方式获取PAC的示意图。

目前大多数内网中已经不再使用DHCP服务器来配置客户端的WPAD, 而采用较为简单的DNS服务器方式。

DHCP

(2)DNS

这种方式是目前使用较为广泛的。通过DNS方式实现WPAD的原理是:先由Web浏览器向DNS服务器发起WPAD+X查询, DNS服务器接收到查询请求后返回提供WPAD主机的IP地址,Web浏览器通过该IP地址的80端口下载wpad.dat(浏览器配置文件)和wspad.dat(防火墙配置用文件)以实现自动配置。例如:用户的计算机网络名称为test.xx.example.com, 浏览器将依次尝试下图中的URL,以期在客户端的域中找到一个代理配置文件。

DNS

2. PAC文件内容

PAC文件的最主要作用是控制浏览器如何处理使用HTTP/HTTPS的流量。其实在每个PAC文件中都会有一个FindProxyForURL函数,用来定义Web浏览器是将流量直接发送到Internet还是发送到代理服务器的规则。以下是PAC文件的具体配置内容。

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地址。

3)如果在host中匹配到了.example.com,就会返回true。DIRECT的意思是直连,这句话的意思就是:如果访问了.example.com的URL,那么就会直接连接,不通过代理。

4)如果host在指定的IP范围内,那么就会通过代理fastproxy.example.com:8080访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/234480.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java接入gpt开发

前情提要 本次文章使用编译器为IDEA2020 使用GPT模型为百度旗下的千帆大模型 如果是个人用或者不流传出去,可以无脑入,因为会免费送20块钱(够用上万次) 代金卷查看 正式教程: 百度智能云控制台 (baidu.com) 按照步…

c++-定长内存池

文章目录 前言一、定长内存池 前言 一、定长内存池 我们知道申请内存使用的是malloc,malloc其实就是一个通用的申请函数,什么场景下都可以用,但是什么场景下都可以用就意味着什么场景下都不会有很高的性能,下面我们来设计一个定…

Diffusion Models: A Comprehensive Survey of Methods and Applications

摘要 扩散模型作为一个强大的新的深度生成模型系列出现,在许多应用中具有破纪录的性能,包括图像合成、视频生成和分子设计。在这项调查中,我们对迅速扩大的扩散模型的工作进行了概述,将研究分为三个关键领域:有效采样…

HCIP —— BGP 基础 (下)

BGP 的状态机 --- 建立对等体之间的TCP会话:指定建立对等体的对象 六种状态机 Idle状态 Idle 等待状态(相当于OSPF的down状态)--- 采用TCP单播建邻 Idle 状态下,启动BGP协议后必须指定建立对等体的目标之后,才能进入…

python中getattr

一、getattr的基本概念 getattr是python的一个内置函数,说白了也很简单,就是判断一个方法或者属性是否存在于一个对象中若是存在则运行这个属性或者方法。 getattr(object, name[, default])object:对象名称 name:属性或者方法名…

uniappp框架——初始化vue3项目(搭建ai项目第一步)

文章目录 ⭐前言💖 小程序系列文章 ⭐uniapp创建项目💖 初始化项目💖 uni实例生命周期💖 组件生命周期💖 页面调用💖 页面通讯💖 路由 ⭐搭建首页⭐form表单校验页面⭐总结⭐结束 ⭐前言 大家好…

6.题目:编号2490 小蓝的括号串1

题目: ### 这道题主要考察stack #include<bits/stdc.h> using namespace std; const int N105; stack<char> stk; char s[N]; int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;cin>>s1;bool anstrue;for(int i1;i<n;i){…

Verilog基础:$random系统函数的使用

相关阅读 Verilog基础​编辑https://blog.csdn.net/weixin_45791458/category_12263729.html $random系统函数语法的BNF范式如下所示&#xff0c;有关BNF范式相关内容&#xff0c;可以浏览以往文章Verilog基础&#xff1a;巴科斯范式(BNF)。 $random系统函数在每次调用时返回一…

第四节JavaScript 条件语句、循环语句、break与continue语句

一、JavaScript条件语句 在通常的代码中&#xff0c;我们有一些需要决定执行不同动作&#xff0c;这就可以在代码中使用条件语句来完成。 下面是我们常使用的条件语句&#xff1a; if语句&#xff1a;只有当指定条件是true时&#xff0c;执行条件内代码。if…else语句&#…

【Unity动画】什么是任意状态(Any state)

&#xff08;Any state&#xff09;可以从某个状态A直接切换到另一个状态 B\C\D\E\F 比如A到C的过渡&#xff0c;直接设置从Any state 到C的过渡线触发参数即可。而不需要让A到C直接在连接&#xff0c;同样&#xff0c;B到C之间也无需直接链接。 这样设计是在每一个动画之间都…

Redis 持久化 —— 超详细操作演示!

四、Redis 持久化 四、Redis 持久化4.1 持久化基本原理4.2 RDB持久化4.3 AOF持久化4.4 RDB与AOF对比4.5 持久化技术转型 五、Redis 主从集群六、Redis 分布式系统七、Redis 缓存八、Lua脚本详解九、分布式锁 数据库系列文章&#xff1a; 关系型数据库: MySQL —— 基础语法大全…

kotlin - ViewBinding

前言 为什么用ViewBinding&#xff0c;而不用findViewById()&#xff0c;这个有很多优秀的博主都做了讲解&#xff0c;就不再列出了。 可参考下列博主的文章&#xff1a; kotlin ViewBinding的使用 文章里也给出了如何在gradle中做出相应的配置。 &#xff08;我建议先看这位博…

windows 10多用户同时远程登陆配置【笔记】

系统环境&多用户访问情况&#xff1a; 1、【win】【R】键入【gpedit.msc】 2、依次选择【计算机配置】→ 【管理模板】 → 【Windows组件】 → 【远程桌面服务】 → 【远程桌面会话主机】 →【连接】 2.1、右键 【允许用户通过使用远程桌面服务进行远程连接】 编辑 …

Python字典去重竟然比集合去重快速40多倍

这里写目录标题 对比代码结果图代码解析 对比代码 from glob import glob from tqdm import tqdm import time path_listglob("E:/sky_150b/任务组_20231207_2023/*.jsonl") # for two in tqdm(path_list): onepath_list[0]with open(one,"r",encoding&q…

基于SpringBoot 2+Layui实现的管理后台系统源码+数据库+安装使用说明

springboot-plus 一个基于SpringBoot 2 的管理后台系统,包含了用户管理&#xff0c;组织机构管理&#xff0c;角色管理&#xff0c;功能点管理&#xff0c;菜单管理&#xff0c;权限分配&#xff0c;数据权限分配&#xff0c;代码生成等功能 相比其他开源的后台系统&#xff0…

MATLAB | 官方举办的动图绘制大赛 | 第四周(收官周)赛情回顾

MATHWORKS官方举办的迷你黑客大赛第三期(MATLAB Flipbook Mini Hack)圆满结束&#xff0c;虽然我的水平和很多大佬还有比较大的差距&#xff0c;但所有奖也算是拿满了&#xff1a; 专家评选前三名&#xff0c;以及投票榜前十&#xff1a;~ 每周的阶段性获奖者&#xff1a; 下面…

c++实现ros通信

这里用的到是自定义的msgcpp发布消息 主要包括两个msg&#xff0c;一个订阅者和一个发布者&#xff0c;以及cmakelists的相应修改。 首先是自定义的msg&#xff0c;功能包里面来自定义msg也是可以的&#xff1a; 新建功能包 catkin_create_pkg pkg roscpp std_msgs message_g…

模块一——双指针:611.有效三角形的个数

文章目录 题目描述算法原理解法一&#xff1a;暴力求解(超时&#xff09;解法二&#xff1a;排序&#xff0b;双指针 代码实现 题目描述 题目链接&#xff1a;611.有效三角形的个数 算法原理 解法一&#xff1a;暴力求解(超时&#xff09; 三层for循环枚举出所有的三元组&…

一款基于ESP32的迷你四足机器人

一、软件介绍 增加自定义动作模式&#xff0c;可以在小程序中自定义一个最多10个步骤的动作。 附件中&#xff1a;带自定模式固件bin.zip esp32c3固件文件 烧录下图设置 无串口版本esp32c3开发板烧录前先按住BOOT键再插线进入烧录模式&#xff0c;LoadMode选择USB。 二、AP…

5_CSS三大特性盒子模型

第5章-盒子模型【比屋教育】 本课目标&#xff08;Objective&#xff09; 掌握CSS三大特性理解什么是盒子模型掌握内边距padding的用法掌握外边距margin的用法 1. CSS的层叠&#xff0c;继承&#xff0c;优先级 1.1 CSS层叠 层叠&#xff1a;是指多个CSS样式叠加到同一个元…