网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
渗透测试红队面试一
一、对称加密和非对称加密 二、什么是同源策略? 三、cookie 存在哪里?可以打开吗? 四、xss 如何盗取 cookie? 五、xss 有 cookie 一定可以无用户名密码登录吗? 六、xss 如何防御? 七、SYN 攻击原理 八、什么是网络钓鱼? 九、什么是 CC 攻击? 十、Web 服务器被入侵后,怎样进行排查? 十一、dll 文件是什么意思,有什么用? 十二、Https 的作用 十三、防范常见的 Web 攻击 十四、重要协议分布层 十五、arp 协议的工作原理 十六、rip 协议是什么?rip 的工作原理 十七、什么是 RARP?工作原理 十八、OSPF 协议?OSPF 的工作原理 十九、TCP 与 UDP 区别总结 二十、什么是三次握手四次挥手? 二十一、tcp 为什么要三次握手? 二十二、dns 是什么?dns 的工作原理 二十三、一次完整的 HTTP 请求过程 二十四、Cookies 和 session 区别 二十五、GET 和 POST 的区别 二十六、HTTPS 和 HTTP 的区别 二十七、session 的工作原理? 二十八、http 长连接和短连接的区别 二十九、OSI 的七层模型都有哪些? 三十、session 的工作原理?什么是 TCP 粘包/拆包?发生原因?解决方案
一、对称加密和非对称加密
- 对称加密
- 原理:使用相同的密钥进行加密和解密。例如DES、AES算法,这种方式加密速度快,适合对大量数据进行加密。
- 优点:效率高,加密和解密速度快,开销小,适合处理大数据量的加密需求,如文件加密。
- 缺点:密钥管理困难,一旦密钥泄露,数据安全性将受到威胁。且在多用户环境下,密钥分发和存储是个难题。
- 非对称加密
- 原理:使用一对密钥,即公钥和私钥。公钥用于加密,私钥用于解密,如RSA算法。
- 优点:安全性高,公钥可以公开,无需担心泄露,方便密钥管理和分发。可用于数字签名,确保数据的完整性和不可否认性。
- 缺点:加密和解密速度慢,计算开销大,不适合对大量数据进行加密。
二、什么是同源策略?
- 定义:同源策略是一种重要的安全机制,它限制了一个源(协议、域名、端口相同)的网页如何与另一个源的资源进行交互。
- 作用:防止不同源的脚本访问和操作其他源的敏感数据,如Cookie、LocalStorage等,保护用户信息安全。
- 限制范围:主要限制在DOM访问、AJAX请求和Cookie等数据的共享。例如,不同源的页面无法直接通过JavaScript访问对方的DOM元素。
- 例外情况:CORS(跨域资源共享)是同源策略的一种放松机制,允许服务器端设置响应头来允许跨域访问。
三、cookie 存在哪里?可以打开吗?
- 存储位置
- 客户端:Cookie通常存储在客户端浏览器的本地文件系统中。不同浏览器的存储位置不同,如Chrome浏览器的Cookie存储在特定的文件夹下。
- 具体格式:以键值对的形式存储,包含名称、值、域名、路径、过期时间等信息。
- 是否可打开
- 手动查看:在浏览器的设置中,一般可以找到查看Cookie的选项,用户可以手动查看和管理自己的Cookie信息。
- 编程访问:通过JavaScript可以在浏览器中访问和操作Cookie,但只能访问当前域名下的Cookie。
- 安全风险:虽然可以查看,但不建议随意修改或删除Cookie,因为这可能会影响网站的正常使用,甚至导致安全问题。
四、xss 如何盗取 cookie?
- 反射型XSS
- 原理:攻击者构造包含恶意脚本的URL,诱导用户点击。当用户访问该URL时,服务器将恶意脚本反射到页面中执行。
- 盗取方式:恶意脚本可以通过JavaScript的
document.cookie
获取用户的Cookie信息,并将其发送到攻击者的服务器。- 示例场景:在论坛的搜索框中输入恶意脚本,当搜索结果返回时,脚本在页面中执行,盗取用户Cookie。
- 存储型XSS
- 原理:攻击者将恶意脚本提交到网站的数据库中,当其他用户访问包含该脚本的页面时,脚本会在页面中执行。
- 盗取方式:同样通过
document.cookie
获取Cookie并发送给攻击者。- 示例场景:在博客的评论区输入恶意脚本,当其他用户查看该评论时,脚本执行,盗取其Cookie。
- DOM - Based XSS
- 原理:通过修改页面的DOM结构来注入恶意脚本,脚本在页面中执行。
- 盗取方式:利用JavaScript操作DOM元素,获取Cookie并发送到指定服务器。
- 示例场景:在网页中通过URL参数修改DOM元素,注入恶意脚本,当用户访问该页面时,脚本盗取Cookie。
五、xss 有 cookie 一定可以无用户名密码登录吗?
- 不一定能登录的情况
- 会话验证机制:有些网站除了使用Cookie进行会话验证外,还会结合其他因素,如IP地址、设备信息等。即使攻击者获取了Cookie,但IP地址等信息不匹配,也无法登录。
- Cookie有效期:如果Cookie已经过期,即使获取到也无法用于登录。
- 二次验证:部分网站在登录时会要求进行二次验证,如短信验证码、指纹识别等,仅有Cookie无法通过二次验证。
- 可能登录的情况
- 简单会话机制:如果网站仅依赖Cookie进行会话验证,且没有其他安全措施,攻击者获取Cookie后可以模拟用户登录。
- Same - Site属性未设置:如果Cookie的Same - Site属性未正确设置,攻击者可以在跨站请求中携带Cookie,实现无密码登录。
六、xss 如何防御?
- 输入过滤
- 对用户输入进行严格过滤:只允许合法的字符和格式,如使用正则表达式过滤特殊字符,防止恶意脚本注入。
- 转义特殊字符:将用户输入中的特殊字符(如
<
、>
等)转义为HTML实体,防止浏览器将其解析为HTML标签。- 输出编码
- 对输出到页面的数据进行编码:确保在页面中显示的内容不会被浏览器解析为脚本。如将数据进行HTML编码、JavaScript编码等。
- 设置Content - Security - Policy(CSP):通过CSP可以限制页面可以加载的资源来源,防止加载恶意脚本。
- Cookie安全设置
- 设置HttpOnly属性:防止JavaScript脚本通过
document.cookie
获取Cookie信息,减少XSS攻击盗取Cookie的风险。- 设置Same - Site属性:限制Cookie在跨站请求中的使用,防止跨站请求伪造(CSRF)和XSS攻击。
七、SYN 攻击原理
- TCP三次握手基础:正常情况下,客户端向服务器发送SYN包请求建立连接,服务器返回SYN + ACK包确认,客户端再发送ACK包完成连接建立。
- 攻击过程
- 伪造源IP:攻击者伪造大量不同的源IP地址向服务器发送SYN包。
- 占用资源:服务器收到SYN包后,会为每个请求分配一定的资源并返回SYN + ACK包,但由于源IP是伪造的,服务器无法收到对应的ACK包,导致这些资源一直被占用。
- 拒绝服务:当服务器的资源被耗尽时,无法再处理正常的连接请求,从而导致拒绝服务。
- 影响
- 服务不可用:服务器无法响应正常用户的请求,导致网站或应用程序无法正常访问。
- 系统性能下降:大量的无效连接请求会消耗服务器的CPU、内存等资源,影响系统的性能。
八、什么是网络钓鱼?
- 定义:网络钓鱼是一种通过伪装成可信机构或个人,以获取用户敏感信息(如用户名、密码、信用卡号等)的攻击手段。
- 常见方式
- 电子邮件钓鱼:攻击者发送伪装成银行、电商等机构的电子邮件,诱导用户点击链接,输入敏感信息。
- 网站仿冒:创建与真实网站相似的仿冒网站,当用户输入信息时,信息被窃取。
- 社交工程学:通过与用户进行交流,获取用户的信任,诱导用户透露敏感信息。
- 危害
- 个人信息泄露:用户的敏感信息被窃取,可能导致账户被盗用、资金损失等。
- 企业损失:企业客户的信息泄露会影响企业的声誉和利益,可能导致法律纠纷。
九、什么是 CC 攻击?
- 定义:CC(Challenge Collapsar)攻击是一种基于HTTP协议的拒绝服务攻击,通过大量的合法请求耗尽服务器资源。
- 攻击原理
- 模拟正常请求:攻击者使用代理服务器或大量僵尸主机向目标服务器发送大量的HTTP请求,这些请求看起来像是正常用户的访问。
- 耗尽资源:服务器需要处理这些请求,消耗大量的CPU、内存等资源,当资源耗尽时,无法再处理正常用户的请求。
- 特点
- 隐蔽性强:由于请求看起来是正常的,不容易被防火墙等设备检测到。
- 攻击成本低:攻击者可以使用大量的免费代理或僵尸主机进行攻击,成本较低。
十、Web 服务器被入侵后,怎样进行排查?
- 日志分析
- 系统日志:查看服务器的系统日志,如登录日志、操作日志等,查找异常的登录记录和操作行为。
- Web日志:分析Web服务器的访问日志,查找异常的请求,如大量的恶意请求、异常的IP地址等。
- 文件检查
- 查看文件完整性:检查服务器上的文件是否被修改或新增,使用文件哈希值等方式验证文件的完整性。
- 查找可疑文件:查找是否存在异常的脚本文件、可执行文件等,可能是攻击者上传的后门程序。
- 进程和端口检查
- 查看进程:检查服务器上正在运行的进程,查找异常的进程,可能是攻击者植入的恶意程序。
- 端口扫描:扫描服务器开放的端口,查看是否有异常的端口开放,可能是攻击者建立的远程连接。
十一、dll 文件是什么意思,有什么用?
- 定义:DLL(Dynamic Link Library)即动态链接库,是一种包含可由多个程序同时使用的代码和数据的库文件。
- 作用
- 代码共享:多个程序可以共享同一个DLL文件中的代码,减少了代码的重复,节省了系统资源。
- 模块化设计:将不同的功能模块封装在DLL文件中,方便程序的开发和维护。
- 动态加载:程序在运行时可以动态加载DLL文件,根据需要调用其中的函数,提高了程序的灵活性。
- 示例:Windows系统中的许多系统功能都是通过DLL文件实现的,如
user32.dll
包含了处理用户界面的函数。十二、Https 的作用
- 数据加密
- 保护数据传输:通过SSL/TLS协议对HTTP数据进行加密,防止数据在传输过程中被窃取或篡改。
- 对称加密和非对称加密结合:在建立连接时使用非对称加密交换对称加密密钥,之后使用对称加密进行数据传输,提高了加密效率。
- 身份验证
- 验证服务器身份:客户端可以通过SSL证书验证服务器的身份,确保连接的是合法的服务器。
- 防止中间人攻击:SSL证书可以防止攻击者伪装成服务器进行中间人攻击。
- 数据完整性
- 保证数据完整:使用哈希算法对数据进行签名,确保数据在传输过程中没有被篡改。
十三、防范常见的 Web 攻击
- 针对XSS攻击
- 输入输出过滤:对用户输入进行严格过滤,对输出进行编码,防止恶意脚本注入。
- 设置CSP:通过Content - Security - Policy限制页面可以加载的资源来源,减少XSS攻击的风险。
- HttpOnly属性:为Cookie设置HttpOnly属性,防止JavaScript脚本获取Cookie信息。
- 针对CSRF攻击
- 验证请求来源:通过验证请求的来源,如检查Referer头、使用验证码等方式,防止跨站请求伪造。
- 使用CSRF令牌:在表单中添加CSRF令牌,服务器验证令牌的有效性,确保请求是合法的。
- 针对SQL注入攻击
- 参数化查询:使用参数化查询的方式执行SQL语句,防止恶意SQL语句注入。
- 输入验证:对用户输入的SQL查询参数进行严格验证,只允许合法的字符和格式。
十四、重要协议分布层
- 物理层
- 以太网协议:规定了物理介质、信号传输等方面的标准,用于在局域网中传输数据。
- 光纤分布式数据接口(FDDI):使用光纤作为传输介质,提供高速的数据传输。
- 数据链路层
- MAC协议:定义了如何在共享介质上进行数据传输,如CSMA/CD协议用于以太网。
- PPP协议:用于在点对点链路中传输数据,常用于拨号上网。
- 网络层
- IP协议:负责将数据包从源主机传输到目标主机,提供了逻辑寻址和路由功能。
- ICMP协议:用于在网络设备之间传递控制信息,如错误报告和查询信息。
- 传输层
- TCP协议:提供可靠的、面向连接的数据传输服务,适用于对数据准确性要求较高的应用。
- UDP协议:提供无连接的数据传输服务,适用于对实时性要求较高的应用。
- 应用层
- HTTP协议:用于在Web浏览器和Web服务器之间传输超文本数据。
- SMTP协议:用于发送电子邮件。
十五、arp 协议的工作原理
- ARP协议概述:ARP(Address Resolution Protocol)即地址解析协议,用于将IP地址解析为MAC地址。
- 工作过程
- 广播请求:当主机需要与另一个主机进行通信时,会发送一个ARP请求广播包,询问目标IP地址对应的MAC地址。
- 单播响应:拥有该IP地址的主机收到请求后,会发送一个ARP响应单播包,包含自己的MAC地址。
- 缓存更新:请求主机收到响应后,会将目标IP地址和MAC地址的映射关系存储在ARP缓存中,下次通信时可以直接使用。
- ARP缓存
- 缓存机制:为了提高效率,主机维护一个ARP缓存表,存储最近使用的IP地址和MAC地址的映射关系。
- 缓存更新:ARP缓存表有一定的有效期,过期后会自动更新,以保证映射关系的准确性。
十六、rip 协议是什么?rip 的工作原理
- RIP协议定义:RIP(Routing Information Protocol)即路由信息协议,是一种基于距离向量的路由协议。
- 工作原理
- 路由信息交换:路由器定期向相邻路由器广播自己的路由表,包含目标网络和到达该网络的跳数。
- 距离向量计算:路由器根据收到的路由信息,计算到达各个目标网络的最短路径,以跳数作为度量标准。
- 路由更新:当网络拓扑发生变化时,路由器会更新自己的路由表,并将更新后的路由信息广播给相邻路由器。
- 特点
- 简单易实现:RIP协议的实现相对简单,适合小型网络。
- 收敛速度慢:由于需要定期广播路由信息,当网络拓扑发生变化时,收敛速度较慢。
十七、什么是 RARP?工作原理
- RARP定义:RARP(Reverse Address Resolution Protocol)即反向地址解析协议,用于将MAC地址解析为IP地址。
- 工作原理
- 广播请求:当主机启动时,不知道自己的IP地址,会发送一个RARP请求广播包,包含自己的MAC地址。
- 单播响应:RARP服务器收到请求后,根据MAC地址查找对应的IP地址,并发送一个RARP响应单播包,包含该IP地址。
- 地址配置:主机收到响应后,将获取到的IP地址配置给自己,完成IP地址的获取。
- 应用场景:主要用于无盘工作站等设备,这些设备在启动时需要通过RARP协议获取自己的IP地址。
十八、OSPF 协议?OSPF 的工作原理
- OSPF协议定义:OSPF(Open Shortest Path First)即开放最短路径优先协议,是一种基于链路状态的路由协议。
- 工作原理
- 链路状态信息收集:路由器通过与相邻路由器交换链路状态信息(LSA),了解整个网络的拓扑结构。
- 拓扑数据库建立:路由器根据收集到的链路状态信息,建立一个完整的网络拓扑数据库。
- 最短路径计算:使用Dijkstra算法计算到达各个目标网络的最短路径,生成路由表。
- 特点
- 收敛速度快:当网络拓扑发生变化时,OSPF协议能够快速收敛,更新路由表。
- 支持大规模网络:适用于大型网络,能够有效地管理和优化路由。
十九、TCP 与 UDP 区别总结
- 连接性
- TCP:是面向连接的协议,在传输数据之前需要建立连接,传输完成后需要断开连接。
- UDP:是无连接的协议,不需要建立连接,直接发送数据。
- 可靠性
- TCP:提供可靠的数据传输,通过确认机制、重传机制等保证数据的准确性和完整性。
- UDP:不保证数据的可靠传输,可能会出现数据丢失、乱序等问题。
- 传输效率
- TCP:由于需要建立连接和保证可靠性,传输效率相对较低,开销较大。
- UDP:传输效率高,开销小,适合对实时性要求较高的应用,如视频、音频流。
- 应用场景
- TCP:适用于对数据准确性要求较高的应用,如文件传输、电子邮件等。
- UDP:适用于对实时性要求较高的应用,如在线游戏、视频会议等
二十、什么是三次握手四次挥手?
三次握手(建立连接)
- 过程
- 第一次握手:客户端发送SYN包(SYN=1,seq=x)到服务器,进入SYN_SENT状态。
- 第二次握手:服务器返回SYN+ACK包(SYN=1,ACK=1,seq=y,ack=x+1),进入SYN_RCVD状态。
- 第三次握手:客户端发送ACK包(ACK=1,seq=x+1,ack=y+1),双方进入ESTABLISHED状态。
- 作用
- 确保双方通信能力正常,同步初始序列号(ISN),防止历史连接的混淆。
- 扩展点
- 若第二次握手丢失,服务器会重传SYN+ACK包(超时重传机制);
- 三次握手可防止SYN洪泛攻击(需结合SYN Cookie等防御机制)。
四次挥手(断开连接)
- 过程
- 第一次挥手:主动关闭方发送FIN包(FIN=1,seq=u),进入FIN_WAIT_1状态。
- 第二次挥手:被动关闭方返回ACK包(ACK=1,seq=v,ack=u+1),进入CLOSE_WAIT状态。
- 第三次挥手:被动关闭方发送FIN包(FIN=1,seq=w,ack=u+1),进入LAST_ACK状态。
- 第四次挥手:主动关闭方发送ACK包(ACK=1,seq=u+1,ack=w+1),进入TIME_WAIT状态,等待2MSL后关闭。
- 作用
- 确保双方数据全部传输完成,避免残留数据包干扰新连接。
- 扩展点
- TIME_WAIT状态的作用是防止最后一个ACK包丢失;
- 服务器端可能因大量TIME_WAIT状态连接而耗尽端口,需优化内核参数。
二十一、TCP为什么要三次握手?
- 同步序列号
- 三次握手确保双方交换初始序列号(ISN),用于后续数据包的有序传输。
- 避免历史连接干扰
- 若客户端发送的旧SYN包延迟到达,服务器响应后,客户端可通过第三次握手拒绝,防止建立无效连接。
- 资源管理优化
- 两次握手可能导致服务器过早分配资源(如缓冲区),而客户端实际未完成连接,造成资源浪费。
二十二、DNS是什么?DNS的工作原理
- 定义
- DNS(Domain Name System)是域名解析系统,将域名转换为IP地址。
- 工作原理
- 递归查询:客户端向本地DNS服务器请求,若本地无缓存,则逐级向上查询(根域名服务器→顶级域名服务器→权威域名服务器)。
- 迭代查询:本地DNS服务器直接向各级服务器查询,直至获取结果。
- 扩展点
- DNS记录类型:A(IPv4)、AAAA(IPv6)、CNAME(别名)、MX(邮件服务器);
- DNS劫持与防御:通过DNSSEC协议防止域名解析被篡改。
二十三、一次完整的HTTP请求过程
- DNS解析
- 浏览器缓存→本地Host文件→本地DNS服务器→递归查询获取目标IP。
- 建立TCP连接
- 通过三次握手与服务器建立连接,若为HTTPS还需TLS握手。
- 发送HTTP请求
- 浏览器构造请求报文(方法、URL、Header、Body),通过TCP发送。
- 服务器处理并响应
- 服务器处理请求,返回响应报文(状态码、Header、Body)。
- 浏览器渲染
- 解析HTML构建DOM树,加载CSS/JS,渲染页面。
- 断开连接
- 通过四次挥手释放TCP连接。
二十四、Cookies和Session区别
维度 Cookie Session 存储位置 客户端浏览器 服务器端 安全性 较低(可能被篡改或盗取) 较高(数据存储在服务器) 生命周期 可设置过期时间 随会话结束或超时失效 存储容量 单个域名限制约4KB 仅受服务器内存限制 扩展点
- Session依赖Cookie传递Session ID;
- 分布式场景下需用Redis等集中存储Session;
- Cookie的
SameSite
属性可防御CSRF攻击。
二十五、GET和POST的区别
维度 GET POST 语义 获取资源 提交数据 数据位置 URL参数(明文) 请求体(可加密) 安全性 低(历史记录可见) 较高(HTTPS下安全) 幂等性 幂等(多次请求结果相同) 非幂等(可能修改数据) 数据长度 受URL长度限制(约2KB) 无限制 扩展点
- GET可被缓存,POST默认不缓存;
- GET支持书签保存,POST不支持;
- RESTful API中,GET用于查询,POST用于创建资源。
二十六、HTTPS和HTTP的区别
- 协议层
- HTTP基于TCP,HTTPS在TCP和HTTP之间加入SSL/TLS层。
- 端口
- HTTP默认80端口,HTTPS默认443端口。
- 安全性
- HTTPS通过加密(对称+非对称)和证书机制,防止窃听、篡改和中间人攻击。
- 性能
- HTTPS因加密计算增加延迟,可通过会话复用、TLS1.3优化。
二十七、Session的工作原理?
- 创建
- 用户首次访问时,服务器创建Session并生成唯一ID。
- 存储
- Session数据存储在服务器内存或数据库(如Redis)。
- 传递
- 通过Cookie(如
JSESSIONID
)或URL重写将Session ID返回客户端。- 验证
- 后续请求携带Session ID,服务器校验有效性并获取关联数据。
扩展点
- Session劫攻防御:绑定IP/User-Agent;
- 集群环境下需分布式Session管理。
二十八、HTTP长连接和短连接的区别
维度 短连接 长连接 生命周期 每次请求后关闭TCP连接 保持连接复用多个请求 性能 高延迟(频繁握手挥手) 低延迟(减少握手开销) 适用场景 低频请求(如传统网页) 高频请求(如API、实时通信) 资源占用 服务器需频繁分配/释放资源 占用连接资源但总体更高效 扩展点
- HTTP/1.1默认启用长连接(
Connection: keep-alive
);- HTTP/2进一步多路复用,提升并发性能。
二十九、OSI的七层模型都有哪些?
- 物理层:传输比特流(如网线、光纤)。
- 数据链路层:帧传输,MAC地址寻址(如以太网)。
- 网络层:IP寻址和路由(如IP、ICMP)。
- 传输层:端到端连接(如TCP、UDP)。
- 会话层:建立/维护/终止会话(如RPC)。
- 表示层:数据格式转换、加密(如SSL/TLS)。
- 应用层:用户接口(如HTTP、FTP)。
扩展点
- TCP/IP模型将OSI的会话层、表示层合并到应用层;
- 实际协议可能跨层,如HTTP属于应用层,但依赖传输层TCP。
三十、TCP粘包/拆包问题
原因
- Nagle算法:合并小数据包减少网络开销。
- 数据流特性:TCP是字节流协议,无消息边界。
- 接收缓冲区处理:读取速度与数据到达速度不匹配。
解决方案
- 固定长度:每个消息定长(如512字节),不足补位。
- 分隔符:用特殊字符(如
\n
)分割消息。- 长度字段:消息头中声明数据长度(如HTTP Content-Length)。
- 高级协议:使用Protobuf、JSON等自带边界标识的格式。
扩展点
- 应用层协议设计需明确消息边界;
- Netty等框架提供内置编解码器处理粘包/拆包。